Stránka 1 z 2
Arduino vs měření proudu s ACS712
Napsal: 31 říj 2025, 17:57
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.
Napsal: 31 říj 2025, 18:20
od Cowley
Zkus třeba jiný návod...
Drátek
Ten parametr může být offset...
Napsal: 31 říj 2025, 18:46
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
Napsal: 31 říj 2025, 18:59
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ý.
Napsal: 31 říj 2025, 19:07
od pdp7
To mi stačí, bude to jen orientační měření odběru fotosestavy.
Děkuji
Napsal: 31 říj 2025, 19:08
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.
Napsal: 31 říj 2025, 19:11
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.
Napsal: 31 říj 2025, 20:46
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.
Napsal: 31 říj 2025, 20:49
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.
Napsal: 31 říj 2025, 21:09
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.
Napsal: 31 říj 2025, 21:27
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);
...
}
Napsal: 31 říj 2025, 21:39
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ň

Napsal: 31 říj 2025, 21:42
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.
Napsal: 31 říj 2025, 21:45
od pdp7
Ok, už lepší.
Napsal: 31 říj 2025, 21:51
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.