Éclairage dynamique du tableau de bord

Bonjour à tous.
Une fois, j'ai roulé dans l'obscurité et j'ai eu l'idée, il serait intéressant que la couleur de l'éclairage de l'instrument change par rapport à la vitesse ou à la vitesse du moteur. Parce que Je n'ai pas de tachymètre en ordre, alors il a été décidé de mettre en œuvre la deuxième option, pour celle-ci, il sera possible de déterminer approximativement la vitesse.
Si quelqu'un veut répéter, je dirai tout de suite, vous travaillez avec un électricien dans une voiture à vos propres risques.
Les artisans peuvent raisonnablement dire des coups de canon sur des moineaux et de mon excellente capacité à programmer, mais l'objectif est atteint, le plan est réalisé et il fonctionne pour lui-même :). En général, vous aurez besoin: d'Arduino, d'une paire de LED RGB, de plusieurs résistances et de quelques puces de stabilisation de tension, de supports pour LED. Intéressé s'il vous plaît sous cat.





Une recherche rapide sur Internet a indiqué que le tachymètre reçoit des informations par impulsions. Aucune information précise sur la forme et la durée des impulsions n'a été trouvée. Que sa durée change ou qu'elle soit statique, mais le temps entre les impulsions change. Eh bien, vous devez apprendre à Arduin à compter les impulsions, et déterminer à la fois quand vous êtes au contact "+" et quand "0".

Nous connectons la diode RGB. N'oubliez pas de mettre une résistance de limite sur chaque LED.

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


Nous utiliserons la méthode attachInterrupt . La méthode appelle une fonction lorsque la tension apparaît et / ou disparaît sur la broche. Dans notre cas, nous devons réagir dans les deux cas, car nous ne savons rien de l'impulsion, si ce n'est sa présence. Comme il s'est avéré plus tard, avec une augmentation de la vitesse, la durée + et la durée 0 diminuent.

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

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


Dans la configuration, nous connectons la broche à laquelle le fil d'impulsion sera connecté. Il s'agit d'une broche numérique 2. 0 dans le code. Il s'agit de la numérotation des broches pouvant fonctionner dans ce mode. Il correspond à la broche 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; // 


Ensuite, nous vérifions que les données sont adéquates: la durée des impulsions et, par conséquent, les révolutions correspondent aux normes physiques et commencent à contrôler la lumière.

La vitesse passera du bleu au vert et du jaune au rouge. Le diagramme de la dépendance de la couleur sur les révolutions ci-dessous. Échelle horizontale des révolutions. Verticalement, le niveau de luminosité est compris entre 0 et 255. Le bleu et le rouge purs n'éclairaient pas suffisamment le panneau, j'ai donc dû les diluer un peu différemment. Mais le bleu a commencé à couler en ecchymose, très beau :)

image

Pour chacune des sections, vous devez créer une formule par laquelle la luminosité sera calculée. En fait, cette équation est une ligne droite en deux points. C'est considéré comme facile.
Ainsi, par exemple pour un tracé de 800-1300, la luminosité sera considérée comme
g=0.21*obr_v_min-18;
b=-0.51*obr_v_min+663 ;
r=0;


N'oubliez pas de considérer les erreurs si les données adéquates ont cessé de circuler. Plus de 100 erreurs consécutives (expérience, si le fil se détache alors cette centaine vole en une fraction de seconde), alors on repart dans une couleur statique. Lorsque les données apparaissent, nous revenons.

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


Et enfin, la douceur de la couleur change.
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);

}}


Lorsque vous allumez le système, allumez doucement le rétroéclairage. Pour ce faire, nous mettons en place la variable first_loop, qui indiquera à l'arduine qu'il n'est pas encore nécessaire de faire attention aux impulsions.
  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;
      
    }


Alors, tout, il est temps de tester. Dans la rue en janvier, il fait froid pour aller dans le froid et juste tester sur une voiture. Besoin d'un simulateur. Nous prenons le deuxième ardudinka et en faisons un générateur d'impulsions.
En général, c'est le cas. Lors du débogage, j'ai ajouté un contrôle COM ici pour changer la longueur.
digitalWrite(8, HIGH);  
delay(10);          
digitalWrite(8, LOW); 
delay(10);  


Par une heureuse coïncidence, l'oscilloscope USB s'est avéré être entre mes mains, ce qui a beaucoup aidé au développement. Nous nous connectons et voyons la sortie d'environ la même image.


Après avoir joué, nous nous assurons que tout semble fonctionner. Maintenant, nous allons chercher des impulsions dans la voiture. Pour l'avenir, je dirai que je n'ai pas trouvé de fil pour le tachymètre dans le tableau de bord, j'ai donc dû me connecter au connecteur OBDII. Allumez et ...



Qu'est-ce que c'est!?
Nous gazons.



Eh bien, euh, ils ne savent pas les compter. Je vais devoir tout refaire, pensai-je. Et un peu plus tard, j'ai remarqué que le deuxième fil de la sonde de l'oscilloscope est tombé de la masse. Ugh.




Wow, tout va bien. C'est juste que l'amplitude n'est pas 5V Arduino. Nous ne le risquerons pas. Devra baisser.
Au fait, un autre moment. La fréquence est deux fois plus élevée que le régime moteur. Je comprends que le tachymètre indique le nombre de cycles par minute, c'est-à-dire nombre d'éclairs dans le cylindre, par exemple. Mais le vilebrequin en un cycle tourne deux fois. Et des impulsions lui sont prises. Cependant, je me trompe peut-être. Mais au ralenti, une petite voiture s'est refroidie, mon oscillateur a montré 34,4 Hz. Ce qui correspond à 2000 tr / min. Même à l'oreille, ce n'était pas le cas. Mais c'est 1000. À considérer dans les formules lors du calcul des révolutions.

Lors des tests de puissance, l'Arduino 12V ne s'est pas toujours comporté correctement, nous allons donc le fournir à partir du réseau de bord, mais en le réduisant à 5V.

Le schéma général du système. Grâce aux stabilisateurs L7805C, nous alimentons l'arduino et réduisons l'amplitude des impulsions par le diviseur. A la sortie des Arduins, nous connectons en parallèle une paire de LED via des résistances. C'est exactement le nombre de lampes de rétro-éclairage dans mon tableau de bord.



Alors, maintenant, il est temps de fabriquer des cartouches pour diodes.



Cartouche native à droite. Je n'en ai pas trouvé dans le magasin, j'ai dû prendre les standards. Nous sortons les terminaux des cartouches, car nous ne leur prendrons pas de nourriture. Nous forons des trous pour introduire des fils dans la cartouche par le bas. Nous soudons les fils à la diode, nous l'isolons bien à l'aide de tubes thermorétractables.



Pendant longtemps, je cherchais comment augmenter une telle longueur de cartouche; rien ne montait en diamètre. En conséquence, j'ai utilisé une isolation étanche du câble. Nous resserrons et fixons une goutte de colle chaude à l'extrémité de la cartouche.



J'ai essayé de fabriquer un stabilisateur et 6 résistances pour LED sur une carte séparée, mais pour une raison quelconque, le textolite n'a été gravé qu'à moitié dans le processus. Sur une partie du plateau, il est simplement resté intact, dans la seconde moitié, il a complètement disparu. Et entre eux, il y a une bordure lisse, comme différents métaux. Par conséquent, le reste n'allait pas avoir l'air très esthétique, pas de photos. Mais tout est conforme au schéma ci-dessus. En cherchant comment augmenter la cartouche, j'ai trouvé un étui presque parfait :).



Afin que le tableau de bord soit supprimé à l'avenir, il a été décidé d'établir une connexion amovible. Une alimentation électrique brûlée a aidé à trouver la puce. une extrémité à l'arduino, la deuxième extrémité au réseau de bord de la voiture.



À l'arrière du panneau, nous dévissons une vis du boîtier et la fixons avec la partie de la prise d'ordinateur qui sert de boîtier.



Nous cassons le boîtier, récupérons les fils pour qu'il ne traîne pas et remettons tout en place. J'ai pris de la nourriture pour les arduins du câblage qui va au panneau. J'ai appelé les contacts responsables de l'alimentation des lampes de rétro-éclairage régulières et j'ai trouvé les fils correspondants sur la puce. En conséquence, l'arduin s'allume avec l'inclusion de la lumière, mais ne fonctionne pas constamment. Je n'ai pas trouvé de tachymètre, j'ai dû prendre le câblage jusqu'au connecteur OBDII.



En général, tout est prêt. Travail vidéo. Bien sûr, la vidéo ne transmet pas toute la profondeur et le contraste lors de la prise de vue d'éléments lumineux la nuit.






Je roule pendant une semaine. Je pensais que ça tendrait. Mais non, j'aime ça. Eh bien, jusqu'à présent, pas fatigué d'au moins :). Il ne change pas brusquement, parfois un changement de vision latérale n'a pas le temps de le remarquer. Il ne se remarque que lorsqu'il passe au rouge, mais il est très impressionnant lorsque la voiture commence à accélérer et prend de l'ampleur et passe dans la zone rouge lors d'un dépassement :).

Sketch for Arduino

UPD
Scheme ne prétend pas être correct et idéal. Les artisans déconseillent d'utiliser un stabilisateur de tension pour réduire l'amplitude des impulsions, mais utilisent un diviseur de tension conventionnel. Les commentaires peuvent être vus dans les commentaires ci-dessous.
UPD2 Modification
du schéma en relation avec les commentaires. Ancien schéma de liaison

Eh bien, je le répète, la responsabilité de reproduire ce schéma n’appartient qu’à vous. Bonne chance dans la créativité technique! :)

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


All Articles