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 

Temparaturni pretvornik
Pojdi na stran 1, 2  Naslednja
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Naloge, izpiti, seminarske
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
electo
Neznanec
Neznanec



Pridružen-a: Čet 09 Jun 2011 21:19
Prispevkov: 7
Aktiv.: 0.04
Kraj: Celje

PrispevekObjavljeno: Čet Jun 09, 2011 10:35 pm    Naslov sporočila:  Temparaturni pretvornik Odgovori s citatom

Pozdravljeni!

Zanima me kako bi lahko v programu bascom napetost pretvoril v temparaturo in to (temparaturo) prikazal na LCD zaslonu (2×16 znakov).

Imam krmilno ploščo s mikroprocesorjem AT90USB646 na tel plošči imam vezane 4 analogne vhode na ketere bi priključil napetost iz temparaturne komore- (2 priključka + in - pol, enosmerna napetost).

Shema vezave analognih vhodov na krmilni plošči:
http://www.hopsasa/f/3j/jc/2iNQcU3J/analogni-vhodi.png
Shema vazave LCD zaslona na krmilni plošči:
http://www.hopsasa/f/1z/7v/2tJO56qr/lcd-zaslon.png

ko je v komori temparatura npr. 26*C je napetost na temparaturnem pretvorniku 2,25V
ostale napetosti in temparature v komori:
2,10V = 23,0*C
2,15V = 24,1*C
2,20V = 25,0*C
2,25V = 26*C
2,28V = 26,6*C
2,33V = 29,1*C
2,35V = 29,8*C
2,37V = 30,5*C
2,40V = 32,0*C

Vsaka pomoč je dobrodošla!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
int47
Član
Član



Pridružen-a: Pon 15 Dec 2003 0:10
Prispevkov: 2104
Aktiv.: 8.88
Kraj: Ljubljana

PrispevekObjavljeno: Čet Jun 09, 2011 11:33 pm    Naslov sporočila:   Odgovori s citatom

-Inicializiraj I/O pine, LCD, ADC, spremenljivke
-sproži A/D pretvorbo
-počakaj, da se pretvorba zaključi
-preberi rezultat A/D pretvorbe
-preračunaj rezultat A/D pretvorbe v temperaturo
-Izpiši na LCD

Kje je problem?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
electo
Neznanec
Neznanec



Pridružen-a: Čet 09 Jun 2011 21:19
Prispevkov: 7
Aktiv.: 0.04
Kraj: Celje

PrispevekObjavljeno: Pet Jun 10, 2011 3:21 pm    Naslov sporočila:   Odgovori s citatom

Ja problem je v tem, da z bascomu bolj malo časa programiramo in še ne poznam vseh ukazov in prav zato bi rabil vašo pomoč pri pisanju programa. Saj Inicializirati pine in izpisat na LCD zaslonu znam ampak kako pa bi lahko napetost pretvoril v temparaturo pa res nevem.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
PZUFIC
Vseved



Pridružen-a: Sob 17 Nov 2007 19:06
Prispevkov: 6987
Aktiv.: 32.65
Kraj: Rakek

PrispevekObjavljeno: Pet Jun 10, 2011 3:28 pm    Naslov sporočila:   Odgovori s citatom

electo je napisal/a:
Ja problem je v tem, da z bascomu bolj malo časa programiramo in še ne poznam vseh ukazov in prav zato bi rabil vašo pomoč pri pisanju programa. Saj Inicializirati pine in izpisat na LCD zaslonu znam ampak kako pa bi lahko napetost pretvoril v temparaturo pa res nevem.

Izračunati moraš konstanto, ki bo povezala bite in dejansko temperaturo. Potem pa z množenjem oziroma deljenjem s konstanto dobiš temperaturo. V kolikor pa stvar ni linearna bo pa bolj težko.

_________________
Ne čakaj, da se bo nekaj premaknilo pojdi in nekaj premakni.
Lp Primož
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran MSN Messenger - naslov
igo
Član
Član



Pridružen-a: Sre 11 Okt 2006 19:11
Prispevkov: 3641
Aktiv.: 16.01

PrispevekObjavljeno: Pet Jun 10, 2011 4:03 pm    Naslov sporočila:   Odgovori s citatom

S katerim senzorjem si dobil tiste vrednosti? PT100, Pt1000, ... ?
Tiste vrednosti niso linearne.
Za začetek odspajkaj stran upore R11, R17, R23 n R27, ki močno kvarijo meritev analognih vrednosti. O tem smo nekje že razpravljali, da bi morali biti tam jumperji ali dip stikalca.

Nato izmeri nove vrednosti in jih vnesi v graf (kar na milimetrski papir). Dobil boš krivuljo dU/dT [V / °C]. Če ne bo linearna, imaš več možnosti.
- Lahko jo lineariziraš po segmentih.
if(100<=Tempizm and Tempizm<120) then // med 100 in 120 je koeficient k1
Tempizr=k1*Tempizm+A1 // izračuna vrednost za prikaz
if(120<=Tempizm and Tempizm<140) then // med 120 in 140 je koeficient k2
Tempizr=k2*Tempizm+A2 // izračuna vrednost za prikaz
...
- lahko napraviš s tabelo, ki vrne vrednost Tempizr v odvisnosti od Tempizm
- lahko izračunaš koeficiente polinomske funkcije, ki na danem odseku čim bolj ponazarja krivuljo
Tempizr = k1*Tempizm*Tempizm + k2*Tempizm + k3 + k4/Tempizm

Začneš torej z odspajkanjem in s ponovnimi meritvami.

_________________
Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
electo
Neznanec
Neznanec



Pridružen-a: Čet 09 Jun 2011 21:19
Prispevkov: 7
Aktiv.: 0.04
Kraj: Celje

PrispevekObjavljeno: Pet Jun 10, 2011 6:34 pm    Naslov sporočila:   Odgovori s citatom

tisti upori so na krmilni pološči za analogne vhode oz priključki na ketere priključim napetost na temparaturnem pretvorniku ki se nahaja na temparaturni komori! in potem moram v bascom-u napetost ki je na analognem vhodu pretvoriti v temparaturo in to prikazati na LCD zaslonu na krmilni plošči.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
igo
Član
Član



Pridružen-a: Sre 11 Okt 2006 19:11
Prispevkov: 3641
Aktiv.: 16.01

PrispevekObjavljeno: Pet Jun 10, 2011 7:20 pm    Naslov sporočila:   Odgovori s citatom

Pomiri se in napiši gornji prispevek še enkrat z vsemi ločili. Sedaj se namreč težko razbere, kaj paše skupaj. Pa mimogrede še odgovori na naslednje vrašanje:
Kateri "temperaturni pretvornik" se nahaja v komori? Pt100 ? Pt1000? NTC upor ? PTC upor ?

S to ploščico smo na tem forumu že imeli opravka in smo našli kar nekaj napak pri zasnovi. Ena izmed njih je ta. da tok, ki teče skozi ledice in zgoraj omenjene upore, popači analogne meritve, zato odspajkaj tiste upore. Če ploščica ni tvoja, jih odspajkaj in prilepi s selotejpom nekam na ploščico.

Šele ko boš dobil dejansko krivuljo napetost/temperatura , se lahko odločiš za izvedbo s tabelo ali s sprotnim računanjem.

Pri sprotnem računanju rabiš K1 in K2 (jih izračunaš na papirju iz izmerjenih vrednosti) Tempizr=K1 * Tempizm + K2 , nato pa v programu že uporabiš znani konstanti :

Tempizm = getadc(n) // n je ADC kanal 0 , 1 , 2 , 3
Tempizr = K1 * Tempizm // izračunana temperatura je K * izmerjena temperatura
Tempizr = Tempizr + K2 // izračunani temperaturi dodaš še konstanto
Za prikaz Tempizr na LCD si poglej sintakso ukaza Print v Help-u

_________________
Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor
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.24
Kraj: Ig

PrispevekObjavljeno: Pet Jun 10, 2011 7:40 pm    Naslov sporočila:   Odgovori s citatom

Se pravi, če znaš pisati na lcd v bascomu, potem si že na pol poti.

dim ADCvrednost as word

CONFIG ADC = single, PRESCALER = AUTO

Start ADC

ADCvrednost = getadc(0) ' 0 = ADC0, 1 je ADC1...

Sedaj vsebuje spremenljivka ADCvrednost vrednost ADC, ki je bila v trenutku meritve

Izpišeš na lcd

LCD = ADCvrednost

In ta vrednost se giblje od 0...1023

v tvojem primeru bi ta vrednost bila: 0V = 0, 5V = 1023,

se pravi okoli 450 za 25°C.

In to na grobo gledano je tako:

1024/5 = 204 (se pravi imaš 1V razdjen na 204 vrednosti).
Če imaš 2,20V (25°C) je to 2,2*204 = 450

Če pa hočeš bolj natančno, boš pa moral stvari linearizirati s kako tabelo ali pa s pomočjo polinomov, tako kot so ti že razložili.

LP G

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



Pridružen-a: Čet 09 Jun 2011 21:19
Prispevkov: 7
Aktiv.: 0.04
Kraj: Celje

PrispevekObjavljeno: Sob Jun 11, 2011 12:06 pm    Naslov sporočila:   Odgovori s citatom

Najprej hvala za vašo dosedajno pomoč! Glede temparaturnega pretvornika pa mislim, da nebom potreboval tako natančno meritev in da bo vredu ta, ki mi jo je RGorazd napisal.

Napisal sem program in ga prenesel na krmilno ploščo na analogni vhod krmilne plošče priključil napetost iz temparaturnega pretvornika ki se nahaja na komori in vse dela samo na LCD zaslonu mi namesto temparature prikaze število 473 pri temparaturi 25,5*C..... če se temparatura zviša se ta številka poveča, če pa se temparatura v komori zmanjša pa se ta številka zmanjša.

Link do slike programa v bascomu:
http://www.hopsasa/f/38/nz/1isJwo3F/zajeta-slika.png

Prosil bi za pomoč, pri pretvorbi te številke spremenim v temparaturo.

Hvala in lep pozdrav!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Bizgec65
Član
Član



Pridružen-a: Sre 10 Mar 2010 11:46
Prispevkov: 2099
Aktiv.: 11.29
Kraj: Trebnje

PrispevekObjavljeno: Sob Jun 11, 2011 12:09 pm    Naslov sporočila:   Odgovori s citatom

Kelvin/Celsius?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Bizgec65
Član
Član



Pridružen-a: Sre 10 Mar 2010 11:46
Prispevkov: 2099
Aktiv.: 11.29
Kraj: Trebnje

PrispevekObjavljeno: Sob Jun 11, 2011 12:12 pm    Naslov sporočila:   Odgovori s citatom

Bizgec65 je napisal/a:
Kelvin/Celsius?

Eh, sem bil malček prehiter, zdej pa še post ne znam popravit.
25.5 ºC = 298.5 K
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
electo
Neznanec
Neznanec



Pridružen-a: Čet 09 Jun 2011 21:19
Prispevkov: 7
Aktiv.: 0.04
Kraj: Celje

PrispevekObjavljeno: Sob Jun 11, 2011 12:22 pm    Naslov sporočila:   Odgovori s citatom

Ja pa saj to vem, da je 25.5 ºC = 298.5 K Very Happy mislu sem, kaj v programu moram spremeniti, da mi bo na LCD zaslonu namesto te številke ipisovalo temparaturo v stopinjah celzija.
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.24
Kraj: Ig

PrispevekObjavljeno: Sob Jun 11, 2011 1:54 pm    Naslov sporočila:   Odgovori s citatom

Ja saj je logično...ti na LCD izpisuješ surovo vrednost ADC. Napravi še preračun. Preberi si še enkrat moj post, poglej kje se skriva zajec in ga ulovi.

LP G

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



Pridružen-a: Čet 09 Jun 2011 21:19
Prispevkov: 7
Aktiv.: 0.04
Kraj: Celje

PrispevekObjavljeno: Sob Jun 11, 2011 11:44 pm    Naslov sporočila:   Odgovori s citatom

Sem probal že več načinov in mi se vedno ne izpiše temparature v stopinjah celzija Confused res nevem kaj v programu naj spremenim

Merjenje:

Adcvrednost = Getadc(0)
Adcvrednost = 1023 - Adcvrednost

Adcvrednost = Adcvrednost / 204
Adcvrednost = Adc vrednost

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



Pridružen-a: Sre 11 Okt 2006 19:11
Prispevkov: 3641
Aktiv.: 16.01

PrispevekObjavljeno: Ned Jun 12, 2011 12:27 am    Naslov sporočila:   Odgovori s citatom

igo je napisal/a:
Pri sprotnem računanju rabiš K1 in K2 (jih izračunaš na papirju iz izmerjenih vrednosti) Tempizr=K1 * Tempizm + K2 , nato pa v programu že uporabiš znani konstanti :

Tempizm = getadc(n) // n je ADC kanal 0 , 1 , 2 , 3
Tempizr = K1 * Tempizm // izračunana temperatura je K * izmerjena temperatura
Tempizr = Tempizr + K2 // izračunani temperaturi dodaš še konstanto
Za prikaz Tempizr na LCD si poglej sintakso ukaza Print v Help-u

Kaj imaš ti mene na "ignore" listi?

k1=dU / dT= (T2 - T1) / (U2-U1) = (32,0 - 23,0) / (2,40 - 2,10) = 9,0 / 0,3
k1 = 30 °C / 1V
1V = 204
k1 = 30°C / 204 = 0,147°C / 1 ; En delec ADC pretvorbe pomeni 0,147°C

Arrow Naj bo k1 = 0,150 ; To je korak po katerem se bo prikazovana temperatura spreminjala na LCD-ju. Itak nisi odspajkal uporov in je čisto vseeno, kolikšna je k1.

Potrebuješ še k2. Vstaviš znano točko. 32,0 = 0,15 * (2,40 * 204) + k2
k2 =32,0 - 73,44 = -41,44

Arrow Temperatura_izračunana = 0,15 * Temperatura_izmerjena - 41,44

Temperatura_izmerjena = getadc(0)
Temperatura_izračunana = 0,15 * Temperatura_izmerjena
Temperatura_izračunana = Temperatura_izračunana - 41,44

Ponovi enačbe premice. Sedi 1.

_________________
Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Naloge, izpiti, seminarske Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran 1, 2  Naslednja
Stran 1 od 2

 
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