Arduino: Nokia LCD & sensorer (4 / 4 steg)

Steg 4: Analog till Digital konvertering



De flesta av er kommer att vilja hoppa över detta steg.

Om du är nyfiken, eller har analoga problem, eller funderar du på att konstruera några analoga kretsar, detta kan vara till hjälp.

ATmega328 har sex analog ingång stift (se pin mappning). Jag antar att chipet har endast en (analog till digital) A/D-omvandlare chip i den. Det kallas en tio bitars omvandlare eftersom den använder tio bitar, 210 eller 1024. Nästa ritningen är en ganska bra bild av hur omvandlaren fungerar. Beskrivningen är ganska tekniskt och inte så viktigt för de flesta Arduino användare. Men titta på den analoga signalen representeras av mjukt svängda signalen på övre vänstra. Trappa steg bilden på nederst vänstra är representativt för den digitala utgången. Observera att i stället för en smidigt böjd linje som den analoga signalen, den digitala utgången är mycket ojämn, kallas ofta ett trappsteg. För Arduino går den digitala ingången från 0000000000 1111111111 som ligger 1023 steg i decimal.

Denna digital utgång kommer inte ur ATmega direkt. Det används endast internt av programvaran.
För den vanliga Arduino om du har 5V på analoga stift, blir analogRead() 1023. Eftersom det finns bara 1023 olika möjligheter som innebär att varje steg är 0.004888 V. Det betyder om du har analogRead() av 1023, kan det betyda 5.000V eller 4.996V eller någonstans däremellan. Så innebär varje trappsteg att den faktiska spänningen kan vara av 0.004888 V.

Praktiskt taget: Så många av er kommer att säga vem bryr sig och i de flesta fall har du rätt. Riktigheten av denna behandling är beroende Vcc är korrekta. Om Arduino använder en spänningsregulator 7805, då är 5V +/-1,5% som är 0.075V. Den faktiska spänningen kan vara var som helst för 5.075V till 4.925V som är mycket större att toleransen för ett steg. En annan faktor är buller på Vcc och på den analoga signalen. Med en PC USB är 5V toleransen oftast värre. Mina uppmätta 4.84V.

Praktiskt sett med standard Arduino din analoga noggrannhet är begränsad till +/-1,5% av 7805 ändå.

Obs: Jag är inte 100% säker på att följande är korrekt.
Avancerad information: 5V lika med 1023 är inte alltid sant för Arduino. 1023 värdet är spänningen på den AVcc pin (stift 20 av ATmega) under de flesta förhållanden. Vanligt AVcc är knuten till Vcc och är 5V. Dock om skissen innehåller funktionen AnalogReference(INTERNAL), används en intern referens av 1.1v (för ATmega 168 och 328). Jag är ganska säker på vad detta betyder är att om du har en 1.1v signal på en analog stift, då analogRead blir 1023. Vad detta betyder är varje steg är lika med 0.001075V vilket innebär att du kan få mer noggrannhet men det innebär också att din maximala analog ingång kan 1.1v. Nu kan AnalogReference() också anges till externa. Vad detta innebär är analog referens är lika med spänningen du sätta på AREF PIN-koden.
WARINING: var försiktig om du använder externa och en yttre spänningskälla; Detta kan störa och skada ATmega. Om du kör en annan skiss, som inte har AnalogReference(EXTERNAL) set, sedan ska yttre spänning hänvisningen vara bekämpa standard spänningen på AVcc. Det är som ansluter två batterier av olika spänningar tillsammans. Du har en komplett krets med spänning men noll motstånd så massor av strömmen. Jag tror det finns en väg runt detta genom att ansluta den via ett motstånd men jag är inte säker.

Anledningen till att jag nämnde AVcc och analog referens är att jag att min Arduino-klon upp till använda Nokia LCD. Jag märkte att LCD fungerat ganska bra när jag var användande USB makt men det var mycket mörkt när jag pluggade i ett Adafruit 9 volts batteri adapter. Så jag tog min trogna lilla DMM och gjorde några felsökning. Med USB-kraften var Vcc och Aref stiftet på ATmega på 4.84V. Med ett 9 volts batteri ansluten till 7805 regulatorn var två stiften på 5.03V. Jag hade också en temperaturgivare kopplade och ytterligare tester kontrolleras att den temperatur behandlingen varierade beroende på vad den AVcc spänningen var.

Så om du vill förbättra noggrannheten i "standard" Arduino, finns det sätt att göra det.
Om du anger AnalogReference(INTERNAL), kommer ATmega använda 1.1v som referens, justera dina beräkningar.
Tips: Varje gång du ändrar AnalogReference(), kasta den första analoga behandlingen eftersom det är meningslöst.

Om du anger AnalogReference(EXTERNAL), kan du ge dig egen referens, antog att den har en snävare tolerans.
Se varningen ovan.
Tips: Varje gång du ändrar AnalogReference(), kasta den första analoga behandlingen eftersom det är meningslöst.

Dessa samma sex analoga pinnar använder en annan metod för utdata.
D/A (Digital till Analog): Arduino använder inte en D/A (Digital till Analog) omvandlare. Istället använder, något som kallas:
Pulse bredd Modulation (PWM). PWM är inte en analog signal. Det är en pulsad digital signal. Ritningen är från http://arduino.cc/en/Tutorial/PWM.
Vad Arduino skickar ut är en digital signal som pulserar av och på i olika takt.

Instruktion utgång
analogWrite(0) 0 volt ut
analogWrite(64) se ritning
analogWrite(127) se ritning
analogWrite(255) 5 volt ut

Ritningen föreställer produktionen under en viss tidsperiod. Som visas i ritningen som analogWrite värdet går längre över 0, blir bredden på positiva pulsen bredare. Alltså är tiden produktionen stannar vid 5 volt längre. Nu detta är svårt att förklara men om du tänker i termer av genomsnittliga spänning när analogWrite är 0 då den genomsnittliga spänningen är 0 och när det är 255, då den genomsnittliga spänningen är 5V. Nu när det är 127, kan du se att det är på ½ tid och av ½ tiden så den genomsnittliga spänningen är 2,5 volt. Nu värdet går större än 127, bör du se att den genomsnittliga spänningen går upp.

För er som gillar verkliga världen "proof", är här ett sätt att visa detta. En kondensator jämnar ut DC-spänningar. Det är därför du alltid ser dem på Vcc och strömförsörjning utgångar. Nu om du tar en kondensator (jag gissar en 1ufd eller kanske .5ufd) från en analog stift till marken. Om du skriver din skiss för att ställa upp den analoga stiftet som produktion och skicka ett analogWrite(127), bör din DMM visar spänningen på 2.5V. Förresten, matematik av PWM är för mig obegripligt men jag vet att det blir till AC kretsar som är långt utöver vad detta Lata gamla Geek vill komma in.

För att uttrycka det enkelt, sätter PWM ut en signal som simulerar en analog signal för de flesta ändamål.
Tips: En sak att komma ihåg, medan analogRead går från 0 till 1023, analogWrite bara går från 0 till 255, en byte förresten.

Icke-väsentliga information: Mest adekvat utformade Arduinos och kloner har en 0.01ufd kondensator från Vcc till GND och bredvid ATmega chip. Anledningen är att filtrera ljud från den digitala ATmega. När du kör en skiss, de flesta av inre kretsen försöker växla från 0 till 5 volt nästan omedelbart. Detta producerar en massa oväsen, en hel del som är högfrekventa. Kondensatorn kommer att absorbera det mesta av detta och jämna ut den, precis som det gjorde i vårt lilla experiment.

Se Steg
Relaterade Ämnen

Arduino Temp/fukt Sensor använder DHT11 och I2C LCD-en dag projekt

Jag har köpt en Arduino Mega 2560 uppsättning som kom med några sensorer och naturligtvis och Arduino Mega.I detta instructable, jag kommer att dela med dig stegen jag tog för att göra en Arduino baserade temperatur och luftfuktighet visas.Element, s...

Duscha Monitor Arduino med LCD-skärm

Välkommen! För vår miljö Capstone klass (senior te) för St. Olaf College vi byggt en bildskärm som skulle effektivt övervaka hur mycket vatten använder en dusch. Tanken bakom denna vatten monitor är att om du bifogar en piezo givare (liten mikrofon)...

Arduino tid-och-Sensor-baserade Android musikspelare

Tänk dig din musikspelare som spelar för dig, en spelare den meningen det omgivande ljuset, temperatur och tid som påverkar stämningen i en person, och välja en låt kategorisera som stämningar. Eftersom jag inte har en sensor som kan översätta mänskl...

Arduino interaktiv ljud Sensor

Vi kommer att lära hur man bygger en Arduino krets som tar input från någon form av analog sensor (vibrationsgivare, trycksensor, potentiometer) och använda den till utgång ljud från en piezo speaker. Detta gäller till exempel lär du dig att ansluta...

Bänk PSU strömförsörjning från gamla ATX med Arduino och LCD-skärm

Hej alla och Välkommen till min första Instructable.Jag har alltid velat en bänk PSU för enkel åtkomst till en strömkälla, och något som jag kan lita på när du arbetar med olika projekt. Jag ville ha ett NÄTAGG som:• ger 12v och 5v 3.3V utgångar• ger...

Arduino och ultrasonic sensor control servo och distans mätare

Arduino och ultrasonic sensor control servo och distans mätareI detta projekt kan du se hur du styr servomotor och tu beräkna avstånd med hjälp av arduino och ultrasonic sensor. Du behöver: 1. Arduino (uno, nano, pro mini)HårdvaraInrätta trigpin ultr...

Arduino text LCD animation

jag har sett många sidor om hur tråd upp en LCD-panel till en Arduino och sidor som hjälper dig att rita egna tecken, men jag såg inte många som använt funktionen anpassade tecken för animering.Vad du behöver för detta:-Arduino Uno-HD44780-kompatibel...

Arduino 5110 LCD sköld

Arduino 5110 LCD sköld DHT11 nyans RTCYouTube-videor...

Hemautomation med arduino, knappar, LCD, EEPROM och smarttelefon

Nu kan vi styra skrovet med smart telefon hemSteg 1: Hårdvara krävs för hemautomation kan du lägga till olika saker jag väljer omkoppling eller reläI detta projekt du styr kopplat av mobila .if mobil finns inte du kan också använda knappsatsenJag ock...

Bil strålkastare Arduino fotomotstånd Sensor

Kunna berätta om huruvida du strålkastare är på att använda en arduino och foto sensorSteg 1: Vad du behöver 1. Arduino * jag använde och Arduino Uno2. hoppare ledningar3. fordon med manuell huvudet ljus4. ledde5. fotomotståndSteg 2: KretsenEn ström...

Arduino - Nokia 5110 LCD temperatur mätare med DS18B20

Hej världen! Jag gjorde en temperatur mätare med en Nokia 5110 LCD.Jag la bibliotek och jag gjort en bild på LCD bakgrunden med en rundad kant och temperatur somtillsätts LCD5110_Graph Library och heter borderRoundedIcon .cFölj nästa steg för den sch...

Arduino + Nokia 5110 display + IR sensor

Hi! Idag är jag visa er mitt nya projekt med en Arduino UNO, Nokia 5110 display (PCD8544) och en IR-sensorn. Jag lyckades skriva en skiss som läser data tas emot av IR-sensorn och sedan Visa namnen på påskjuten knapparna på skärmen. Jag använde även...

Strömmande video från SD-kort till Nokia LCD med Arduino

Länge tänkte jag spela upp video med var ljud inte möjligt på Arduino. En dag jag beslutade då att ge det ett skott och det visade sig vara enklare än jag trodde.Jag beslöt att skriva stegen i en instructable till förmån för andra överväger prova sjä...

Montering en Arduino Nano / LCD projekt plattform

Den "Arduino Nano / 1.8" TFT LCD projekt plattform "består av en 3D tryckta fall att wraps en anpassade utformade PCB som är monterad en Arduino Nano, en 1.8" TFT LCD med en SD-kortläsare och tre tryckknappar som är utsatta på framsida...

Arduino termometer med Sensor LM35 temperatur

Arduino termometer med LM35 temperaturgivare är en mycket enkel att genomföra Arduino baserat projekt. Dess en perfekt projekt om du är nybörjare och har bara började praktiskt testa Arduino projekt.I detta projekt kommer vi visar temperaturen i grad...

Arduino kontrollerad Motion Sensor

i detta Instructable, ska jag förklara hur man bygger en rörelse aktiverat larm! Det använder en Arduino mikrokontroller, en PIR (passiv infraröd)-sensor och en typ av larm. Du kan använda en LED-indikator, en Summer eller en piezo. Det är den enkla...

Arduino Wireless parkering Sensor

Detta projekt kommer att beskriva uppbyggnaden av våra bärbara parkering sensorer.Data från ultraljudssensorer, systemet kommer att se LCD-skärmen via bluetooth. Vårt system kommer att ge fördelar över hela linjen är mycket enkel att transportera och...

Arduino markens fukt Sensor

Redigera ***Använd gärna motstånd när du ansluter lysdioderna till din Arduino!Redigera ***I detta instructable jag visar dig hur du ansluter till en Arduino Nano och en fukt sensor. Informationen kommer då att visas med 5 lysdioder. Detta är mycket...

Arduino ledar-LCD-klocka

Denna klocka är utformad som en fristående klocka eller som en ledar-tar tid att driva slav-tar tid och är bärbar med batteribackup. Se klockans hemsida för ytterligare detaljer LCD klocka hem huvudsidaUppdatering - automatisk sommar advance och vint...