Arduino - měření malých proudů

Raspberry, Arduino, Mini-PC a další

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
ghost07
Příspěvky: 47
Registrován: 19 úno 2020, 01:00

Arduino - měření malých proudů

#1 Příspěvek 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

Uživatelský avatar
passion
Příspěvky: 890
Registrován: 22 črc 2005, 02:00
Bydliště: Žilina

#2 Příspěvek od passion »

INA219

Kód: Vybrat vše

https://navody.arduino-shop.cz/navody-k-produktum/proudovy-snimac-ina219.html
Naposledy upravil(a) passion dne 12 kvě 2020, 13:29, celkem upraveno 1 x.

Uživatelský avatar
FHonza
Příspěvky: 1443
Registrován: 20 lis 2012, 01:00
Bydliště: Praha

#3 Příspěvek od FHonza »

Na to se přesně hodí INA219

Uživatelský avatar
samec
Příspěvky: 3692
Registrován: 19 pro 2017, 01:00

#4 Příspěvek 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.

Uživatelský avatar
ghost07
Příspěvky: 47
Registrován: 19 úno 2020, 01:00

#5 Příspěvek 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í?
Přílohy
IMG_20200515_1513162.jpg
(223.59 KiB) Staženo 111 x

Uživatelský avatar
samec
Příspěvky: 3692
Registrován: 19 pro 2017, 01:00

#6 Příspěvek 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.

Uživatelský avatar
PavelFF
Příspěvky: 4796
Registrován: 18 úno 2008, 01:00
Bydliště: Brno

#7 Příspěvek 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.

Uživatelský avatar
ghost07
Příspěvky: 47
Registrován: 19 úno 2020, 01:00

#8 Příspěvek 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 =)

Uživatelský avatar
dobrman
Příspěvky: 1470
Registrován: 12 srp 2012, 02:00
Bydliště: J H

#9 Příspěvek 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
........Nedůvěřuji velbloudům a obecně nikomu, kdo dokáže týden nepít........

Uživatelský avatar
misocko
Příspěvky: 1250
Registrován: 26 čer 2009, 02:00
Bydliště: Hlohovec (Sk)

#10 Příspěvek 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);  
}
Přílohy
0V586.png
1V1.png

Uživatelský avatar
misocko
Příspěvky: 1250
Registrován: 26 čer 2009, 02:00
Bydliště: Hlohovec (Sk)

#11 Příspěvek 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 :D

Uživatelský avatar
lesana87
Příspěvky: 3296
Registrován: 20 zář 2014, 02:00

#12 Příspěvek od lesana87 »

A fakt je ta reference přesně 1,100V, není náhodou 1,150V?

Uživatelský avatar
dobrman
Příspěvky: 1470
Registrován: 12 srp 2012, 02:00
Bydliště: J H

#13 Příspěvek 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 ) ?
........Nedůvěřuji velbloudům a obecně nikomu, kdo dokáže týden nepít........

Uživatelský avatar
misocko
Příspěvky: 1250
Registrován: 26 čer 2009, 02:00
Bydliště: Hlohovec (Sk)

#14 Příspěvek 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 :)

Uživatelský avatar
lesana87
Příspěvky: 3296
Registrován: 20 zář 2014, 02:00

#15 Příspěvek od lesana87 »

Tak stačí se podívat do datašítu AVRka, ADC = Vin * 1024 / Vref.

Odpovědět

Zpět na „Miniaturní počítače (Arduino, Raspberry a další)“