Vítejte na Elektro Bastlírn?
Nuke - Elektro Bastlirna
  Vytvořit účet Hlavní · Fórum · DDump · Profil · Zprávy · Hledat na fóru · Příspěvky na provoz EB

Vlákno na téma KORONAVIRUS - nutná registrace


Nuke - Elektro Bastlirna: Diskuzní fórum

 FAQFAQ   HledatHledat   Uživatelské skupinyUživatelské skupiny   ProfilProfil   Soukromé zprávySoukromé zprávy   PřihlášeníPřihlášení 

DS B20
Jdi na stránku Předchozí  1, 2
 
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
Chenzee



Založen: Jun 26, 2007
Příspěvky: 464
Bydliště: Vysočina

PříspěvekZaslal: po březen 31 2008, 6:06    Předmět: Citovat

S touto problematikou jsem si nevěděl rady a nakonec jsem to udělal takto: pokud mám volné piny obvodu a počet čidel není vysoký (2,3), používám pro každé z nich svůj pin. Pokud jich mám nevěšenejch 8, využívám piny 2 a to jeden coby 1wire a jednu, kde čidlo nejprve připojím, načtu ROM kód, přiřadím čidlo a uložím do paměti. pak ho napíchnu na 1wire a systém ví, že rom na této adrese je třeba čidlo bojleru a tak ho také používá. Je to systém složitý na programování ale výměna čidla v systému je zcela triviální - připíchnu, načtu, odpojím a připojím na místo a vše frčííí. Bohužel tam musíš mít zobrazovač, kde vidíš, kam to připojuješ. Ale jsem s tímto spokojen, funguje to. Systém se SEARCH ROM jsem nepochopil ani z datasheetu ani z té knihy takže toto je můj ověřený a funkční systém. Wink Idea Pro dvě čidla bych použil dva piny a je to. Dáš dva programy za sebe, přejmenuješ ho z A0 na A1 atd. a je to. Nebo pokud někdo funguje se search rom, nechť se podělí o informace.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
anonym






PříspěvekZaslal: út duben 01 2008, 4:55    Předmět: Citovat

to je dobré řešení chci to použít do akvária pro měření teploty vody a potom měření teploty v místnosti taky tam budou tři okruky na spínání zářívek takže tam dám větší pic
Návrat nahoru
ViPali



Založen: Nov 21, 2005
Příspěvky: 524
Bydliště: Bratislava

PříspěvekZaslal: st duben 02 2008, 10:12    Předmět: Citovat

Chenzee napsal(a):

Systém se SEARCH ROM jsem nepochopil ani z datasheetu ani z té knihy takže toto je můj ověřený a funkční systém. Wink Idea Pro dvě čidla bych použil dva piny a je to. Dáš dva programy za sebe, přejmenuješ ho z A0 na A1 atd. a je to. Nebo pokud někdo funguje se search rom, nechť se podělí o informace.


Search ROM Command F0h
Predpokladaj, že si pripojil na 1wire štyri zariadenia. Každé je charakterizované 64bit - 8byte číslom, v tvare (CCR, B6,B5,B4,B3,B2,B1, M).
Vyhradíš si v pamäti 4 zariadenia krát 8 byte = 32byte na adresovanie jednotlivých zariadení.
Predpokladajme, že všetky sú 1820, potom M = 28h.
Adresy sú:
A1: CRC,B,B,B,B,B,(xxxx0100),M
A2: CRC,B,B,B,B,B,(xxxx0101),M
A3: CRC,B,B,B,B,B,(xxxx0001),M
A4: CRC,B,B,B,B,B,(xxxx0110),M
Algoritmus:
1/ Procesor vyšle kód F0h a inicializačný impulz 0.
2/ Všetky zariadenia na 1w vyšľú na 1w svoj najnižší bit. Keďže všetky sú 1820, tak počas prvého byte sa nič neudialo a zaujímavé je to až pri 9. bite (1.bit 2.bajtu). Pretože 1w je zavesený na +5V cez odpor 5k, nuly "prekričia" jednotky a na 1w bude nula.
3/ V druhom cykle všetky zariadenia vyšlú na 1w negovaný najnižší bit. Jednotky budú negované na nulu a na 1w bude opäť nula. Procesor sa dozvedel, že na 1w sú zariadenia ktoré majú na pozícii 9.bitu nulu aj jednotku.
4/ Procesor vyšle na 1w nulu. Tým sa zablokujú všetky zariadenia, ktoré majú na poz. 9. bitu jednotku a už nebudú odpovedať. Procesor si do bloku 4 uloží predpokladanú adresu zariadenia s najvyššou adresou)
5/ V nasledujúcom kroku vyšlú na 1w zvyšné zariadenia svoj 10. bit
A1: CRC,B,B,B,B,B,(xxxx010o),M
A4: CRC,B,B,B,B,B,(xxxx011o),M
6/ V nasledujúcom cykle negáciu 10.bitu
7/ Procesor zistil, že na poz. 10.bitu je 1 aj 0, vyšle nulu a zablokuje A4. (Procesor si do bloku 3 uloží predpokladanú adresu zariadenia)
8/ Odteraz už nebude konflikt a procesor prečíta všetkých 64 bitov. V bloku 1 bude uložená odresa prvého zariadenia.
9/ Celý proces sa zopakuje, - hľadá sa ďalšie zariadenie. F0h a inicializačný pulz 0.
10/ Procesor vyšle nulu a čaká nulu a jednotku. Dostal nulu a nulu, tak vyšle nulu - blokuje A2, A3.
11/ V ďalšom cykle dostanu opäť nulu a nulu, ale keďže vyslaním nuly by pokračoval v čítaní už známeho zariadenia. Porovnaním známeho blok1 a najbližšieho neznámeho blok3 zistí, že je tam konflikt a na 1w vyšle jednotku. Tým sa zablokuje A1 (viac neodpovedá) a ďalej sa bude čítať 64bit A4. A4 sa uloží do bloku 2.
12/ Proces sa opakuje F0h, pulz nula.
13/ Procesor pošle na 1w jednotku, zablokuje A1,A4 a vyhľadáva medzi A2 a A3
14/ Na záver musí prísť Masterreset pulz.

_________________
Ako elektrikár sa cítim slobodne.
Môžem hovoriť do vedenia!
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
anonym






PříspěvekZaslal: čt duben 03 2008, 5:00    Předmět: Citovat

Mám ještě jeden dotaz. Musel jsem dát odpor 100k místo 4k7. je to normální? Když jsem připojil čidlo tak to měřílo pokojovou teplotu až do 125 stupňů ale při ochlazení to při teplotě 12 stupňů začalo hazet nejaké nesmysly a po chvíli se to zastavilo a hodilo to nulu Zpočátku jsem si myslel že mám chybu v přepočtu teploty, ale po mnohonásobném vyzkoušení v MPLABU jsem myslel že ne. Když jsem tam dal odpor 10k tak čidlo měřilo do 6 stupňů a potom se objevily problémy no a když jsem tam dal 100k tak to měří do -20 (zkoušeno v mrazáku) a jede to bez problémů Je to normální? nebo kde je chyba?
Zkoušel jsem dvě čidla 18b20 a dělá to u každého. Napájím to 5V ze stab.zdroje 12V přes stabilizátor 7805.
Návrat nahoru
Chenzee



Založen: Jun 26, 2007
Příspěvky: 464
Bydliště: Vysočina

PříspěvekZaslal: čt duben 03 2008, 5:27    Předmět: Citovat

No napadá mě pouze to, jestli máš správně nastavené časové smyčky (přizpůsobené f krystalu). Pakliže by se někde dostávalo časování na okraj možnosti funkce, nemusel by pull-up odpor stíhat zvedat (ikdyž tu je to spíš obráceně že?). Zkontroluj časy ve smyčkách, zda souhlasí (tzn. zda máš v MPLABu spávně nastaven kmitočet pro simulaci a zda krystal má tu hodnotu, na kterou to ladíš. Mě to funfuje normálně s 4K7. Zkoušel jsem to od lednice až po rychlovarnou konvici a nezdálo se mi, že by to nějak švindlovalo. Wink . Jinak sem hod ten prográmek na úpravu hodnoty a převod do BCD, třeba tam je nějaká blbost, kterou jakožto stvořitel nevidíš (opakuješ stejnou chybu - tím tě nijak nechci tentononc ehm... !!!) Wink

Naposledy upravil Chenzee dne čt duben 03 2008, 9:44, celkově upraveno 1 krát.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
anonym






PříspěvekZaslal: čt duben 03 2008, 5:51    Předmět: Citovat

Krystal mám 4Mhz a časové smyčky jsem použil Vaše pro 4Mhz. Program pošlu ale musím ho popsat a a vyházet zakomentované řádky bude to chvíli trvat.
Návrat nahoru
anonym






PříspěvekZaslal: so duben 05 2008, 17:36    Předmět: Citovat

Posílám program předem se omlouvám jsem začátečník tak je trochu nepřehledný.Bylo to jenom na zkoušku komunikace s čidlem a přepočet pro zobrazení teploty. Myslím si že přepočet je dobře mám dvě čidla DS18B20 a zkoušel jsem je připojit k počítači přes program LogTemp a líší se vzájemně asi o 0.2stupně a při připojení k PIC se taky liší vzájemně o 0.2 stupně. Což je myslím v toleranci výrobce uvadí 0.5 stupně. Třeba ten program někomu pomůže jako mně od Chenziho.


teplomerDS_2_1.asm
 Komentář:

Stáhnout
 Soubor:  teplomerDS_2_1.asm
 Velikost:  23.29 kB
 Staženo:  144 krát

Návrat nahoru
Chenzee



Založen: Jun 26, 2007
Příspěvky: 464
Bydliště: Vysočina

PříspěvekZaslal: po duben 07 2008, 11:22    Předmět: Citovat

No udělal jsi přesně stejnou chybu jako já, když jsem tuto rutinu programoval. Jedná se o to, že zadáš převod teploty Convert T a pak čteš úroveň sbernice. Bohužel jsi to v datasheetu špatně pochopil, protože je tam psáno: Když je čidlo DS18B20 napájeno externím zdrojem, master může po příkazu ConvertT vysílat „čtecí časové úseky“ a čidlo DS18B20 bude odpovídat log.0 během převodu teploty a log.1 po jeho ukončení. Jenže ty čteš pouze log. úroveň sběrnice, což díky PULL-UPP bude vždy log.1, takže v podstatě program ihned jede dál a převod teploty se nestihne korektně provást, což má za následek špatné měření. Ty musíš vyslat čtecí časový průběh a číst, co čidlo odpoví a ne číst pouze úroveň sběrnice!!! (v MPlabu je to řádek cca 370). Oprav to a uvidíš. Buď dáš pevnou čekací smyčku nebo zadáš potřebný příkaz Wink Dej vědět, zda se něco změnilo. Hodně štěstí.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
anonym






PříspěvekZaslal: po duben 07 2008, 17:59    Předmět: Citovat

Tak jsem to předělal ale nepomohlo to když tam dám odpory 4k7 tak to zobrazuje 0.0 když tam dám 100k tak to funguje. Posílám i program


teplomerDS_2_1.asm
 Komentář:

Stáhnout
 Soubor:  teplomerDS_2_1.asm
 Velikost:  23.6 kB
 Staženo:  118 krát

Návrat nahoru
Chenzee



Založen: Jun 26, 2007
Příspěvky: 464
Bydliště: Vysočina

PříspěvekZaslal: pá duben 11 2008, 5:11    Předmět: Citovat

Tak jsem ti na to koukal, nevím, co používáš za editor pro psaní programu ale na MPLAB to nevypadá vzhledem k úpravě, každopádně jsi úplně nepochopil to, co jsem ti psal. Našel jsem v programu dvě chyby, tak se na to koukni a dej vědět. Naschvál ti je nenapíši, najdi si ty změny sám a podle toho si je třeba poté zapamatuješ. (kdyžtak si vem znovu datasheet a pozorně přečti Wink ) Ta úprava, na kterou jsem to nyní "poupravil" je pro MPLAB a délka tabulátoru 8zn. Tak hodně štěstí.


teplomerds.asm
 Komentář:

Stáhnout
 Soubor:  teplomerds.asm
 Velikost:  23.94 kB
 Staženo:  174 krát

Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
anonym






PříspěvekZaslal: ne duben 13 2008, 18:46    Předmět: Citovat

Já jsem to psal v MPLABU, ale nevěděl jsem že se tam dá nastavit i vlastnosti texu. Chyby jsem našel první je ta že jsem měl chybu v čekání na ukončení převodu a ta druhá byla v časování při čtení z DS. První chyba neměla vliv na hodnotu odporu ale ta druhá jo. Takže už to teď jede s odporem 4k7. Děkuji moc
Návrat nahoru
Chenzee



Založen: Jun 26, 2007
Příspěvky: 464
Bydliště: Vysočina

PříspěvekZaslal: po duben 14 2008, 6:42    Předmět: Citovat

... to jsem moc rád Wink
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Petr 5
Neregistrovaný





PříspěvekZaslal: út duben 15 2008, 8:05    Předmět: Citovat

Zdravím, mohl by sem prosím někdo dát rutinu na přepočet teploty z DS18B20 napsaný v C, ten asm mi nějak nejde do hlavy. Děkuji.
Návrat nahoru
Atlan



Založen: May 10, 2004
Příspěvky: 4513
Bydliště: Košice

PříspěvekZaslal: po květen 26 2008, 20:57    Předmět: Citovat

TAk som si objednal s SOS ds18s20... prisli pozrel som na nalepku 18s20... napajkoval ..programujem.. a programujem presiel som program z predu do zadu a nič.... az nakomiec...Poslali mi DS1820... ja blbec som to neskontroloval grrrrrrrrr.... troch a ma napalili Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů Časy uváděny v GMT + 1 hodina
Jdi na stránku Předchozí  1, 2
Strana 2 z 2

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra.
Nemůž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.
Nemůžete připojovat soubory k příspěvkům
Můžete stahovat a prohlížet přiložené soubory

Powered by phpBB © 2001, 2005 phpBB Group
Forums ©
Nuke - Elektro Bastlirna

Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.


PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Čas potřebný ke zpracování stránky 0.20 sekund