www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

ADC - koliko je 'normalno', da trosi rezultate

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Elektronika
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3360
Aktiv.: 14.18
Kraj: Dragomer

PrispevekObjavljeno: Tor Feb 08, 2011 1:17 pm    Naslov sporočila:  ADC - koliko je 'normalno', da trosi rezultate Odgovori s citatom

Merim tok. Vodim ga skozi upor 1 Ohm 10%
Napetost na uporu vodim na adc pin na MEGA8. Uporabljam interno referenco 2.56V
Na referenčnem pinu C = 100nF AVCC je vezan na VCC
Ko merim napetost na uporu z univerzalnim instrumentom, stoji meritev kot pribita, no občasno se spemeni zadnji digit.
Na ADC pretvorbi pa skoraj ne dobim dve enaki meritvi zaporedoma.
Rezultat :
Citiram:
Konverzija 157 pomeni 392mV
Konverzija 157 pomeni 392mV
Konverzija 151 pomeni 377mV
Konverzija 158 pomeni 395mV
Konverzija 157 pomeni 392mV
Konverzija 157 pomeni 392mV
Konverzija 156 pomeni 390mV
Konverzija 161 pomeni 402mV
Konverzija 157 pomeni 392mV
Konverzija 157 pomeni 392mV
Konverzija 157 pomeni 392mV
Konverzija 155 pomeni 387mV
Konverzija 180 pomeni 450mV
Konverzija 156 pomeni 390mV
Konverzija 157 pomeni 392mV
Konverzija 157 pomeni 392mV
Konverzija 143 pomeni 357mV
Konverzija 157 pomeni 392mV
Konverzija 158 pomeni 395mV
Konverzija 157 pomeni 392mV
Konverzija 158 pomeni 395mV
Konverzija 157 pomeni 392mV
Konverzija 157 pomeni 392mV
Konverzija 157 pomeni 392mV
Konverzija 158 pomeni 395mV
Konverzija 157 pomeni 392mV
Konverzija 157 pomeni 392mV
Konverzija 159 pomeni 397mV
Konverzija 157 pomeni 392mV
Konverzija 157 pomeni 392mV
Konverzija 157 pomeni 392mV
Konverzija 156 pomeni 390mV
Konverzija 157 pomeni 392mV
Konverzija 157 pomeni 392mV
Konverzija 159 pomeni 397mV
Konverzija 152 pomeni 380mV
Nazaj na vrh
Prisoten Poglej uporabnikov profil Pošlji zasebno sporočilo
LinuxFuter
Član
Član



Pridružen-a: Pon 18 Jun 2007 14:40
Prispevkov: 389
Aktiv.: 1.78
Kraj: Novo mesto

PrispevekObjavljeno: Tor Feb 08, 2011 1:52 pm    Naslov sporočila:   Odgovori s citatom

Opeltanje vhoda, očitno opleta za 1/2 vrednosti zadnjega bita (1/2 najmanjše razlike, ki jo lahko izmeri ADC).
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
silvo_v
Član
Član



Pridružen-a: Pon 11 Jul 2005 22:00
Prispevkov: 146
Aktiv.: 0.62
Kraj: Domžale

PrispevekObjavljeno: Tor Feb 08, 2011 2:12 pm    Naslov sporočila:   Odgovori s citatom

Pri uporabi AD pretvornika je potrebno upoštevati naslednje:

- ADC CLOCK SOURCE mora biti med 50 kHz in 200 kHz,
- AVCC in DVCC morata biti ločena z dušilko, dodan mora biti še kondenzator 100 nF med DVCC in GND,
- analogna in digitalna masa morata biti ločeni, skupaj sta lahko spojeni samo v eni točki,
- pomaga tudi spanje CPU-ja med trajanjem AD pretvorbe...

Vse skupaj je lepo opisano v podatkovnem listu v poglavju ADC Noise Canceler.

Kljub vsemu je po mojih izkušnjah potrebno dodati še programsko povprečenje.

Lp
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
RGorazd
Član
Član



Pridružen-a: Čet 20 Maj 2004 15:57
Prispevkov: 1714
Aktiv.: 7.23
Kraj: Ig

PrispevekObjavljeno: Tor Feb 08, 2011 2:41 pm    Naslov sporočila:   Odgovori s citatom

Vilko, pred konverzijo uporabi power - ADCNOISE

mikro bo pred konverzijo šel malce "počivat" deloval bo samo ADC, tako bo manj motenj, drugo kar je uporabi poprečenje, 8soslednih meritev, potem pa rezultat deliš z 8. Bo bistveno bolje


LP G

_________________
.
._. _ _ ._. _.__. _|
[ (_](_)[ (_] /_(_]
._|
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
gumby
Član
Član



Pridružen-a: Sob 28 Apr 2007 12:32
Prispevkov: 4066
Aktiv.: 18.41

PrispevekObjavljeno: Tor Feb 08, 2011 4:14 pm    Naslov sporočila:   Odgovori s citatom

RGorazd je napisal/a:
drugo kar je uporabi poprečenje, 8soslednih meritev, potem pa rezultat deliš z 8


Ena taka "quick&dirty" varianta povprečenja:
Koda:
#define AVG(a,x)   ((((a)<<3)+(x)-(a))>>3)

3 je nekako ekvivalent 8 zaporednih meritev (2^3), ta vrednost se lahko po potrebi poveča/pomanjša.

Vilko, tole je ravno zate, da malo naštudiraš C makroje Wink

_________________
Tule nisem več aktiven.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
RGorazd
Član
Član



Pridružen-a: Čet 20 Maj 2004 15:57
Prispevkov: 1714
Aktiv.: 7.23
Kraj: Ig

PrispevekObjavljeno: Tor Feb 08, 2011 5:42 pm    Naslov sporočila:   Odgovori s citatom

Sam sem mu mislil predlagati isto, vendar v bascomu to ne gre. Dalo bi se s shiftanjem.

LP G

_________________
.
._. _ _ ._. _.__. _|
[ (_](_)[ (_] /_(_]
._|
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
silvo_v
Član
Član



Pridružen-a: Pon 11 Jul 2005 22:00
Prispevkov: 146
Aktiv.: 0.62
Kraj: Domžale

PrispevekObjavljeno: Tor Feb 08, 2011 6:04 pm    Naslov sporočila:   Odgovori s citatom

S pomikanjem (shiftanjem) se lahko množi ali pa deli s potencami števila 2, ne pa povpreči. Tako naprimer pomik za 1 v desno pomeni deljenje z 2.

Lp
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
RGorazd
Član
Član



Pridružen-a: Čet 20 Maj 2004 15:57
Prispevkov: 1714
Aktiv.: 7.23
Kraj: Ig

PrispevekObjavljeno: Tor Feb 08, 2011 6:12 pm    Naslov sporočila:   Odgovori s citatom

8 sledečih meritev sešteješ in pomakneš 3 bite v desno, in imaš deljenje z 8 seštevek 8 meritev brez deljenja.

V bascomu nekako takole

Dim A As Integer , B As Integer , C As Long , D As Byte

B = 0
For D = 1 To 8
A = 124
B = B + A
Next D

Shift , B , Right , 3

C = B

LP G

_________________
.
._. _ _ ._. _.__. _|
[ (_](_)[ (_] /_(_]
._|
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
rudiP
Član
Član



Pridružen-a: Tor 07 Avg 2007 15:30
Prispevkov: 1234
Aktiv.: 5.67
Kraj: KOPER

PrispevekObjavljeno: Tor Feb 08, 2011 6:21 pm    Naslov sporočila:   Odgovori s citatom

Malo daljša varjanta:
Koda:


    Ix = Channel
    If Channel = 0 Then
         W = Getadc(channel)
         Ix1_volt(index_volt(ix)) = W
         Ix1_volt(6) = Ix1_volt(6) + Ix1_volt(index_volt(ix))
         Incr Index_volt(ix)
         If Index_volt(ix) = 6 Then
            Index_volt(ix) = 1
            W = Ix1_volt(6) / 5
            Ix1_volt(6) = 0
         End If
     End If


_________________
Lep pozdrav iz Kopra Rudi
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
aly
Član
Član



Pridružen-a: Tor 28 Sep 2004 14:51
Prispevkov: 9407
Aktiv.: 39.71
Kraj: Kranj - struževo

PrispevekObjavljeno: Tor Feb 08, 2011 6:24 pm    Naslov sporočila:   Odgovori s citatom

Napetost iz Shunt upora najprej ojačaj.
Multimeter ima že vgrajeno povprečenje, zato ne vidiš opletanja.

_________________
I'm going to stand outside, so if anyone asks, I'm outstanding Smile
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran MSN Messenger - naslov
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3360
Aktiv.: 14.18
Kraj: Dragomer

PrispevekObjavljeno: Tor Feb 08, 2011 6:26 pm    Naslov sporočila:   Odgovori s citatom

Kot razumem, da ADC trosi rezultate okrog prave vrednosti, je običajno.
Potrebno je programsko izboljšati rezultat s pomočjo povprečenja zadnjih n (3,4,8) meritev. Bom tako naredil, hvala.
Nazaj na vrh
Prisoten Poglej uporabnikov profil Pošlji zasebno sporočilo
aly
Član
Član



Pridružen-a: Tor 28 Sep 2004 14:51
Prispevkov: 9407
Aktiv.: 39.71
Kraj: Kranj - struževo

PrispevekObjavljeno: Tor Feb 08, 2011 7:46 pm    Naslov sporočila:   Odgovori s citatom

Ja.
Če bi hotel, da je vrednost "pribita", bi moral mnogo eksperimentirat okrog ločenega napajanja, dušenja, induciranih motenj, šuma v samem mikrokontroelrju,... Oziroma vzeti ločen diferencialni ADC, diferencialni predojačevalnik in se tam hecati z napajanji in masami.

Poleg tega ti sigurno šumi tudi sama merjena vrednost. Navsezadnje meriš precej majhne napetosti - imaš izkoriščen zelo majhen del celotnega dosega ADC-ja..

_________________
I'm going to stand outside, so if anyone asks, I'm outstanding Smile
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran MSN Messenger - naslov
chaos
Član
Član



Pridružen-a: Sob 16 Sep 2006 22:12
Prispevkov: 1063
Aktiv.: 4.66
Kraj: Zagorje ob Savi

PrispevekObjavljeno: Tor Feb 08, 2011 8:04 pm    Naslov sporočila:   Odgovori s citatom

Bi samo dodal, da kadar se uporablja shiftanje v desno v smislu deljenja, je pametno rezultat primerno zaokrožiti. Shiftanje v desno namreč zmeraj zaokrožuje navzdol.

Pravilno zaokrožiti rezultat je zelo preprosto: preden (v tem primeru seštevek) shiftamo desno, prištejemo bite, ki jih bomo odrezali, npr. za deljenje z osem:

Koda:
val = (val_sum + (val_sum & ((1<<3)-1))) >> 3



LP!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
bostjang
Član
Član



Pridružen-a: Tor 03 Jan 2006 15:29
Prispevkov: 3469
Aktiv.: 14.65
Kraj: Postojna

PrispevekObjavljeno: Tor Feb 08, 2011 8:41 pm    Naslov sporočila:   Odgovori s citatom

Vrednost bi vseeno morala biti bolj 'pribita', tudi brez spanja procesorja. Vsaj jaz imam boljše izkušnje.
V podatkovnem listu piše, da je absolutna točnost +/- 2 LSB, tebi pa pleše precej več. Kot so že predlagali, preveri kako je z napajanjem.
Mogoče pa šumi tudi merjena vrednost. Njeno filtriranje (RC člen) bi tudi znalo izboljšati rezultate. Kondenzator pa naj bo pri mikrokrmilniku, priključen v analogno maso.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Elektronika Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 493 dni


Powered by phpBB © 2001, 2005 phpBB Group