|
Svet elektronike Revija za prave elektronike
|
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
Boštjan Profesionalec
Pridružen/-a: Tor Mar 2004 22:48 Prispevkov: 100
|
Objavljeno: Tor Jan 29, 2008 1:01 pm Naslov sporočila: kako izračunat |
|
|
V bascomu bi rad naredil izračun AD-ja 0-1023 v stopinje -20 do 120ºC
Vhod v AD je 0-5V iz merilnega ojačevalnika
LP Boštjan |
|
Nazaj na vrh |
|
|
Domenius Profesionalec
Pridružen/-a: Čet Feb 2005 15:58 Prispevkov: 75 Kraj: Trbovlje
|
Objavljeno: Tor Jan 29, 2008 1:13 pm Naslov sporočila: |
|
|
Kateri senzor? Linearna ali nelinearna karakteristika? _________________ It's electric! |
|
Nazaj na vrh |
|
|
Boštjan Profesionalec
Pridružen/-a: Tor Mar 2004 22:48 Prispevkov: 100
|
Objavljeno: Tor Jan 29, 2008 1:25 pm Naslov sporočila: linearno |
|
|
pt100 ali pt1000
linearno |
|
Nazaj na vrh |
|
|
Gustav Profesionalec
Pridružen/-a: Pon Jun 2005 17:19 Prispevkov: 768
|
Objavljeno: Tor Jan 29, 2008 1:57 pm Naslov sporočila: |
|
|
Najprej umeri senzor v kombinaciji z delilnikom, katerega si uporabil. Ko imas doloceno spodnjo in zgornjo mejo ter offset za poravnavo skale, je
temperatura = odcitek_ADCja * ((zgornja_meja_rezultata - spodnja_meja_rezultata) / (odcitek_ADCja_na_zgornji_meji - odcitek_ADCja_na_spodnji_meji)) + offset.
Ce bi recimo tvoj delilnik dal od sebe Vref- pri -20 stopinjah in Vref+ pri 120 stopinjah, bi to pomenilo, da je
temperatura = odcitek_ADCja * (140 / 1023) - 20
Odcitek 329 bi tako recimo pomenil, da je senzorju prijetno toplo
Pazi na predznake ! Pazi na obseg temperaturega obmocja (120 - -20 je napacen rezultat - racunaj v stopinjah Kelvina, ce se ti zdi nelogicno) ! |
|
Nazaj na vrh |
|
|
Boštjan Profesionalec
Pridružen/-a: Tor Mar 2004 22:48 Prispevkov: 100
|
Objavljeno: Tor Jan 29, 2008 8:21 pm Naslov sporočila: decimalke |
|
|
Start Adc
Dim W As Word , P As Word , V As Word , Channel As Byte , I As Byte , Cols As Byte
Dim Ps As String * 3
Dim Nt As Integer , Ad As Integer , Izmerjena As Integer
Dim Vmesna As Integer
Cls
Do
W = Getadc(0)
V = W / 20
Nt = 140 / 1023
Vmesna = Nt - 20
P = W * Vmesna
Ps = Str(p)
Locate 1 , 1
Lcd "ADC=" ; W ; " "
Locate 1 , 10
Lcd P
Locate 2 , 0
Lcd "vm=" ; Vmesna
Locate 2 , 10
Lcd "n=" ; Napetost
Waitms 100
Loop
End
trenutno imam tak program pa ne dela nekaj ok. "vm" vmesna dobim -20
"NT" pa 0. Ali lahko procesor izračuna 140/1023 in kako rešiš decimalo |
|
Nazaj na vrh |
|
|
Vlado Profesionalec
Pridružen/-a: Ned Jan 2004 16:11 Prispevkov: 556 Kraj: Ljubljana
|
Objavljeno: Tor Jan 29, 2008 9:36 pm Naslov sporočila: Kako izračunat |
|
|
Boštjan,
če je to vsa koda programa, potem ne more delati prav.
Pozabil si nastaviti ADC :
(CONFIG ADC = single, PRESCALER = AUTO, REFERENCE = opt).
Menim pa tudi da branje temperature vsakih 100 ms ni potrebno, prikaz na LCD-ju bo težko brati. Svetujem ti da na LCD podatke prikazuješ samo če se razlikujejo od prej prebranih z vsaj nekaj sekundnim zamikom.
Citiram: | Ali lahko procesor izračuna 140/1023 in kako rešiš decimalo |
za to obstaja ukaz FUSING, vendar prej moraš vrednost pretvoriti v string.
Vlado |
|
Nazaj na vrh |
|
|
Gustav Profesionalec
Pridružen/-a: Pon Jun 2005 17:19 Prispevkov: 768
|
Objavljeno: Tor Jan 29, 2008 10:45 pm Naslov sporočila: |
|
|
Glede Bascoma ti bo pomagal kdo drug (sam ga ne uporabljam in ga ne poznam dovolj dobro, primeri so napisani v psevdo-kodi in so zgolj po nakljucju morda podobni Bascomu), lahko pa odgovorim na del tvojega vprasanja:
Nikjer ne pise, da morajo biti racunske operacije razporejene ravno tako, kot jih ti preberes (obvezuje te samo precedenca operatorjev, vse ostalo je tvoja stvar !). Ce ves, da dolocen MCU ne podpira dela s plavajoco (ali celo samo s fiksno) vejico, lahko vsaj premislis kako se da zamenjati vrstni red operacij tako, da izgubis karseda malo infomacije med koraki.
Cetudi Bascom morda zna izvesti FP operacije v SW, je precej verjetno, da bo enako natancna - a obenem bistveno hitrejsa - celostevilska operacija z zamenjanim vrstnim redom. Torej ja, MCU to najbrz lahko izracuna, a lahko se toliko "lepse" izracuna tole:
spremenljivka = odcitek * 140
spremenljivka = spremenljivka / 140
spremenljivka = spremenljivka + 20
(ob tem mora biti "spremenljivka" dovolj obseznega tipa, da lahko nosi zmnozek 1023 * 140, torej vsaj 18 bitov, oz. v tvojem primeru 32, ker je to prva okrogla vrednost, razen ce bos sam napisal funkcijo za mnozenje)
Torej, najprej jo povecas (mnozis) kolikor je to mozno, potem sele razcepis (delis), ne pa obratno, kakor si se tega lotil ti. 140 / 1023 je namrec manj kot 1, kar je v celem stevilu zapisano kot 0, torej je omenjeni rezultat povsem pricakovan (-20).
Ob tem te moram ocitno se enkrat opozoriti, da je bil prejsnji primer s konkretnimi stevilkami zgolj to (primer) in da velja samo ob nastetih predpostavkah, katere si ocitno gladko ignoriral. Ni prevec verjetno, da bosta skrajna odcitka ravno 0 in 1023 ... celo nasprotno; stavim da vsaj eden od nju ni, precej verjetno pa tudi drugi ne. Vrednosti je torej potrebno prilagoditi dejanskim razmeram, ki so odvisne vsaj od uporabljenega senzorja in delilnika: kalibracija. |
|
Nazaj na vrh |
|
|
Boštjan Profesionalec
Pridružen/-a: Tor Mar 2004 22:48 Prispevkov: 100
|
Objavljeno: Sre Jan 30, 2008 11:21 am Naslov sporočila: aha |
|
|
Hvala lepa zato sem torej dobil nič, nikakor se mi ni posvetilo, zato so tudi obstali vsi nadaljni izračuni. Plavajočo vajico pa moram malo ponovit.
lp Boštjan |
|
Nazaj na vrh |
|
|
kos19 Profesionalec
Pridružen/-a: Čet Feb 2006 18:25 Prispevkov: 55
|
Objavljeno: Čet Jan 31, 2008 9:26 pm Naslov sporočila: |
|
|
Na tak način sem jaz preračunaval za izpis napetosti na dve decimalki.
W=vrednost adc merjene napetosti 19.94V
W1 = W * 100 '102000
W2 = W1 / 5115 '102000/5115=19,94
V = W * 10000 '1020*10000=10200000
V1 = V / 5115 '10200000/5115=1994
W3 = W2 * 100 '19*100=1900
V2 = V1 - W3 '1994-1900=94
If V2 <= 9 Then
Locate 1 , 5
Lcd "0" ; V2 ; "V "
Else
Locate 1 , 1
Lcd " U" ; "= " ; W2 ; "." ; V2 ; "V "
End If |
|
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 You cannot attach files in this forum You cannot download files in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|