Arduino vs měření proudu s ACS712

Raspberry, Arduino, Mini-PC a další

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
pdp7
Příspěvky: 308
Registrován: 15 zář 2014, 00:00

Arduino vs měření proudu s ACS712

#1 Příspěvek od pdp7 »

Ahoj, měřím přes ACS712 a jeho výstup VIOUT do analogového vstupu arduina a ukazuje mi to proud 0.23A když by tam měla být prakticky nula nebo max. pár mA klidového proudu.
Chci se zeptat, zde v tomto programu

https://github.com/florindumitrescu94/D ... Box_V3.ino

na řádku 529 je nějaké číslo 2.494 co to znamená a proč to tam je? Nějaká kompenzace?
Jsou možné nějaké rozdíly v jednotlivých arduinech co se prodávají?
Jaká je ideální metoda řešení? Prostě na blbce odečíst ze surové hodnoty PIN_VALUE_A a nebo udělat něco jinýho? V datasheetu k ACS712 je katalogové zapojení a nějaký Cload, ale dál k němu není žádná zmínka.
Uživatelský avatar
Cowley
Příspěvky: 3557
Registrován: 04 úno 2005, 00:00

#2 Příspěvek od Cowley »

Zkus třeba jiný návod...

Drátek

Ten parametr může být offset...
Uživatelský avatar
misocko
Příspěvky: 1528
Registrován: 26 čer 2009, 00:00
Bydliště: Hlohovec (Sk)

#3 Příspěvek od misocko »

ACS712 ma pri nulovom prúde na výstupe polovicu napajacieho napätia. Ráta sa s napajanim 5V takze ta konstanta je vlastne polovica (2,5V) s nejakou drobnou kompenzáciou. Je to dost náchylne na napajacie napetie - musel som ho mať cez stabik aby to bolo použiteľne
Uživatelský avatar
jezevec
Hlavní moderátor
Příspěvky: 6102
Registrován: 13 čer 2004, 00:00
Bydliště: Břeclavsko
Kontaktovat uživatele:

#4 Příspěvek od jezevec »

Nevím jaký proud chceš měřit, ale co jsem zkoušel, tak do asi 200mA to ukazuje bludy, na běžný dílenský zdroj naprosto nepoužitelný.
Uživatelský avatar
pdp7
Příspěvky: 308
Registrován: 15 zář 2014, 00:00

#5 Příspěvek od pdp7 »

To mi stačí, bude to jen orientační měření odběru fotosestavy.
Děkuji
Uživatelský avatar
HF_Tech
Příspěvky: 2365
Registrován: 25 dub 2022, 00:00

#6 Příspěvek od HF_Tech »

Ten ACS má jako nulu střed připojeného napájecího napětí. Pokud to napětí kolísá nebo není přesně 5V tak máš poměrně velkou chybu 0. Pokud těch 5V bereš přímo z USB počítače, tak to může klidně lítat 4,5 až 5,5V.
Nejlepší metoda je dát si na další ADC vstup arduina odporový dělič z odporů třeba 10k mezi napájení AVC a GND. Obě ADC změřit těsně po sobě a pak odečíst. Tím se chyba nuly téměř zkompenzuje.
Uživatelský avatar
lesana87
Příspěvky: 4395
Registrován: 20 zář 2014, 00:00

#7 Příspěvek od lesana87 »

A/D převodník v AVR může pracovat s Vcc jako Vref, pak by se změna napájení neměla projevit.
Uživatelský avatar
Dumitru
Příspěvky: 254
Registrován: 11 pro 2015, 00:00
Bydliště: Slovensko,Bratislava
Kontaktovat uživatele:

#8 Příspěvek od Dumitru »

Noo neviem či do 200mA to ukazuje bludy.

Ale používam ACS712T na 20A + OZ LM358 v umelej zaťaží, a tam mam krok nastavenia po 40mA a musím povedať že dokážem zmerať do 200mA s presnosťou +-20mA od nastavenej hodnoty.

Uznávam nie je to najpresnejšie a neviem na aký prúd ma @pdp7 ale verím že pri použitý čidla na menši prúd napr. 5A by to malo/mohlo byť ešte presnejšie.
Uživatelský avatar
Valdano
Příspěvky: 3117
Registrován: 01 led 2023, 00:00
Bydliště: Česká Lípa

#9 Příspěvek od Valdano »

U desek Arduino AVR (UNO, Mega, Nano, Leonardo) je nastavena výchozí analogová reference dle napájecího napětí, a to aniž by bylo nutné volat funkci analogReference(). V popisu funkce analogReference() je uvedeno jaké výchozí (DEFAULT) nastavení je i pro další desky Arduina.

Jen pro zajímavost pro přesnější měření menších DC proudů do cca 3A při napětí do +/- 26V se dá použít proudový snímač INA219 osazený na modulu s bočníkem 0,1 ohmu viz odkazovaný příklad. Skladem je aktuálně třeba tady. Při rozsahu do 26V/3,2A je rozlišení cca 0,8 mA a při rozsahu do 16V/400mA je rozlišení cca 0,1 mA.
Uživatelský avatar
pdp7
Příspěvky: 308
Registrován: 15 zář 2014, 00:00

#10 Příspěvek od pdp7 »

Zase otázka od debílka, jsou AREF, VIN, 3V3 piny co se dají normálně na začátku programu určit např:

int 3volty = AREF;

a v loopu pak vypisovat

Serial.print(3volty) ?

proč to nejde? Jde to jen u A0....atd.
Uživatelský avatar
Valdano
Příspěvky: 3117
Registrován: 01 led 2023, 00:00
Bydliště: Česká Lípa

#11 Příspěvek od Valdano »

Použití AREF přímo v programu nedává moc smysl. AREF pin je určený pro HW připojení externí reference a při jeho nesprávném použití můžete Arduino odrovnat viz odkaz na upozornění k tomu. Ne všechny desky mají povolený pin AREF a na všech deskách, které ho mají, to nefunguje stejně viz odkaz na info k funkci AREF pinu na různých deskách.

K AREF pinu Arduina nikdy nepřipojujte referenci se záporným napětím nebo s napětím vyšším než +5V DC.

Pokud chcete používat externí HW referenci připojenou na AREF pin Arduina tak musíte dříve než poprvé v programu použijete funkci analogRead() zavolat analogReference(EXTERNAL); nejlépe už v setup(). Jinak může dojít ke zkratu aktivního referenčního napětí (generovaného interně) a externího referenčního napětí připojeného k pinu AREF, což může vést k poškození procesoru na desce.

Kód: Vybrat vše

void setup ()
{
  analogReference(EXTERNAL);
  analogRead(0);
  ...
}
Uživatelský avatar
pdp7
Příspěvky: 308
Registrován: 15 zář 2014, 00:00

#12 Příspěvek od pdp7 »

Jasný a na co mám ten analogRead pustit? Furt si to představuju tak, jakože mi to vypíše aktuální hodnotu napětí která mi leze jako napájení do arduina. Teď nechci pouštět nějaké napětí na analogové piny, ale prostě cvičně přečíst jaké napětí na arduinu je a vypsat to do konzole. Ale jsem fakt tupoň :lol:
Uživatelský avatar
Valdano
Příspěvky: 3117
Registrován: 01 led 2023, 00:00
Bydliště: Česká Lípa

#13 Příspěvek od Valdano »

Externí reference se uplatňuje vůči všem analogovým vstupům. Takže je to jedno. Pro zmíněný účel tedy klidně stačí na začátku v setup() hned po zavolání analogReference(EXTERNAL); jednorázově zavolat funkci analogRead(0) i bez použití vyhodnocení její návratové hodnoty. Pak už můžete kdekoli dál v programu používat analogRead dle potřeby s kterýmkoli analogovým vstupem, na kterém budete něco měřit.
Naposledy upravil(a) Valdano dne 31 říj 2025, 21:46, celkem upraveno 1 x.
Uživatelský avatar
pdp7
Příspěvky: 308
Registrován: 15 zář 2014, 00:00

#14 Příspěvek od pdp7 »

Ok, už lepší.
Uživatelský avatar
Valdano
Příspěvky: 3117
Registrován: 01 led 2023, 00:00
Bydliště: Česká Lípa

#15 Příspěvek od Valdano »

Pin VIN se v programu rovněž nepoužívá. Slouží k napájení desky Arduina napětím obvykle 7 až 12V (ideálně 9V) DC před na desce Arduina osazeným stabilizátorem viz např. schéma zapojení Arduino Nano v příloze a ani pin 3V3 se v programu nepoužívá.

Doporučují si projít informace v Arduino programové referenci.
Přílohy
NanoV3.3_sch.pdf
(97.54 KiB) Staženo 77 x
Odpovědět

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