Arduino : Nokia LCD & capteurs (4 / 4 étapes)

Étape 4: Conversion numérique analogique

Plupart d'entre vous voudront sauter cette étape.

Si vous êtes curieux, ou des problèmes analogiques, ou qui cherchent à concevoir des circuits analogiques, cela peut être utile.

L’ATmega328 a six broches d’entrée analogiques (voir la cartographie de la broche). Je suis en supposant que la puce a un seul convertisseur (analogique/numérique) puce dedans. Il est appelé un convertisseur 10 bits car il utilise dix bits, 210 ou 1024. Le dessin suivant est une assez bonne représentation du fonctionne du convertisseur. La description est assez technique et pas si important pour la plupart des utilisateurs de Arduino. Mais regardez le signal analogique, représenté par le signal doucement incurvée en haut à gauche. L’image d’étape d’escalier sur la partie inférieure gauche est représentative de la sortie numérique. Notez qu’au lieu d’une ligne incurvée en douceur comme le signal analogique, la sortie numérique est très irréguliers, souvent appelé un escalier pas. Pour l’Arduino, l’entrée numérique va de 0000000000 à 1111111111 1023 pas sous forme décimale.

Cette sortie numérique ne sort l’ATmega directement. Elle est uniquement utilisée en interne par le logiciel.
Pour la norme Arduino si vous avez 5V sur la broche analogique, le analogRead() sera 1023. Puisqu’il n’y a seulement 1023 différentes possibilités, ce qui signifie que chaque étape est 0.004888 V. Ce que cela signifie, c’est que si vous avez analogRead() de 1023, il pourrait signifier 5.000V ou 4.996V ou quelque part entre les deux. Donc chaque escalier pas signifie que la tension réelle peut être décalé de 0.004888 V.

En pratique : Pour beaucoup d'entre vous vont dire qui s’en soucie, et dans la plupart des cas, vous avez raison. La précision de cette lecture dépend de l’exactitude des SCR. Si l’Arduino utilise un régulateur de tension 7805, puis le 5V est de +/-1,5 %, qui est 0.075V. La tension réelle pourrait être n’importe où pour 5.075V à 4.925V, qui est beaucoup plus grande que la tolérance d’une étape. Bruit sur Vcc et le signal analogique est un autre facteur. Avec un port USB du PC, la tolérance 5V est généralement pire. La mienne mesure 4.84V.

Pratique avec l’Arduino standard, votre précision analogique est limitée à +/-1,5 % de la 7805 en tout cas.

Remarque : Je ne suis pas sûr de que ce qui suit est précis à 100 %.
Advanced information : Le 5V est égal à 1023 n’est pas toujours vrai pour l’Arduino. La valeur de 1023 est la tension sur la broche AVcc (pin 20 de l’ATmega) dans la plupart des conditions. Habituellement, AVcc est liée à la SCR et est de 5V. Toutefois, si le dessin contient la fonction AnalogReference(INTERNAL), puis une référence interne de 1.1V (pour l’ATmega 168 et 328) est utilisée. Je suis assez certain ce que cela signifie, c’est que si vous avez un 1.1V signal sur une broche analogique, puis l’analogRead sera 1023. Cela signifie qu’à chaque étape est égal à 0.001075V, ce qui signifie que vous pouvez obtenir plus de précision, mais cela signifie aussi votre entrée analogique maximale ne peut être que 1.1V. Maintenant AnalogReference() peuvent également être définies à l’extérieur. Ce qui veut dire la référence analogique est égale à la tension que vous mettez sur la broche AREF.
Avertissement: Soyez prudent si vous utilisez externe et une source de tension externe ; Cela pourrait gêner et endommager l’ATmega. Si vous exécutez un croquis différent, qui n’a pas AnalogReference(EXTERNAL) ensemble, puis la référence de tension externe va se battre à la tension de défaut sur AVcc. C’est comme les connecter ensemble les deux batteries de différentes tensions. Vous avez un circuit complet avec une tension mais résistance nulle alors beaucoup de courant. Je pense qu’il y a un moyen de contourner cela en le connectant à travers une résistance mais ne suis pas sûr.

La raison pour laquelle que j’ai mentionné AVcc et référence analogique, c’est que j’ai été mise mon Arduino-clone jusqu'à utiliser l’écran LCD Nokia. J’ai remarqué que LCD assez bien fonctionné quand j’utilisais la puissance de l’USB, mais il faisait très sombre quand j’ai branché un adaptateur de batterie Adafruit 9 v. Alors j’ai attrapé mon fidèle peu DMM et a fait quelques dépannage. Avec la puissance de l’USB, la SCR et la broche Aref sur l’ATmega étaient 4.84V. Avec la pile de 9 volts reliée au régulateur 7805 les deux broches sont à 5.03V. J’ai eu aussi un capteur de température fixé et autres essais vérifié que le relevé de température varie en fonction de ce que la tension AVcc était.

Donc si vous voulez améliorer l’exactitude de l’Arduino « standard », il y a façons de le faire.
Si vous définissez AnalogReference(INTERNAL), l’ATmega utilise 1.1V comme référence, ajuster vos calculs en conséquence.
Astuce : Une fois que vous changez AnalogReference(), jeter la première lecture analogique tel qu’il sera vide de sens.

Si vous définissez AnalogReference(EXTERNAL), vous pouvez vous fournir une référence propre, supposé il a une tolérance plus serrée.
Voir l' Avertissement ci-dessus.
Astuce : Une fois que vous changez AnalogReference(), jeter la première lecture analogique tel qu’il sera vide de sens.

Ces mêmes six broches analogiques utilisent une méthode différente pour la sortie.
N/A (numérique à analogique): L’Arduino n’utilise pas un D/A (numérique à analogique) convertisseur. Il utilise à la place, ce qu’on appelle :
Modulation de largeur d’impulsions (PWM). PWM n’est pas un signal analogique. C’est un signal pulsé numérique. Le dessin est de http://arduino.cc/en/Tutorial/PWM.
Ce qui envoie l’Arduino est un signal numérique qui marche des impulsions à des rythmes différents.

Sortie de l’instruction
analogWrite(0) 0 Volt sur
analogWrite(64) Voir le dessin
analogWrite(127) Voir le dessin
analogWrite(255) 5 volts sur

Le dessin représente la sortie sur une période de temps. Comme le montre le dessin que la valeur d’analogWrite va plus loin supérieur à 0, la largeur de l’impulsion positive obtient plus large. En d’autres termes, le temps que la sortie reste à 5 volts est plus long. Maintenant, c’est difficile à expliquer mais si vous pensez en termes de moyenne tension lorsque analogWrite est 0, alors la tension moyenne est 0 et quand c’est 255, puis la tension moyenne est de 5V. Maintenant quand il s’élève à 127, vous pouvez voir que c’est sur ½ le temps et hors ½ le temps, donc la tension moyenne est de 2,5 volts. Maintenant que la valeur est supérieure à 127, vous devriez voir que la tension moyenne augmente.

Pour ceux d'entre vous qui aiment le monde réel « proof », voici une façon de démontrer cela. Un condensateur lisse des tensions continues. C’est pourquoi vous les verrez toujours sur Vcc et sorties d’alimentation. Maintenant, si vous prenez un condensateur (je suppose une 1ufd ou peut-être .5ufd) d’une broche analogique au sol. Si vous écrivez vos croquis pour mettre en place la broche analogique en sortie et envoyer un analogWrite(127), votre DMM devrait montrer la tension à 2.5V. Par ailleurs, les mathématiques de PWM est au-delà de moi, mais je sais qu'elle pénètre dans un circuit AC qui est bien au-delà de ce que veut entrer dans ce Paresseux vieux Geek .

Pour dire les choses simplement, PWM met un signal qui simule un signal analogique pour la plupart des cas.
Astuce : Une chose à retenir, tandis que l’analogRead va de 0 à 1023, l’analogWrite seulement va de 0 à 255, un octet soit dit en passant.

Non essentiels Info : Plus adéquatement conçu Arduinos et clones ont un 0.01ufd condensateur de Vcc, GND et à côté de la puce ATmega. La raison est de filtrer le bruit de l’ATmega numérique. Lorsque vous exécutez un croquis, la plupart des circuits internes essaie de passer de 0 à 5 volts presque instantanément. Cela engendre beaucoup de bruit, beaucoup de qui est haute fréquence. Le condensateur va absorber la plupart de ces et lissez-la, tout comme il l’a fait dans notre petite expérience.

Articles Liés

Arduino temperature/HUMIDITE capteur DHT11 et I2C LCD un jour projet

Arduino temperature/HUMIDITE capteur DHT11 et I2C LCD un jour projet

J'ai acheté un ensemble de Arduino Mega 2560 qui est venu avec quelques capteurs et bien sûr et Arduino Mega.Dans ce instructable, je vais partager avec vous les étapes que j'ai pris pour faire un Arduino base température et l'humidité affichage.Élém
Arduino DIY LCD défilement shield texte

Arduino DIY LCD défilement shield texte

Ce projet est une mise à niveau sur mon « shield Arduino DIY LCD » allez voir comment le faire sur ma chaîne !Dans ce projet, je vais utiliser un Arduino Uno pour faire défiler du texte sur un écran LCD de 16 × 2 caractères qui est contrôlé avec une
Horloge avec thermomètre en utilisant Arduino, i2c 16 x 2 lcd, capteur RTC DS1307 et DHT11.

Horloge avec thermomètre en utilisant Arduino, i2c 16 x 2 lcd, capteur RTC DS1307 et DHT11.

Hello! Il a été un moment j'ai n'a pas posté quelque chose sur Instructables, mais maintenant que j'ai fait un projet simple que j'ai vu sur internet sous diverses formes. J'ai réussi à générer un code à l'aide d'autres codes que j'ai trouvé sur inte
Le streaming vidéo à partir de carte SD sur Nokia LCD avec Arduino

Le streaming vidéo à partir de carte SD sur Nokia LCD avec Arduino

Pendant longtemps, j'ai pensé que la lecture de vidéo avec l'audio n'a pas été possible sur l'Arduino. Puis un jour j'ai décidé de lui donner un coup de feu et il s'est avéré pour être plus simple que je pensais.J'ai décidé d'écrire les étapes dans u
Arduino + Nokia 5110 display + IR sensor

Arduino + Nokia 5110 display + IR sensor

Hi! Aujourd'hui, je suis vous montrer mon nouveau projet en utilisant un Arduino UNO, un écran de Nokia 5110 (PCD8544) et un capteur infrarouge. J'ai réussi à écrire un sketch qui lit les données reçues par le capteur infrarouge et ensuite affiche le
Assembler un Arduino Nano / LCD projets plateforme

Assembler un Arduino Nano / LCD projets plateforme

Le "Arduino Nano / 1.8" TFT LCD projets plate-forme "se compose d'une affaire imprimée 3D que les enveloppements un PCB personnalisé conçu sur lequel est monté un Arduino Nano, un TFT LCD de 1.8" avec un lecteur de cartes SD et trois b
Arduino - HC SR04 capteur de Distance ultrason / ultrasonique rang capteur

Arduino - HC SR04 capteur de Distance ultrason / ultrasonique rang capteur

Salut tout le monde! Aujourd'hui, j'ai fait une chose assez pratique. Un mètre de Distance avec un capteur de distance à ultrasons. Il fonctionne parfaitement et peut être utilisé pour beaucoup de choses, comme robot positionnement etc. Ne vous inqui
Arduino sans fil capteur de stationnement

Arduino sans fil capteur de stationnement

Ce projet décrit la construction de nos capteurs de stationnement portable.Données provenant de capteurs à ultrasons, le système voit l'écran LCD via bluetooth. Notre système fournira des avantages sur toute la ligne est très simple à transporter et
Rapide Arduino hygromètre (capteur d’humidité)

Rapide Arduino hygromètre (capteur d’humidité)

Nous avons eu quelques condensation et moisissure émet dans notre appartement récemment devait, selon moi, le taux d'humidité. Notre propriété est relativement récent et, par conséquent, a des propriétés très bonne isolation (double vitrage etc..). L
Voiture phare Arduino photorésistance capteur

Voiture phare Arduino photorésistance capteur

Être en mesure de dire si oui ou non vous phares sont sur l'utilisation d'un capteur photo et arduinoÉtape 1: Ce que vous aurez besoin 1. Arduino * j'ai utilisé et Arduino Uno2. fils de raccordement3. le véhicule avec des phares manuels4. led5. photo
Détecteur ultrasonique gamme en utilisant Arduino et le capteur à ultrasons SR04

Détecteur ultrasonique gamme en utilisant Arduino et le capteur à ultrasons SR04

il s'agit d'une enquête préliminaire instructable qui vous mènera à travers les étapes de mon travail pour obtenir le capteur ultrasonique SR04 connecté et travaillant à l'Arduino. Il sera ensuite intégré à mon moniteur mini environnement.  Finalemen
Arduino Shield LCD

Arduino Shield LCD

aujourd'hui, je va vous montrer comment utiliser un écran LCD pour afficher du texte en utilisant un Arduino. Il est très facile.Choses dont vous aurez besoin1 Arduino UNO1 écran LCDEtape 1: assembler Eh bien, c'est facile.Étape 2: Ajouter le Code Il
L’Arduino / TFT LCD connexion

L’Arduino / TFT LCD connexion

Vous dites que vous voulez brancher un écran TFT à un Arduino ? Vous êtes plaisante?No! Pour le prix d'un familier 2 x 16 LCD, vous obtenez un écran TFT de haute résolution. Pour aussi peu que 4 $ (frais de port inclus!), il est possible d'acheter un
Edison Intel avec Grove LCD, capteur de température et capteur infrarouge

Edison Intel avec Grove LCD, capteur de température et capteur infrarouge

Grove LCD.Temperature capteur infrarouge ESRM分別是以I2C.ADC.GPIO作為傳輸介面使用上也相當的簡單bibliothèque de MRAA中有完整的使用方式Grove的官方資料與範例也相當齊全所以實作上並不會太困難Étape 1: Grove LCD 此部分需要 importation pupm_i2clcd建議以下寫法(使用Python)importations pyupm_i2clcd lcdmyLcd = lcd. Jhd1313m1