Dynamische Armaturenbrettbeleuchtung

Hallo an alle.
Ich bin einmal im Dunkeln gefahren und hatte die Idee, es wäre interessant, wenn sich die Farbe der Instrumentenbeleuchtung von Geschwindigkeit oder Motordrehzahl ändern würde. Weil Ich habe keinen Drehzahlmesser in Ordnung, dann wurde beschlossen, die zweite Option zu implementieren. Zum einen kann die Geschwindigkeit ungefähr bestimmt werden.
Wenn jemand wiederholen möchte, werde ich sofort sagen, dass Sie die Arbeit mit einem Elektriker in einem Auto auf eigenes Risiko ausführen.
Handwerker können vernünftigerweise über Kanonenschüsse auf Spatzen und über meine hervorragende Programmierfähigkeit sprechen, aber das Ziel ist erreicht, der Plan ist verwirklicht und es funktioniert für sich selbst :). Im Allgemeinen benötigen Sie: Arduino, ein Paar RGB-LEDs, mehrere Widerstände und ein paar Spannungsstabilisierungschips, Halterungen für LEDs. Interessiert bitte unter Katze.





Eine schnelle Suche im Internet ergab, dass der Drehzahlmesser Informationen in Impulsen empfängt. Genaue Informationen über Form und Dauer der Impulse wurden nicht gefunden. Ob sich die Dauer ändert oder statisch ist, ändert sich die Zeit zwischen den Impulsen. Nun, Sie müssen Arduin beibringen, Impulse zu zählen und ein und dieselbe Zeit zu bestimmen, wann auf dem Kontakt "+" und wann "0".

Wir schließen die RGB-Diode an. Vergessen Sie nicht, an jeder LED einen Grenzwiderstand anzubringen.

const int RED_PIN = 9;
const int GREEN_PIN = 10;
const int BLUE_PIN = 11;


Wir werden die attachInterrupt- Methode verwenden . Die Methode ruft eine Funktion auf, wenn am Pin Spannung auftritt und / oder verschwindet. In unserem Fall müssen wir in beiden Fällen reagieren, weil wir nichts über den Impuls außer seiner Anwesenheit wissen. Wie sich später herausstellte, nehmen mit zunehmender Geschwindigkeit sowohl die Dauer + als auch die Dauer 0 ab.

long  micro_prev=0; // 
long  micro_now=0;
long  razn;

long  impulse; // 1 (+)
long  silence; // 0


Im Setup verbinden wir den Pin, an den der Impulsdraht angeschlossen wird. Dies ist ein digitaler Pin 2. 0 im Code. Dies ist die Nummerierung der Pins, die in diesem Modus arbeiten können. Es passt zu Pin 2.

  attachInterrupt(0, blink, CHANGE  );


  micro_now=micros(); //   
  razn=micro_now-micro_prev; //   
  a++;

if(digitalRead(2)==LOW){ //   0,      +,  ,         .
  impulse=razn;
  } else {
  silence=razn;
   }

  if(a==2){ //      ,       
    Serial.println(String(impulse)+" "+String(silence)); //  
    obr_v_min=30000000/(impulse+silence); //   .
    a=0; // 


Als nächstes prüfen wir, ob die Daten angemessen sind: Die Pulsdauer und dementsprechend die Umdrehungen entsprechen den physikalischen Normen und beginnen, das Licht zu steuern.

Die Geschwindigkeit ändert sich von blau nach grün und von gelb nach rot. Das Diagramm der Abhängigkeit der Farbe von den Umdrehungen unten. Horizontale Umdrehungsskala. Vertikal liegt die Helligkeit zwischen 0 und 255. Reines Blau und Rot haben das Panel nicht hell genug beleuchtet, daher musste ich sie etwas anders verdünnen. Aber das Blau begann sich in blauen Flecken zu verwandeln, sehr schön :)

Bild

Für jeden Abschnitt müssen Sie eine Formel erstellen, nach der die Helligkeit berechnet wird. Tatsächlich ist diese Gleichung an zwei Punkten eine gerade Linie. Es wird als einfach angesehen.
So wird beispielsweise für ein Diagramm von 800-1300 die Helligkeit als betrachtet
g=0.21*obr_v_min-18;
b=-0.51*obr_v_min+663 ;
r=0;


Vergessen Sie nicht, Fehler zu berücksichtigen, wenn keine ausreichenden Daten mehr fließen. Mehr als 100 aufeinanderfolgende Fehler (Erfahrung, wenn sich der Draht löst, fliegen diese hundert in Sekundenbruchteilen), dann verlassen wir in einer statischen Farbe. Wenn Daten erscheinen, kehren wir zurück.

 error++;
  if(error>=100){  
  k = go_to_color(0,255,255);  
          }


Und schließlich ändert sich die Glätte der Farbe.
int go_to_color(int r, int g, int b){
while(r_current!=r || g_current!=g || b_current!=b) //            
{

if(r_current>r){ //         
      r_current=r_current-1;
    }
   if(r_current<r){ //         
      r_current=r_current+1;
    } 

//    
....
delay(100);
  
analogWrite(RED_PIN, r_current);
analogWrite(GREEN_PIN, g_current);
analogWrite(BLUE_PIN, b_current);

}}


Wenn Sie das System einschalten, zünden Sie die Hintergrundbeleuchtung vorsichtig an. Dazu richten wir die Variable first_loop ein, die dem Arduine mitteilt, dass es noch nicht notwendig ist, auf die Impulse zu achten.
  if(first_loop==1){  
   int i;   
     for(i=0;i<255;i++){
        analogWrite(RED_PIN, 0);
        analogWrite(GREEN_PIN, 0);
        analogWrite(BLUE_PIN, i);
        delay(5);
      }
  b_current=255;
  r_current=0;
  g_current=0;
   delay(500);
       
   first_loop=0;
      
    }


Also alles, es ist Zeit zu testen. Auf der Straße im Januar ist es kalt, in die Kälte zu gehen und einfach an einem Auto zu testen. Benötigen Sie einen Simulator. Wir nehmen die zweite Ardudinka und machen daraus einen Impulsgeber.
Im Allgemeinen ist dies so. Beim Debuggen habe ich hier die COM-Steuerung hinzugefügt, um die Länge zu ändern.
digitalWrite(8, HIGH);  
delay(10);          
digitalWrite(8, LOW); 
delay(10);  


Durch einen glücklichen Zufall stellte sich heraus, dass das USB-Oszilloskop in meinen Händen lag, was während der Entwicklung sehr hilfreich war. Wir verbinden und sehen die Ausgabe von ungefähr demselben Bild.


Nach dem Spielen stellen wir sicher, dass alles zu funktionieren scheint. Jetzt suchen wir im Auto nach Impulsen. Mit Blick auf die Zukunft werde ich sagen, dass ich im Armaturenbrett kein Kabel für den Drehzahlmesser gefunden habe, daher musste ich eine Verbindung zum OBDII-Anschluss herstellen. Einschalten und ...



Was ist das?
Wir gasen.



Nun, sie wissen überhaupt nicht, wie sie sie zählen sollen. Ich muss alles wiederholen, dachte ich. Und wenig später bemerkte ich, dass der zweite Draht der Oszilloskopsonde von der Masse fiel. Ugh du.




Wow, alles ist gut. Das ist nur die Amplitude ist nicht 5V Arduino. Wir werden es nicht riskieren. Muss senken.
Übrigens noch ein Moment. Die Frequenz ist doppelt so hoch wie die Motordrehzahl. Ich verstehe, dass der Drehzahlmesser die Anzahl der Zyklen pro Minute anzeigt, d.h. Anzahl der Blitze im Zylinder zum Beispiel. Die Kurbelwelle dreht sich jedoch in einem Zyklus zweimal. Und ihm werden Impulse genommen. Ich kann mich jedoch irren. Aber im Leerlauf, ein kleines Auto abgekühlt, zeigte mein Oszillator 34,4 Hz. Das entspricht 2000 U / min. Selbst nach Gehör war dies nicht so. Aber 1000 ist es. Bei der Berechnung der Umdrehungen in Formeln berücksichtigen.

Während der Leistungstests hat sich der Arduino 12V nicht immer angemessen verhalten, daher werden wir ihn über das Bordnetz versorgen, aber auf 5 V senken.

Das allgemeine Schema des Systems. Durch die Stabilisatoren L7805C speisen wir das Arduino und reduzieren die Impulsamplitude durch den Teiler. Am Ausgang der Arduine verbinden wir ein Paar LEDs über Widerstände parallel. Das ist genau die Anzahl der Hintergrundbeleuchtungslampen in meinem Armaturenbrett.



Nun ist es an der Zeit, Patronen für Dioden herzustellen.



Native Patrone rechts. Ich habe solche im Laden nicht gefunden, ich musste die Standard nehmen. Wir nehmen die Terminals aus den Patronen, weil wir ihnen keine Lebensmittel abnehmen. Wir bohren Löcher, um Drähte von unten in die Patrone zu bringen. Wir löten die Drähte an die Diode, wir isolieren sie gut mit Schrumpfschläuchen.



Lange Zeit suchte ich nach einer Möglichkeit, eine solche Patronenlänge zu erhöhen, ohne dass sich ein Durchmesser ergab. Infolgedessen habe ich eine dichte Isolierung vom Kabel verwendet. Wir ziehen einen Tropfen Heißkleber vom Ende der Patrone fest und fixieren ihn.



Ich habe versucht, einen Stabilisator und 6 Widerstände für LEDs auf einer separaten Platine herzustellen, aber aus irgendeinem Grund wurde der Textolit dabei nur zur Hälfte geätzt. Auf einem Teil der Tafel blieb es einfach unberührt, in der zweiten Hälfte verschwand es vollständig. Und zwischen ihnen gibt es eine glatte Grenze, wie bei verschiedenen Metallen. Daher würde der Rest nicht sehr ästhetisch aussehen, keine Fotos. Aber alles ist nach dem obigen Schema. Auf der Suche nach einer Möglichkeit, die Patrone zu vergrößern, habe ich einen fast perfekten Fall gefunden :).



Damit das Dashboard in Zukunft entfernt werden kann, wurde beschlossen, eine abnehmbare Verbindung herzustellen. Ein verbranntes Netzteil half beim Auffinden des Chips. ein Ende zum Arduino, das zweite Ende zum Bordnetz des Autos.



Von der Rückseite des Panels lösen wir eine Schraube aus dem Gehäuse und befestigen sie wieder mit dem Teil der Computersteckdose, der als Gehäuse fungiert.



Wir schnappen den Koffer, sammeln die Drähte, damit er nicht heraushängt, und setzen alles zurück. Ich nahm Essen für Arduine von der Verkabelung, die zum Panel führt. Ich habe die Kontakte angerufen, die für die Stromversorgung der normalen Hintergrundbeleuchtungslampen verantwortlich sind, und die entsprechenden Kabel auf dem Chip gefunden. Infolgedessen schaltet sich Arduin unter Einbeziehung von Licht ein, arbeitet jedoch nicht ständig. Ich habe keinen Drehzahlmesser gefunden, ich musste die Verkabelung zum OBDII-Anschluss führen.



Im Allgemeinen ist alles fertig. Videoarbeit. Natürlich vermittelt das Video nicht die gesamte Tiefe und den Kontrast, wenn nachts leuchtende Elemente aufgenommen werden.






Ich fahre eine Woche. Ich dachte, es würde anstrengen. Nein, ich mag es. Na ja, bisher zumindest nicht müde :). Es ändert sich nicht stark, manchmal hat eine Änderung des seitlichen Sehens keine Zeit, es zu bemerken. Es fällt nur auf, wenn es auf Rot umschaltet, aber es ist sehr beeindruckend, wenn das Auto schneller an Fahrt gewinnt und beim Überholen in die rote Zone fährt :).

Die Skizze für das Arduino

UPD-
Schema erhebt keinen Anspruch auf Richtigkeit und Idealheit. Handwerker raten davon ab, einen Spannungsstabilisator zu verwenden, um die Amplitude der Impulse zu verringern, sondern verwenden einen herkömmlichen Spannungsteiler. Kommentare können in den Kommentaren unten gesehen werden.
UPD2
Das Schema wurde im Zusammenhang mit den Kommentaren geändert. Die alte Schema Referenz

Nun, ich wiederhole, die Verantwortung für die Reproduktion dieses Schemas liegt nur bei Ihnen. Viel Glück bei der technischen Kreativität! :) :)

Source: https://habr.com/ru/post/de389475/


All Articles