Založen: Jun 26, 2007 Příspěvky: 464 Bydliště: Vysočina
Zaslal: po březen 31 2008, 6:06 Předmět:
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. 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.
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
Založen: Nov 21, 2005 Příspěvky: 524 Bydliště: Bratislava
Zaslal: st duben 02 2008, 10:12 Předmět:
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. 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!
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.
Založen: Jun 26, 2007 Příspěvky: 464 Bydliště: Vysočina
Zaslal: čt duben 03 2008, 5:27 Předmět:
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. . 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... !!!)
Naposledy upravil Chenzee dne čt duben 03 2008, 9:44, celkově upraveno 1 krát.
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.
Založen: Jun 26, 2007 Příspěvky: 464 Bydliště: Vysočina
Zaslal: po duben 07 2008, 11:22 Předmět:
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 Dej vědět, zda se něco změnilo. Hodně štěstí.
Založen: Jun 26, 2007 Příspěvky: 464 Bydliště: Vysočina
Zaslal: pá duben 11 2008, 5:11 Předmět:
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 ) Ta úprava, na kterou jsem to nyní "poupravil" je pro MPLAB a délka tabulátoru 8zn. Tak hodně štěstí.
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
Založen: May 10, 2004 Příspěvky: 4513 Bydliště: Košice
Zaslal: po květen 26 2008, 20:57 Předmět:
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
Časy uváděny v GMT + 1 hodina Jdi na stránku Předchozí1, 2
Strana 2 z 2
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
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.