Stránka 1 z 2
Arduino - měření malých proudů
Napsal: 12 kvě 2020, 13:16
od ghost07
Ahoj, potřeboval bych měřit spotřebu jedné věci napájené z baterie. Napadlo mě udělat mA měřák z arduina, jeho 10 bit ADC, a odporu. Akorát takle by to mělo rozlišení 4,88 mA. Šlo by např. přidáním tranzistoru zesílit napětí změřené na shunt rezistoru, aby to mělo rozlišení aspoň 1 mA? Akorát nevím jak to správně zapojit, aby to moc neovlivňovalo měření a jestli nebude potřeba spíš celý OZ, a tam nějak nastavovat zpětnou vazbu apod..
Jako shunt rezistor bych použil 1,2 Ohm, a měřený proud by mohl být asi mezi 0,1mA až 100mA.
Díky za případné rady
Napsal: 12 kvě 2020, 13:28
od passion
INA219
Kód: Vybrat vše
https://navody.arduino-shop.cz/navody-k-produktum/proudovy-snimac-ina219.html
Napsal: 12 kvě 2020, 13:29
od FHonza
Na to se přesně hodí
INA219
Napsal: 13 kvě 2020, 10:31
od samec
To záleží na tom, ako rýchlo ten prúd potrebuješ zmerať. Teoreticky ti k tomu stačí len to Arduino plus nejaký odpor a kondenzátor.
Napsal: 15 kvě 2020, 15:23
od ghost07
INA219 zní dobře, děkuju.
Ale stejně, než příjde, nedalo by se to zatím sestavit z věcí které mám doma?
- ESP32 s 12 bitovým ADC
- TL082 OZ
- nějaké rezistory
- nějaké kondenzátory
- (arduino nano, ale to asi nepožiju, má málo paměti pro ukládání a menší rozlišení)
Četl jsem, že ADC v ESP32 nerozezná hodnoty od 0 - 0.1V a pak 3.2 - 3.3V. Mně by se hodlo, aby právě ty malé hodnoty napětí rozpoznal. Nešlo by tedy ten OZ zapojit jako sumační zesilovač a posunout hladinu měřeného napětí ze shunt rezistoru např. o 0.1V?
Něco jsem zkusil nakreslit, ale nevím jestli tam nemám nesmysly, a jestli OZ nebude vadit, když bude bez záporného napájecího napětí?
Napsal: 15 kvě 2020, 16:09
od samec
Arduino má komparátor. Na jeden vstup privedieš napätie z meracieho odporu, na druhý signal z RC článku. A zmeraš, za aký čas komparátor preklopí. Stačia k tomu len R a C. Nič viac netreba.
Napsal: 15 kvě 2020, 16:28
od PavelFF
ghost07: Zásadně vadí, že nemáš záporné napájecí napětí. Jinak by to bylo dobře, až na druhý OZ, který je zapojen bez zpětné vazby a nesmyslně. Zapoj ho taky jako invertující zesilovač. Třeba se zesílením jedna.
Napsal: 16 kvě 2020, 20:11
od ghost07
Nějak se mi to s tím OZ nedaří udělat, tak OZ zatím asi nechám být.
Neměl by někdo poblíž Prahy / Slaného na půjčení tu INA219 na pár dní?
Nebo ještě zkusím projít google, jak by to šlo měřit tím komparátorem, a jestli by to zvládalo měřit pod 100 mV s rozlišením po 1 mV a s frekvencí cca 10 Hz. Rád bych zachytil i proudové špičky při vysílání NB-IoT modulu, tak odhadem bych řekl že 10 Hz je tak akorát, nebo není?
Ale INA219 by byla asi stejně pohodlnější, kdyby někdo měl a mohl půjčit =)
Napsal: 16 kvě 2020, 21:51
od dobrman
předesílám, že jsem to nezkoušel...
v Arduinu by mělo jít nastavit referenční napětí
analogReference(INTERNAL) t.j. na 1,1V
a tak by analogový vstup měl 0 - 1023 na rozsahu 0 - 1V
https://www.arduino.cc/reference/en/lan ... reference/
chtělo by to konzultovat s někým, kdo s tím má nějakou zkušenost
Napsal: 17 kvě 2020, 13:32
od misocko
tak skusenost z dnesneho rana (dost ma to zaujimalo , ja meriam od 10mA hore cez 16bit AD prevodnik, tak reku skusim co dokaze samote arduino).
meral som cez internu 1V1 referenciu aj externu 0V586.
merak som mal priamo na pinoch arduina aby som zamedzil chybam merania , vysledok arduina som si posielal na seriovy port. Prekvapila ma presnost 1V1 referencie (odporucaju si ju premerat a podla nameranej hodnoty korigovat vysledok). Tu vysledky neviem preco je to posunute raz na jednu druhykrat na druhu stranu , nechcelo sa mi stym dalej natahovat / korigovat.
kod
Kód: Vybrat vše
float napetie;
void setup() {
analogReference(EXTERNAL);
Serial.begin(9600);
}
void loop() {
napetie = (0.586/1.024)*analogRead(A0);
Serial.println(napetie);
delay(200);
}
Napsal: 17 kvě 2020, 18:35
od misocko
tak z toho som zatial jelen
nedali mi tie 3mV a tak som skusil 12bit DA prevodnik , ako referenciu pren mam referenciu arduina 1V1. Ked poslem na prevodnik hodnotu 200 , co by malo byt 53,7mV , posle v reale 56,1mV (merane dvoma merakmi a 16bit AD pevodnikom s vlastnou referenciou) , ale ak tuto hodnotu precitam opet arduino analogin , ta to prepocita na 53,7mV
moze byt referencia pocas citania nejaka zmenena? asi to hodim este na skop, zajtra....
necham si to asi na premyslenie

Napsal: 17 kvě 2020, 18:42
od lesana87
A fakt je ta reference přesně 1,100V, není náhodou 1,150V?
Napsal: 17 kvě 2020, 18:53
od dobrman
misocko píše:tak z toho som zatial jelen
nedali mi tie 3mV ........
nemělo by se v přepočtu použít ( Uref/1023 ) ?
Napsal: 17 kvě 2020, 20:51
od misocko
lesana: mam doma niekolko dosiek , dve orginal, niekolko klonov, to 1,1V som skusal zatial na dvoch , na jednom to nebolo presne 1,1V (nepametam presne kolko to bolo) na tom dnes to bolo 1,10V (presnejsie to mozem pozriet tym AD prevodnikov), aj ked som o tom hladal arduino clanky , vzdy tam davaju ze si to treba pomerat
dobrman: pravdu povediac neviem, hodnot je predsa 1024 aj ked prva je nula (neviem ci dobre pocitam ale to ci pouzijem 1023 alebo 1024 spravi chybu 0,001mV)
co ma vsak napadlo, urcite som nepouzil pridavny kondenzator medzi GND a pin referencie , zajtra ho tam pridam a skusim to znovu.
Ďakujem za postrehy

Napsal: 17 kvě 2020, 20:58
od lesana87
Tak stačí se podívat do datašítu AVRka, ADC = Vin * 1024 / Vref.