kategorier: Mikrokontrollkretser
Antall visninger: 18998
Kommentarer til artikkelen: 0

Koble analoge sensorer til Arduino, lese sensorer

 

Sensorer brukes til å måle mengder, miljøforhold og reaksjoner på endringer i tilstander og posisjoner. Ved utgangen kan det være digitale signaler som består av ender og nuller, så vel som analoge signaler, som består av et uendelig antall spenninger i et visst intervall.


Om sensorer

Følgelig er sensorene delt inn i to grupper:

1. Digital.

2. Analog.

For å lese digitale verdier, kan både digitale og analoge innganger til mikrokontrolleren brukes, i vårt tilfelle Avr i Arduino-styret. Analoge sensorer må kobles til via en analog til digital omformer (ADC). ATMEGA328, det er det som er installert i de fleste ARDUINO-tavler (mer om dette det er en artikkel på nettstedet), inneholder i sin krets innebygde ADC. Så mange som 6 analoge innganger er tilgjengelige å velge mellom.

Hvis dette ikke er nok for deg, kan du bruke en ekstra ekstern ADC for å koble til digitale innganger, men dette vil komplisere koden og øke volumet, på grunn av tillegg til behandlingsalgoritmer og ADC-kontroll. Temaet for analog-til-digital-omformere er bredt nok til at du kan lage en egen artikkel eller sykle om dem. Det er lettere å bruke et brett med et stort antall av dem eller multipleksere. La oss se på hvordan du kobler analoge sensorer til Arduino.

Koble analoge sensorer til Arduino, leser sensoravlesninger

Generelt skjema for analoge sensorer og deres forbindelse

Sensoren kan til og med være et konvensjonelt potensiometer. Faktisk er det en resistiv posisjonssensor, på et slikt prinsipp kontrollerer de væskenivået, hellingsvinkelen, åpningen av noe. Det kan kobles til arduino på to måter.

Generelt skjema for analoge sensorer og deres forbindelse

Kretsen over lar deg lese verdier fra 0 til 1023, på grunn av at all spenningen synker på potensiometeret. Prinsippet for en spenningsdelere fungerer her, i hvilken som helst posisjon av motoren, spenningen er fordelt lineært på overflaten av det resistive laget eller i en logaritmisk skala (avhengig av potensiometeret) den delen av spenningen som blir igjen mellom utgangen på glidebryteren (skyvekontakten) og bakken (gnd) kommer til inngangen. På brødbordet ser denne forbindelsen slik ut:

Koblingsskjema for analoge sensorer

Det andre alternativet er tilkoblet i henhold til den klassiske resistive divider-kretsen, her avhenger spenningen ved potensiometerets maksimale motstand av motstanden til den øvre motstanden (i figur R2).

Klassisk Resistive Divider

Generelt er den resistive skilleapparatet veldig viktig ikke bare innen arbeid med mikrokontrollere, men også innen elektronikk generelt. Nedenfor ser du det generelle skjemaet, samt de beregnede forholdstallene for å bestemme spenningsverdien på underarmen.

Ordnings- og designforhold for bestemmelse av spenningsverdien på underarmen

En slik tilkobling er karakteristisk ikke bare for et potensiometer, men for alle analoge sensorer, fordi de fleste av dem arbeider på prinsippet om å endre motstand (ledningsevne) under påvirkning av eksterne kilder - temperatur, lys, stråling av forskjellige slag, etc.

Følgende er det enkleste tilkoblingsskjemaet termistori prinsippet kan et termometer lages på basis av det. Men nøyaktigheten av avlesningene vil avhenge av nøyaktigheten i tabellen for konvertering av motstand til temperatur, stabiliteten til kraftkilden og koeffisientene for endring av motstand (inkludert motstanden til overarmen) under påvirkning av den samme temperaturen. Dette kan minimeres ved å velge de optimale motstandene, deres effekt og driftsstrømmer.

Det enkleste tilkoblingsskjemaet for en termistor

På samme måte kan du koble til fotodioder, fototransistorer som en lyssensor. Photoelectronics har funnet anvendelse i sensorer som bestemmer avstanden og tilstedeværelsen av et objekt, hvorav en vil vurdere senere.

photoresistor

Figuren viser fotoresistorens forbindelse til arduino.

Tilkoblingsskjema for fotoresistor til arduino

Programvaredel

Før jeg snakket om å koble til bestemte sensorer, bestemte jeg meg for å vurdere programvare for å behandle dem. Alle analoge signaler leses fra de samme portene ved å bruke kommandoen analogRead ().Det er verdt å merke seg at Arduino UNO og andre modeller med 168 og 328 atmega har 10-biters ADC. Dette betyr at mikrokontrolleren ser inngangssignalet som et tall fra 0 til 1023 - totalt 1024 verdier. Hvis du vurderer at forsyningsspenningen er 5 volt, er inngangsfølsomheten:

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

Det vil si at med en verdi på 0 ved inngangen er spenningen 0, og med en verdi på 10 ved inngangen - 48 mV.

I noen tilfeller, for å konvertere verdier til ønsket nivå (for eksempel å overføre til PWM-utgang), er 1024 delt med et tall, og som et resultat av deling, bør det nødvendige maksimum oppnås. Kartfunksjonen (kilde, lav, høy, høy, høy, lav) fungerer tydeligere, der:

  • lavt - lavere antall før konvertering etter funksjon;

  • vch - øvre;

  • VCh - det lavere tallet etter behandling av funksjonen (ved utgangen);

  • VHV - topp.

Praktisk applikasjon for å konvertere en funksjon av en inngangsverdi for overføring til en PWM (maksimal verdi 255, for å konvertere data fra en ADC til en utgang PWM 1024 delt med 4):

Alternativ 1 - divisjon.

int x;

x = analog Les (pott) / 4;

// et nummer fra 0 til 1023 vil bli mottatt

// dele det med 4, vi får et helt tall fra 0 til 255 analogWrite (led, x);

Alternativ 2 - MAP-funksjonen - åpner for flere muligheter, men mer om det senere.

void loop ()

{int val = analogLes (0);

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

analogWrite (ledet, val); }

Eller enda kortere:

analogWrite (ledet, kart (val, 0, 1023, 0, 255))

Ikke alle sensorer har 5 volt ved utgangen, dvs. tallet 1024 er ikke alltid praktisk å dele for å få de samme 256 for PWM (eller noe annet). Dette kan være 2 og 2,5 volt og andre verdier, når det maksimale signalet for eksempel er 500.


Populære analoge sensorer

En generell oversikt over sensoren for arduino og dens tilkobling er vist nedenfor:

Slik kobler du til en analog sensor

Vanligvis er det tre utganger, det kan være en fjerde - digital, men dette er funksjoner.

Forklaring av betegnelsen på utgangene til den analoge sensoren:

  • G - minus strøm, felles buss, bakken. Kan betegnes som GND, “-”;

  • V - pluss strøm. Kan betegnes som Vcc, Vtg, "+";

  • S - utgangssignal, mulig notasjon - Out, SGN, Vout, sign.

Nybegynnere til å lære å lese verdiene til sensorer velger prosjekter av alle slags termometre. Slike sensorer er i digital design, for eksempel DS18B20, og i analog - dette er alle slags mikrokretser som LM35, TMP35, TMP36 og andre. Her er et eksempel på modulær utforming av en slik sensor på brettet.

Analog sensor på TMP36

Nøyaktigheten til sensoren er fra 0,5 til 2 grader. Bygget på en TMP36-brikke, som mange av sine analoger, er dens utgangsverdier 10 mV / ° C. Ved 0 ° er utgangssignalet 0 V, og deretter blir 10 mV per 1 grad lagt til. Det vil si at ved 25,5 grader er spenningen 0,255 V, et avvik er mulig innenfor feilen og selvoppvarming av IC-krystallen (opp til 0,1 ° C).


Avhengig av hvilken mikrokrets som brukes, måleområdet og utgangsspenningen kan variere, se tabellen.

Temperaturområder og sensorutgangsspenninger

For et høykvalitetstermometer kan du imidlertid ikke bare lese verdiene og vise dem på LCD-indikatoren eller seriell port for kommunikasjon med en PC, for stabiliteten til utgangssignalet til hele systemet som helhet, må du gjennomsnittlig verdiene fra sensorer, både analoge og digitale, innenfor visse grenser, mens uten å redusere hastigheten og nøyaktigheten (det er en grense for alt). Dette skyldes tilstedeværelsen av støy, forstyrrelser, ustabile kontakter (for resistive sensorer basert på et potensiometer, se funksjonsfeil i vann- eller drivstoffnivåsensoren i biltanken).

Kodene for å jobbe med de fleste sensorer er ganske omfangsrike, så jeg vil ikke gi dem alle, de kan lett bli funnet på nettverket med forespørselen “sensor + Arduino name”.

Den neste sensoren som arduino robotingeniører ofte bruker er linjesensoren. Det er basert på fotoelektroniske enheter, type fototransistorer.

Linjesensor

Med deres hjelp bestemmer en robot som beveger seg langs linjen (brukt i automatisert produksjon for å levere deler) tilstedeværelsen av en hvit eller svart stripe. På høyre side av figuren er to enheter som ligner på LED-er synlige. En av dem er LED, den kan avgi i det usynlige spekteret, og det andre er en fototransistor.

Lys reflekteres fra overflaten hvis det er mørkt - fototransistor mottar ikke en reflektert strøm, men hvis lys mottar og det åpnes. Algoritmene som du legger i mikrokontrolleren behandler signalet og bestemmer riktigheten og bevegelsesretningen og korrigerer dem. Den optiske musen, som du mest sannsynlig holder i hånden mens du leser disse linjene, er ordnet på samme måte.

Jeg vil supplere med en tilstøtende sensor - en distansesensor fra Sharp, brukes også innen robotikk, så vel som i forhold til å overvåke plasseringen av objekter i rommet (med tilsvarende TX-feil).

Skarp avstandsføler

Det fungerer etter samme prinsipp. Biblioteker og eksempler på skisser og prosjekter med dem er tilgjengelige i store antall på nettsteder dedikert til Arduino.


konklusjon

Bruken av analoge sensorer er veldig enkel, og med det enkle å lære Arduino-programmeringsspråket lærer du raskt enkle enheter. Denne tilnærmingen har betydelige ulemper i forhold til digitale kolleger. Dette skyldes den store variasjonen i parametere, dette skaper problemer når du skifter ut sensoren. Det kan hende du må redigere kildekoden til programmet.

Riktignok har individuelle analoge enheter referansespenningskilder og strømstabilisatorer, noe som har en positiv effekt på sluttproduktets og enhetens repeterbarhet i masseproduksjon. Alle problemer kan unngås ved bruk av digitale enheter.

Digital kretsløp som sådan reduserer behovet for å stille inn og justere kretsen etter montering. Dette gir deg muligheten til å sette sammen flere identiske enheter på samme kildekode, hvis detaljer vil gi de samme signalene, med resistive sensorer er dette sjelden.

Se også på vår hjemmeside:Koble eksterne enheter til Arduino

Se også på elektrohomepro.com:

  • Hva er forskjellen mellom analoge og digitale sensorer
  • Måling av temperatur og fuktighet på Arduino - et utvalg av måter
  • Hvordan konverterer det analoge signalet til digitalt
  • Mest populære sensorer for Arduino
  • Hvordan linjesensoren er ordnet og fungerer

  •