categorieën: Microcontroller-circuits
Aantal keer bekeken: 18998
Reacties op het artikel: 0

Analoge sensoren verbinden met Arduino, sensoren lezen

 

Sensoren worden gebruikt om hoeveelheden, omgevingscondities en reacties op veranderingen in toestanden en posities te meten. Aan hun uitgang kunnen er zowel digitale signalen bestaan ​​uit enen en nullen als analoge signalen die bestaan ​​uit een oneindig aantal spanningen in een bepaald interval.


Over sensoren

Dienovereenkomstig zijn de sensoren verdeeld in twee groepen:

1. Digitaal.

2. Analoog.

Om digitale waarden te lezen, kunnen in ons geval zowel digitale als analoge ingangen van de microcontroller worden gebruikt Avr op het Arduino-bord. Analoge sensoren moeten worden aangesloten via een analoog-digitaalomzetter (ADC). ATMEGA328, het is het die in de meeste ARDUINO-boards wordt geïnstalleerd (meer hierover er is een artikel op de site), bevat in zijn circuit ingebouwde ADC. Er zijn maar liefst 6 analoge ingangen beschikbaar om uit te kiezen.

Als dit niet genoeg voor u is, kunt u een extra externe ADC gebruiken om verbinding te maken met digitale ingangen, maar dit zal de code gecompliceerder maken en het volume verhogen, dankzij de toevoeging van verwerkingsalgoritmen en ADC-besturing. Het onderwerp van analoog-naar-digitaal converters is breed genoeg dat je een apart artikel kunt maken of erover kunt fietsen. Het is gemakkelijker om een ​​bord met een groot aantal of multiplexers te gebruiken. Laten we eens kijken hoe we analoge sensoren op de Arduino kunnen aansluiten.

Analoge sensoren aansluiten op Arduino, sensorwaarden lezen

Algemeen schema van analoge sensoren en hun verbinding

De sensor kan zelfs een conventionele potentiometer zijn. In feite is het een resistieve positiesensor; op dit principe regelen ze het vloeistofniveau, de hellingshoek, de opening van iets. Het kan op twee manieren met Arduino worden verbonden.

Algemeen schema van analoge sensoren en hun verbinding

In het bovenstaande circuit kunt u waarden van 0 tot 1023 lezen, omdat alle spanning op de potentiometer daalt. Het principe van een spanningsdeler werkt hier, in elke positie van de motor wordt de spanning lineair verdeeld over het oppervlak van de weerstandslaag of op een logaritmische schaal (afhankelijk van de potentiometer) dat deel van de spanning dat overblijft tussen de uitgang van de schuifregelaar (schuifcontact) en de aarde (gnd) naar de ingang komt. Op de breadboard ziet deze verbinding er als volgt uit:

Bedradingsschema voor analoge sensoren

De tweede optie is aangesloten volgens het klassieke resistieve verdelercircuit, hier hangt de spanning op het punt van maximale weerstand van de potentiometer af van de weerstand van de bovenste weerstand (in figuur R2).

Klassieke resistieve verdeler

Over het algemeen is de resistieve verdeler erg belangrijk, niet alleen op het gebied van werken met microcontrollers, maar ook in de elektronica in het algemeen. Hieronder ziet u het algemene schema, evenals de berekende verhoudingen voor het bepalen van de spanningswaarde op de onderarm.

Schema en ontwerprelaties voor het bepalen van de spanningswaarde op de onderarm

Een dergelijke verbinding is niet alleen kenmerkend voor een potentiometer, maar voor alle analoge sensoren, omdat de meeste van hen werken op het principe van het veranderen van weerstand (geleidbaarheid) onder invloed van externe bronnen - temperatuur, licht, verschillende soorten straling, enz.

Het volgende is het eenvoudigste verbindingsdiagram thermistorin principe kan op basis daarvan een thermometer worden gemaakt. Maar de nauwkeurigheid van de meetwaarden zal afhangen van de nauwkeurigheid van de tabel van de omzetting van weerstand naar temperatuur, de stabiliteit van de stroombron en de weerstandscoëfficiënten (inclusief de weerstand van de bovenarm) onder invloed van dezelfde temperatuur. Dit kan worden geminimaliseerd door de optimale weerstanden, hun vermogen en bedrijfsstromen te selecteren.

Het eenvoudigste aansluitschema voor een thermistor

Op dezelfde manier kunt u fotodiodes, fototransistors aansluiten als een lichtsensor. Foto-elektronica heeft toepassing gevonden in sensoren die de afstand en de aanwezigheid van een object bepalen, waarvan we later zullen overwegen.

photoresistor

De afbeelding toont de verbinding van de fotoresistor met de Arduino.

Verbindingsschema van de fotoresistor met Arduino

Software gedeelte

Voordat ik het had over het aansluiten van specifieke sensoren, besloot ik software te overwegen om ze te verwerken. Alle analoge signalen worden gelezen van dezelfde poorten met behulp van de opdracht analogRead ().Het is vermeldenswaard dat Arduino UNO en andere modellen met 168 en 328 atmega 10-bits ADC hebben. Dit betekent dat de microcontroller het ingangssignaal ziet als een getal van 0 tot 1023 - in totaal 1024 waarden. Als u van mening bent dat de voedingsspanning 5 volt is, dan is de ingangsgevoeligheid:

5/1024 = 0,0048 V of 4,8 mV

Dat wil zeggen, met een waarde van 0 aan de ingang, is de spanning 0 en met een waarde van 10 aan de ingang - 48 mV.

In sommige gevallen, om de waarden naar het gewenste niveau te converteren (bijvoorbeeld om naar de PWM-uitvoer te verzenden), wordt 1024 gedeeld door een nummer en als resultaat van deling moet het vereiste maximum worden verkregen. De kaartfunctie (bron, laag, hoog, hoog, hoog, laag) werkt duidelijker, waarbij:

  • laag - lager aantal vóór conversie door functie;

  • vch - bovenste;

  • VCh - het laagste nummer na verwerking door de functie (aan de uitgang);

  • Marifoon - top.

Een praktische toepassing voor het converteren van een functie naar een invoerwaarde voor verzending naar een PWM (de maximale waarde is 255, voor het converteren van gegevens van de ADC naar de PWM-uitvoer, 1024 wordt gedeeld door 4):

Optie 1 - verdeling.

int x;

x = analogRead (pot) / 4;

// een nummer van 0 tot 1023 wordt ontvangen

// deel het door 4, we krijgen een geheel getal van 0 tot 255 analogWrite (led, x);

Optie 2 - de MAP-functie - biedt meer mogelijkheden, maar daarover later meer.

ongeldige lus ()

{int val = analogRead (0);

val = kaart (val, 0, 1023, 0, 255);

analogWrite (led, val); }

Of nog korter:

analogWrite (led, map (val, 0, 1023, 0, 255))

Niet alle sensoren hebben 5 volt aan de uitgang, d.w.z. het nummer 1024 is niet altijd handig om te delen om dezelfde 256 voor de PWM (of een andere) te krijgen. Dit kunnen 2 en 2,5 volt en andere waarden zijn, wanneer het maximale signaal bijvoorbeeld 500 is.


Populaire analoge sensoren

Een algemeen beeld van de sensor voor Arduino en de aansluiting ervan wordt hieronder weergegeven:

Hoe een analoge sensor aan te sluiten

Gewoonlijk zijn er drie uitgangen, er kan een vierde zijn - digitaal, maar dit zijn functies.

Verklaring van de aanduiding van de uitgangen van de analoge sensor:

  • G - minus vermogen, gemeenschappelijke bus, aarde. Mag worden aangeduid als GND, "-";

  • V - plus vermogen. Kan worden aangeduid als Vcc, Vtg, "+";

  • S - uitgangssignaal, mogelijke notatie - Uit, SGN, Vout, teken.

Beginners die leren hoe ze de waarden van sensoren moeten lezen, kiezen voor projecten van allerlei soorten thermometers. Dergelijke sensoren hebben een digitaal ontwerp, bijvoorbeeld DS18B20, en zijn analoog - dit zijn allerlei soorten microschakelingen zoals LM35, TMP35, TMP36 en andere. Hier is een voorbeeld van het modulaire ontwerp van een dergelijke sensor op het bord.

Analoge sensor op TMP36

De nauwkeurigheid van de sensor is van 0,5 tot 2 graden. Gebouwd op een TMP36-chip, zoals veel van zijn analogen, zijn de uitgangswaarden 10 mV / ° C. Bij 0 ° is het uitgangssignaal 0 V en vervolgens wordt 10 mV per 1 graad toegevoegd. Dat wil zeggen, bij 25,5 graden is de spanning 0,255 V, een afwijking is mogelijk binnen de fout en zelfverwarming van het IC-kristal (tot 0,1 ° C).


Afhankelijk van de gebruikte microschakeling kunnen de meetbereiken en uitgangsspanningen verschillen, zie de tabel.

Temperatuurbereiken en sensoruitgangsspanningen

Voor een hoogwaardige thermometer kunt u de waarden echter niet alleen lezen en weergeven op de LCD-indicator of seriële poort voor communicatie met een pc, voor de stabiliteit van het uitgangssignaal van het hele systeem als geheel, moet u de waarden van sensoren, zowel analoog als digitaal, binnen bepaalde grenzen gemiddelde, terwijl zonder hun snelheid en nauwkeurigheid te beïnvloeden (er is een limiet voor alles). Dit komt door de aanwezigheid van ruis, interferentie, onstabiele contacten (zie voor resistieve sensoren op basis van een potentiometer storingen in de water- of brandstofniveausensor in de autotank).

Codes voor het werken met de meeste sensoren zijn vrij omvangrijk, dus ik geef ze niet allemaal, ze kunnen gemakkelijk worden gevonden op het netwerk door het verzoek "sensor + naam Arduino".

De volgende sensor die arduino robottechnici vaak gebruiken, is de lijnsensor. Het is gebaseerd op foto-elektronische apparaten, type fototransistoren.

Lijnsensor

Met hun hulp bepaalt een robot die langs de lijn beweegt (gebruikt in geautomatiseerde productie om onderdelen te leveren) de aanwezigheid van een witte of zwarte strook. Aan de rechterkant van de afbeelding zijn twee apparaten die op LED's lijken zichtbaar. Een daarvan is de LED, deze kan in het onzichtbare spectrum uitzenden en de tweede is een fototransistor.

Licht wordt gereflecteerd vanaf het oppervlak als het donker is - de fototransistor ontvangt geen gereflecteerde stroom, maar als licht ontvangt en opent. De algoritmen die u in de microcontroller plaatst, verwerken het signaal en bepalen de correctheid en bewegingsrichting en corrigeren deze. De optische muis, die je waarschijnlijk in je hand houdt tijdens het lezen van deze lijnen, is op dezelfde manier gerangschikt.

Ik zal aanvullen met een aangrenzende sensor - een afstandssensor van Sharp, wordt ook gebruikt in robotica, evenals in omstandigheden voor het bewaken van de positie van objecten in de ruimte (met de overeenkomstige TX-fout).

Scherpe afstandssensor

Het werkt op hetzelfde principe. Bibliotheken en voorbeelden van schetsen en projecten met hen zijn in grote aantallen beschikbaar op sites die zijn gewijd aan Arduino.


conclusie

Het gebruik van analoge sensoren is heel eenvoudig, en met de eenvoudig te leren Arduino-programmeertaal leer je snel eenvoudige apparaten. Deze aanpak heeft aanzienlijke nadelen in vergelijking met digitale tegenhangers. Dit komt door de grote variatie in parameters; dit veroorzaakt problemen bij het vervangen van de sensor. Mogelijk moet u de broncode van het programma bewerken.

Toegegeven, individuele analoge apparaten bevatten referentiespanningsbronnen en stroomstabilisatoren, wat een positief effect heeft op het eindproduct en de herhaalbaarheid van het apparaat bij massaproductie. Alle problemen kunnen worden voorkomen door digitale apparaten te gebruiken.

Digitale circuits als zodanig verminderen de noodzaak om het circuit na montage af te stemmen en aan te passen. Dit geeft u de mogelijkheid om verschillende identieke apparaten op dezelfde broncode te monteren, waarvan de details dezelfde signalen geven, met resistieve sensoren is dit zeldzaam.

Zie ook op onze website:Externe apparaten aansluiten op Arduino

Zie ook op bgv.electricianexp.com:

  • Wat is het verschil tussen analoge en digitale sensoren
  • Temperatuur en vochtigheid meten op Arduino - een selectie van methoden
  • Hoe verloopt de conversie van het analoge signaal naar digitaal
  • Meest populaire sensoren voor Arduino
  • Hoe de lijnsensor is gerangschikt en werkt

  •