Analóg feszültség olvasása

Olvassa az analóg bemenetet, és kiírja a feszültséget a soros monitorra.


Utolsó felülvizsgálat: 2022.02.04 16:50


Ez a példa bemutatja, hogyan kell beolvasni egy analóg bemenetet a 0-s analóg kivezetésen, hogyan alakíthatja át az analogRead() értékeit feszültséggé, és hogyan nyomtathatja ki az Arduino Software (IDE) soros monitorára.

Hardver szükséglet

  • Arduino kártya

  • 10 kohm-os potenciométer

Az áramkör

Csatlakoztassa a potenciométer három vezetékét a kártyához. Az első a potenciométer egyik szélső csatlakozójától a földig megy. A második a potenciométer másik szélső csatlakotójától az 5 voltra megy. A harmadik a potenciométer középső csatlakozójától az analóg 0 kivezetésre csatlakozik.

A potenciométer tengelyének elfordításával a csúszka mindkét oldalán változtatja az ellenállás mértékét, amely a potenciométer középső csapjához csatlakozik. Ez megváltoztatja a feszültséget a középső csatlakozón. Ha a középső és az 5 voltra csatlakoztatott oldal közötti ellenállás közel nulla (és a másik oldalon az ellenállás közel 10 k ohm), a középső érintkező feszültsége megközelíti az 5 voltot. Ha a potenciométer szélső vezetékeit felcseréljük, a középső érintkező feszültsége megközelíti a 0 voltot, vagyis a testet. Ez a feszültség az analóg feszültség, amelyet bemenetként olvas.

A kártya mikrokontrollerében van egy analóg-digitális konverternek vagy ADC-nek nevezett áramkör, amely beolvassa ezt a változó feszültséget, és 0 és 1023 közötti számmá alakítja. Ha a tengelyt teljesen egy irányba fordítjuk, a kivezetésre 0 volt megy, a bemeneti érték pedig 0. Ha a tengelyt teljesen az ellenkező irányba forgatjuk, akkor 5 volt megy a kivezetésre, és a bemeneti érték 1023. A kettő között az analogRead() egy 0 és 1023 közötti számot ad vissza, amely arányos a kivezetésre adott feszültség mértékével.

Vázlat

A kód

Az alábbi programban a setup függvényben a legelső dolog, amit meg kell csinálunk, hogy soros kommunikációt indítunk 9600 bit/másodperc sebességgel a kártya és a számítógép között a következő paranccsal:

Serial.begin(9600);

Ezután a kód fő ciklusban létre kell hoznia egy változót, amely tárolja a potenciométerből érkező ellenállásértéket (amely 0 és 1023 között lesz, tökéletes hozzá az int adattípus):

int sensorValue = analogRead(A0);

Ahhoz, hogy a kivezetésen olvasott 0-1023 közötti értéket a feszültségnek megfelelő tartományra módosítsa, létre kell hoznia egy másik változót, egy lebegőpontosat, és egy kicsit számolnia kell. A számok 0,0 és 5,0 közötti skálázásához ossza el az 5,0-t 1023,0-val, és szorozza meg a sensorValue értékkel:

float voltage= sensorValue * (5.0 / 1023.0);

Végül ki kell nyomtatnia ezeket az információkat a soros monitor ablakába. Ezt a Serial.println() paranccsal teheti meg az utolsó kódsorban:

Serial.println(sensorValue);

Most, amikor megnyitja a soros monitort az Arduino szoftverben (IDE) (az objektívnek tűnő ikonra kattintva a jobb oldalon, a zöld felső sávban vagy a Ctrl+Shift+M billentyűparancs használatával), folyamatos számfolyamot kell látnia 0,0 és 5,0 között. Ahogy forgatja a potot, az értékek megváltoznak, az A0 kivezetésre érkező feszültségnek megfelelően.

/*
  ReadAnalogVoltage

  Olvassa az analóg bemenetet a 0 kivezetésen, feszültséggé alakítja, és az eredményt kinyomtatja a soros monitorra.
  A grafikus ábrázolás a Serial Plotter használatával érhető el (Eszközök > Soros plotter menü).
  Csatlakoztassa a potenciométer középső csatlakozóját az A0 kivezetéshez, a külső csatlakozókat pedig a +5 V-hoz és a földhöz.

  Ez a példakód nyilvános.

  https://docs.arduino.cc/built-in-examples/basics/ReadAnalogVoltage
*/

// a setup (beállítási) funkció egyszer fut le, amikor megnyomja a reset gombot, vagy bekapcsolja a kártyát:
void setup() {
  // a soros kommunikáció inicializálása 9600 bit/s sebességgel:
  Serial.begin(9600);
}

// a loop (ciklus) függvény újra és újra lefut, örökké:
void loop() {
  // analóg input 0 kivezetés olvasása:
  int sensorValue = analogRead(A0);
  // a beolvasott analóg bemenet konvertálása (ami 0-tól 1023-ig terjed) feszültségre (0 - 5V):
  float voltage = sensorValue * (5.0 / 1023.0);
  // nyomtassa ki az olvasott értéket:
  Serial.println(voltage);
}

Tudj meg többet

További alapvető oktatóanyagokat a beépített példák részben talál.

Felfedezheti a nyelvi referenciát is, az Arduino programozási nyelv részletes gyűjteményét.