kategorier: Mikrokontrollkretsar
Antal visningar: 18998
Kommentarer till artikeln: 0

Ansluter analoga sensorer till Arduino, lässensorer

 

Sensorer används för att mäta kvantiteter, miljöförhållanden och reaktioner på förändringar i tillstånd och positioner. Vid deras utgång kan det finnas både digitala signaler som består av enor och nollor, och analoga signaler som består av ett oändligt antal spänningar i ett visst intervall.


Om sensorer

Följaktligen är sensorerna indelade i två grupper:

1. Digital.

2. Analog.

För att läsa digitala värden kan både digitala och analoga ingångar från mikrokontrollern användas, i vårt fall Avr på Arduino-styrelsen. Analoga sensorer måste anslutas via en ADC (analog-till-digital-omvandlare). ATMEGA328, det är det som installeras i de flesta ARDUINO-kort (mer om detta det finns en artikel på webbplatsen), innehåller i sin inbyggda ADC-krets. Så många som 6 analoga ingångar är tillgängliga att välja mellan.

Om detta inte räcker för dig kan du använda en extra extern ADC för att ansluta till digitala ingångar, men det kommer att komplicera koden och öka dess volym på grund av tillägg av bearbetningsalgoritmer och ADC-kontroll. Ämnet för analog-till-digital-omvandlare är tillräckligt stort för att du kan skapa en separat artikel eller cykla om dem. Det är lättare att använda ett kort med ett stort antal av dem eller multiplexorer. Låt oss titta på hur du ansluter analoga sensorer till Arduino.

Ansluter analoga sensorer till Arduino, läser sensorns avläsningar

Allmänt schema för analoga sensorer och deras anslutning

Sensorn kan till och med vara en konventionell potentiometer. I själva verket är det en resistiv positionssensor, enligt en sådan princip styr de vätskenivån, lutningsvinkeln, öppningen av något. Det kan anslutas till arduino på två sätt.

Allmänt schema för analoga sensorer och deras anslutning

Kretsen ovan låter dig läsa värden från 0 till 1023, på grund av att all spänning sjunker på potentiometern. Principen för en spänningsdelare fungerar här, i vilken position som helst i motorn, spänningen fördelas linjärt på ytan av det resistiva lagret eller i en logaritmisk skala (beroende på potentiometern) den delen av spänningen som är kvar mellan utmatningen från skjutreglaget (markkontakten) och marken (gnd) kommer till ingången. På panelen ser denna anslutning så här:

Kopplingsschema för analoga sensorer

Det andra alternativet är anslutet enligt schemat för den klassiska motståndsdelaren, här beror spänningen vid potentiometerns maximala motstånd beroende på motståndet hos det övre motståndet (i figur R2).

Klassisk Resistive Divider

I allmänhet är den resistiva avdelaren mycket viktig inte bara inom arbetet med mikrokontroller, utan också inom elektronik i allmänhet. Nedan ser du det allmänna schemat, liksom de beräknade förhållandena för att bestämma spänningsvärdet på den nedre armen.

Schema och designförhållanden för att bestämma spänningsvärdet på den nedre armen

En sådan anslutning är karakteristisk inte bara för en potentiometer, utan för alla analoga sensorer, eftersom de flesta av dem arbetar med principen om att ändra motstånd (konduktivitet) under påverkan av externa källor - temperatur, ljus, strålning av olika slag, etc.

Följande är det enklaste anslutningsdiagrammet termistori princip kan en termometer tillverkas på basis av den. Men noggrannheten i dess avläsningar kommer att bero på noggrannheten i tabellen för omvandling av motstånd till temperatur, stabilitet hos kraftkällan och koefficienterna för förändring av motstånd (inklusive överarmens motstånd) under påverkan av samma temperatur. Detta kan minimeras genom att välja de optimala motstånden, deras effekt och strömmar.

Det enklaste anslutningsdiagrammet för en termistor

På samma sätt kan du ansluta fotodioder, fototransistorer som en ljussensor. Photoelectronics har hittat tillämpning i sensorer som bestämmer avståndet och närvaron av ett objekt, av vilket vi kommer att överväga senare.

fotoresistor

Figuren visar fotoresistorens anslutning till arduino.

Kopplingsschema för fotoresistor till arduino

Programvarudel

Innan jag pratade om att ansluta specifika sensorer, bestämde jag mig för att överväga programvara för att bearbeta dem. Alla analoga signaler läses från samma portar med kommandot analogRead ().Det är värt att notera att Arduino UNO och andra modeller med 168 och 328 atmega har 10-bitars ADC. Detta betyder att mikrokontrollern ser insignalen som ett nummer från 0 till 1023 - totalt 1024 värden. Om du tänker på att matningsspänningen är 5 volt, är ingångskänsligheten:

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

Det vill säga, med ett värde på 0 vid ingången är spänningen 0, och med ett värde på 10 vid ingången - 48 mV.

I vissa fall, för att konvertera värdena till den önskade nivån (till exempel för att överföra till PWM-utgången), delas 1024 med ett tal, och som ett resultat av delning bör det erforderliga maximumet erhållas. Kartfunktionen (källa, låg, hög, hög, hög, låg) fungerar tydligare, där:

  • låg - lägre antal före konvertering per funktion;

  • vch - övre;

  • VCh - det lägre antalet efter bearbetning med funktionen (vid utgången);

  • VHV - topp.

En praktisk applikation för att konvertera en funktion till ett ingångsvärde för överföring till en PWM (det maximala värdet är 255, för att konvertera data från ADC till PWM-utgången, 1024 är dividerat med 4):

Alternativ 1 - division.

int x;

x = analogRead (pot) / 4;

// ett nummer från 0 till 1023 kommer att tas emot

// dela det med 4, vi får ett heltal från 0 till 255 analogWrite (led, x);

Alternativ 2 - MAP-funktionen - öppnar fler möjligheter, men mer om det senare.

void loop ()

{int val = analogLäs (0);

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

analogWrite (led, val); }

Eller ännu kortare:

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

Inte alla sensorer har 5 volt vid utgången, d.v.s. numret 1024 är inte alltid bekvämt att dela för att få samma 256 för PWM (eller någon annan). Detta kan vara 2 och 2,5 volt och andra värden, när den maximala signalen till exempel är 500.


Populära analoga sensorer

En allmän vy av sensorn för arduino och dess anslutning visas nedan:

Hur man ansluter en analog sensor

Vanligtvis finns det tre utgångar, det kan finnas en fjärde - digital, men dessa är funktioner.

Förklaring av beteckningen på utgångarna från den analoga sensorn:

  • G - minus kraft, gemensam buss, mark. Kan betecknas som GND, “-”;

  • V - plus kraft. Kan betecknas Vcc, Vtg, "+";

  • S - utsignal, möjlig notering - Out, SGN, Vout, sign.

Nybörjare för att lära sig att läsa värdena på sensorer väljer projekt av alla typer av termometrar. Sådana sensorer är i digital design, till exempel DS18B20, och analogt - det är alla typer av mikrokretsar som LM35, TMP35, TMP36 och andra. Här är ett exempel på den modulära utformningen av en sådan sensor på kortet.

Analog sensor på TMP36

Sensorns noggrannhet är från 0,5 till 2 grader. Byggt på ett TMP36-chip, liksom många av dess analoger, är dess utgångsvärden 10 mV / ° C. Vid 0 ° är utsignalen 0 V, och sedan läggs 10 mV per 1 grad. Det vill säga, vid 25,5 grader är spänningen 0,255 V, en avvikelse är möjlig inom felet och självuppvärmningen av IC-kristallen (upp till 0,1 ° C).


Beroende på vilken mikrokrets som används kan mätområdet och utspänningarna variera, se tabellen.

Temperaturintervall och sensors utgångsspänningar

Men för en högkvalitativ termometer kan du inte bara läsa värdena och visa dem på LCD-indikatorn eller seriell port för kommunikation med en PC, för stabiliteten för utsignalen från hela systemet som helhet, måste du genomsnittliga värden från sensorer, både analoga och digitala, inom vissa gränser, medan utan att försämra deras hastighet och noggrannhet (det finns en gräns för allt). Detta beror på förekomsten av buller, störningar, instabila kontakter (för resistiva sensorer baserade på en potentiometer, se funktionsfel i vatten- eller bränslenivåsensorn i biltanken).

Koder för att arbeta med de flesta sensorer är ganska omfattande, så jag kommer inte att ge dem alla, de kan lätt hittas i nätverket med begäran “sensor + Arduino name”.

Nästa sensor som arduino robottekniker ofta använder är linjesensorn. Det är baserat på fotoelektroniska enheter, typ av fototransistorer.

Linjesensor

Med deras hjälp bestämmer en robot som rör sig längs linjen (används i automatiserad produktion för att leverera delar) närvaron av en vit eller svart remsa. På höger sida av figuren är två enheter som liknar lysdioder synliga. En av dem är lysdioden, den kan avge i det osynliga spektrumet, och den andra är en fototransistor.

Ljus reflekteras från ytan om det är mörkt - fototransistorn får inte en reflekterad ström, men om ljus tar emot och det öppnas. Algoritmerna som du placerar i mikrokontrollern bearbetar signalen och bestämmer riktigheten och riktningen för rörelse och korrigerar dem. Den optiska musen, som du troligtvis håller i handen när du läser dessa rader, är på liknande sätt ordnad.

Jag kommer att komplettera med en angränsande sensor - en distanssensor från Sharp, används också inom robotik, liksom i förhållanden för att övervaka objektens position i rymden (med motsvarande TX-fel).

Skarp avståndsgivare

Det fungerar på samma princip. Bibliotek och exempel på skisser och projekt med dem finns i stort antal på webbplatser tillägnad Arduino.


slutsats

Användningen av analoga sensorer är mycket enkel, och med det lättlärda Arduino-programmeringsspråket lär du dig snabbt enkla enheter. Detta tillvägagångssätt har betydande nackdelar jämfört med digitala motsvarigheter. Detta beror på den stora variationen i parametrar, detta orsakar problem när sensorn byts ut. Du kanske måste redigera programmets källkod.

Visst har enskilda analoga enheter referensspänningskällor och strömstabilisatorer, vilket har en positiv effekt på den slutliga produktens och enhetens repeterbarhet i massproduktionen. Alla problem kan undvikas genom att använda digitala enheter.

Digitala kretsar som sådana minskar behovet av att ställa in och justera kretsen efter montering. Detta ger dig möjlighet att montera flera identiska enheter på samma källkod, vars detaljer ger samma signaler, med resistiva sensorer är detta sällsynt.

Se även på vår webbplats:Ansluta externa enheter till Arduino

Se även på elektrohomepro.com:

  • Vad är skillnaden mellan analoga och digitala sensorer
  • Mät temperatur och luftfuktighet på Arduino - ett urval av sätt
  • Hur konverterar den analoga signalen till digital
  • Mest populära sensorer för Arduino
  • Hur linjesensorn är ordnad och fungerar

  •