Fórum témák
» Több friss téma |
Okés köszi az infót. Akkor nekiállok kísérletezgetni.
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.
Ez nem arra való. Ő egy szenzort akar használni két kontrollerrel, ha az egyikkel történne valami.
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.
Végső megoldásnak én is hasonlóra gondoltam, csak ha kihagyható egy ilyen plusz áramkör, akkor nem építeném meg elven.
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.
Mennyi volt a belső órajel frekvenciája (már ha jól állítottad be) és mennyi a kvarcé?
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.
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?
É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.
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.
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.
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
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á!)!
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
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.
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.
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 !) ?
Ú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?
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 !) !
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.
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
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.
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 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...
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:
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..
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.:
És egyértelműen nem kerül alacsony színre a DS18B20 DQ lába.
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 .
|
Bejelentkezés
Hirdetés |