 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
electo Neznanec

Pridružen-a: Čet 09 Jun 2011 21:19 Prispevkov: 7 Aktiv.: 0.04 Kraj: Celje
|
Objavljeno: Čet Jun 09, 2011 10:35 pm Naslov sporočila: Temparaturni pretvornik |
|
|
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 |
|
 |
int47 Član


Pridružen-a: Pon 15 Dec 2003 0:10 Prispevkov: 2104 Aktiv.: 8.88 Kraj: Ljubljana
|
Objavljeno: Čet Jun 09, 2011 11:33 pm Naslov sporočila: |
|
|
-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 |
|
 |
electo Neznanec

Pridružen-a: Čet 09 Jun 2011 21:19 Prispevkov: 7 Aktiv.: 0.04 Kraj: Celje
|
Objavljeno: Pet Jun 10, 2011 3:21 pm Naslov sporočila: |
|
|
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 |
|
 |
PZUFIC Vseved


Pridružen-a: Sob 17 Nov 2007 19:06 Prispevkov: 6987 Aktiv.: 32.64 Kraj: Rakek
|
Objavljeno: Pet Jun 10, 2011 3:28 pm Naslov sporočila: |
|
|
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 |
|
 |
igo Član

Pridružen-a: Sre 11 Okt 2006 19:11 Prispevkov: 3641 Aktiv.: 16.01
|
Objavljeno: Pet Jun 10, 2011 4:03 pm Naslov sporočila: |
|
|
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 |
|
 |
electo Neznanec

Pridružen-a: Čet 09 Jun 2011 21:19 Prispevkov: 7 Aktiv.: 0.04 Kraj: Celje
|
Objavljeno: Pet Jun 10, 2011 6:34 pm Naslov sporočila: |
|
|
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 |
|
 |
igo Član

Pridružen-a: Sre 11 Okt 2006 19:11 Prispevkov: 3641 Aktiv.: 16.01
|
Objavljeno: Pet Jun 10, 2011 7:20 pm Naslov sporočila: |
|
|
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 |
|
 |
RGorazd Član


Pridružen-a: Čet 20 Maj 2004 15:57 Prispevkov: 1714 Aktiv.: 7.24 Kraj: Ig
|
Objavljeno: Pet Jun 10, 2011 7:40 pm Naslov sporočila: |
|
|
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 |
|
 |
electo Neznanec

Pridružen-a: Čet 09 Jun 2011 21:19 Prispevkov: 7 Aktiv.: 0.04 Kraj: Celje
|
Objavljeno: Sob Jun 11, 2011 12:06 pm Naslov sporočila: |
|
|
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 |
|
 |
Bizgec65 Član


Pridružen-a: Sre 10 Mar 2010 11:46 Prispevkov: 2099 Aktiv.: 11.29 Kraj: Trebnje
|
Objavljeno: Sob Jun 11, 2011 12:09 pm Naslov sporočila: |
|
|
Kelvin/Celsius? |
|
Nazaj na vrh |
|
 |
Bizgec65 Član


Pridružen-a: Sre 10 Mar 2010 11:46 Prispevkov: 2099 Aktiv.: 11.29 Kraj: Trebnje
|
Objavljeno: Sob Jun 11, 2011 12:12 pm Naslov sporočila: |
|
|
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 |
|
 |
electo Neznanec

Pridružen-a: Čet 09 Jun 2011 21:19 Prispevkov: 7 Aktiv.: 0.04 Kraj: Celje
|
Objavljeno: Sob Jun 11, 2011 12:22 pm Naslov sporočila: |
|
|
Ja pa saj to vem, da je 25.5 ºC = 298.5 K mislu sem, kaj v programu moram spremeniti, da mi bo na LCD zaslonu namesto te številke ipisovalo temparaturo v stopinjah celzija. |
|
Nazaj na vrh |
|
 |
RGorazd Član


Pridružen-a: Čet 20 Maj 2004 15:57 Prispevkov: 1714 Aktiv.: 7.24 Kraj: Ig
|
Objavljeno: Sob Jun 11, 2011 1:54 pm Naslov sporočila: |
|
|
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 |
|
 |
electo Neznanec

Pridružen-a: Čet 09 Jun 2011 21:19 Prispevkov: 7 Aktiv.: 0.04 Kraj: Celje
|
Objavljeno: Sob Jun 11, 2011 11:44 pm Naslov sporočila: |
|
|
Sem probal že več načinov in mi se vedno ne izpiše temparature v stopinjah celzija res nevem kaj v programu naj spremenim
Merjenje:
Adcvrednost = Getadc(0)
Adcvrednost = 1023 - Adcvrednost
Adcvrednost = Adcvrednost / 204
Adcvrednost = Adc vrednost
Return |
|
Nazaj na vrh |
|
 |
igo Član

Pridružen-a: Sre 11 Okt 2006 19:11 Prispevkov: 3641 Aktiv.: 16.01
|
Objavljeno: Ned Jun 12, 2011 12:27 am Naslov sporočila: |
|
|
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
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
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 |
|
 |
|
|
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
|