LEÇON 6: Comment calculer et écrire une tension (voltage) avec arduino

Nous avons fait des trucs sympas jusqu’ici avec l’arduino. Nous avons appris comment obtenir des informations de l’utilisateur et comment envoyer des informations à l’utilisateur. Nous avons appris à contrôler les commandes à la fois pour les loupes “for“et les loupes “while“. Nous sommes bien partis pour construire des projets vraiment puissants. Le fait est que jusqu’à présent, toutes nos commandes aux ports de l’arduino ont pour effet soit d’allumer la LED, soit de l’éteindre. C’est-à-dire que lorsque nous rédigeons HIGH ou LOW sur les ports, nous allumons les 5 volts ou les éteignons complètement. La vérité est que la plupart du temps, nous voulons quelque chose au milieu. Nous voudrions peut-être une tension de 2,3 volts.

Les ports Arduino avec la ligne ondulée qu’elles ont sont capables de les écrire entre les tensions. Ce sont des ports 3, 5, 6, 9, 10, 11 sur l’arduino uno.

Dans le monde de l’ingénierie et de l’électronique, on dit qu’on veut une tension analogique. C’est-à-dire que nous voulons appliquer n’importe quelle tension que nous voulons, pas seulement 0 ou 5. Pour émettre une tension arbitraire entre 0 et 5, on donnerait à l’arduino une commande analogWrite. Malheureusement, l’instruction ou la commande analogWrite n’est pas aussi simple qu’émettre un nombre compris entre 0 et 5. Il faut lui donner un entier compris entre 0 et 255. Si on émettait la commande analogWrite (monport, 0), elle appliquerait 0 volt à monport. Si nous émettions la commande analogWrite (monport, 255), cela donnerait 5 volts au port. Comme vous pouvez le voir, si nous donnions la commande analogWrite (monport, 127), nous aurions environ 2,5 volts appliqués à monport. Vous pouvez voir que ce sont les plus faciles, mais pour déterminer exactement la valeur que nous devrions utiliser pour exactement la tension que nous voulons, nous devrons faire des calculs. Rappelez-vous toutes les fois où vous avez dû calculer l’équation d’une ligne en maths? Eh bien, vous allez le faire pour de vrai maintenant et pour une raison. Nous devons obtenir une équation qui nous permettra de calculer la valeur à utiliser pour obtenir la tension.

Comme vous pouvez constater, vous avez besoin de l’équation pour la droite ci-dessus. Bonnes nouvelles! Vous avez deux points pour calculer l’équation de la droite. Le premier point est (0,0), c’est-à-dire que si vous voulez qu’une tension de 0 volt soit appliquée au port, vous devriez utiliser la valeur 0, comme nous l’avons expliqué ci-dessus. Le deuxième point est (5, 255), c’est-à-dire que si vous voulez appliquer une tension de 5 volts, vous devriez écrire la valeur 255, comme expliqué ci-dessus. Maintenant, nous calculons l’équation de la droite. la pente serait:

tanα = m = (y2-y1)/(x2-x1) = (255-0)/(5-0) = 51

Maintenant, pour obtenir l’équation de la droite, nous utiliserons la forme de pente de la droite, et nous obtenons:

(y-y1)=m(x-x1)

Si nous considerons le point (0,0) on obtiendra,

(y-0) = m(x – 0)

Et si on remplace la pente m= 51, on obtient:

y = 51X

Rappelez-vous que X est la tension que nous voulons, et Y est la valeur que nous écrivons, donc cette équation peut être réécrite:

Write Value = 51 X (Desired Voltage) ou encore

Valeur écrite = 51 X (tension souhaitée)

Donc, cette équation nous permet de calculer précisément la valeur que nous devrions donner à analogWrite pour obtenir la tension que nous voulons au port. J’espère que cela a du sens. Si vous êtes confus, regardez la vidéo et cela aura plus de sens.

L’essentiel est que nous puissions utiliser cette équation pour calculer le nombre que nous devrions écrire pour obtenir la tension que nous voulons au port.

Par exemple, si nous voulions obtenir exactement 2 volts (X=2), nous devrions écrire la valeur 2×51 = y, donc y=102. Si nous voulions deux volts sur le port monport, nous émettrions la commande analogWrite (monport, 102).

Maintenant, commençons à jouer avec un circuit. Utilisons le circuit que nous avons utilisé dans les dernières leçons. J’espère que vous l’avez toujours, mais si vous avez besoin d’aide, nous vous le montrons pas à pas dans la leçon 3.

 
int redLED=9;              //Déclarez redLED comme entier (int) et connectez au port 9 
int greenLED=10;           //Déclarez greenLED comme entier (int) et connectez au port 10 
int redOnTime=250;         //Ceci définie la durée donc la LED rouge restera allumé (250ms) 
int redOffTime=250;        //Ceci définie la durée donc la LED rouge restera étteinte (250ms) 
int greenOnTime=250;       //Ceci définie la durée donc la LED verte restera allumé (250ms) 
int greenOffTime=250;      //Ceci définie la durée donc la LED verte restera étteinte (250ms) 
int numgreenBlinks=5;      //Nombre de fois que la LED verte va clignoter (5) 
int numRedBlinks=5;        //Nombre de fois que la LED rouge va clignoter (5) 

String redMessage = "La LED rouge clignote"; 
String greenMessage = "La LED verte clignote"; 

void setup() { 
Serial.begin(115200); 
pinMode(redLED, OUTPUT);         // Dites à Arduino que redLED est un port de sortie 
pinMode(greenLED, OUTPUT);       //Dites à Arduino que greenLED est un port de sortie 
Serial.println("Combien de fois voulez-vous clignoter la LED rouge?");    //Entrez la valeur ici
while(Serial.available()==0) 
{ 
// Attendez que l'utilisateur saisisse la valeur 
} 
numRedBlinks=Serial.parseInt(); //Lire les données que l'utilisateur a introduit
} 
void loop() { 
Serial.println(redMessage); 
     for (int j=1; j<=numRedBlinks; j=j+1) 
       { 
          // Commencez votre loupe pour la LED rouge 
          digitalWrite(redLED, HIGH); //Allumez la LED rouge 
          delay(redOnTime); //Laissez allumé pendant redOnTime 
          digitalWrite(redLED, LOW); //Éteindre la LED rouge 
          delay(redOffTime); //Laissez étteint pendant redOffTime 
       } 
Serial.println(" " ); 
Serial.println(greenMessage ); 
     for (int j=1; j<=numgreenBlinks; j=j+1) 
       { 
          // Commencez votre loupe pour la LED verte 
          digitalWrite(greenLED,HIGH); //Allumez la LED 
          delay(greenOnTime); //Laissez allumé pendant greenOnTime 
          digitalWrite(greenLED,LOW); //Éteindre la LED 
          delay(greenOffTime); //Laissez étteint pendant greenOffTime 
       } 
Serial.println(" " ); 
} 

Si vous avez suivi ces leçons, ce code devrait avoir du sens, car nous avons progressé pas à pas.

Nous devons maintenant remplacer les quatre commandes digitalWrite par des commandes analogWrite. Disons qu’au lieu d’appliquer 5 volts à la LED, nous voulons appliquer 1 volt. Cela devrait faire briller la LED faiblement. Rappelez-vous que nous n’allons pas analogWrite la valeur de 1, en d’autres termes, 1 represente la valeur de X et nous devons calculer la valeur de y. Nous voulons une tension de 1 volt, donc notre valeur écrite devrait être 1 x 51, ou la valeur 51. Alors maintenant, au lieu de digitalWrite, nous devrions avoir une commande comme analogWrite (redLED, 51) ou analogWrite (greenLED, 51). Notez que sur les commandes qui éteignent les LED, digitalWrite (redLED, LOW) fonctionnerait quand même pour désactiver les ports, mais je pense que c’est une bonne pratique de remplacer toutes les écritures par des analogWrites dans un problème comme celui-ci. Pour désactiver le port avec une commande analogue, utilisez la commande analogWrite (redLED, 0).

Avec ces nouvelles connaissances, vous devez modifier votre code et remplacer les 4 commandes digitalWrite par des commandes analogWrite. Jouez avec  différentes valeurs de X pour voir l’effet sur la luminosité de la LED.

Bonne chance!

Leave a Reply

Your email address will not be published. Required fields are marked *