Een beginnersgids voor Arduino (11 / 15 stap)

Stap 11: Analoge inputs en outputs.


Een aantal van de Arduino I/O pinnen kan ook worden gebruikt als digitale inputs en outputs, om te meten van spanningen (input) of dimmen van LEDs (uitgang) bijvoorbeeld.

Analoge ingangen

Meeste Arduinos hebben tussen 6 en 12 analoge input pinnen. Ze kunnen meten spanning, variërend van 0v tot de ingangsspanning (5v of 3v3)
Een het bord, deze pinnen A0-A5 worden aangeduid, en in het geval van het Leonardo, sommige van de pinnen op de digitale kant kan ook dienen als analoge ingangen. Ze zijn gemarkeerd met een punt en de naam (A6-A11) is geschreven op de rug.

Merk op dat het lezen van een analoge ingang (relatief) traag, in vergelijking met het lezen van digitale pinnen. Dit is omdat de Arduino spanningen met behulp van een interne verwijzing spanning generator (DAC, digitaal-naar-Analoog-Converter), en vervolgens vergelijken de ingangsspanning het voltage dat verwijzing, dan veranderen de referentie spanning, maatregelen weer vergelijken, veranderen de referentie spanning, vergelijken... totdat de twee spanningen gelijk zijn. http://apcmag.com/Arduino-Analog-to-Digital-conver...

De resolutie van de interne DAC is 10 bits. Dit betekent dat het maximum aantal het kan lezen 10 bits lang, of 210 = 1024, dus een getal tussen 0 (B0000000000) en 1023 (B1111111111). 1023 betekent de input 5v (of 3v3) en 0v 0 betekent.

Potentiometers

Een potentiometer, variabele weerstand of pot voor korte, is gewoon een knop met een wisser die over een ronde strook resistent materiaal glijdt. Op deze manier het varieert de weerstand tussen de Wisser en de eindpunten.

We gonna haak onze potentiometers en faders als eenvoudige spanning dividers. Meer op deze Wikipedia-pagina kunt u lezen als u niet vertrouwd met dit beginsel bent.

Als u een kijkje op het schema nemen, kunt u 2 weerstanden. R1 is de weerstand tussen de juiste pin van de potentiometer en de Wisser (middelste stift) en R2 de weerstand tussen de linker pin en de Wisser. Neem een kijkje op de formule ook. Aangezien onze potentiometer een vaste heeft waarde (50kΩ, bijvoorbeeld), R1 + R2 zal altijd 50kΩ, terwijl de R2 kan variëren tussen 0Ω en 50kΩ. (Indien R2 = 50k dan R1 = 0, en vice versa) De Fractie zal daarom altijd resulteren in een getal tussen 0 en 1. Vermenigvuldig deze verhouding met 5V (Vsubin/sub), en je krijgt een spanning tussen de 0V en 5V op uw output. Deze spanning kan worden gelezen door de Arduino van ADC (analoog digitaal conversie), en stelt de positie voor van de potentiometer (of fader). Zo fundamenteel, u de verlaten stift verbinden met de grond, de juiste pin aan de 5V pin op de Arduino, en de middelste stift op een analoge ingang. (afbeelding 3)

Een potentiometer verbinden met pin A0, het voorbeeld van en open AnalogReadSerial (bestand > voorbeelden > 01.Basics).

De enige nieuwe functie is analogRead(pin). Het is heel vanzelfsprekend, geeft het u enkel de 10-bits waarde, die de spanning op de bepaalde pin.
Het programma zal enkel print ze uit over seriële, dus open de seriële monitor (CTRL + SHIFT + M) of de seriële plotter (CTRL + SHIFT + L) en draai de potentiometer. U moet waarden variërend van 0 tot 1023 zien.
Instellen van de vertraging aan 10 of meer, in plaats van 1ms kan geven u betere resultaten in de seriële plotter.

U kunt de waarden van de 0-1023 toewijzen tot een andere reeks, bijvoorbeeld van 0 tot 100. Dit kan gedaan worden met behulp van de functie van de kaart. Neem een kijkje op voorbeeld AnalogReadSerialMap. De syntaxis van de functie van de kaart is: kaart (waarde, lowerLimitInput, upperLimitInput, lowerLimitOutput, upperLimitOutput) is gewoon de waarde aan toewijzen, in dit geval onze sensorgegevens. Het bereik van deze ingang is 0 tot 1023, zodat deze onze input grenzen zijn. Wij willen de output naar een bereik van 0 tot 100, zodat deze de grenzen van onze uitvoer zijn. Dit betekent dat als de sensor 1023 leest, de output waarde 100 zullen.
We konden hebben bereikt hetzelfde resultaat met behulp van sensorValue * 100 / 1023.

Om te zetten naar een verhouding, we moeten gebruiken een ander gegevenstype dan int: float (zwevend punt). Als wij onze sensor-waarde door 1023 verdelen, krijgen we een verhouding tussen nul en één.
We kan wijzigen van het gegevenstype van de variabele sensorValue te zweven, of de waarde van een int omzetten in een float. De eerste methode wordt gebruikt in AnalogReadSerialRatio-a, de laatstgenoemde in de AnalogReadSerialRatio-b.

Als we niet onze waarde niet eerst naar een float converteren, zal het resultaat als een int zo goed worden behandeld. De waarden na de decimale komma zullen gewoon worden genegeerd, bijvoorbeeld 1/2 = 0, maar 1.0/2 = 0,5. Normale nummers zoals '1' zal worden behandeld als ints, tenzij u een decimaalteken (1.0), dan het zal worden behandeld als een float. Als een van de factoren in een berekening een float is, zal het resultaat ook een float zijn.

Conversie van een int naar een float, kunt u de float(number) -functie gebruiken, of u kunt de notatie c ++ voor typecasting (omzetten van het ene gegevenstype naar het andere) (float) nummer .
Conversie van een float naar een int, hiervoor kunt u op dezelfde manier: int(number) of (int) nummer, maar de opmerking dat dit gewoon het nummer op de decimale komma wordt afgekapt, zal het gewoon negeren de waarden die beschikbaar na het decimaalteken zijn. Bijvoorbeeld, int(1.1) = 1, maar int(1.9) = 1, zelfs int(1.99999) 1 zal geven. Om het getal afronden, gebruikt u de functie round(number) bijvoorbeeld, round(1.1) = 1, round(1.5) = 2, ronde(1.99) = 2.

https://www.Arduino.CC/en/Reference/cast

https://www.Arduino.CC/en/Reference/FloatCast

Het meten van spanningen

Aangezien een analoge waarde van 1023 correspondeert met 5v (of 3.3V voor 3,3 v microcontrollers), u kunt dit gemakkelijk omzetten naar een spanning met behulp van analogRead(A0) * 5.0 / 1023. Dit wordt gebruikt in het voorbeeld AnalogReadSerialVoltage.

Om te lezen van de spanning hoger is dan 5v (3,3 v), moet u 2 weerstanden, maken een voltage divider. We kunnen transformeren om Vsubin/sub, als we Vsubout/sub weten in de bovenstaande formule. (zie afbeelding)
Verbinding maken met een weerstand (R2) vanaf de grond op de analoge input, dan sluit de grond van de spanning te meten met de Arduino van grond, en sluit vervolgens een andere weerstand (R1) van de spanning te meten aan op de analoge pin. (zie afbeelding) Gebruik de bovenstaande formule voor het berekenen van de waarden van de juiste weerstand. Eventuele waarden tussen 10k en 100 k moeten goed werken. Als de weerstand te laag is, het zal teveel stroom trekken, en beïnvloeden de lezing alot.

Ook bijvoorbeeld meten 12v, ik gebruik R1 = 47k en R2 = 22k. Dit geeft mij een maximale spanning van de 15.87v, als ik zou gaan hoger dan deze spanning, ik zou breken mijn Arduino.

Opmerking: als R2 - voor welke reden dan ook - losgekoppeld of onderbroken, zal de hoogspanning zal worden aangesloten op de Arduino rechtstreeks (via R1) en waarschijnlijk beschadigen of vernietigen. Dus niet gewijzigd de weerstanden, als een hoge spanning wordt toegepast.

Open de voorbeeld AnalogReadSerialHighVoltage.

Bij de bovenkant van het dossier zijn er sommige constante verklaringen. Als een variabele, constanten waarden van alle soorten kunnen opslaan, maar in tegenstelling tot de variabelen, constanten kunnen niet worden gewijzigd terwijl het programma wordt uitgevoerd. Dit betekent dat ze zijn opgeslagen in de opslagruimte van het programma, in plaats van het dynamische geheugen (RAM), waardoor meer ruimte voor variabelen en arrays enz.

Wijzig de waarden van deze constanten volgens uw setup. De verhouding wordt automatisch berekend zodat u niet hoeft te veranderen. U kunt de kleurcodes van uw weerstand om een theoretische waarde, maar krijg je een veel betere onderlinge aanpassing als je de weerstanden met behulp van een multimeter meten. Hetzelfde geldt voor de bedrijfsspanning.

Analoge uitgangen

De Arduino niet het uitvoeren van analoge spanningen, het kan alleen output van 5v of 0v. Spanningen tussen uitvoeren, het maakt gebruik van een techniek genaamd PWM (Pulsbreedtemodulatie).
De Arduino creëert een blokgolf, en vervolgens de op - en af-tijden van de golf varieert. Bijvoorbeeld, 2ms op, 2ms uit; of 1ms op 3ms af. Dit wordt genoemd de taakcyclus van de blokgolf. 2ms op, 2ms af is een taakcyclus van 50%; 1ms op 3ms af is een duty-cycle van 25%. (zie afbeelding)

U kunt nu het berekenen van de gemiddelde spanning, die het gebied onder de kromme, gedeeld door het aantal cycli. Neem een blik bij de voorbeeld van 50% duty cycle: het gebied (geëvalueerd op meer dan één cyclus) is gewoon een rechthoek van 5 door 0,5, dus het gebied 2.5 is. Gedeeld door het aantal cycli nog steeds geeft 2.5, dus de gemiddelde spanning 2.5v is.
Met andere woorden, kan de gemiddelde spanning worden geschreven als de taakcyclus vermenigvuldigd met de voedingsspanning. Bijvoorbeeld, zou een duty-cycle van 25% 5v · 0,25 = 1.25v.
Deze gemiddelde spanningen zijn aangegeven in rood weergegeven in de beelden.

Uw ogen zijn veel te traag om te zien de onderliggende blokgolf, zodat deze methode perfect in orde is voor het dimmen van LEDs.

Open de voorbeeld analogPotDimmer.

Een LED (+ weerstand) verbinding te maken met digitale pin 5, en een potentiometer aan analoge pin A0. Draaien van de potentiometer dimt de LED.

De enige nieuwe functie is analogWrite (pin, taakcyclus). Alleen wordt het pulserend sproeien van de pwm op een pin. Merk op dat de taakcyclus is een waarde tussen 0 en 255, dit komt overeen met 0% - 100%

Een ander voorbeeld is analogWriteDimmer. Sluit een drukknop aan op pin 2 en een LED aan op pin 5. Wanneer u de knop ingedrukt, de LED helderder, krijgt wanneer u vrij te geven, drukt u op en houd het weer, de helderheid zal afnemen.

https://www.Arduino.CC/en/Reference/AnalogWrite

Gerelateerde Artikelen

Een beginnersgids voor Kolrosing, door een beginner.

Een beginnersgids voor Kolrosing, door een beginner.

* Dit is mijn inzending voor de wedstrijd "Houtbewerking". Als je van wat ik hier heb gedaan gelieve te stemmen! Bedankt! *Dus je zo ongeveer klaar met uw houtbewerkingsproject bent, hebt misschien je gemaakt enkele lepels, een mooie doos, een m
Visie: Een fakkel voor de personen met gezichtsstoornissen

Visie: Een fakkel voor de personen met gezichtsstoornissen

Visie is een apparaat van de fakkel gevormd om te helpen blinden navigeren met meer comfort, snelheid en vertrouwen, terwijl maken gebruik van ultrasone golven te detecteren in de buurt van hindernissen en hoogte te stellen van de gebruiker door midd
Digitale multimeter shield voor Arduino

Digitale multimeter shield voor Arduino

Dit instructable beschrijft een schild, die "Arduino" board in een digitale multimeter (DMM converteert).Het schild kan worden ingevoegd in "Arduino" UNO und Duemilanove planken. Het kan werken in drie modi:standalone - de meting gegev
How to Build een schild voor de Linkit One

How to Build een schild voor de Linkit One

Hallo mensen! Pure koolstof hier met een ander Instructable. Vandaag zal ik u tonen hoe te bouwen van een aangepaste schild voor het Linkit één Board. Voordat we in dat krijgen maar moet ik u vertellen waarom ik ging op dit streven in de eerste plaat
Een Absolute beginnersgids voor de Intel Edison

Een Absolute beginnersgids voor de Intel Edison

Hey daar! Onlangs ontving ik een Intel Edison board van Instructables, als een aardige gift. Als je afvraagt wat dat is, is de Intel Edison een kleine computer de grootte van een SD-kaart (dat is serieus klein), voor elektronica en computer hobbyiste
ArduDroid: Een eenvoudige 2-weg Bluetooth gebaseerde Androïde Controller voor Arduino

ArduDroid: Een eenvoudige 2-weg Bluetooth gebaseerde Androïde Controller voor Arduino

UPDATES:19 nov. 2031: advies: de fantastische synergie tussen Arduino & Android.30 oktober 2013: Andruino is nu officieel ARDUDROID en zal binnenkort beschikbaar op Google Play. Deze naamswijziging te vermijden conflict met een andere app op Google P
Het maken van een androïde toepassing voor Arduino (LED Turn on/off)

Het maken van een androïde toepassing voor Arduino (LED Turn on/off)

hier hebben we een androïde toepassing die gebruikmaakt van ecllipsedeze toepassing inschakelen leidde op arduino.deze toepassing werkt ook in je LAN.Hardware vereist:1: arduino uno2: arduino ethernet Shield3: RJ45-kabel4: LED5. android telefoonDe so
SensoDuino: Zet uw Androïde telefoon in een draadloze sensoren Hub voor Arduino

SensoDuino: Zet uw Androïde telefoon in een draadloze sensoren Hub voor Arduino

UPDATES23 november 2013: SensoDuino 0.160 krijgt een links.19 nov. 2031: advies: de fantastische synergie tussen Arduino & Android.19 november 2013: SensoDuino 0.159 is uit. Android telefoon datum (y, m, d) en tijd (h, m, s) worden ondersteund als se
Gemakkelijk, omkeerbare Motor controle voor Arduino (of een Microcontroller)

Gemakkelijk, omkeerbare Motor controle voor Arduino (of een Microcontroller)

dit project maakt gebruik van slechts drie hoofdcomponenten voor voorwaartse en omgekeerde bepalen voor een interne motor.  U kunt het gemakkelijk interface naar een Arduino of elke andere microcontroller.Het is zo eenvoudig - u kunt het draad van "f
AVRSH: Een tolk opdrachtshell voor Arduino/AVR.

AVRSH: Een tolk opdrachtshell voor Arduino/AVR.

Ooit wilde worden "aangemeld" bij uw AVR microcontroller? Ooit gedacht dat het zou gaaf zijn aan de "kat" een register om te zien van de inhoud ervan? Hebt u altijd al wilde een manier om de nodige energie en individuele perifere sub-s
Een Complete gids voor Onboard Jumpers op de Intel Edison kit voor Arduino

Een Complete gids voor Onboard Jumpers op de Intel Edison kit voor Arduino

De Intel® Edison kit voor Arduino kunt de Intel® Edison verenigbaar met Arduino shields ontworpen voor de UNO R3. De Arduino Expansion Board omvat verschillende jumper headers configureren van de Raad van bestuur met verschillende instellingen zoals
Een kleine Tea Timer (TTT) machine voor Arduino en ATtiny

Een kleine Tea Timer (TTT) machine voor Arduino en ATtiny

De TinyTeaTimmer (TTT) is een implementatie voor een kleine accessoire die gemakkelijk kan worden gemonteerd en geprogrammeerd d.m.v. een schakelaar, een knop, 1 of 2 LED's, een kleine servomotor en een Arduino board of een ATTiny-processor.De schets
Een gids voor het beheren van dingen met wisselende inbreng (via arduino)

Een gids voor het beheren van dingen met wisselende inbreng (via arduino)

het hart van dit project is een) aansluiten van een sensor op de analoge ingang van de arduino en b) programmeren met de if... else-statement.dit specifieke project toont een computer koelsysteem te handhaven bepaalde temperatuur binnen een computer
Een gids voor Raspberry Pi Arduino mededeling in Embedded systemen

Een gids voor Raspberry Pi Arduino mededeling in Embedded systemen

Dit is een gids voor verschillende methoden voor communicatie tussen de Raspberry Pi en Arduino. Deze handleiding is gemaakt van alles wat die ik heb geleerd van de oprichting van een forest capaciteiten. De post van het project kan worden gezien, ee