Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
Matko5 Član
Pridružen-a: Tor 04 Mar 2014 22:53 Prispevkov: 120 Aktiv.: 0.97 Kraj: LJ
|
Objavljeno: Ned Maj 22, 2022 9:43 pm Naslov sporočila: Merjenje napetosti z uporovnim delilnikom |
|
|
Pozdravljeni,
poskušam z Arduino UNO, kateri ima 10-bitni ADC izmeriti napetost na analognih pinih s pomočjo uporovnega delilnika.
Vrednost uporov je:
R1 = 2,9M
R2 = 190k
Nisem prepričan, ali je napaka v izračunih, ali je problem v čem drugem?
Hvala za vsako pomoč.
Koda: |
int value = 0;
int value2 = 0;
float voltage;
float voltage2;
float R1 = 2900000.0;
float R2 = 180000.0;
value = analogRead(A0);
value2 = analogRead(A1);
voltage = value * (5.0/1024)*((R1 + R2)/R2);
voltage2 = value2 * (5.0/1024)*((R1 + R2)/R2);
lcd.setCursor(0,0);
lcd.print("Voltage = ");
lcd.print(voltage);
lcd.setCursor(0,1);
lcd.print(voltage2);
|
Opis: |
|
Velikost datoteke: |
4.22 MB |
Pogledana: |
0 krat |
|
Opis: |
|
Velikost datoteke: |
4.92 MB |
Pogledana: |
0 krat |
|
Opis: |
|
Velikost datoteke: |
1.85 MB |
Pogledana: |
1 krat |
|
|
|
Nazaj na vrh |
|
|
Silvo Moderator
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14555 Aktiv.: 65.28 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Ned Maj 22, 2022 10:35 pm Naslov sporočila: |
|
|
Z arduino kodo ti žal ne znam pomagat. Pri narisanim uporovnim delilniku je na delilniku točno 5V pri vhodni napetosti 85.56V
Za pravilni prikaz moraš to vrednost torej 85.56 deliti z 1024 ter jo pomnožiti z izmerjeno ad vrednostjo.
_________________ lp
Silvo |
|
Nazaj na vrh |
|
|
Brusli Član
Pridružen-a: Tor 24 Nov 2020 12:10 Prispevkov: 144 Aktiv.: 3.46 Kraj: Hrastnik
|
Objavljeno: Pon Maj 23, 2022 6:44 am Naslov sporočila: |
|
|
Kje imaš zaščitno (zener) diodo na vhodu adruino?
Sicer pa poskusi ADC najprej usposobiti na 5V. Ko ti uspe, pa samo preračunaš na kakršno koli vhodno napetost uporabljaš. Vrednost, ki jo prebereš iz ADC deliš z 1024 in pomnožiš z maksimalno pričakovano napetostjo pred delilnikom. Jaz bi tule orda uporabil še opamp buffer na tvojem mestu, saj v atmega datasheet-u piše, da je ADC mišljen za merjenje nizkoimpedančnih izvorov (<10kOhm).
|
|
Nazaj na vrh |
|
|
mucek Član
Pridružen-a: Tor 01 Avg 2006 10:47 Prispevkov: 5337 Aktiv.: 24.72 Kraj: Domzale
|
Objavljeno: Pon Maj 23, 2022 7:48 am Naslov sporočila: |
|
|
Zenerca pri takem uporovnem delilniku zaradi reverse currenta zna ze delati probleme pri meritvi, saj bo skozi njo tekel dolocen tok tudi, ko bo pod nominalno napetostjo. Buffer z opampom (za delilnikom) kot je predhodnik predlagal, bi bila boljsa resitev.
Lp, G
_________________ ...lahko pa se tudi motim ... |
|
Nazaj na vrh |
|
|
Sigi Član
Pridružen-a: Čet 31 Jul 2014 11:42 Prispevkov: 199 Aktiv.: 1.68 Kraj: Kamnik
|
Objavljeno: Pon Maj 23, 2022 9:47 am Naslov sporočila: |
|
|
Za ADC poišči podatek za max impedanco vira za doseganje zahtevane točnosti meritve.
Predhodniki so ti že svetovali opamp, če vzorčiš dovolj poredko in želiš prihranit je lahko rešitev tudi primeren kondenzator na vhodu ADC.
|
|
Nazaj na vrh |
|
|
bbrane Član
Pridružen-a: Čet 14 Jun 2007 15:02 Prispevkov: 580 Aktiv.: 2.83 Kraj: Cerkno
|
Objavljeno: Pon Maj 23, 2022 10:00 am Naslov sporočila: |
|
|
Kakšna pa je vhodna upornost A0 vhoda. Če je leta majhna npr pod 10M potem moraš za izračun upoštevati paralelno kombinacijo R2 in Rvh od A0. Ali pa vzeti bistveno manjši R2 in seveda ustrezen R1- samo potem bo tudi merjeni vir bolj obremenjen.
LP Brane
_________________ En poizkus je vreden več kot tisoč strokovnih mnenj |
|
Nazaj na vrh |
|
|
Sigi Član
Pridružen-a: Čet 31 Jul 2014 11:42 Prispevkov: 199 Aktiv.: 1.68 Kraj: Kamnik
|
Objavljeno: Pon Maj 23, 2022 4:23 pm Naslov sporočila: |
|
|
bbrane je napisal/a: |
Kakšna pa je vhodna upornost A0 vhoda. Če je leta majhna npr pod 10M potem moraš za izračun upoštevati paralelno kombinacijo R2 in Rvh od A0. Ali pa vzeti bistveno manjši R2 in seveda ustrezen R1- samo potem bo tudi merjeni vir bolj obremenjen.
LP Brane |
Brane to imaš povsem prav, vendar pa tu težko govorimo le o vhodni upornosti ADC-ja (čeprav ima ADC seveda tudi notranjo upornost). Vhodni del ADC z impedanco vira (v našem primeru delilnik) kreirata RC vezje. ADC mora v trenutku vzorčenja (sample time) napolniti svojo notranjo kapacitivnost, impedanca vira pa mora biti dovolj majhna, da se v času vzorčenja ta notranja kapacitivnost ADCja "napolni" na vhodno napetost (ali se vsaj dovolj približa, recimo na 1LSB). Da to dosežeš pa lahko čaraš na več načinov
-zmanjšaš impedanco vira (delilnik z nižjimi vrednostmi uporov, buffer)
-dodaš čez vhod ADC dovolj velik kondenzator in poskrbiš, da se ima med sampli čas dovolj napolnit (poceni rešitev, če je lahko frekvenca meritev dovolj nizka)
-podaljšaš sample-time ADC-ja (omejeno z možnostmi ADC-ja)
|
|
Nazaj na vrh |
|
|
robert Član
Pridružen-a: Sob 29 Maj 2004 21:48 Prispevkov: 1871 Aktiv.: 8.39 Kraj: Tolmin
|
Objavljeno: Pon Maj 23, 2022 5:15 pm Naslov sporočila: |
|
|
Koda: |
float R2 = 180000.0; |
upor pa 190k
_________________ LP Robert |
|
Nazaj na vrh |
|
|
Brusli Član
Pridružen-a: Tor 24 Nov 2020 12:10 Prispevkov: 144 Aktiv.: 3.46 Kraj: Hrastnik
|
Objavljeno: Tor Maj 24, 2022 10:10 am Naslov sporočila: |
|
|
Eto, tole piše v podatkovni listi (datasheet) od mikrokrmilnika ATmega328p; Predvidevam, da je to tisti mikrokrmilnik, ki ga tvoj Arduino uporablja. Sicer pa poiščeš datasheet za ustrezni čip in prebereš kaj piše v poglavju ADC.
Opis: |
|
Velikost datoteke: |
89.58 KB |
Pogledana: |
27 krat |
|
|
|
Nazaj na vrh |
|
|
int47 Član
Pridružen-a: Pon 15 Dec 2003 0:10 Prispevkov: 2066 Aktiv.: 9.27 Kraj: Ljubljana
|
Objavljeno: Sre Maj 25, 2022 6:11 pm Naslov sporočila: |
|
|
1111111111b = 3FFhex = 1023dec
Verjetno boš rabil še kalibracijo, ker upori in napajanje niso z 0% toleranco.
_________________ Kdor ni skregan, ni Slovenc ! |
|
Nazaj na vrh |
|
|
mosqito Član
Pridružen-a: Čet 07 Apr 2016 23:22 Prispevkov: 3241 Aktiv.: 33.09
|
Objavljeno: Pet Maj 27, 2022 3:36 pm Naslov sporočila: |
|
|
Tule je nekaj koristnega branja:
http://lea.hamradio.si/~s53mv/voltmeter/voltmeter.html
Sicer je mikrokontroler iz predkambrijskega časa, ampak bistvo je v analognem delu pred ADC.
_________________ Always going the extra mile. |
|
Nazaj na vrh |
|
|
Matko5 Član
Pridružen-a: Tor 04 Mar 2014 22:53 Prispevkov: 120 Aktiv.: 0.97 Kraj: LJ
|
Objavljeno: Pet Jun 03, 2022 10:41 pm Naslov sporočila: |
|
|
Sicer ni ravno dosežek in ker pri višjih napetostih pada natančnost (pri 28 V je približno 0,5 V razlike) je nekako uspelo izmeriti napetost. Ker nisem mel pri sebi kakih uporov primernih vrednosti sem vzporedno s temi vezal upore kot je prikazano na shemi za 2 analogna vhoda. Dodal sem tudi kondenzator na vsak vhod, ki naj bi deloval kot še nekak dodatni filter.
Prejšnja konfiguracija je res imela prevelike vrednosti uporov in je tudi celo nekaj oscilirala, ko sem pogledal na osciloskop.
Tukaj je še koda s katero sem testiral:
Koda: |
float R1 = 97500.0;
float R2 = 5320.0;
int value = 0;
float voltage = 0;
void setup() {
Serial.begin(9600);
analogReference(EXTERNAL); //3.3 V
}
void loop() {
value = analogRead(A0);
voltage = value * (3.3/1024)*((R1+R2)/R2);
Serial.println(voltage);
delay(1000);
}
|
Uporabil sem tudi zunanjo referenco katera je 3.3 V izhod regulatorja Arduina preko 1k upora na AREF pin.
Opis: |
|
Velikost datoteke: |
45.9 KB |
Pogledana: |
5 krat |
|
Opis: |
|
Velikost datoteke: |
175.28 KB |
Pogledana: |
2 krat |
|
Opis: |
|
Velikost datoteke: |
329.12 KB |
Pogledana: |
1 krat |
|
|
|
Nazaj na vrh |
|
|
|