No já nevím, ale vykašlal bych se na simulátory a virtuální terminály.
Vezmi desku, kde máš PIC a DS18x20. Do PICa nahrej asi takovýto program:
UART_Init (9600);
k1:=50;
k2:=70;
repeat
UART1_Write_Text("Ahoj, posilam 50 a 70");
UART1_write (k1);
UART1_write (k2);
delay_ms (1000);
until false;
Připoj to k PC na COMx a spusť nějaký terminál na tento COM.
Pokud přijmeš v terminálu na PC každou sekundu text "Ahoj ..." a dvě konstanty (50 a 70 nebo 2 a F), tak Ti funguje přenos mezi PICem a PLC.
Teprve pak bych ladil připojení čidla k PICu, jeho nastavení (rozlišení), spuštění konverze a přepočet hodnot z čidla.
j1 := 0; //j1 je prom. typu byte
Repeat // end of conversion cycle is
j1 := ow_read(porta,2); // indicated by a non-zero
Until j1 > 0; // output to polling
Prostě pošli do PC surovou teplotu z 18B20 a zkus čidlo přitom trochu zahřát, zdali se bude údaj, přenesený do PC, měnit.
Pak bych (ale možná je to blbost), zkusil nastavit na začátku port A jako vstupní (TRISA=255). Ale možná je to nastaveno po restartu automaticky, fakt nevím.
Namísto pevně nastavené doby je ve výše zmíněném kódu čekací smyčka, kdy se vyhodnocuje vývod, kde je čidlo. Po provedení konverze je tam něco mimo nuly. Pokud by se Ti na PC nic neobjevilo tak by to znamenalo, že nedojde k ukončení konverze v čidle a program se točí stále dokola na testování portu A.2 na rozdílnost od nuly.
Tak to nevím. Jedině vadné čidlo (i když je divné, jak jsi psal, že v zapojení s displejem funguje) nebo je špatně zapojené.
Zkus ještě jednu věc. Do smyčky, kde je podmínkou změna hodnoty j1, vlož delay_ms(1) a přičítej jedničku do nějaké proměnné. Tím se dozvíš, jak dlouho se musí čekat na převod v čidle. Převod by měl trvat:
pro 9 bitů: 93,75ms; pro 10 bitů 187,5ms; pro 11 bitů 375 ms a pro 12 bitů 750ms.
No a pak tuto proměnnou převeď do stringu a pošli ji do PC. Jo - nezapomeň proměnnou po odeslání do PC vynulovat.
Taky můžeš jednotlivé byty, posílané do PC, oddělit nějakým řetezcem (B1 pro první byte z čidla, B2 pro druhý byte a CK pro čas konverze), ať je jasné, co je co.
Taky mě zaráží, že ve fyzickém terminálu dostaneš nuly, ale v SW terminálu máš 5/80 a 5/176.
Taky můžeš zkusit použít jiný vstup - nejlépe z portu B.
Pokud najdu stejný procesor, tak bych mohl večer zkusit nainstalovat MikroC a zkusit to ve své vývojové desce.
Edit - ještě mě napadlo podívat se na tabulku pro převod teploty do 0/1. Teplota 85°C, což je výchozí teplota, je právě 5/80. TAkže to vypadá, že ve Tvém případě ještě neproběhla žádná konverze. Ale je otázka, co si simulátorový terminál vymyslí. Spíše bych věřil tomu Hyperterminálu.
A taky můžeš zkusit jinou věc - odpojit čidlo. Když to uděláš, neměl bys do terminálu dostat žádnou hodnotu, neboť by se proměnná j1 nikdy neměla dostat nad nulu.
Tak jsem to nakonec dal dohromady, ale že mi to dalo zabrat. Už jsem myslel, že Tvůj výstup 5/80 je virový a já jsem to chytil taky. Nakonec se ukázalo, že je to vadným čidlem (resp. několika čidly). Naštěstí jsem našel ještě jedno a s tím to funguje. Ale kam mi zase doma dali těch 50 čidel z Číny, to fakt nevím. Ale když se zeptám, dostanu klasickou odpověď "No já jsem nic neuklízela".
V příloze posílám svůj program (v Pascalu ) a sken hyperterminálu.
Je zajímavé, že i bez čidla program na kontrole proměnné j1 neskončí v nekonečné smyčce, ale bez čidla je čas konverze 1 smyčka. S čidlem a nastaveným převodem 12b (7F) je doba převodu okolo 523 cyklů. Při nastavení 9b (1F) je doba převodu 66 cyklů.
Abych nezapomněl - procesor mám 16F874A, čidlo 18B20 a je připojeno vstup E2 va vývojové desce EasyPIC4 (přikládám i částečné schéma zapojení).
Založen: Oct 30, 2006 Příspěvky: 2310 Bydliště: Poblíž Zlína
Zaslal: ne březen 12 2017, 12:41 Předmět:
Tady jsem našel na PIC12F629 http://pandatron.cz/?566&teplotni_cidlo_ds18b20_ve_spojeni_s_pic12f629 hotové řešení i ze zdrojákem ba i přeložený hex soubor, podporuje to programátor MPLAB IDC2 kterého klon mám a používám.Nic méně mě to nedá proč to moje zapojení které tady řeším nefunguje kde dělám chybu?.Zapojení s LCD které mám na nepajivém poli a které mi de facto to pole obsazuje a na které se dlouhou dobu prášilo tím chci říct že si na podrobnosti nepamatuji to funguje ,a dokonce mám zdrojový kód v prostředí mikroC PRO for PIC ale bohužel si nevzpomínám jestli jsem v tom něco změnil nebo ne, zdrojový kód je v příloze .Samotný procesor PIC16F628A mám druhý kus v tom co zkouším teplotu zobrazovat na terminálu, jestli je v něm problém to mi se zdá nepravděpodobné. díky
edit
Ještě malá poznámka : co mě funguje to zapojení s tím displejem tak to čidlo je DS1820místo jak jsem se domníval DS18B20 po změně v zapojení s displejem tak na displeji to ukazovalo 200 stupňů mělo to tendenci snižování.Ale pořád platí že i když zkusmo jsem změnil čidlo na terminál zapojení DS1820 tak se to chová stejně pořád samé nuly
Založen: Oct 30, 2006 Příspěvky: 2310 Bydliště: Poblíž Zlína
Zaslal: pá březen 24 2017, 13:17 Předmět:
Už mě to funguje já jsem se úplně pos***** víš kde jsem udělal chybu to je pro mně na zamyšlení ,čidlo jsem zapojoval obráceně plus na minus a mínus na plus samozřejmě jsem jedno poslal do křemíkových lovišť
Časy uváděny v GMT + 1 hodina Jdi na stránku Předchozí1, 2, 3, 4, 5Další
Strana 4 z 5
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.