Senzor napätia a Arduino Uno

Arduino Uno, rovnako ako mnoho mikrokontrolérov, má vstavaný analógovo-digitálny prevodník (ADC), ktorý dokáže previesť analógové napätie na kolíku na digitálne číslo. Maximálne napätie analógového vstupného kolíka je však obmedzené na 5V.
Tento limit sa vám môže zdať nepohodlný, ak váš projekt vyžaduje meranie napätia presahujúceho 5V. V takýchto prípadoch by ste mohli vytvoriť delič napätia pomocou diskrétnych rezistorov.
Existuje však jednoduchší spôsob merania napätia, najmä ak je nižšie ako 25 V: použite snímač napätia. Je to vopred vyrobený obvod deliča napätia, ktorý využíva presné odpory na poskytovanie presných údajov. V tomto návode sa pozrieme na to, ako používať snímač napätia s Arduinom, aby boli vaše úlohy merania napätia jednoduchšie a efektívnejšie.
Senzor napätia je v podstate jednoduchý obvod deliča napätia zložený z dvoch rezistorov.

V obvode sú dva odpory. Rezistor (R1) najbližšie k vstupnému napätiu má hodnotu 30 KΩ a rezistor (R2) najbližšie k zemi má hodnotu 7,5 KΩ. Pokles napätia na R2 je naše rozdelené napätie. Tento signál sa rozdelí na kolík hlavičky označený S.
Delí vstupné napätie faktorom 5. To je dôvod, prečo vám tento napäťový senzor môže pomôcť merať napätia, ktoré sú menšie ako 25 voltov s Arduino.
Čítanie snímača napätia
Čítanie snímača napätia alebo akéhokoľvek deliča napätia je veľmi jednoduché. Môžeme použiť rovnicu deliča napätia.
Rovnica deliča napätia predpokladá, že poznáte tri hodnoty vyššie uvedeného obvodu: vstupné napätie (Vin) a obidve hodnoty odporu (R1 a R2). Vzhľadom na tieto hodnoty môžeme použiť túto rovnicu na nájdenie výstupného napätia (Vout):

V našom prípade však budeme merať výstupné napätie (Vout) z obvodu deliča napätia pomocou Arduino ADC. Preto hodnota, ktorú nepoznáme, je Vin.
Preusporiadame vyššie uvedenú rovnicu, aby sme vyriešili vstupné napätie (Vin).

Táto rovnica nám hovorí, že vstupné napätie (Vin) je výstupné napätie (Vout) delené zlomkom odporu druhého odporu (R2) k celkovému odporu (R1 + R2) v obvode.
Piny snímača napätia :

Vstupný terminál
- VCC : je pripojený na kladnú svorku zdroja napätia, ktorý chcete merať. Odporúčaný rozsah napätia pre tento kolík je 0 až 25V.
- GND : je pripojený k zápornej svorke zdroja vstupného napätia.
Výstupný terminál
- S(Vout) : je výstupný kolík signálu modulu snímača napätia. Poskytuje analógové napätie, ktoré je úmerné úrovni vstupného napätia. Zvyčajne je pripojený k jednému z analógových vstupných kolíkov na Arduine.
- +NC : nie je s ničím spojený.
- -GND : je spoločný uzemňovací kolík.
Na začiatok pripojte zdroj napätia, ktorý chcete merať, k vstupnej skrutkovej svorke. Potom pripojte kolík „S“ na napäťovom senzore k analógovému kolíku „A0“ na Arduine a kolík „GND“ k zemi.
Obrázok ukazuje, ako všetko prepojiť:

Príklad kódu
Tu je jednoduchý náčrt, ktorý načíta analógové napätie na analógovom kolíku A0, vypočíta vstupné napätie pomocou rovnice deliča napätia a vytlačí výsledky na sériový monitor.
// Definujte analógový vstup
#define ANALOG_IN_PIN A0
// Floats pre ADC napätie a vstupné napätie
float adc_voltage = 0.0;
float in_voltage = 0.0;
// Floats pre hodnoty odporu v deliči (v ohmoch)
float R1 = 30000.0;
float R2 = 7500.0;
// Float pre referenčné napätie
float ref_voltage = 5.0;
// Integer pre hodnotu ADC
int adc_value = 0;
void setup(){
// Nastaviť sériový monitor
Serial.begin(9600);
}
void loop(){
// Prečítať analógový vstup
adc_value = analogRead(ANALOG_IN_PIN);
// Určite napätie na vstupe ADC
adc_voltage = (adc_value * ref_voltage) / 1024.0;
// Vypočítať napätie na vstupe deliča
in_voltage = adc_voltage*(R1+R2)/R2;
// zobrziť výsledky na Serial s presnosťou na 2 desatinné miesta
Serial.print("Vstupné napätie = ");
Serial.println(in_voltage, 2);
// Krátke oneskorenie
delay(500);
}
Nahrajte skicu do svojho Arduina a sledujte výsledky. Ak chcete overiť presnosť, zmerajte skutočné napätie pomocou digitálneho multimetra. Hodnota zobrazená na multimetri by sa mala zhodovať s hodnotou zobrazenou na sériovom monitore.ort delay
Vysvetlenie kódu:
Náčrt začína definíciou niekoľkých globálnych premenných, ktoré sa budú používať v celom programe.
Prvý riadok definuje analógový vstupný kolík na Arduine, ktorý používame na čítanie napätia z obvodu deliča napätia. V tomto prípade používame kolík A0.
#define ANALOG_IN_PIN A0
Ďalej sa definujú dva float, adc_voltage a in_voltage, na ukladanie hodnôt napätia na ADC a vstupe deliča napätia.
float adc_voltage = 0.0;
float in_voltage = 0.0;
Premenné R1 a R2 ukladajú hodnoty odporu pre delič napätia. Ak na vytvorenie vlastného deliča napätia používate inú sadu odporov, budete ich musieť zmeniť.
float R1 = 30000.0;
float R2 = 7500.0;
ref_voltage je referenčné napätie pre ADC, zvyčajne 5V pre Arduino Uno.
float ref_voltage = 5.0;
Posledná premenná adc_value sa používa na uloženie surovej digitálnej hodnoty načítanej z ADC.
int adc_value = 0;
V setup() sme nastavili sériovú komunikáciu na prenosovú rýchlosť 9600.
void setup(){
Serial.begin(9600);
}
V loop() sa funkcia analogRead() používa na čítanie napätia na kolíku A0. Vrátená hodnota je uložená v premennej adc_value.
adc_value = analogRead(ANALOG_IN_PIN);
Táto hodnota sa potom prevedie na napätie (adc_voltage) vynásobením referenčným napätím a vydelením 1024 (keďže Arduino má 10-bitový ADC, teda 2^10 = 1024 rôznych hodnôt).
adc_voltage = (adc_value * ref_voltage) / 1024.0;
Vstupné napätie do deliča napätia sa potom vypočíta pomocou vzorca pre delič napätia:

in_voltage = adc_voltage*(R1+R2)/R2;
Nakoniec sa vypočítané vstupné napätie vytlačí na sériový monitor so zobrazením až na 2 desatinné miesta. Potom Arduino čaká 500 milisekúnd, kým zopakuje slučku.
Serial.print("Vstupné napätie = ");
Serial.println(in_voltage, 2);
delay(500);
Pridaj komentár