Převod analogového na digitální (analogové čtení sériově) - základy Arduina

Vyzkoušejte Náš Nástroj Pro Odstranění Problémů





V tomto základu Arduino se snažíme porozumět postupu implementace kódu, při kterém se externí analogový signál přivádí na analogový vstup Arduino a překládá se nebo převádí na odpovídající proporcionální digitální výstup. Zde používáme jako zdroj analogového signálu proměnný odpor ve formě potu.

Sériové analogové čtení

V tomto příkladu se naučíme metodu čtení analogového vstupu z externího zařízení, jako je potenciometr, což je n elektromechanické zařízení určené k provádění měnícího se odporu v obvodu pomocí ručního ovládání.



Arduino lze použít k měření velikosti napětí vycházejícího z potenciometru, aby bylo možné číst a identifikovat odpovídajícím způsobem se měnící odpor. Toho lze dosáhnout napájením napětí do analogového vstupního portu Arduino jako analogové hodnoty.

Zde uvidíme, jak je výše uvedené vynuceno po navázání sériové komunikace přes Arduino a připojený počítač.



Je vyžadován hardware

Deska Arduino

10kilometrový potenciometr

Obvodový provoz

Jak je znázorněno na obrázku výše, připojte tři vodiče vycházející z hrnce k vašim portům Arduino.

Drát z jednoho z vnějších vodičů hrnce je přiřazen k zemi nebo záporné linii desky.

Druhý volný krajní vnější konec se připojí k + 5V desky.

Zbývá středový vývod banku, který je zakončen na analogový vstup desky Arduino.

Když se hřídel hrnce otáčí, odpor přes středový vodič a vnější terminál se posouvá z vyšší na spodní a naopak v závislosti na tom, ke které straně se posuvné rameno přiblíží.

Například když je posuvné rameno otočeno směrem k vodiči + 5V, střední vodič se přiblíží k 5V a má tendenci získávat celou hodnotu, když se dotkne přiřazeného vodiče 5V. Podobně, když se posuvný hřídel pohybuje směrem k přívodu zemnící nádoby, má střední přívod sklon k nulovému potenciálu.

Výše uvedené lineárně se měnící napájecí napětí na středním vodiči potu se čte analogovým vstupem arduino pro jeho interpretaci do odpovídajícího měnícího se odporu potu.

Arduino obsahuje vnitřní obvody analogově-digitálního převodníku, které efektivně interpretují výše uvedený pohyb hrnce a převádějí jej na čísla mezi 0 a 1023.

Konkrétní poloha nad dříkem hrnce vede k tomu, že Arduino překládá proporcionální číslo mezi 0 a 1023 a pro koncové hodnoty 5 V a nulové volty jsou interpretace samozřejmě 0 a 1023.

V uvedeném programu je pouze nutné spustit funkci nastavení pro zahájení sériové komunikace, rychlost je 9600 bitů dat za sekundu, přes vaši desku Arduino a počítač.

Očekávaný příkaz je ve tvaru:

Serial.begin (9600)

Následně v hlavní smyčce vašeho kódu vynucujeme proměnnou, abychom opravili hodnotu odporu (která by byla, jak je popsáno mezi 0 a 1023, která je vhodná pro datový typ int) přijatá z potenciálních zákazníků:

int sensorValue = analogRead (A0)

Na závěr si tyto informace vytiskněte do sériového okna jako desítkovou hodnotu (DEC). K implementaci v posledním řádku kódu můžete použít příkaz Serial.println ():

Serial.println (sensorValue, DEC)

Poté, kdykoli je spuštěn Serial Monitor ve vývojové doméně Arduino (to se provádí kliknutím na tlačítko, které je hned na pravé straně tlačítka „Nahrát“ v záhlaví programu).

viděli bychom konzistentní řetězec číslic běžících od 0-1023, odpovídající měnící se rotační poloze hřídele hrnce.

Pokud v určitém okamžiku zastavíme otáčení dříku hrnce, na obrazovce Arduina se zobrazí odpovídající okamžité číslo, to by se zase proporcionálně změnilo, jak budeme pokračovat ve změně polohy dříku hrnce.

Kód

/ *
AnalogReadSerial
Přečte analogový vstup na pinu 0, vytiskne výsledek na sériový monitor.
Připojte středový kolík potenciometru na kolík A0 a vnější kolíky na + 5 V a uzemněte.

Tento ukázkový kód je ve veřejné doméně.
* /

// instalační rutina se spustí jednou, když stisknete reset:
void setup () {
// inicializuje sériovou komunikaci rychlostí 9600 bitů za sekundu:
Serial.begin (9600)
}

// rutina smyčky běží znovu a znovu navždy:
void loop () {
// čtení vstupu na analogovém pinu 0:
int sensorValue = analogRead (A0)
// vytiskne hodnotu, kterou jste přečetli:
Serial.println (sensorValue)
delay (1) // zpoždění mezi čteními kvůli stabilitě
}




Předchozí: Monitorování stavu přepínače (Digital Read Serial) - základy Arduina Další: Nastavitelný obvod regulátoru napětí 1,25 V až 120 V