Arduino-ADC diferenciální měření

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
sanoch
Příspěvky: 437
Registrován: 04 led 2012, 00:00
Bydliště: Volyně

Arduino-ADC diferenciální měření

#1 Příspěvek od sanoch »

Zdravím,
mohl by mně prosím někdo nasměrovat a vysvětlit princip diferenciálního měření napětí?
Z toho mála co jsem našel na netu, nejsem schopen to přesně pochopit.
Jedná se mi o "posunutí nuly", chci měřit napětí na aku v rozsahu cca 3V-3.5V.
Jestli jsem to správně pochopil, tak by se toho 0.5V měřilo s rozlišením 10bitů.
To by značně zvýšilo přesnost měření.
Nejlépe nějaký příklad kódu, prostě se mi nic podrobného nedaří najít(neumím asi formulovat, co vlastně požaduji).
Předem děkuji za odpovědi.
Uživatelský avatar
forbidden
Příspěvky: 9442
Registrován: 14 úno 2005, 00:00
Bydliště: Brno (JN89GF)
Kontaktovat uživatele:

#2 Příspěvek od forbidden »

Hlavně záleží čím to chceš měřit, jestli má převodník REF LO a REF HI vstupy. Posunout nulu z čehokoliv je externě snadný, ale záleží na tom, jak bude takový řešení stabilní, abys tím tu 10-bit přesnost stejně nezabil.
Koukni třeba sem.
Uživatelský avatar
sanoch
Příspěvky: 437
Registrován: 04 led 2012, 00:00
Bydliště: Volyně

#3 Příspěvek od sanoch »

Díky za odkaz.
Měřit to chci arduinem, tudíž některým z AVR.
Jedná se mi vlastně o princip a příklad kódu pro arduino.
Potřebuji to pochopit.
Uživatelský avatar
forbidden
Příspěvky: 9442
Registrován: 14 úno 2005, 00:00
Bydliště: Brno (JN89GF)
Kontaktovat uživatele:

#4 Příspěvek od forbidden »

Aha, to jsem přehlídl. AVR neznám, ale pokud to nemá možnost spodní hranici reference nastavit v software na nějakou interní stabilní, tak jedině externě. Kód bude stejnej, jen připočítáš ten offset.
Uživatelský avatar
sanoch
Příspěvky: 437
Registrován: 04 led 2012, 00:00
Bydliště: Volyně

#5 Příspěvek od sanoch »

No, princip bude asi stejný.
Jde mi o to:
Potřebuji měřit interval 3V-3.5V.
Příkladně, mám 2 reference 3V a 3.5V.
Bude se při diferenciálním měření měřit jen ten rozdíl 0.5V 10bit rozlišením?
Nebo se s 10bit rozlišením změří první reference 3V pak neznámé napětí a odečte se hodnota první reference?
Uživatelský avatar
forbidden
Příspěvky: 9442
Registrován: 14 úno 2005, 00:00
Bydliště: Brno (JN89GF)
Kontaktovat uživatele:

#6 Příspěvek od forbidden »

V tom je právě smysl diferenciálního měření. Plných 10-bit se použije jen na ten rozdíl, tedy 0,5 V tady.
Uživatelský avatar
lesana87
Příspěvky: 4395
Registrován: 20 zář 2014, 00:00

#7 Příspěvek od lesana87 »

Co je v tom Arduinu za AVR? Ne všechny mají diferenciální měření, třeba ATmega168 nemá.
Uživatelský avatar
dracekvo
Příspěvky: 712
Registrován: 10 úno 2009, 00:00

#8 Příspěvek od dracekvo »

AVR neznám, ale u PIC to takto funguje jak píšeš.

Pokud dám jak Lo tak Hi externí referenci, tak to prostě měří 10bit v tom rozsahu mezi. Tj. v tvém případě mezi 3-3.5V.

Ale kód by stejný být neměl. Musím v konfiguraci nastavit příslušný pin, že se má využívat jako reference pro ADC.
Uživatelský avatar
sanoch
Příspěvky: 437
Registrován: 04 led 2012, 00:00
Bydliště: Volyně

#9 Příspěvek od sanoch »

No to potřebuji vědět, nedaří se mi najít nějaký příklad kódu.
Uživatelský avatar
lesana87
Příspěvky: 4395
Registrován: 20 zář 2014, 00:00

#10 Příspěvek od lesana87 »

AVR nemá dolní referenci, takže neumí měřit mezi dvěma referencemi jako PIC. Některá AVR umí měřit difrenciálně tak, že měří napětí mezi dvěma kanály případně ještě nějak zesílené (20x). Přesnost měření v diferenciálním režimu je ale asi 4x horší než při měření jednoho kanálu, tak je otázka, jestli si tím něco pomůžeš. Navíc jseš stále omezen (u AVR i PIC) nějakým rozsahem reference vzhledem k napájecímu napětí. Chce to trošku hlouběji promyslet.
Jinak u AVR se způsob měření (jeden kanál / rozdíl dvou kanálů) volí nastavením multiplexeru v ADMUX registru.
Uživatelský avatar
sanoch
Příspěvky: 437
Registrován: 04 led 2012, 00:00
Bydliště: Volyně

#11 Příspěvek od sanoch »

Ano, děkuji.
To by mi už mohlo stačit.
Nevěděl jsem právě, jak mu říct, aby měřil diferenciálně.
Uživatelský avatar
bdn
Příspěvky: 560
Registrován: 16 led 2020, 00:00

#12 Příspěvek od bdn »

attiny85 má možnost diferenciálního vstupu ADC převodníku. https://www.google.com/search?q=attiny85+datasheet
Uživatelský avatar
Dumitru
Příspěvky: 254
Registrován: 11 pro 2015, 00:00
Bydliště: Slovensko,Bratislava
Kontaktovat uživatele:

#13 Příspěvek od Dumitru »

Diferenciálne meranie na attiny45 som použil v mojom zdroji, je tam aj kód , pri použití oversamplingu a kalibrácii sa mi podarilo dosiahnuť presnosť ako v single-ended. Každopádne kalibrácii sa nevyhneš tu je návod , ja som sa na offseterror vykašlal kalibrujem len gainerror. Osobne by som to už ale nerobil radšej dať operak a diferenciálny zosilňovač.
Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“