kategorier: Microcontroller kredsløb
Antal visninger: 18998
Kommentarer til artiklen: 0
Tilslutning af analoge sensorer til Arduino, læssensorer
Sensorer bruges til at måle mængder, miljøforhold og reaktioner på ændringer i tilstande og positioner. Ved deres output kan der være både digitale signaler, der består af ender og nuller, og analoge signaler, der består af et uendeligt antal spændinger i et bestemt interval.
Om sensorer
Følgelig er sensorerne opdelt i to grupper:
1. Digital.
2. Analog.
For at læse digitale værdier kan både digitale og analoge indgange fra mikrokontrolleren bruges, i vores tilfælde Avr på Arduino-tavlen. Analoge sensorer skal tilsluttes via en analog-til-digital konverter (ADC). ATMEGA328, det er det, der er installeret i de fleste ARDUINO-tavler (mere om dette der er en artikel på webstedet), indeholder i dets kredsløb indbyggede ADC. Så mange som 6 analoge indgange er tilgængelige at vælge imellem.
Hvis dette ikke er nok for dig, kan du bruge en ekstra ekstern ADC til at oprette forbindelse til digitale indgange, men dette vil komplicere koden og øge dens volumen på grund af tilføjelsen af behandlingsalgoritmer og ADC-kontrol. Emnet for analog-til-digital-konvertere er bredt nok til at du kan lave en separat artikel eller cykle om dem. Det er lettere at bruge et bræt med et stort antal af dem eller multiplexere. Lad os se på, hvordan man forbinder analoge sensorer til Arduino.

Generelt skema af analoge sensorer og deres forbindelse
Sensoren kan endda være et konventionelt potentiometer. Faktisk er det en resistiv positionssensor; på dette princip styrer de væskernes niveau, hældningsvinklen, åbningen af noget. Det kan forbindes til arduino på to måder.

Kredsløbet ovenfor giver dig mulighed for at læse værdier fra 0 til 1023 på grund af det faktum, at al spændingen falder på potentiometeret. Princippet for en spændingsdelere fungerer her, i enhver position af motoren, spændingen er fordelt lineært på overfladen af det resistive lag eller i en logaritmisk skala (afhængigt af potentiometeret), den del af spændingen, der forbliver mellem udgangen fra skyderen (glidekontakt) og jorden (gnd) kommer til input. På brødbrættet ser denne forbindelse sådan ud:

Den anden mulighed er tilsluttet i henhold til skemaet for den klassiske modstandsdelere, her afhænger spændingen ved potentiometerets maksimale modstand af modstanden for den øvre modstand (i figur R2).

Generelt er den resistive divider meget vigtig ikke kun inden for arbejde med mikrokontrollere, men også inden for elektronik generelt. Nedenfor ser du det generelle skema samt de beregnede forhold til bestemmelse af spændingsværdien på underarmen.

En sådan forbindelse er karakteristisk ikke kun for et potentiometer, men for alle analoge sensorer, fordi de fleste af dem arbejder på princippet om at ændre modstand (konduktivitet) under påvirkning af eksterne kilder - temperatur, lys, stråling af forskellige slags osv.
Følgende er det enkleste forbindelsesdiagram termistori princippet kan der laves et termometer på basis af det. Men nøjagtigheden af dens aflæsninger vil afhænge af nøjagtigheden af tabellen med konvertering af modstand til temperatur, stabiliteten af strømkilden og koefficienterne for ændring af modstand (inklusive overarms modstand) under påvirkning af den samme temperatur. Dette kan minimeres ved at vælge den optimale modstand, deres effekt og driftsstrømme.

På samme måde kan du forbinde fotodioder, fototransistorer som en lyssensor. Photoelectronics har fundet anvendelse i sensorer, der bestemmer afstanden og tilstedeværelsen af et objekt, hvoraf den ene vil overveje senere.

Figuren viser fotoresistorens forbindelse til arduino.

Softwaredel
Før jeg talte om at forbinde specifikke sensorer, besluttede jeg at overveje software til behandling af dem. Alle analoge signaler læses fra de samme porte ved hjælp af kommandoen analogRead ().Det er værd at bemærke, at Arduino UNO og andre modeller med 168 og 328 atmega har 10-bit ADC. Dette betyder, at mikrokontrolleren ser indgangssignalet som et tal fra 0 til 1023 - i alt 1024 værdier. Hvis du overvejer at forsyningsspændingen er 5 volt, er inputfølsomheden:
5/1024 = 0,0048 V eller 4,8 mV
Det vil sige, med en værdi på 0 ved indgangen, er spændingen 0 og med en værdi på 10 ved indgangen - 48 mV.
I nogle tilfælde er 1024 divideret med et tal for at konvertere værdierne til det ønskede niveau (for eksempel at transmittere til PWM-output), og som et resultat af opdelingen skal det krævede maksimum opnås. Kortfunktionen (kilde, lav, høj, høj, høj, lav) fungerer mere tydeligt, hvor:
-
lavt - lavere antal før konvertering efter funktion;
-
vch - øvre;
-
VCh - det lavere antal efter behandling med funktionen (ved udgangen);
-
VHV - top.
En praktisk anvendelse til konvertering af en funktion til en inputværdi til transmission til en PWM (den maksimale værdi er 255, til konvertering af data fra ADC til PWM-output, 1024 er divideret med 4):
Valgmulighed 1 - opdeling.
int x;
x = analoglæse (pot) / 4;
// et nummer fra 0 til 1023 modtages
// divider det med 4, vi får et helt tal fra 0 til 255 analogWrite (led, x);
Valgmulighed 2 - MAP-funktionen - åbner flere muligheder, men mere om det senere.
void loop ()
{int val = analoglæse (0);
val = kort (val, 0, 1023, 0, 255);
analogWrite (led, val); }
Eller endnu kortere:
analogWrite (led, kort (val, 0, 1023, 0, 255))
Ikke alle sensorer har 5 volt ved udgangen, dvs. tallet 1024 er ikke altid praktisk at opdele for at få de samme 256 for PWM (eller enhver anden). Dette kan være 2 og 2,5 volt og andre værdier, når det maksimale signal f.eks. Er 500.
Populære analoge sensorer
Et generelt billede af sensoren til arduino og dens forbindelse er vist nedenfor:

Normalt er der tre output, der kan være en fjerde - digital, men dette er funktioner.
Forklaring af betegnelsen på output til den analoge sensor:
-
G - minus strøm, fælles bus, jord. Kan betegnes som GND, “-”;
-
V - plus strøm. Kan betegnes Vcc, Vtg, "+";
-
S - output signal, mulig notation - Out, SGN, Vout, sign.
Begyndere til at lære at læse værdierne for sensorer vælger projekter af alle slags termometre. Sådanne sensorer er i digital design, for eksempel DS18B20, og analogt - dette er alle slags mikrokredsløb som LM35, TMP35, TMP36 og andre. Her er et eksempel på modulopbygningen af en sådan sensor på tavlen.

Sensorens nøjagtighed er fra 0,5 til 2 grader. Bygget på en TMP36-chip, ligesom mange af dens analoger, er dens outputværdier 10 mV / ° C. Ved 0 ° er udgangssignalet 0 V, og derefter tilføjes 10 mV per 1 grad. Det vil sige, ved 25,5 grader er spændingen 0,255 V, en afvigelse er mulig inden for fejl og selvopvarmning af IC-krystallen (op til 0,1 ° C).
Afhængig af den anvendte mikrokredsløb kan måleområdet og udgangsspændingen variere, se tabellen.

For et termometer af høj kvalitet kan du dog ikke bare læse værdierne og vise dem på LCD-indikatoren eller seriel port til kommunikation med en pc, for stabiliteten af udgangssignalet fra hele systemet som helhed, skal du gennemsnit værdierne fra sensorerne, både analoge og digitale, inden for visse grænser, mens uden at forringe deres hastighed og nøjagtighed (der er en grænse for alt). Dette skyldes tilstedeværelsen af støj, interferens, ustabile kontakter (for resistive sensorer baseret på et potentiometer, se funktionsfejl i vand- eller brændstofniveauføler i biltanken).
Koderne til at arbejde med de fleste sensorer er ganske omfangsrige, så jeg vil ikke give dem alle, de kan let findes på netværket ved anmodningen “sensor + Arduino-navn”.
Den næste sensor, som arduino robotingeniører ofte bruger, er linjesensoren. Det er baseret på fotoelektroniske enheder, type fototransistorer.

Med deres hjælp bestemmer en robot, der bevæger sig langs linjen (brugt i automatiseret produktion til levering af dele) tilstedeværelsen af en hvid eller sort strimmel. På højre side af figuren er to enheder, der ligner LED'er, synlige. En af dem er LED, den kan udsende i det usynlige spektrum, og det andet er en fototransistor.
Lys reflekteres fra overfladen, hvis det er mørkt - fototransistor modtager ikke en reflekteret strøm, men hvis lys modtager, og det åbnes. Algoritmerne, som du lægger i mikrokontrolleren, behandler signalet og bestemmer rigtigheden og bevægelsesretningen og korrigerer dem. Den optiske mus, som du sandsynligvis holder i din hånd, mens du læser disse linjer, er på lignende måde arrangeret.
Jeg vil supplere med en tilstødende sensor - en afstandssensor fra Sharp bruges også inden for robotik såvel som under betingelser for overvågning af placeringen af objekter i rummet (med den tilsvarende TX-fejl).

Det fungerer på samme princip. Biblioteker og eksempler på skitser og projekter med dem er tilgængelige i stort antal på websteder dedikeret til Arduino.
konklusion
Brugen af analoge sensorer er meget enkel, og med det let at lære Arduino-programmeringssprog lærer du hurtigt enkle enheder. Denne tilgang har betydelige ulemper i sammenligning med digitale kolleger. Dette skyldes den store variation i parametre, hvilket medfører problemer, når sensoren udskiftes. Du skal muligvis redigere programmets kildekode.
Det er sandt, at individuelle analoge enheder indeholder referencespændingskilder og strømstabilisatorer, hvilket har en positiv effekt på det endelige produkt og enhedens gentagelighed i masseproduktion. Alle problemer kan undgås ved hjælp af digitale enheder.
Digitalt kredsløb som sådan reducerer behovet for at indstille og justere kredsløbet efter samlingen. Dette giver dig muligheden for at samle flere identiske enheder på den samme kildekode, hvis detaljer giver de samme signaler, med resistive sensorer er dette sjældent.
Se også på vores hjemmeside:Tilslutning af eksterne enheder til Arduino
Se også på elektrohomepro.com
: