Analóg bemenet

Potenciométert használunk a LED villogásának szabályozására.


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


Ebben a példában változó ellenállást (potenciométert vagy fotoellenállást) használunk, ennek értékét egy Arduino kártya analóg bemenetén olvassuk le, és ennek megfelelően változtatjuk a beépített LED villogásának gyakoriságát. Az ellenállás analóg értékét a rendszer feszültségként olvassa be, mert az analóg bemenetek így működnek.

Hardver szükséglet

  • Arduino kártya

  • Potenciométer vagy

  • 10 kohmos fotoellenállás és 10 kohmos ellenállás

  • beépített LED a 13-as kivezetésen vagy

  • 220 ohmos ellenállás és piros LED

Az áramkör

Potenciométerrel

Fotoellenállással

Csatlakoztasson három vezetéket a kártyához. Az első a potenciométer egyik külső csatlakozójáról a földre megy. A második 5 voltról a potenciométer másik külső csatlakozójára megy. A harmadik a 0 analóg bemenetről a potenciométer középső csatlakozójára megy.

Ebben a példában használható a kártya beépített LED-je, amely a 13-as kivezetéshez van csatlakoztatva. További LED használatához rögzítse a hosszabb lábát (pozitív láb vagy anód) a 220 ohmos ellenállással sorba kapcsolt 13-as digitális kivezetéshez, a rövidebb lábát (a negatív láb vagy katód) pedig a föld (GND) kivezetéshez a 13-as kivezetés mellett.

A fotoellenálláson alapuló áramkör ellenállásosztót használ, amely lehetővé teszi a nagy impedanciájú analóg bemeneten a feszültség mérését. Ezek a bemenetek szinte semmilyen áramot nem vesznek fel, ezért az Ohm törvénye szerint az 5V-ra kapcsolt ellenállás másik végén mért feszültség mindig 5V, függetlenül az ellenállás értékétől. Ahhoz, hogy a fotoellenállás értékével arányos feszültséget kapjunk, ellenállásosztóra van szükség. Ez az áramkör egy változó ellenállást, egy fix ellenállást használ és a mérési pont az ellenállások közepén van. A mért feszültség (Vout) a következő képlet szerint történik:

Vout=Vin*(R2/(R1+R2))

ahol Vin 5V, R2 10 kohm és R1 a fotoellenállás értéke, amely 1 Mohmtól sötétben 10k ohmig nappali fényben (10 lumen), és kevesebb, mint 1 kohm erős fényben vagy napfényben (>100 lumen).

Vázlat

Potenciométerrel

Fotoellenállással

A kód

A vázlat elején a sensorPin változó a 0. analóg kivezetésre van állítva, ahvá a potenciométer van csatlatkoztatva, a ledPin pedig a 13-as digitális kivezetésre van csatlatkoztatva. Létre kell hoznia egy másik változót is, a sensorValue-t az érzékelőből kiolvasott értékek tárolására.

Az analogRead() parancs a 0 és 5 volt közötti bemeneti feszültségtartományt 0 és 1023 közötti digitális értékké alakítja. Ezt a mikrokontrollerben lévő analóg-digitális átalakítónak vagy ADC-nek nevezett áramkör végzi.

A potenciométer tengelyének elforgatásával megváltoztatja az ellenállás mértékét a potenciométer középső csapjának (vagy csúszkának) mindkét oldalán. Ez megváltoztatja a relatív ellenállást a középső érintkező és a két külső érintkező között, így eltérő feszültséget kap az analóg bemeneten. Ha a tengelyt teljesen egy irányba fordítja, nincs ellenállás a középső csap és a földhöz csatlakoztatott csap között. A középső érintkező feszültsége ekkor 0 volt, és az analogRead() 0-t ad vissza. Ha a tengelyt teljesen a másik irányba fordítjuk, nincs ellenállás a középső csap és a +5 voltra csatlakoztatott csap között. A középső érintkező feszültsége ekkor 5 volt, és az analogRead() 1023-at ad vissza. 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.

Ez az érték, amelyet a sensorValue tárol, és a delay() beállítására szolgál a pislogási ciklushoz. Minél nagyobb az érték, annál hosszabb a ciklus, minél kisebb az érték, annál rövidebb a ciklus. Az érték a ciklus elején kerül kiolvasásra, ezért a be- és kikapcsolási idő mindig egyenlő.

/*
  Analog Input

  Az analóg bemenetet úgy demonstrálja, hogy beolvas egy analóg érzékelőt a 0-s analóg kivezetésről,
  és be- és kikapcsolja a 13-as digitális érintkezőhöz csatlakoztatott fénykibocsátó diódát (LED).
  A LED be- és kikapcsolási ideje az analogRead() által kapott értéktől függ.

  Az áramkör:
  - potentiométer
    a potenciométer középső csapja a 0 analóg bemenethez az egyik oldalsó
    érintkező (bármelyik) a földre, a másik oldali csap a +5 V-ra
  - LED
    az anód (hosszú láb) a 13-as digitális kivezetéshez csatlakozik egy 220 ohmos
    ellenálláson keresztül, a katód (rövid láb) a földhöz van csatlakoztatva

  - Megjegyzés: mivel a legtöbb Arduinos beépített LED-je van a kártya
    13-as kivezetéséhez csatlakoztatva, a LED opcionális.

  created by David Cuartielles
  modified 30 Aug 2011
  By Tom Igoe

  Ez a kód nyilvános.

  https://docs.arduino.cc/built-in-examples/analog/AnalogInput
*/

int sensorPin = A0;   // kiválasztjuk a potenciométer bemeneti kivezetését
int ledPin = 13;      // kiválasztjuk a LED kivezetését
int sensorValue = 0;  // változó az érzékelőtől érkező érték tárolására

void setup() {
  // deklarálja a ledPin-t OUTPUT-ként:
  pinMode(ledPin, OUTPUT);
}

void loop() {
  // olvassa le az értéket az érzékelőről:
  sensorValue = analogRead(sensorPin);
  // kapcsolja be a ledPin-t
  digitalWrite(ledPin, HIGH);
  // állítsa le a programot <sensorValue>> milliszekundumra:
  delay(sensorValue);
  // kapcsolja ki a ledPin-t
  digitalWrite(ledPin, LOW);
  // állítsa le a programot <sensorValue>> milliszekundumra:
  delay(sensorValue);
}

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.