Arduino: Nokia LCD & Sensors (4 / 4 stap)

Stap 4: Analoog naar digitaal conversie


De meesten van u zult willen deze stap overslaan.

Als je nieuwsgierig bent, of analoge problemen, of op zoek naar enkele analoge schakelingen ontwerpen, dit nuttig kan zijn.

De ATmega328 heeft zes analoge input pinnen (Zie pin toewijzing). Ik ben ervan uitgaande dat de chip heeft slechts één A/D (van analoog naar digitaal) converter chip erin. Het heet een tien bits converter omdat het gebruik maakt van tien bits, 210 of 1024. De volgende tekening is een vrij goede weergave van de werking van het conversieprogramma. De beschrijving is vrij technisch en niet zo belangrijk is voor de meeste gebruikers van de Arduino. Maar kijk eens naar het analoge signaal vertegenwoordigd door het soepel gebogen signaal op de hoogste linkerzijde. De trap stap foto linksonder is representatief voor de digitale uitgang. U moet er rekening mee dat in plaats van een vloeiend gebogen lijn als het analoge signaal, de digitale uitgang zeer scherpe is, vaak aangeduid als een traptrede. Voor de Arduino gaat de digitale ingang van 0000000000 naar 1111111111 oftewel 1023 stappen in decimale notatie.

Deze digitale uitgang komt niet uit de ATmega direct. Het wordt alleen intern gebruikt door de software.
Voor de standaard Arduino hebt u 5V op de analoge pin, zullen de analogRead() 1023. Aangezien er slechts 1023 verschillende mogelijkheden waardoor elke stap is 0.004888 V. Wat dat betekent is dat hebt u analogRead() van 1023, het 5.000V of 4.996V of ergens tussendoor zou kunnen betekenen. Dus betekent elke traptrede dat de werkelijke spanning uitgeschakeld door 0.004888 V worden kan.

Praktisch gesproken: Dus velen van u zullen zeggen who cares en in de meeste gevallen bent u juist. De nauwkeurigheid van deze lezing is afhankelijk van de nauwkeurigheid van de Vcc. Als de Arduino een 7805 spanningsregelaar gebruikt, dan is de 5V is +/-1,5%, oftewel 0.075V. De werkelijke spanning zou overal voor 5.075V aan de 4.925V die veel groter is dat de tolerantie van een stap. Een andere factor is ruis op Vcc en op het analoge signaal. Met een PC USB, de 5V gehanteerde tolerantie bedraagt meestal erger. Mijne gemeten 4.84V.

Praktisch gesproken met de standaard Arduino, uw analoge nauwkeurigheid is beperkt tot +/-1,5% van de 7805 anyway.

Opmerking: Ik ben niet 100% zeker dat de volgende klopt.
Uitgebreide informatie: De 5V komt overeen met 1023 geldt niet altijd voor de Arduino. De 1023-waarde is de spanning op de pin (pin 20 van de ATmega) van de AVcc onder de meeste omstandigheden. Gewoonlijk AVcc is gebonden aan de Vcc en 5V. Echter, als de schets de functie AnalogReference(INTERNAL) bevat, wordt een interne verwijzing van 1.1V (voor het ATmega-168 en 328) gebruikt. Ik ben er tamelijk zeker wat dit betekent is dat als u een 1.1V signaal op een analoge pin, dan zal de analogRead 1023. Wat dit betekent is elke stap is gelijk aan 0.001075V wat betekent kunt u nauwkeuriger, maar het betekent ook dat uw maximale analoge ingang kan alleen worden 1.1V. AnalogReference() kunnen nu ook worden ingesteld op extern. Wat dit betekent is de analoge verwijzing is gelijk aan de spanning die je op de AREF pin.
WARINING: Wees voorzichtig als u externe en een externe spanningsbron; Dit zou kunnen verstoren en de ATmega beschadigen. Als u een verschillende schets, die niet AnalogReference(EXTERNAL) set heeft, dan gaat de externe referentiespanning vechten de standaard spanning op AVcc. Het is als de twee batterijen van verschillende spanningen aan elkaar koppelen. U hebt een volledige circuit met spanning maar nul weerstand zo veel van de huidige. Ik denk dat er een manier rond dit door het te verbinden door middel van een weerstand, maar ik ben niet zeker.

De reden die ik noemde AVcc en analoge referentie is dat ik was het opzetten van mijn Arduino-kloon tot gebruik de Nokia-LCD. Ik heb gemerkt dat LCD vrij goed werkte wanneer mij watertje using naar de USB-macht, maar het was zeer donker toen ik in een Adafruit 9 volt batterij adapter aangesloten. Dus ik mijn trouwe pakte weinig DMM en deed probleem oplossen. Met de USB-macht waren de Vcc en de Aref pin op de ATmega op 4.84V. Met een 9 volt-batterij aangesloten op de 7805 regulator waren de twee pinnen op 5.03V. Ik had ook een temperatuursensor in bijlage en verder testen geverifieerd dat de temperatuurmeting gevarieerd afhankelijk van wat de spanning van de AVcc was.

Dus als u verbeteren de nauwkeurigheid van de 'standaard' Arduino wilt, zijn er manieren om het te doen.
Als u AnalogReference(INTERNAL) instelt, zal de ATmega 1.1V als referentie te gebruiken, uw berekeningen dienovereenkomstig aan te passen.
TIP: Telkens als u AnalogReference(), gooi de eerste analoge lezing als het zinloos zijn zal.

Als u AnalogReference(EXTERNAL) hebt ingesteld, kunt u bieden u eigen referentie, aangenomen dat er een nauwere tolerantie.
Zie waarschuwing hierboven.
TIP: Telkens als u AnalogReference(), gooi de eerste analoge lezing als het zinloos zijn zal.

Een andere methode die dezelfde zes analoge pinnen gebruiken voor output.
D/A (digitaal naar analoog): De Arduino maakt geen gebruik van een D/A (digitaal naar analoog) converter. In plaats daarvan gebruikt het, iets genaamd:
Pulse Width Modulation (PWM). PWM is niet een analoog signaal. Het is een gepulseerde digitaal signaal. De tekening is van http://arduino.cc/en/Tutorial/PWM.
Wat de Arduino stuurt is een digitaal signaal dat af en aan bij verschillende rentetarieven pulseert.

Instructie Output
analogWrite(0) 0 volt uit
analogWrite(64) zie tekening
analogWrite(127) zie tekening
analogWrite(255) 5 volt uit

De tekening toont de uitvoer gedurende een periode van tijd. Als de tekening toont de waarde van analogWrite gaat verder dan 0, wordt de breedte van de puls in de positieve groter. Met andere woorden, is de tijd dat de uitvoer bij 5 volt blijft langer. Nu dit is moeilijk uit te leggen, maar als je in termen van gemiddelde spanning denken bij analogWrite 0, is dan is de gemiddelde spanning 0 en 255, de gemiddelde spanning is 5V. Nu wanneer er 127, u zien kunt dat er ½ de tijd en uit ½ de tijd, dus de gemiddelde spanning 2,5 volt is. Nu als de waarde groter is dan 127 gaat, zou u moeten zien dat de gemiddelde spanning stijgt.

Voor degenen onder u die graag echte wereld "bewijs", is hier een manier om te laten zien. Een condensator glad uit DC spanning. Dat is waarom u ziet ze altijd op Vcc en voeding uitgangen. Nu neemt u een condensator (I 'm guessing een 1ufd of misschien .5ufd) van een analoge pin op grond. Als u uw schets schrijft voor het instellen van de analoge pin als output en stuurt een analogWrite(127), moet uw DMM de spanning op 2.5V weergeven. By the way, de wiskunde voor PWM is mij een raadsel, maar ik weet dat het wordt in AC circuits die ver is buiten wat deze Lui oude Geek wil geraken.

Simpel gezegd, steekt PWM een signaal dat een analoog signaal voor de meeste doeleinden simuleert.
TIP: Een ding om te onthouden, terwijl de analogRead van 0 tot 1023, de analogWrite alleen gaat van 0 tot 255, een byte door de manier gaat.

Niet-essentiële Info: Meest adequaat ontworpen Arduinos en klonen hebben een 0.01ufd condensator van Vcc met GND en naast de ATmega-chip. De reden is voor het filteren van ruis van de digitale ATmega. Bij het uitvoeren van een schets, allermeest naar de interne circuits wil overschakelen van 0 tot 5 volt vrijwel direct. Dit levert veel lawaai, veel daarvan is hoge frequentie. De condensator zal de meeste van deze absorberen en glad uit, net zoals zij heeft gedaan in onze kleine experiment.

Gerelateerde Artikelen

Arduino Temp/vochtigheid Sensor met DHT11 en I2C LCD eendaagse Project

Arduino Temp/vochtigheid Sensor met DHT11 en I2C LCD eendaagse Project

Ik heb gekocht een Arduino Mega 2560-set die kwam met enkele sensoren en natuurlijk, en Arduino Mega.In dit instructable, zal ik delen met u de stappen die ik nam om een Arduino gebaseerd temperatuur en de vochtigheid weergeven.Items nodig:Arduino Me
Arduino en ultrasone sensor control servo en afstand meter

Arduino en ultrasone sensor control servo en afstand meter

Arduino en ultrasone sensor control servo en afstand meterIn dit project kunt u bekijken hoe u kunt besturen servomotor en tu Bereken afstand met behulp van de arduino en ultrasone sensor. U nodig hebt: 1. Arduino (uno, nano, mini pro)HardwareZet de
Arduino interactieve correcte Sensor

Arduino interactieve correcte Sensor

We zullen moeten leren hoe het bouwen van een Arduino-circuit dat de invoer van een soort analoge sensor (sensor van de trillingen, druksensor, potmeter haalt) en gebruiken om het geluid uit een luidspreker piëzo. Dit specifieke voorbeeld leert u hoe
Arduino 5110 LCD Shield

Arduino 5110 LCD Shield

Arduino 5110 LCD schild DHT11 Tint RTCYouTube-video 's
Arduino tijd en Sensor-gebaseerde Androïde muziekspeler

Arduino tijd en Sensor-gebaseerde Androïde muziekspeler

Veronderstel uw muziekspeler die spelen voor u, een speler die zin het omringend licht, temperatuur en tijd , dat is van invloed op de stemming van een persoon, en kies een song categoriseren als stemmingen. Omdat ik niet een sensor die menselijke em
Arduino tekst LCD animatie

Arduino tekst LCD animatie

ik heb veel pagina's over het kabellengte tot een LCD-scherm aan een Arduino, en pagina's die u helpen trekken aangepaste tekens, maar ik zag velen die de aangepaste karakter-functie voor animatie gebruikt.Wat u nodig hebt voor dit:-Arduino Uno-HD447
Home Automation met Arduino, Buttons, LCD, EEPROM en slimme telefoon

Home Automation met Arduino, Buttons, LCD, EEPROM en slimme telefoon

Nu kunnen we de controle van romp huis met slimme telefoonStap 1: Hardware vereist voor domotica kunt u verschillende dingen, ik kies schakelen of relayIn dit project u zal bepalen switcher door mobiele .if mobiele niet aanwezig is kunt u ook bediene
Arduino + Nokia 5110 display + IR sensor

Arduino + Nokia 5110 display + IR sensor

Hi! Vandaag mij ben uiterlijk vertoon u mijn nieuwe project met behulp van een Arduino UNO, een display van de Nokia 5110 (PCD8544) en een IR-sensor. Ik geslaagd om het schrijven van een schets die het lezen van de gegevens die worden ontvangen door
Streaming video van SD-kaart naar Nokia LCD met Arduino

Streaming video van SD-kaart naar Nokia LCD met Arduino

Voor een lange tijd, ik dacht dat het afspelen van video met kon audio niet op de Arduino. Toen op een dag besloot ik te geven het een schot en het bleek eenvoudiger dan ik dacht.Ik besloot te schrijven van de stappen in een instructable ten behoeve
Arduino - Nokia 5110 LCD temperatuurmeter met de DS18B20

Arduino - Nokia 5110 LCD temperatuurmeter met de DS18B20

Hallo mensen! Ik maakte een temperatuurmeter met een Nokia 5110 LCD.Ik heb toegevoegd de librarys en ik maakte een beeld voor de LCD-achtergrond met een afgeronde rand en temperatuur pictogram diewordt toegevoegd aan de LCD5110_Graph Library en heet
Arduino ultrasone waterniveau Sensor voor espressomachines

Arduino ultrasone waterniveau Sensor voor espressomachines

Ik heb een zeer goede maar mooie oude koffie espressomachine met een uitneembare watertank, het probleem is dat het niet bieden een waarschuwing voor laag waterniveau, licht, dus ik kan niet zo'n niveau voordat u uit water weten! OF op zijn minst zon
Monteren van een Arduino Nano / LCD projecten Platform

Monteren van een Arduino Nano / LCD projecten Platform

De "Arduino Nano / 1.8" TFT LCD projecten Platform "bestaat uit een 3D gedrukte geval dat wraps een aangepaste ontworpen PCB waarop is gemonteerd een Arduino Nano, een 1.8" TFT LCD met een SD-kaartlezer en drie drukknoppen die blootsta
Arduino omgekeerde obstakel sensor voor auto's

Arduino omgekeerde obstakel sensor voor auto's

dit is een instructable voor het maken van uw auto reverse/steun/parkeren obstakel sensor. Het volledige verhaal in op mijn blog:http://liudr.WordPress.comMet de sensor van dit obstakel verneemt u van uw auto afstand tot een andere auto achter terwij
Arduino Controlled Motion Sensor

Arduino Controlled Motion Sensor

In dit Instructable, zal ik uitleggen hoe het bouwen van een motie geactiveerde alarm! Het maakt gebruik van een Arduino microcontroller, een PIR (passief infrarood) sensor en een type alarm. Hier kunt u een LED-indicator, een zoemer of een piezo. Da