Fórum témák

» Több friss téma
Fórum » DS18B20 hőmérő-szenzor
 
Témaindító: Korben, idő: Nov 16, 2005
Témakörök:
Lapozás: OK   20 / 39
(#) Gabó válasza Bakman hozzászólására (») Aug 23, 2015 /
 
Okés köszi az infót. Akkor nekiállok kísérletezgetni.
(#) kukuri válasza Kovidivi hozzászólására (») Aug 23, 2015 /
 
Abból gondolom hogy elállítódott, hogy ha megfogom a szenzort akkor csak.05 fokkal emelkedik a hőmérséklet. Ugyanide egy másik szenzort csatlakoztatva pedig megy a 0,06 emelkedés.
Ha leveszem a szenzort a rendszerről azzal megszüntetem a kapcsolatot. Ha ezzel visszaálna alap helyzetbe akkor nem volna gond. De nem áll vissza.
A kód meg valamiért nem állítja át a felbontást. Valahol még gond van.
(#) Kovabe válasza Gabó hozzászólására (») Aug 23, 2015 /
 
Szia
A cikkek között van egy írás, szerintem egy jó kiinduló pont.
Bővebben: Link
(#) Bakman válasza Kovabe hozzászólására (») Aug 23, 2015 /
 
Ez nem arra való. Ő egy szenzort akar használni két kontrollerrel, ha az egyikkel történne valami.
(#) Kovabe válasza Bakman hozzászólására (») Aug 23, 2015 /
 
Csak arra gondoltam hogy így megoldható lenne a terhelés kiküszöbölése. Konkrétan nem tudom hogy mert nem vagyok nag spiller de biztos van valami eyszerü megoldása.
(#) Gabó válasza Kovabe hozzászólására (») Aug 23, 2015 /
 
Végső megoldásnak én is hasonlóra gondoltam, csak ha kihagyható egy ilyen plusz áramkör, akkor nem építeném meg elven.
(#) Mate78 hozzászólása Szept 13, 2015 /
 
sziasztok,

Korábban készítettem egy áramkört, amiben egy 18F4520-as kezel 4db 18B20-as hőmérő szenzort,LCD-t, bemeneteket,kimeneteket, stb, minden rendben is volt vele.
Úgy alakult, hogy át kellett írnom a programot 18F2620-ra,és ma élesztettem az egészet.
Sajnos mind a 4 hőmérő értéknek 0.00-t olvasott ki,illetve az ID kiolvasás is csupa FF-t adott vissza.
Mindeközben a program többi része szépen futott.Pár órás hibakeresés után találtam meg a hiba okát, mégpedig hogy az új áramkörben a PIC belső oszcillátorát használtam, az eredetinél meg kvarcot.A belső oszcillátorral sehogy sem tudtam működésre bírni a 1wire-t.Ezután raktam rá kvarcot,és egyből jó lett.Nem értem mi az összefüggés, de gondoltam megosztom hátha más is szívna vele.
(#) Bakman válasza Mate78 hozzászólására (») Szept 13, 2015 /
 
Mennyi volt a belső órajel frekvenciája (már ha jól állítottad be) és mennyi a kvarcé?
(#) Mate78 válasza Bakman hozzászólására (») Szept 13, 2015 /
 
A kvarcé 3,2768MHz, a belső oszcillátor frekvenciája meg nem fiksz 8MHz?
MikroC-ben írtam, egyszerűen kiválasztottam a settings-ben a belső oszcillátort.
Próbáltam azt is hogy a settings-ben beírtam hogy 8MHz az órajel, de akkor sem ment.
(#) bbalazs_ válasza Mate78 hozzászólására (») Szept 13, 2015 /
 
Itt azert az idoziteseknek komoly szerepe van.
A belso oszcit egy csomo modon lehet allitani, sokfele sebessegre.
Az idoziteseket mi csinalja?
Ha betennel egy 8MHz-es kvarcot, szerinted megjavulna?
(#) Mate78 válasza bbalazs_ hozzászólására (») Szept 13, 2015 /
 
Éppen ezért furcsállom én is,tudtommal ugyanis az LCD kezelésnél is fontosak az időzítések, és az a része rendben volt.Nem tudom hogy érted hogy "az időzítéseket mi csinálja"
MikroC-ben van OneWire library, azokat használom,kvarccal megy, belsővel nem, ugyanazzal a kóddal.
(#) bbalazs_ válasza Mate78 hozzászólására (») Szept 13, 2015 /
 
Az LCD idoziteseknel van egy minimum ido, maximum nincs megadva. Akar par perc is eltelhet egy lefuto es egy felfuto el kozott - ha te ugy latod jonak.
Az one-wire rendszereknel idoablak van, sem a rovidebb, sem a hosszabb varakozast nem toleralja. Ezt a specifikacio is leirja.

Tobbek kozott ezert nem helyes, ha valaki csak legozik a libekkel...
Feltehetoleg ott azert valami bemeneti valtozo meg van adva, amibol a lib kisakkozhatja, hogy mennyit is varjon kb.
(#) Mate78 hozzászólása Szept 14, 2015 /
 
sziasztok

köszönöm mindenkinek a segítséget,úgy tűnik kicsit félvállról vettem a belső oszcillátor beállításait.
Most már én is látom, hogy 1MHz az alapértelmezett, és mint ma kiderült ez kevés.2MHz-re állítva már rendben fut minden, de 4MHz-en hagytam.
(#) don_peter hozzászólása Okt 20, 2015 /
 
Uraim, szükségem lenne egy kis segítségre.
Egy DS18B20-at szeretnék működésre bírni, de már több napi szívás után elértem arra a pontra, hogy leblokkoltam.
Nem értem miért nem indul el.
18F46K22-vel 16MHz-es Kristállyal 4PLL 64MHz-en járatva próbálkozom.
Csatolom az erre a célra létrehozott proteus projektem, amellyel elvileg könnyebb az eligazodás.
3-4féle kóddal is próbálkoztam és véleményem szerint működnie kellene, de vagy nulla vagy fars értéket mutat. ds18b20_def?.h néven megtaláljátok amikkel próbálkoztam.
Csatolom a külön fájlokat is és egy képet, hátha valaki nem rendelkezik szimulátorral.
Kérném a segítségeteket.
A hozzászólás módosítva: Okt 20, 2015
(#) kissi válasza don_peter hozzászólására (») Okt 20, 2015 /
 
Szia!
A szimulátorban a DS lekérdezését kellene leellenőrizned, hogy megfelel-e a specifikációnak, illetve, hogy mi nem felel meg és akkor meg tudod keresni a hibát ( DS adatlap kell hozzá!)!
(#) Mate78 válasza don_peter hozzászólására (») Okt 20, 2015 /
 
szia

PORTB,0-t meg kéne próbálni fixen bemenetnek állítani.Ha jól látom oda van kötve a szenzor.
A hozzászólás módosítva: Okt 20, 2015
(#) don_peter válasza kissi hozzászólására (») Okt 20, 2015 /
 
Ezt a DS lekérdezést nem értem.

Mate78: ezen már túl vagyok, eredménye semmi, de amúgy is programból állítgatja magának.
(#) kissi válasza don_peter hozzászólására (») Okt 20, 2015 /
 
Mit nem értesz és hol ?
(#) don_peter válasza kissi hozzászólására (») Okt 20, 2015 /
 
Amikor azt említed, hogy DS akkor a DS18B20 adatlapjára gondolsz?
Csatoltam.
Vagy esetleg a DQ lábra?
A lényeg, hogy működnie kellene, legalább is úgy látom, hogy mindenkinél működik, de nálam nem akar.
Már mindent átbogarásztam, töltöttem le forrásokat vagy 4-5 félét, de egyikkel sem működik, ezért is tettem fel a projektet, mert teljesen leakadtam vele.

ds1820.pdf
    
(#) kissi válasza don_peter hozzászólására (») Okt 20, 2015 /
 
Igen, az adatlap ( Bővebben: Link ) 13-16 oldalaira gondoltam főként, hogy itt teljesülnek-e a szimuláció alapján az időzítések !?

A "jelenlétet" visszajelzi ( presence impulzus !) ?
(#) don_peter válasza kissi hozzászólására (») Okt 20, 2015 /
 
Úgy hiszem visszajelzi, mert egy while ciklusban figyelem, hogy van e visszajelzés.
Ha van csak abban az esetben engedni tovább.
Nincs véletlen telepítve a proteus neked?
(#) kissi válasza don_peter hozzászólására (») Okt 20, 2015 /
 
Nincs, de gondolom, hogy az egyes lábakon a különböző szintek idejét is meg tudod vele vizsgálni ( szimulálni!), ezért írtam, hogy egyeztesd le az adatlapban található értékekkel ( ha nem működik, akkor ott lehet gond !) !
(#) don_peter válasza kissi hozzászólására (») Okt 20, 2015 /
 
Azt nem, de akkor lehet itt lesz a gond is.
Bár a kódba elvileg ez meg van adva, de hogy ez tényleg annyi ideig is tart amennyi meg van adva .... Passz.
Megnézem szkóppal, hátha mutat az valamit.
(#) kissi válasza don_peter hozzászólására (») Okt 20, 2015 /
 
Az sokat segíthet ! Ha nem az időkkel van a gond, akkor a kiadott kóddal vagy magával az eszközzel lehet, de ezt ilyen sorrendben kell végignézni !
A hozzászólás módosítva: Okt 20, 2015
(#) don_peter válasza kissi hozzászólására (») Okt 20, 2015 /
 
Jaja, ha tudnám használni
Bár ezen pontosan nem létszik, de az biztos, hogy a program próbál kommunikálni a szenzorral, hogy ez sikeres e... Passz, az idők elsőre rendben vannak, persze ez ettől még lehet problémás.

ds18b20_2.JPG
    
(#) kissi válasza don_peter hozzászólására (») Okt 20, 2015 /
 
Nem látom, hogy ez a kommunikáció mikor és hol történik, de ha ez az adó, akkor RESET-el kellene kezdenie, várni a jelenléti jelre és addig nem megkezdeni a kommunikációt ! Ezt nem látom rajta, ezt kellene megnézned először szerintem, ha ez megy, akkor utána nézni az időszeletek hosszát, a küldött adatot... különben csak próbálgatás ( márpedig igen sok kombináció van ! ) !
(#) pont válasza kissi hozzászólására (») Okt 21, 2015 /
 
Pont tegnap kínlódtam én is ugyan ezzel a jelenséggel, AVR fronton. Nálam az volt a baj, hogy RC oszcillátor 8MHz en 8as osztó bekapcsolva és a programban 1Mhz beállítva, amit hittem ugyan olyan pontos, mintha Rc 8MHz 8as osztó kikapcsolva és a programban 8MHz beállítva de csak az utóbbival működik a ds18b20. De mire rájöttem kiforrasztottam, beforrasztottam, átírtam 100x...
(#) don_peter válasza pont hozzászólására (») Okt 21, 2015 /
 
Milyen nyelven írtad meg hozzá a forrást?
Mármint a DS18B20-hoz?
Kipróbáltam azt is, hogy le vettem az MCU sebességét, de nem segített.
Alapon 16MHz-es kristállyal, 4PLL bekapcsolva 64MHz-en duruzsol a kicsike.
Az előbb levettem a PLL-t így 16MHz-n próbáltam, de úgy is ugyan az a gond.

kissi:
Ennyire nem akartam belemélyedni a programba, azt hittem megúszom, hogy ne keljen ezt is ennyire behatóan tudnom.
Feltételezem, hogy a reset jel után:
  1. void prvWireReset( void ){
  2.         WireDir = 0;
  3.         WirePin = 0;
  4.         Delay_Us( 550 );  
  5.         WirePin = 1;
  6.         WireDir = 1;                                                             // Set DS18B20 pin as input
  7.         Delay_Us( 70 );
  8. }

DQ lábnak alacsony szintre kellene beállni, ezzel a szintváltozással jelezné a jelenlétét a ds18b20.
Jól gondolom?

Mert nem áll be alacsony szintre sajnos..
(#) don_peter válasza kissi hozzászólására (») Okt 21, 2015 /
 
Közben kénytelen voltam bele mászni jobban az adatlapba és rájöttem, hogy nincs meg a reset jel után a jelenléti jel.
Szóval ez lehet a gond, csak nem tudom miért, mert az időzítések jók.

Mutatom a kódot.:
  1. void prvWireReset( void ){
  2.         WireDir = 0;
  3.         WirePin = 0;
  4.         Delay_Us( 550 );  
  5.         WirePin = 1;
  6.         WireDir = 1;                            // Set DS18B20 pin as input
  7.         Delay_Us( 50 );
  8. }
  9.  
  10. int prvWirePresence( void ){   
  11.         int i;
  12.         int Bit = 0;
  13.         //WireDir = 1;                          // Set DS18B20 pin as input
  14.        
  15.         for( i=480; i>0; i-- ){
  16.             Delay_Us( 1 );
  17.             if ( WirePinR == 0 ) Bit = 1;
  18.         }
  19.         while(1);        // Ezzel megakasztom a futást, hogy lássam van e visszajelzés
  20.         return Bit;
  21. }

És egyértelműen nem kerül alacsony színre a DS18B20 DQ lába.
(#) pont válasza don_peter hozzászólására (») Okt 21, 2015 /
 
Bascomban. Az idevonatkozó programrészből azért látszik, hogyan működik, ha A meg B megvan akkor már lehet visszaszámolgatni Celsiusba .
  1. Config 1wire = Portd.2
  2.  
  3.  
  4. Do
  5. 1wreset
  6. 1wwrite &HCC
  7. 1wwrite &H44
  8. Waitms 750
  9. 1wreset
  10. 1wwrite &HCC
  11. 1wwrite &HBE
  12. A = 1wread()
  13. B = 1wread()
  14.  
  15. Loop
Következő: »»   20 / 39
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem