forum.mcontrollers.com - hlavní stránka forum.mcontrollers.com - fórum

 

.: fórum - hlavní stránka :.
Technology Stronghold by Rudolf Vesely
How to build Microsoft System Center hosted cloud series
FAQFAQ HledatHledat Seznam uživatelůSeznam uživatelů Uživatelské skupinyUživatelské skupiny RegistraceRegistrace
ProfilProfil StatistikaStatistika Soukromé zprávySoukromé zprávy PřihlášeníPřihlášení

 
Konverze výstupu čidla SHT71 - výpočet relativní vlhkosti
Jdi na stránku 1, 2  Další
 
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> 8051 / 8052
 
Zbynek
Anonymní





PříspěvekZaslal: 09 říjen 2010, 18:48    Předmět: Konverze výstupu čidla SHT71 - výpočet relativní vlhkosti Citovat

Ahoj,
mám takovy problem. Zprovoznil jsem cidlo SHT71 jenz meri relativní vlhkost. Vystup cidla je ve 2B (konkretne informace o relativni vlhkosti je obsazena v 12bitech ). Problem je ten, ze hodnota z techto 2B se musi prepocitat na hodnotu relativni vlhkost pomoci nasledujici formule:

RH(%)=c1*VYSTUPSHT+c2*VYSTUPSHT+c3*VYSTUPSHT*VYSTUPSHT,

c1=-2,0468
c2=0,0367
c3=-1.5955E-6

Program pisi v ASM a nechci prechazet na vyssi programovaci jazyk. Cidlo spojuji s mikrokotnrolerem AT89s2051.

Nevim, jak vyresit pocitani s desetinnymi cisly, napriklad s konstantou c1 bych nejdrive udelal to, ze bych zapsal cislo -204 a to vydelil 100. Tato metoda se mi ale zda dosti nepresna a pro c2 a c3 nepouzitelna. Muzete mi prosim nekdo poradit?

Moc diky..

Arrow administrator: přesunuto z "Microchip"

Arrow administrator: přejmenováno z "Converse vystupu cidla SHT71"
Návrat nahoru
 

 
piityy
Profesionál
Profesionál


Založen: 1.4.2008
Příspěvky: 2139

PříspěvekZaslal: 09 říjen 2010, 19:56    Předmět: Citovat

Koukám do pdfka, a vidím konstanty: -4, 0.0405, -2.8e-6, ale hlavně ta rovnice se mi nezdála - 2 konstanty s neznámou stejnýho řádu nemají smysl. Není ta rovnice RH(%)=c1+c2*VYSTUPSHT+c3*VYSTUPSHT*VYSTUPSHT ? Wink
Opravdu potřebuješ takovou přesnost, že musíš převodní charakteristiku linearizovat? Zas tak drastický odchylky to mít nebude.
Každopádně jesli to chceš přepočítávat, prováděj výpočty ve 32 bitech. Všechny konstanty použij vynásobené 2^23 a konečný výsledek posuň doprava o 23b. Snad by to mělo být.

Co dělá to téma v "Microchip", když jde o x51 a ještě k tomu atmeláckou? Rolling Eyes
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
ondra.cer
Častý přispěvatel
Častý přispěvatel


Založen: 6.3.2008
Příspěvky: 30

PříspěvekZaslal: 10 říjen 2010, 8:57    Předmět: Citovat

s PICem jsem to v ASM počítal takto: http://s-o.webnode.cz/rvtg
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Tichy
Profesionál
Profesionál


Založen: 2.3.2008
Příspěvky: 105
Bydliště: Planá u ML

PříspěvekZaslal: 10 říjen 2010, 12:18    Předmět: Citovat

Čau,
mrkni se na tydle stránky a měl bys to poměrně snadno vyřešit, násobení konstantou není problém, to ti vygeneruje přímo první stránka, potom se mrkni na tu druhou, kde bys měl dohledat zbytek.
http://techref.massmind.org/techref/piclist/codegen/constdivmul.htm
http://www.piclist.com/techref/microchip/math/basic.htm
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
 

 
piityy
Profesionál
Profesionál


Založen: 1.4.2008
Příspěvky: 2139

PříspěvekZaslal: 10 říjen 2010, 12:56    Předmět: Citovat

Téma je blbě zařazeno - nejde o PIC.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Zbyněk
Anonymní





PříspěvekZaslal: 11 říjen 2010, 18:56    Předmět: prevod na desetinne cislo Citovat

piityy napsal:
Koukám do pdfka, a vidím konstanty: -4, 0.0405, -2.8e-6, ale hlavně ta rovnice se mi nezdála - 2 konstanty s neznámou stejnýho řádu nemají smysl. Není ta rovnice RH(%)=c1+c2*VYSTUPSHT+c3*VYSTUPSHT*VYSTUPSHT ? Wink
Opravdu potřebuješ takovou přesnost, že musíš převodní charakteristiku linearizovat? Zas tak drastický odchylky to mít nebude.
Každopádně jesli to chceš přepočítávat, prováděj výpočty ve 32 bitech. Všechny konstanty použij vynásobené 2^23 a konečný výsledek posuň doprava o 23b. Snad by to mělo být.

Co dělá to téma v "Microchip", když jde o x51 a ještě k tomu atmeláckou? Rolling Eyes


Velmi se omlouvám za nezařazení tématu. Ano, v rovnici jsem se spletl. Konstanty, které zde uváfíš jsou pro čidlo SHT11, já používám vývodovou verzi SHT71 a v datasheetu jsou konstanty výše uvedené.

Pořád ale nechápu jak zapsat v 8 bitech desetinné číslo, respektive jak ho vytvořit. Metodu, jenz jsem popisoval je nesmyslna, pze AT89s2051 deli jen celociselne. Muzes(te) mi prosim poradit konkretne, jak vytvorit konstantu napriklad 0,0367?Princip musi byt prece v posouvani desetinne carky ne?

Ano mas pravdu, nepotreboval bych az takovou presnost, ale kdyz uz to delam, chtel bych tomu prijit na kloub. Moc vám všem dekuju za jakoukoliv radu.
Návrat nahoru
 

 
Zbynek
Anonymní





PříspěvekZaslal: 11 říjen 2010, 19:03    Předmět: Prevod Citovat

Tichy napsal:
Čau,
mrkni se na tydle stránky a měl bys to poměrně snadno vyřešit, násobení konstantou není problém, to ti vygeneruje přímo první stránka, potom se mrkni na tu druhou, kde bys měl dohledat zbytek.
http://techref.massmind.org/techref/piclist/codegen/constdivmul.htm
http://www.piclist.com/techref/microchip/math/basic.htm


Diky mrknu na to.
Návrat nahoru
 

 
piityy
Profesionál
Profesionál


Založen: 1.4.2008
Příspěvky: 2139

PříspěvekZaslal: 11 říjen 2010, 21:11    Předmět: Citovat

piityy napsal:
...prováděj výpočty ve 32 bitech. Všechny konstanty použij vynásobené 2^23 a konečný výsledek posuň doprava o 23b....

Konstanty vynásobíš 2^23 (8 388 608).
c1=2,0468*2^23 => 17 169 803 (desetin. část zahodíš - je zanedbatelná vzhledem k velikosti čísla). To samé s ostatníma konstantama a výpočty pak provádíš celočíselně. Na konci posuneš onen 32-bitový výsledek o 23 bitů doprava. Nejnižší byte je hledaná hodnota.

edit: Tak už jsem narazil za zakopanýho psa u koeficientů (jsou pro oba senzory stejný). Záleží, jesli máš koeficienty pro senzor V3 nebo V4. Ty tvoje jsou novější, "optimalizované". Měly by však platit i ty stré (je tam jiný poměr, ale ve výsledku se to může v určitém rozsahu hodně podobat).
http://www.alldatasheet.com/datasheet-pdf/pdf/343770/ETC/SHT71.html str.7/8
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Anonymní






PříspěvekZaslal: 11 říjen 2010, 22:54    Předmět: Citovat

Takze postup je nasledujici? c1=2,0468*2^23 => 17 169 803 => ulozim do ctyr 1B promennych=> pronasobim jednotlive BAJTY s odpovidajici hodnotou cidla => vydelim 2^23 => vezmu nejnizsi bajt. To bude s timhle 8b procesorem trochu zdlouhavy, ale melo by to byt spravne, je tak?

Diky mnohokrat..

Arrow administrator: příspěvek byl upraven
Předchozí příspěvky se necitují.
Návrat nahoru
 

 
piityy
Profesionál
Profesionál


Založen: 1.4.2008
Příspěvky: 2139

PříspěvekZaslal: 11 říjen 2010, 23:10    Předmět: Citovat

Poslední příspěvky se necitují Wink

Přibližně tak, ale ten výpočet musí projít ve 32 bitech celý (včetně součtu a násobení s ostatníma konstantama). Nejde jen o pronásobení jednotlivých bytů. Je to vícebytová aritmetika - doufám, že víš, že násobení vícebytového čísla konstantou není jen vynásobení jednotlivých bytů konstantou!
Zdlouhavé to rozhodně bude, o tom žádná (obzvlášť jesli nevíš jak na to) Wink Pokud chceš ovšem ten výpočet celý, tak jinou možnost nemáš (teda krom toho, že by sis to napsal ve float Very Happy).
Kdyby ti stačila jen základní přesnost bez linearizace, bylo by to mnohem jednodušší. O C ani nemluvě.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Anonymní






PříspěvekZaslal: 11 říjen 2010, 23:39    Předmět: Citovat

Pardon, uz se to nestane:-)

v podstate ted uz hledam co nejjednodussi reseni prevodu tohoto udaje Smile. Cely program pisi v ASM v programu KEIL uvision2. Zkousel sem vsak napsat C funkci a vlozit ji do ASM kodu, nejak mi to ale nejde. Nevim jak se propojuji promenne atd. Pravdou je, ze v cecku je to mnohem snazsi.

Linearizací myslis uzití konstant c1,c2 a c3? Zakladni presnost = Nepouziti konstanty c3?
Návrat nahoru
 

 
piityy
Profesionál
Profesionál


Založen: 1.4.2008
Příspěvky: 2139

PříspěvekZaslal: 12 říjen 2010, 10:11    Předmět: Citovat

C funkci do asm vložíš těžko. Lze v kládat asm do C, ale opačně jsem o tom ještě neslyšel Very Happy
Ta základní přesnost je vpodstatě jen konstanta C2 a celá operace upravená pro celočíselný výpočet.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Atlan
Profesionál
Profesionál


Založen: 4.2.2009
Příspěvky: 889

PříspěvekZaslal: 12 říjen 2010, 11:20    Předmět: Citovat

a keby si z cecka vygenervoal asm....mozno ze zlozistos tby nebola neuveritelne zlozita a so by to napisat do ludskeho asm
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
piityy
Profesionál
Profesionál


Založen: 1.4.2008
Příspěvky: 2139

PříspěvekZaslal: 12 říjen 2010, 12:48    Předmět: Citovat

Tak ono celočíselný 4B násobení zas tak neuvěřitelně složitý není. Pár součinů, pár součtů a je to Smile. Zvlášť když víš, že se výsledek do 4B vejde (proto 2^23).
Rutiny pro 32b * 16b unsigned se dají na netu určitě najít.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Martin
ATmega pouzivatel
ATmega pouzivatel


Založen: 5.1.2008
Příspěvky: 1447

PříspěvekZaslal: 12 říjen 2010, 17:01    Předmět: Citovat

Atlan napsal:
a keby si z cecka vygenervoal asm....mozno ze zlozistos tby nebola neuveritelne zlozita a so by to napisat do ludskeho asm


myslim ze:

ludske asm = C


Smile

lebo ako moj stary znamy hovoril:" mudre a pekne dievca neexistuje, lebo mudre a pekne dievca je uz chlapec"
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

Zobrazit příspěvky z předchozích:   
Zobrazit předchozí téma :: Zobrazit následující téma  
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> 8051 / 8052 Časy uváděny v GMT + 2 hodiny
Jdi na stránku 1, 2  Další
 
Strana 1 z 2
Přejdi na:  
Můžete přidat nové téma do tohoto fóra.
Můžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Můžete k příspěvkům připojovat soubory
Můžete stahovat a prohlížet přiložené soubory
 



Num Lock Holder - app to hold Numlock
Copyright © 2017 Rudolf Veselý, mcontrollers.com.
Je zakázáno používat části tohoto webu bez souhlasu autora. || Powered by phpBB © 2001, 2002 phpBB Group - with RedSquare DoubleJ(Jan Jaap)