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 

Bascom AVR +Atmega8+analogna meritev

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



Pridružen-a: Sre 22 Okt 2003 14:19
Prispevkov: 137
Aktiv.: 0.58
Kraj: velenje

PrispevekObjavljeno: Pon Maj 18, 2009 10:34 am    Naslov sporočila:  Bascom AVR +Atmega8+analogna meritev Odgovori s citatom

Pozdravljeni!

Imam mali problem, ki ga s pomočjo Googla nisem uspel rešiti.
Torej, imam Pt sondo (0-150 st. C) s tokovnim izvorom 4-20mA. Ta tok ustrezno pretvorim in izvedem meritev na AD vhodu atmege8, na LCd pa prikažem tok in ustrezno temperaturo. Vrednosti temperature in toka (in tudi AD vrednosti 0-1023 delcev ) pa se zaradi pretvorbe malenkost spreminjajo - nihajo (pri določenem toku AD pretvorba niha med npr. 350 on 360 delci, kar ima za posledico nihanje temperature npr. za +-0.3 st.C, kar je zelo moteče). Zadevo sem sicer z zakasnitvijo prikaza malce ublažil, a to ni to.
Vprašanje je torej naslednje: kako v bascomu izmeriti in povprečiti npr. 10 meritev in jih šele nato prikazati na LCD.
Mogoče obstaja tudi kakšna hardwarska rešitev (razen kondenzatorja, ki ne reši zadeve)?

LP, Cipko
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Sokrat
Član
Član



Pridružen-a: Čet 25 Avg 2005 11:00
Prispevkov: 5584
Aktiv.: 23.57

PrispevekObjavljeno: Pon Maj 18, 2009 10:44 am    Naslov sporočila:   Odgovori s citatom

Sestej 64 meritev zapored v 16-bitni spremenljivki, med meritvami naredi tako dolgo pavzo, kot si jo lahko najvec privoscis (ce zelis dobiti rezultat v eni sekundi, bo torej pavza dolga priblizno 1 / 64 sekunde), ter pred izpisom deli to spremeljivko s 64.

Zakaj ravno 64 ? Ravno toliko 10-bitnih odcitkov spravis v 16 bitov, torej dva bajta, okrogla stevilka (za racunalnik, ki uporablja binarni sistem seveda) pa pomeni, da je deljenje z njo samo serija bitnih pomikov, kar mikrokontroler izvede izredno hitro v primerjavi z deljenjem v desetiskem sistemu, ce MCU nima HW delilnika.

Nekaj nihanja bo se vedno ostalo (1/2 bita recimo), a bi morala stevilka skakati gor in dol precej manj, kot ti trenutno.

_________________
Ka ti bo pa torba ce si kupu kolo ?
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
mucek4
Član
Član



Pridružen-a: Sob 18 Jun 2005 20:52
Prispevkov: 2952
Aktiv.: 12.46
Kraj: Tržič - Mesto med gorami

PrispevekObjavljeno: Pon Maj 18, 2009 11:08 am    Naslov sporočila:   Odgovori s citatom

Če ti stvari roliko nihajo imaš verjetno težavo pri napajanju. Kako imaš rešeno napajanje, kondenzatorje na napajanju, kondenzatoreje na vhodu AD-ja, ....
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
cipko
Član
Član



Pridružen-a: Sre 22 Okt 2003 14:19
Prispevkov: 137
Aktiv.: 0.58
Kraj: velenje

PrispevekObjavljeno: Pon Maj 18, 2009 12:52 pm    Naslov sporočila:   Odgovori s citatom

Pozdrav!

Sokrat: lepo napisano, ampak jaz tega ne znam programsko izvesti (mogoče ima kdo podobno kodo s katero bi experimentiral in si pomagal).

Mucek4: Ne, ni problem napajanja oz. blokiranja s kondiji (če isti vhod in isti program priključim napetostno preko istega napajalnika, mi meritev oz. LCD prikaz miruje - zgleda, da sonda ustvarja rahle nihaje toka, ki se zaznajo pri Ad pretvorbi kot sprememba za par delcev gor/dol , le to pa pri SW izračunu in prikazu prinese večje nihanje vrednosti

Nekje na forumu (ne najdem na katerem ) sem nekoč zasledil, da je nekdo izdeloval VA meter z atmego za usmernik in imel podobne težave za meritev toka - le kako (če sploh) je rešil težavo?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mucek4
Član
Član



Pridružen-a: Sob 18 Jun 2005 20:52
Prispevkov: 2952
Aktiv.: 12.46
Kraj: Tržič - Mesto med gorami

PrispevekObjavljeno: Pon Maj 18, 2009 1:09 pm    Naslov sporočila:   Odgovori s citatom

Poglej. Bascoma ne poznam odlično, zato če bo kakšna napaka jo boš popravil:

Koda:
dim spremenljivka as word

For A = 1 To 64
  AD = beri_AD
  spremenljivka = spremenljivka + AD
Next
vrednost = spremenljivka / 64
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
cipko
Član
Član



Pridružen-a: Sre 22 Okt 2003 14:19
Prispevkov: 137
Aktiv.: 0.58
Kraj: velenje

PrispevekObjavljeno: Tor Maj 19, 2009 7:05 am    Naslov sporočila:   Odgovori s citatom

Hvala mucek4, bom ob kakšnem deževnem večeru poskusil zadevo izpeljati po tvojem predlogu.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
marko11
Član
Član



Pridružen-a: Ned 14 Dec 2003 17:47
Prispevkov: 893
Aktiv.: 3.77
Kraj: Dobrepolje

PrispevekObjavljeno: Sre Feb 10, 2010 9:16 pm    Naslov sporočila:   Odgovori s citatom

mucek4 je napisal/a:
Poglej. Bascoma ne poznam odlično, zato če bo kakšna napaka jo boš popravil:

Koda:
dim spremenljivka as word

For A = 1 To 64
  AD = beri_AD
  spremenljivka = spremenljivka + AD
Next
vrednost = spremenljivka / 64


Zanima me , če je to isto, če dobim isti rezultat ?

Koda:
 For I = 1 To 64                                             'povprečje 64 merjenj
'W je ADC vrednost
A = A + W
Next
A = A / 64



LP,marko
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
klemen88
Član
Član



Pridružen-a: Tor 01 Jan 2008 17:37
Prispevkov: 747
Aktiv.: 3.51
Kraj: Slovenj Gradec

PrispevekObjavljeno: Sre Feb 10, 2010 11:53 pm    Naslov sporočila:   Odgovori s citatom

marko11 je napisal/a:
mucek4 je napisal/a:
Poglej. Bascoma ne poznam odlično, zato če bo kakšna napaka jo boš popravil:

Koda:
dim spremenljivka as word

For A = 1 To 64
  AD = beri_AD
  spremenljivka = spremenljivka + AD
Next
vrednost = spremenljivka / 64


Zanima me , če je to isto, če dobim isti rezultat ?

Koda:
 For I = 1 To 64                                             'povprečje 64 merjenj
'W je ADC vrednost
A = A + W
Next
A = A / 64



LP,marko


V For zanki moreš še prebrati analogno vrednost! Drugače je pa isto!

Koda:
 For I = 1 To 64                                             'povprečje 64 merjenj
W = Getadc(channel)
A = A + W
Next
A = A / 64

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



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

PrispevekObjavljeno: Čet Feb 11, 2010 12:43 pm    Naslov sporočila:  Zakaj 64 Odgovori s citatom

Ali je kak razlog, da ste postavili potrebnih 64 meritev za izračun povprečja?
Ne bi billo 10 meritev dovolj?

Jaz bi morda naredil tako:



Koda:
Dim Meritev(10) As Integer
Dim Indeks As Byte
Dim Povprecje As Integer
Dim I As Byte                                               'delovni bajt

' kadarkoli bi šel v meritev bi meritev dal v tabelo in takoj izračunal poprečje


Meritev(indeks) = Beriad
Incr Indeks
If Indeks > 10 Then Index = 1
Povprecje = 0
For I = 1 To 10 : Povprecje = Povprecje + Meritev(i) : Next
Povprecje = Povprecje / 10

..

' in naprej v program
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
marko11
Član
Član



Pridružen-a: Ned 14 Dec 2003 17:47
Prispevkov: 893
Aktiv.: 3.77
Kraj: Dobrepolje

PrispevekObjavljeno: Čet Feb 11, 2010 6:08 pm    Naslov sporočila:   Odgovori s citatom

Vilko;
razlog je ta, da mi ADC vrednost preveč niha, ko merim napetost, ki ni čisto enosmerna, če je napetost dovolj zglajena ADC nič ne preskakuje.

Vstavil sem to povprečje, pa sedaj zelo malo preskakuje - samo za eno ali dve ADC vrednosti.

Kako pa vi rešujete ta problem, ali se da še kako drugače to izpeljati?

Prosim za nasvet.

LP,marko
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
MadMax
Član
Član



Pridružen-a: Pet 09 Sep 2005 22:16
Prispevkov: 4743
Aktiv.: 20.02

PrispevekObjavljeno: Čet Feb 11, 2010 6:40 pm    Naslov sporočila:   Odgovori s citatom

Morda bi se povprečenje še malo dodelalo, z izločanjem obeh skrajnih vmesnih meritev pri povprečenju (max. in min. zabeležena vrednost znotraj enega povprečenja)...
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
eddie
Član
Član



Pridružen-a: Sre 10 Dec 2003 21:02
Prispevkov: 723
Aktiv.: 3.05
Kraj: Severna primorska

PrispevekObjavljeno: Čet Feb 11, 2010 9:37 pm    Naslov sporočila:   Odgovori s citatom

Še ena varijanta je za umirjanje signala, ki sem jo začel uporabljati zadnje čase in mi je všeč ker vsak cikel dobiš novo vrednost, ne rabiš prostora za seštevanje vzorcev, pa še kaj bi se našlo.
Pišem na pamet tako da mogoče ne bo do vejice in pike pravilno...
Ampak gre nekako takole:
Koda:

Vrednost = 1/T *(VrednostIzADC) + (1-1/T)*VrednostStStanje

Vrednost... nova vrednost
T... konstanta, ki predstavlja "ojačanje"
VrednostIzADC... nova vrednost prebrana iz ADC-ja
VrednostStStanje... vrednost(izračunana) iz prejšnjega cikla

Kaj se dogaja? Vsak cikel prištejemo k vrednosti iz prejšnjega cikla samo del nove vrednosti. Tako smo sicer vedno malo v zaostanku ampak izhod pa je lepo glajen signal.
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 -> Osnove programiranja AVR-jev Č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: 494 dni


Powered by phpBB © 2001, 2005 phpBB Group