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



Pridružen-a: Pet 25 Jan 2008 8:00 Prispevkov: 3387 Aktiv.: 15.99
|
Objavljeno: Sre Sep 17, 2008 1:45 pm Naslov sporočila: AVR - merjenje temperature s KTY 10 |
|
|
Lep pozdrav!
Iz učenja počasi prehajam na praktično uporabo mikrokontrolerja in sicer Mega8.
Nameravam ga uporabiti za krmiljenje sončnega kolektorja. Za odčitavanje temperature imam namen uporabiti sonde KTY 10. Zanje sem se odločil, ker so že vgrajene v trenutno analogni avtomatiki in bi uporaba drugih (digitalnih) sond prinesla neprimerno več fizičnega dela.
Pri računski simulaciji pa sem naletel na en problem.
Ugotovil sem, da bi pri spremembi napajalne napetosti krmilnika (ki bo napajala tudi temperaturne sonde) za 0,1V prišlo do napake pri odčitavanju temperature cca 3°C. To pa je za normalno delovanje celote že kar preveč.
1. Ena od rešitev bi bila, da bi na enem ADC vhodu preko napetostnega delilnika meril napajalno napetost in to meritev uporabil pri natančnejšem izračunu napetosti in s tem tudi temperature. Ta rešitev mi ni najbolj všeč, ker bi s tem zasedel en vhod, ki bi ga koristno lahko uporabil drugje.
2. Nato pa sem prišel na idejo, da bi izhod napetostnega delilnika iz prejšnje točke priklopil na pin Vref. Vref bo v tem primeru okoli 2,5V (pravzaprav polovica napajalne napetosti). Tako bi se nihanja napajalne napetosti odražala na napetosti Vref in prav tako na izhodu temperaturnega senzorja. Ker pa je rezultat AD pretvorbe odvisen samo od Vref, bi bil dejansko neodvisen od sprememb napajalne napetosti. S tem bi se pri izračunu temperature izognil nihanju za 3°C.
Ali je moje razmišljanje v 2. točki pravilno?
Še to sem pozabil omeniti. Napajanje bo razumljivo stabilizirano z 7805.
Branko
|
|
Nazaj na vrh |
|
 |
silvo_v Član

Pridružen-a: Pon 11 Jul 2005 22:00 Prispevkov: 146 Aktiv.: 0.62 Kraj: Domžale
|
Objavljeno: Sre Sep 17, 2008 1:52 pm Naslov sporočila: |
|
|
Tvoje razmišljanje v drugi točki je pravilno, jaz temperaturo merim na popolnoma enak način. Sicer pa uporabi čim nižjo referenčno napetost, saj s tem pridobiš na resoluciji. Če boš uporabil ATmega88, greš lahko z referenčno napetostjo do 1V.
Lp, Silvo
|
|
Nazaj na vrh |
|
 |
smatjaz Član


Pridružen-a: Pon 10 Nov 2003 16:33 Prispevkov: 847 Aktiv.: 3.57
|
Objavljeno: Sre Sep 17, 2008 3:55 pm Naslov sporočila: |
|
|
Poskušaj narediti tokovni generator. Tok spusti skozi senzor in na njem meri napetost.
LP M.
_________________ Električni aparati delujejo na dim ... ko dim iz njih uide ... ne delujejo več! |
|
Nazaj na vrh |
|
 |
lojzek Član



Pridružen-a: Pet 25 Jan 2008 8:00 Prispevkov: 3387 Aktiv.: 15.99
|
Objavljeno: Sre Sep 17, 2008 7:19 pm Naslov sporočila: |
|
|
Aha hvala obema za odgovor. Na uporabo tokovne stabilizacije res še nisem pomislil. Vvseeno pa mislim, da je rešitev iz druge točke, ki jo je potrdil tudi silvo_v, enostavnejša.
Namreč, meril bom 3 temperature (opcija je tudi 4) in bi bila rešitev s tokovno stabilizacijo hardversko zahtevnejša.
|
|
Nazaj na vrh |
|
 |
Slemi Član

Pridružen-a: Pet 29 Okt 2004 13:29 Prispevkov: 386 Aktiv.: 1.63 Kraj: Hrastnik
|
Objavljeno: Sre Sep 17, 2008 7:30 pm Naslov sporočila: |
|
|
Če boš uporabil KTY10-6 mu daj upor 5,6kE navzgor proti referenci, KTY pa na maso ter A/D vhod, pa boš dobil skoraj linearno karakteristiko.
LP
|
|
Nazaj na vrh |
|
 |
lojzek Član



Pridružen-a: Pet 25 Jan 2008 8:00 Prispevkov: 3387 Aktiv.: 15.99
|
Objavljeno: Sre Sep 17, 2008 7:36 pm Naslov sporočila: |
|
|
Slemi, tudi zanimiv podatek. Sam sem mislil operirati z merilnim tokom okoli 1mA (torej bi bil predupor cca 3500 ohm), ampak bi se mi kasneje zataknilo pri računanju z decimalkami z -5 potenco .
|
|
Nazaj na vrh |
|
 |
clownfish Član

Pridružen-a: Pet 05 Avg 2005 13:05 Prispevkov: 765 Aktiv.: 3.23 Kraj: Povir / Ljubljana
|
Objavljeno: Sre Sep 17, 2008 8:45 pm Naslov sporočila: |
|
|
Zanimiva debata..
Pa kdo od vas poleg direktne vezave KTY preko predupora proti referenci za meritve samo v določenem temperaturenem razponu uporablja tudi operacijski ojačevalnik?
se da mogoče dobiti kakšno shemo?
Iščem namreč varianto za merjenje temperaturnega razpona od recimo 15 pa do 35 stopinj Celzija.
|
|
Nazaj na vrh |
|
 |
GJ Član


Pridružen-a: Čet 02 Nov 2006 15:51 Prispevkov: 946 Aktiv.: 4.17 Kraj: Ljubljana
|
Objavljeno: Sre Sep 17, 2008 9:12 pm Naslov sporočila: |
|
|
Evo z OP LM258AN..
Tole dela čisto uredu v razponu od 0 do 100oC.
Mostiček je izračunan za območje od -40 pa do 140oC in to za KTY10-6.
Napajalna napetost Vcc = 5V. Senzor priključiš med T1 in T2.
Napajanje OP-ja cca 15V.
Konstantni tok skozi senzor je cca 0,850mA.
S prečenjem rezultata in dobrim napajalnikom dobite zelo dobro točnost, zadevo pa umeriš preko EEPROMa. Vsi upori so 1% 100ppm.
LP GJ
Opis: |
|
Velikost datoteke: |
70.84 KB |
Pogledana: |
213 krat |

|
|
|
Nazaj na vrh |
|
 |
sebaveh Član


Pridružen-a: Sob 19 Jan 2008 13:51 Prispevkov: 1671 Aktiv.: 7.88 Kraj: Slovenska Bistrica
|
Objavljeno: Sre Sep 17, 2008 10:37 pm Naslov sporočila: |
|
|
Ali bi ta zgornja shema delovala tudi s tem tipalom, s tako karakteristiko?
|
|
Nazaj na vrh |
|
 |
GJ Član


Pridružen-a: Čet 02 Nov 2006 15:51 Prispevkov: 946 Aktiv.: 4.17 Kraj: Ljubljana
|
Objavljeno: Sre Sep 17, 2008 11:34 pm Naslov sporočila: |
|
|
sebaveh je napisal/a: |
Ali bi ta zgornja shema delovala tudi s tem tipalom, s tako karakteristiko? |
Načeloma deluje z vsakim uporovnim tipalom..
Seveda pa moraš preračunati ojačanje mostička na novo.
Najboje je, da si narediš programček v excelu ali pa v kakšnem programskem jeziku v katerega potem vstavljaš vrednosti uporov in vrednosti tipala, da vidiš kaj dobiš na izhodu.
Ima pa tvoje tipalo močno nelinearno karakteristiko, kar zna biti manjši problem, če želiš pokriti njegovo celotno področje!
Mostiček z OP IC2:A skrbi za konstanten tok skozi uporovno tipalo. Mostček IC2:B pa je diferiencialni ojačevalnik, ki ti da na izhodu željeno vrednost glede na merilno območje ADC-ja.
LP GJ
|
|
Nazaj na vrh |
|
 |
clownfish Član

Pridružen-a: Pet 05 Avg 2005 13:05 Prispevkov: 765 Aktiv.: 3.23 Kraj: Povir / Ljubljana
|
Objavljeno: Čet Sep 18, 2008 9:53 am Naslov sporočila: |
|
|
Ker nisem tak strokovnjak z elektroniko bi še vseeno vprašal ali se za priloženo shemo lahko dobi kakšne formule oziroma postopek izračuna posameznih uporov glede na želejno merilno območje določenega temperaturnega senzorja.
Hvala!
|
|
Nazaj na vrh |
|
 |
GJ Član


Pridružen-a: Čet 02 Nov 2006 15:51 Prispevkov: 946 Aktiv.: 4.17 Kraj: Ljubljana
|
Objavljeno: Čet Sep 18, 2008 10:58 am Naslov sporočila: |
|
|
teslo je napisal/a: |
Ker nisem tak strokovnjak z elektroniko bi še vseeno vprašal ali se za priloženo shemo lahko dobi kakšne formule oziroma postopek izračuna posameznih uporov glede na želejno merilno območje določenega temperaturnega senzorja. |
No pa saj tole sta čisto preprosta mostička.
Na hitro:
1)Mostiček z OP IC2A:2 določa konstantni tok skozi tipalo priključeno na sponkah T1, T2.
Deluje pa takole..
Da je OP v ravnotežju morata biti napetosti na obeh vhodih (+IN, -IN) enaki.
Uporavni delilnik z uporoma R16 in R17 določa napetost na +IN vhodu OPja.
V našem primeru je referenčna napetost Vcc enaka 5V in dobimo:
+IN = Vcc /(R17 + R16) * R16 = 5 / (5600R + 220R) * 220R = 0,189V. Zaradi vhodne upornosti OPja ki ni neskončna je v realnosti ta napetost malenkost drugačna. (V našem primeru je tok skozi omenjeni napetostni delilnik dovolj visok, da je napaka skoraj zanemarljiva.)
Tako smo izračunali napetost v kateri je OP stabilen! Tok skozi tipalo sedaj določa vrednost upora R15 in sicer:
It = +IN / R15 = 0,189V / 220R = 0,000859A.
2)Ojačanje diferencialnega mostička OP2/B pa izračunamo takole. Dejanske merjene vrednosti se malo razlikujejo zaradi notranje upornosti vhodov OPja, ki niso neskončno velike.
UT1 = napetost na sponki T1 proti masi. (vse napetosti so merjene proti masi)
UIN+ = napetost na pozitivnem vhodu OP2:B
Rt = trenutna upornost tipala recimo da je 2000R. (Ohm)
Uout = napetost na izhodu OP2:B
UT1 = It * Rt = 0,000859A * 2000R = 1,718V
UIN+ = Vcc /(R19 + R20) * R19 = 5 /(10K + 10K) / 10K = 2.5V (R19 in R20 določata startno točko)
Upora R22 in R23 določata ojačanje mostička.
UOut := (UIN+ - UT1) * R22/R23 = (2.5V - 1,718V) * 20K / 10K = 2.656V
V danem primeru je napetost na izhodu OP2:A pri upornosti tipala 2000R = 2.656V
R25 je uporabljen zato, da gre izhod OPja skoraj do 0V.
R21 omejuje max. tok in je odvisen od zahtevane max. upornosti ADC vhodnega pina. C7 gladi nihanja izhoda OPja.
C5 in C8 gladita/režeta morebitne oscilacije na vhodu kjer je priključeno tipalo.
Napajalna napetost OPja mora biti nekoliko višja od željene na izhodu saj izhod OP258-ja ni 'rail to rail'..
Veliko sreče..
LP GJ
Nazadnje urejal/a GJ Čet Sep 18, 2008 2:18 pm; skupaj popravljeno 2 krat |
|
Nazaj na vrh |
|
 |
clownfish Član

Pridružen-a: Pet 05 Avg 2005 13:05 Prispevkov: 765 Aktiv.: 3.23 Kraj: Povir / Ljubljana
|
Objavljeno: Čet Sep 18, 2008 11:07 am Naslov sporočila: |
|
|
To je točno tak odgovor kot sem si ga zaželel!
HVALA!
|
|
Nazaj na vrh |
|
 |
lojzek Član



Pridružen-a: Pet 25 Jan 2008 8:00 Prispevkov: 3387 Aktiv.: 15.99
|
Objavljeno: Čet Sep 18, 2008 1:03 pm Naslov sporočila: |
|
|
Mislil sem, da bo šlo brez decimalk, ampak očitno ne bo šlo. Računam že nekaj časa, da bi poenostavil enačbo za izračun temperature, pa mi nekako ne znese. V enačbi so namreč uporabljene decimalke na -5 potenco. Teh pa uC ne mara prav preveč. Če uporabim tip spremenljivk float, pa le-ta pobere polovico vsega razpoložljivega spomina.
V datasheetu senzorja je enačba za izračun temperature senzorja KTY-10 takale:
Koda: |
sqrt(a^2-4×b+4×b×k)-a
T=(25+ ----------------------- )
2×b
a= 0,00788
b=0,00001937
Rt
k= ----
R25
a, b, k : faktorji
Rt: upornost sonde
R25: upornost sonde pri 25°C
T: izračunana temperatura
|
Kakšen matematični pristop uporabljate vi v tem primeru? Mogoče podprto z izsekom kode.
Če ne bo šlo drugače, bom moral predpostaviti namesto krivulje premico. V določenem območju bo tako izračunana temperatura napačna, ampak bodo vsaj vse temperature enako napačne.
|
|
Nazaj na vrh |
|
 |
GJ Član


Pridružen-a: Čet 02 Nov 2006 15:51 Prispevkov: 946 Aktiv.: 4.17 Kraj: Ljubljana
|
Objavljeno: Čet Sep 18, 2008 1:54 pm Naslov sporočila: |
|
|
Reševanje polinomov ni ravno hitro za male mikroprocesorje, predvsem pa je programsko potratno.
Klasičen pristop je linearizacija v n točkah.
PRIMER:
Recimo da želimo imeti odstopanje od idealne/matematične (izmerjene) krivulje manjše od +- 0.1K v danem merilnem območjiu recimo od 0 do 100oC.
Sedaj enostavno postavimo točke po krivulji tako, da če povežemo točke med seboj je napaka vedno znotraj +-0.1K, oziroma željene napake.
Tako smo dobili recimo 8 premic povezanih med seboj, katere kordinate vpišemo v tabelo. Nakar za vsako premico izračunamo svoj smerni koeficient in ga zopet vpišemo v tabelo.
V samem programu najprej preberemo vrednost ADC-ja, nato v for zanki poiščemo v tabeli premico v kateri se nahaja izmerjena vrednost in izračunamo končno vrednost glede na vnaprej izračunani smerni koeficent (lahko pa smerni koeficient k izračunamo kar sproti, če imamo za to dovolj časa).
Razmerje med številom linearizacijskih točk in nelinearnostjo tipala določa natančnost meritve.
Je pa potrebno malo ponoviti enačbo premice!
V vsakem primeru boš verjetno potreboval matematiko s plavajočo vejico, vendar le deljenje, množenje in seštevanje/odštevanje. Lahko seveda delaš tudi z 32 bitnimi variablami tipa integer vendar boš moral ustrezno množiti, ker nimaš decimalk. Množiš seveda z večkratnikom števila 2, ker uporabljaš dvojiški zapis, kar je enako aritmetični funkciji 'shift left'.
Priporočam ti, da prej narediš programsko simulacijo izračuna, recimo v pascal-u in jo nato delujočo le še preneseš v dani MCPU.
LP GJ
|
|
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: 495 dni
Powered by phpBB © 2001, 2005 phpBB Group
|