Fórum témák
» Több friss téma |
A tokozást nem csak Z és U betűvel jelölik? Az adatlapon nem találtam P jelöléssel tokozást, ezért is írtam amit írtam.
A sima Ds18B20-nak ami to92-es tokos nincs jelölve a tokozása nem? Vagy csak elnéztem valamit?
Szia! Én ezt láttam, de már én is össze vagyok keverve, ezért kérdeztem.
DS18B20P ? Jobb oldalon a tokozásoknál látok P és Z jeleket a tok fajtájától függően. A hozzászólás módosítva: Jan 5, 2013
Ez a PAR verziót jelöli, a simával akár 2-3 db is megy hibátlanul.
Egyébként azóta még küzdöttem vele és szinte biztos, hogy a bekötéssel van gond, mivel a DS18B20 is használható parazita bekötéssel. Ha "parazita módon kötöm be akkor ugyanúgy a 85000-es értéket kapom vissza és nem a helyes hőmérsékletet. Ezért valószínűleg én értelmezem rosszul a parazita kapcsolást. Mondjuk ennek ellenére azt nem értem, hogy valamilyen szinten mégis kommunikál a Raspberry Pi-vel az eszköz, hiszen a kernelmodul betöltésekor az IC ID-t rendesen megkapja a Raspberry, és a device fába is bekerül az eszköz... Én a parazita bekötést egyszerűen úgy csináltam , hogy az IC 1 és 3. lábát összekötöttem rákötöttem a föld -re a 2-es lábat pedig 4,7k-s ellenállással tápra kötöttem meg direktbe a jelbemenetre a GPIO porton.
Sziasztok!
Nem tudom mennyire járok jó helyen, ha rossz topikban lennék, ez esetben bocs. Ez alapján építettem egy programozót a DS 1821C+ típusú hőszenzornak. Az ott linkelt programot használtam hozzá. Elsőre össze is jött, magától megtalálta a szenzort a megfelelő porton, viszont mióta átállítottam termosztát módba, bármit csinálhatok a programban, vagy átdughatom a másik portba, azt írja állandóan, hogy az eszköz nem található. Nem tudom mi lehet a probléma.. remélem ti tudtok segíteni. Előre is köszi a segítséget!
Mindegyiket lehet PAR-ba kötni, nem tudom miért jelölnék ezt külön, lehet, hogy ezeket csak PAR-ba lehet?
Igazából nem tudom mitől lehet a jelenség, lehet, hogy a program nem jól kezeli a PAR bekötést. Láttam olyanokat, hogy egy FET-el töltötték fel a vonalakat kezdéskor, de az nem sorosra volt kötve...
Felrakom a bekötéseket, hátha egyből kiszúrjátok mi a hiba.
Az első amikor tökéletesen működik a hőmérő....
A következő verzió amikor ugyanazt az IC-t sima DS18B20 tehát nem a P-s végűt. Parazita módon kötöm be (szerintem ezt csinálom rosszul).
Érdekes módon valamilyen szinten mégis kommunikál a Raspberry-vel.. Így kapom a hibás 85000-as eredményt a kiolvasáskor ami fix és nem is változik...
Próbáld meg a 4k7-et 3k3-ra csökkenteni. Egyébként nem látok eltérést az adatlaphoz képest.
Most nem vagyok képbe, de ha PAR módban használjuk, nem kell más utasításokat kiadni a táp felépülése miatt a további utasítások előtt? Nekem a kezelés gyanús.
Nem csak annyi a te problémád, hogy a hőmérséklet konverzió idejére nem elég a csak ellenállásos felhúzás az adatlábon, hanem erősebb felhúzás kellene hozzá? Ennek hiányában a szenzor vélhetően resetelődik, amikor elindul a konverzió, ezért kapod a következő kiolvasáskor ismét a 85 fokot. DS18B20 adatlapján nézd meg a négyes képet. Kontroller lábról táplálva külső mosfet nem kell, mert egyszerűen logikai magas szintre kell csak a lábat húzni, és meg is van a nagyobb áramú táp a szenzor számára (ha nem akarunk túl sok szenzorral egyszerre konverziót csináltatni). Raspberry lábának terhelhetőségét nem tudom, de egy szenzort szerintem az is simán elbír, így maximum nem egyszerre indítasz konverziót az összes szenzoron.
Amúgy szerintem csak annyi a különbség a -PAR és az anélküli jelölésű szenzor között, hogy előbbinek nincs is bekötve a tokban a Vdd lába. Illetve értelemszerűen hiányzik a READ POWER SUPPLY [B4h] parancs, bár igazából az is lehet, hogy ez is megvan, csak nincs értelme foglalkozni vele, hiszen mindig azt adja vissza, hogy parazita táplálással megy a szenzor. A hozzászólás módosítva: Jan 5, 2013
Köszönöm a tippeket. Jövő hét elején kipróbálom a kisebb ellenállással, aztán beszámolok a tapasztalataimról.
Esetleg valakinek valami ötlete #1360800 erre?
A hozzászólás módosítva: Jan 5, 2013
Az a baj, hogy a kisebb ellenállás eléggé határeset lesz. Ha a minimális tápfeszültséget vesszük, ami 3V, meg mondjuk 5V-os a tápunk, és az adatlap szerinti maximum 1,5mA áramfelvételt vesszük alapul, akkor maximum (5-3)/0.0015=1333ohm ellenállást lehetne használni, vagyis mondjuk 1200 ohmost. Viszont a szenzor csak 4mA áramot tud húzni, ha logikai nullát kell kiadnia, ezzel szemben 5V/1200=4,1mA, vagyis túlmegyünk a szenzor határán. Tehát inkább az aktív felhúzáson kellene gondolkozni.
Akkor meg felesleges is kisérletezni az ellenállással, mindenképpen kell az aktív felhúzás. Nem nagy valami, átkapcsolod kimenetté a lábat és magas szintre húzod, miután kiadtad a konverzió parancsot (adatlapban nézd meg, mennyi időd van erre, de ha rögtön csinálod, akkor szerintem bőven benne vagy), utána pedig amikor bármit akarsz vele kommunikálni, akkor csak visszakapcsolod bemenetté a lábat és már megy is a dolog.
A hozzászólás módosítva: Jan 5, 2013
Ez fordul? Includok hianyoznak szerintem.
Szerintem a RES_SHIFT rossz. 16-al kell osztani ha minden igaz. En igy konvertaltam: static float ds18b20_convert_temperature(unsigned int rawTemp) { float result = 0; int temp = 0; temp = (int)rawTemp; result = temp; //printf("Raw:%u\r\n", rawTemp); //printf("Raw:%d\r\n", temp); result /= 16.0; //printf("Raw:%d\r\n", (int)result); return result; }
Szia kyrk. Mi az a includok? Nem értem én ezt meg mondom őszintén én azt hitem hogy olyan mint 1 termosztát minél melegebb van annál jobban ad plusz áramot(+5V) az icé fele ha hideg van akkor meg halad a 0 fele, mint a feszültség mérő olyanra gondoltam. De akkor nem vagyok képben nagyon ugye?
Nem ez nem olyan. Ez digitalis jelet ad, illetve programozhato pl milyen felbontassal merjen.
160 ha osztom akkor pl 20 jon ki. Lehet hogy 20 fok volt ott ahol mertel? Monduk illene ingadoznia, illetve hogy pont 20.0 fok legyen eleg ritka. Persze soha nem tudni. Pl 20,3 jobban hiheto.
Van itt a műhelyben 1 hőmérő(eredetin gyári) itt mellette de az jelen pillanatban mikor 168 at ír ki a pic ő 19,1C ot. a programon belül hol van az osztás a RES_SHIFT az lenne az???
Ezzel probald ki hatha:
const unsigned short RES_SHIFT = 4; Elvileg alapbol 12 bites a cucc es akkor 16-al kell osztani az jobbra shift 4-el.
Pill ki próbálom csak annyi változót most, hogy const unsigned short TEMP_RESOLUTION = 12; ezt át írtam mert nekem 9 volt a 12 helyett és azota 85 C-ot mér. most mit csináljak. Addig meg nézem a tiedét de elméletileg ugyan az lesz az eredmény de nézem.
Azt ki tudod iratni, hogy a szenzorrol mit olvas be? Lehet mar az eleve rossz. Gondolom uj a szenzor. Felhuzoellenallas ottvan?
Ow_Reset(&PORTE, 2); // Onewire reset signal
Ow_Write(&PORTE, 2, 0xCC); // Issue command SKIP_ROM Ow_Write(&PORTE, 2, 0x44); // Issue command CONVERT_T Delay_us(120); Ow_Reset(&PORTE, 2); Ow_Write(&PORTE, 2, 0xCC); // Issue command SKIP_ROM Ow_Write(&PORTE, 2, 0xBE); // Issue command READ_SCRATCHPAD temp = Ow_Read(&PORTE, 2); temp = (Ow_Read(&PORTE, 2) << 8) + temp; Ezekre a sorokra gondolsz. Igen új és ott a felhúzó ellenállás is anélkül nem is ír ki semmit csak 0-kat.>>
Ebbol a temp erteket kellene egy az egyben az LCDre kiirni. Debuggered nincs esetleg? Azzal is ra lehetne nezni. Ha 20 fok van akkor kb 320at kellene latni.
Esetleg próbáld meg növelni a convert_t után a delay értéket. Az adatlap szerint 12 bitnél 750 ms a konvertálási idő.
Sziasztok.
Egy állitható hőkapcsolót szeretnék épiteni. Az érzékelő kb 40m távolságra lenne az elektronikától,valamint a vezeték egy vastagabb kábel (1.5KW-os motor táplálása) mellett lenne elvezetve. Mit javasoltok,milyen szenzort használjak,milyen vezetékkel hogy ne legyen gondom a zavarokkal? Gondoltam ds1820ra,vagy valamilyen kt,kty érzékelőre. Nincs szükségem nagy pontosságra sem széles tartományra.20-50 fokig kellene mérni 1-2fok hiba nem lenne gond.Ami a feldolgozást illeti,lehet analóg vagy digitális is,megoldom egy piccel.
Milyen vezetéket használjak?Gondoltam valami arnyékolt mikrofonkábelre vagy ilyesmi...
|
Bejelentkezés
Hirdetés |