Outils pour utilisateurs

Outils du site


issue129:great_cow_basic

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
issue129:great_cow_basic [2018/02/04 08:17] d52frissue129:great_cow_basic [2018/02/05 09:53] (Version actuelle) auntiee
Ligne 14: Ligne 14:
 Cette fois, je vous montrerai comment vous pouvez régler la luminosité de la LED ou la vitesse du PWM en la contrôlant avec un potentiomètre. Pour une bonne explication en français sur le potentiomètre, voir : https://fr.wikipedia.org/wiki/Potentiom%C3%A8tre. Cette fois, je vous montrerai comment vous pouvez régler la luminosité de la LED ou la vitesse du PWM en la contrôlant avec un potentiomètre. Pour une bonne explication en français sur le potentiomètre, voir : https://fr.wikipedia.org/wiki/Potentiom%C3%A8tre.
  
-Dans l'exemple précédent, nous avons appris que le microcontrôleur peut comprendre si un interrupteur (ou n'importe quel autre dispositif) est allumé (se trouvant entre 3 et 5 V) ou éteint (se trouvant à O V) du fait de sa nature digitale; mais, comment le microcontrôleur peut-il savoir qu'une tension est quelque part au milieu (par ex., à 2,3 V) ? Nous pouvons utiliser la conversion analogique/digitale intégrée du attiny13a. En dehors du pilotage du microcontrôleur dans le code source, ce sera la première fois que le microcontrôleur peut être piloté depuis le monde extérieur.+Dans l'exemple précédent, nous avons appris que le microcontrôleur peut comprendre si un interrupteur (ou n'importe quel autre dispositif) est allumé (se trouvant entre 3 et 5 V) ou éteint (se trouvant à O V) du fait de sa nature digitale ; mais, comment le microcontrôleur peut-il savoir qu'une tension est quelque part entre les deux (par ex., à 2,3 V) ? Nous pouvons utiliser la conversion analogique/digitale intégrée du attiny13a. Hormis le pilotage du microcontrôleur dans le code source, ce sera la première fois que le microcontrôleur pourra être piloté depuis le monde extérieur.
  
 **Analog to digital conversion **Analog to digital conversion
Ligne 24: Ligne 24:
 La conversion analogique/digitale La conversion analogique/digitale
  
-Le attiny13a dispose d'une conversion analogique/ digitale (CAD) sur 10_bit par approximations successives, ce qui signifie que la tension d'entrée est en permanence comparée à une tension de référence jusqu'à ce que les tension d'entrée et de référence soient à peu près égales. Le attiny13a dispose de 4 canaux ADC multiplexés (bornes PB2-5) ; chacune d'elles peut être utilisé indépendamment pour mesurer des tensions. Pour l'instant, nous laissons de côté certaines fonctions telles que le mode de fonctionnement libre, le démarrage de l'ADC sur interruption ou le déclenchement d'une interruption après conversion. La notice du attiny13a a une information détaillée sur ce sujet Great Cow BASIC saura vous satisfaire ce qui fait que l'utilisation de l'ADC peut être faite facilement.+Le attiny13a dispose d'une conversion analogique/digitale (ADC - analog/digital conversion) sur 10-bit par approximations successives, ce qui signifie que la tension d'entrée est en permanence comparée à une tension de référence jusqu'à ce que les tensions d'entrée et de référence soient à peu près égales. Le attiny13a dispose de 4 canaux ADC multiplexés (bornes PB2-5) ; chacune d'elles peut être utilisée indépendamment pour mesurer des tensions. Pour l'instant, nous laissons de côté certaines fonctions telles que le mode de fonctionnement libre, le démarrage de l'ADC sur interruption ou le déclenchement d'une interruption après conversion. La notice du attiny13a a des informations détaillées sur ce sujet, mais Great Cow BASIC saura vous satisfairece qui fait que l'ADC peut être utilisée facilement.
  
-Pour le besoin présent, j'utiliserai le mode de simple conversion de l'ADC avec une résolution de 8-bit. C'est suffisamment précis, car le rapport cyclique du PWM a la même résolution de 8-bit (gamme de valeurs de 0 à 255) ; aussi, je n'ai pas besoin d'une haute résolution pour ensuite passer à une basse. Deuxièmement, j'utiliserai une fréquence moyenne pour mesurer la tension ; plus la fréquence de mesure est haute, plus les lectures sont imprécises. Avec une résolution sur 8-bit, chaque valeur de l'ADC correspond à un niveau de tension (ADCvalue = Volt255). Si le microcontrôleur est alimenté sous 5 V, la mesure lira environ 0,0196 mV par pas. Alimenté sous 3 V, chaque pas de lecture vaudra environ 0,0117 mV. Voyez le tableau ci-dessous pour quelques valeurs arbitraires.+Pour le besoin présent, j'utiliserai le mode de conversion simple de l'ADC avec une résolution de 8-bit. C'est suffisamment précis, car le rapport cyclique du PWM a la même résolution de 8-bit (gamme de valeurs de 0 à 255) ; aussi, je n'ai pas besoin d'une haute résolution pour ensuite passer à une basse. Deuxièmement, j'utiliserai une fréquence moyenne pour mesurer la tension ; plus la fréquence de mesure est haute, plus les lectures sont imprécises. Avec une résolution sur 8-bit, chaque valeur de l'ADC correspond à un niveau de tension (ADCvalue = Volt255). Si le microcontrôleur est alimenté sous 5 V, la mesure lira environ 0,0196 mV par pas. Alimenté sous 3 V, chaque pas de lecture vaudra environ 0,0117 mV. Voyez le tableau ci-dessous pour quelques valeurs arbitraires.
  
  
Ligne 40: Ligne 40:
 Pour piloter la LED avec le potentiomètre, j'étendrai le code du PWM logiciel pour qu'il lise la valeur analogique du potentiomètre et règle la luminosité en conséquence. Pour piloter la LED avec le potentiomètre, j'étendrai le code du PWM logiciel pour qu'il lise la valeur analogique du potentiomètre et règle la luminosité en conséquence.
  
-Ceci fonctionne, bien sûr, avec les variantes du PWM matériel de l'article précédent ; je n'ai pas les variantes du PWM pour simplifier cet article.+Ceci fonctionne, bien sûr, avec les variantes du PWM matériel de l'article précédent ; pour simplifier cet article, je n'ai pas inclus les variantes du PWM.
  
  
Ligne 49: Ligne 49:
 I prefer to have PIN 8 (VCC) on the upper left hand corner of the breadboard. The potentiometer should have three terminals, place the potentiometer: the terminals are in front of you and begin to connect from left to right: first terminal should go to ground, second to PIN 3 (PB4) of the microcontroller and third terminal should go to positive supply voltage (VCC). If the terminals are not properly connecting to the breadboard solder some wires to the terminals or stick a male / female jumper wire to them and connect the wires to the breadboard (if you have another form of potentiometer please refer to the appropriate datasheet). Then connect the anode (long lead) of the LED through a 220 Ohm resistor with PIN 6 (PB1) and the cathode (short lead) of the LED to Ground. After this connect the power supply and see how the brightness of the LED changes by turning the potentiometer left or right.** I prefer to have PIN 8 (VCC) on the upper left hand corner of the breadboard. The potentiometer should have three terminals, place the potentiometer: the terminals are in front of you and begin to connect from left to right: first terminal should go to ground, second to PIN 3 (PB4) of the microcontroller and third terminal should go to positive supply voltage (VCC). If the terminals are not properly connecting to the breadboard solder some wires to the terminals or stick a male / female jumper wire to them and connect the wires to the breadboard (if you have another form of potentiometer please refer to the appropriate datasheet). Then connect the anode (long lead) of the LED through a 220 Ohm resistor with PIN 6 (PB1) and the cathode (short lead) of the LED to Ground. After this connect the power supply and see how the brightness of the LED changes by turning the potentiometer left or right.**
  
-le circuit sur la plaque d'essai+Le circuit sur la plaque d'essai
  
-Je présume que vous avez flashé le programme sur le microcontrôleur avec votre programmateur préféré ou un Arduino comme ISP. Maintenant, pour tester le programme, placez le attiny13a n'importe où au milieu de la plaque d'essai de sorte que les côtés haut et bas soient placés au-dessus et en-dessous de la ligne médiane de la plaque.+Je présume que vous avez flashé le programme sur le microcontrôleur avec votre programmateur préféré ou un Arduino comme ISP. Maintenant, pour tester le programme, placez le attiny13a n'importe où au milieu de la plaque d'essaide sorte que les côtés haut et bas soient placés au-dessus et en dessous de la ligne médiane de la plaque.
  
-Je préfère avoir la borne 8 (VCC) tout en haut à gauche de la plaque. Le potentiomètre devrait avoir trois bornes. Posez le potentiomètre avec les connexions vers vous. Commencez les connexions de la gauche vers la droite ; la première va à la masse, la seconde à la borne 3 (PB4) du microcontrôleur et la troisième va sur la tension positive de l'alimentation (VCC). Si les bornes ne sont pas connectées proprement à la plaque d'essai, soudez des fils sur ces bornes ou branchez-leur un cavalier mâle/femelle et connectez les fils  la plaque (si vous avez une autre forme de potentiomètre, référez-vous, s'il vous plaît, à la notice appropriée). Ensuite, connectez l'anode (la longue patte) de la LED, via une résistance de 220 Ohms, à la borne 6 (PB1) et la cathode (patte courte) de la LED à la masse. Après cela, branchez l'alimentation et voyez comme la luminosité de la LED varie en tournant le potentiomètre à droite ou à gauche.+Je préfère avoir la borne 8 (VCC) tout en haut à gauche de la plaque. Le potentiomètre devrait avoir trois bornes. Posez le potentiomètre avec les connexions vers vous. Commencez les connexions de la gauche vers la droite ; la première va à la masse, la seconde à la borne 3 (PB4) du microcontrôleur et la troisième va sur la tension positive de l'alimentation (VCC). Si les bornes ne se connectent pas directement à la plaque d'essai, soudez des fils sur ces bornes ou branchez-leur un cavalier mâle/femelle et connectez les fils sur la plaque (si vous avez une autre forme de potentiomètre, référez-vous, s'il vous plaît, à la notice appropriée). Ensuite, connectez l'anode (la longue patte) de la LED, via une résistance de 220 ohms, à la borne 6 (PB1) et la cathode (patte courte) de la LED à la masse. Après cela, branchez l'alimentation et voyez comment la luminosité de la LED varie en tournant le potentiomètre à droite ou à gauche.
  
 **Conclusion **Conclusion
Ligne 59: Ligne 59:
 Reading analog values is a very useful function of the microcontroller and there are many possible uses for it. Besides reading a potentiometer you could e. g. measure the systems battery status and implement a draining protection for your systems battery. As an exercise you could expand the code to not only control the brightness of the LED but also the length of the pauses. In the next article we will experiment further with the analog digital conversion and see if we can print out the measured values to the serial console.** Reading analog values is a very useful function of the microcontroller and there are many possible uses for it. Besides reading a potentiometer you could e. g. measure the systems battery status and implement a draining protection for your systems battery. As an exercise you could expand the code to not only control the brightness of the LED but also the length of the pauses. In the next article we will experiment further with the analog digital conversion and see if we can print out the measured values to the serial console.**
  
 +Conclusion
 +
 +La lecture de valeurs analogiques est une fonction très utile d'un microcontrôleur et il y a de nombreuses utilisations de celle-ci. Outre la lecture d'un potentiomètre, vous pouvez, par exemple, mesurer l'état des batteries d'un système informatique et installer une protection de la consommation des batteries du système. Comme exercice, vous pouvez étendre le code pour non seulement piloter la luminosité de la LED, mais aussi la longueur des pauses. Dans le prochain article, nous poursuivrons nos essais de conversion analogique/digitale pour voir si nous pouvons visualiser les valeurs mesurées sur un afficheur série.
  
 **References **References
Ligne 65: Ligne 68:
  
 ADC code optimisation http://gcbasic.sourceforge.net/help/_analog_digital_conversion_code_optimisation.html** ADC code optimisation http://gcbasic.sourceforge.net/help/_analog_digital_conversion_code_optimisation.html**
 +
 +Références
 +
 +Explication approfondie de l'ADC : http://maxembedded.com/2011/06/the-adc-of-the-avr/
 +
 +Optimisation du code de l'ADC : http://gcbasic.sourceforge.net/help/_analog_digital_conversion_code_optimisation.html
  
  
Ligne 75: Ligne 84:
 Also thanks to Bernd Dau for the hint with wrong file sizes.** Also thanks to Bernd Dau for the hint with wrong file sizes.**
  
 +
 +Remerciements
 +
 +Je souhaite remercier Evan Venn (Anobium) de l'équipe Great Cow BASIC pour ses précieux renseignements et ses conseils pratiques.
 +
 +Merci aussi à Bernd Dau pour sa remarque sur les tailles de fichiers erronés.
  
issue129/great_cow_basic.1517728660.txt.gz · Dernière modification : 2018/02/04 08:17 de d52fr