Fórum témák
» Több friss téma |
Szia! Ha két szenzort akarok összehasonlítani, minden esetben egy fa ruhacsipesszel összefogatom őket. Másképpen soha nem fognak egyforma értéket mutatni. Sokat szórakoztam én is azzal, hogy közel rakom őket egymáshoz, de így szinte mindig volt eltérés. A csipeszelés óta nincs ilyen problémám.
Nekem nem gond az eltérés, hanem az a fura, hogy a hiba mértéke megváltozott. Normál esetben 0.5-0.6 fok a hiba, ha megcserélem a kettőt, akkor 0.1-0.2fok. Ha a hiba a szenzorban lenne, akkor a hibának mennie kellett volna a szenzorral együtt elméletileg. Most visszacseréltem a szenzorokat az eredeti felállásba, és maradt a 0.5-0.6fok hiba. Mindkettőnél ugyan az a függvény végzi a hőmérséklet kiolvasást, de szerintem itt nem lehet elrontani, hiszen bitekről van szó, az meg elég stabil dolog... Mindkettő IC-nél 4k7 ellenállás van. Megcseréltem a tápot, mert lehetséges, hogy az egyik 5V-ot, a másik meg 5.2V-ot ad, de így maradt a hiba, tehát a táp nem befolyásolja. Azért nem csipeszelném össze őket, mert akkor ha az egyik melegszik, akkor a hő átjut a másik IC-re, esetleg a csipesz felé eltávozik. Engem viszont a nyers hőmérséklet érdekelne, hogy melyiknek lehet hinni, vagy melyik pontos, esetleg melyik melegíti magát, stb. Annyi különbség van, hogy amelyik IC kevesebbet ír ki, annak 12cm a kábele, míg a melegebb IC-nek csak 6cm. De ha megcserélem a kettőt, és a hiba megváltozik, akkor nem a kábel hossza az ok.
A hozzászólás módosítva: Ápr 27, 2015
Szia!
A program ugyanaz mind a két eszközben ( nem csak a lekérdező függvény?!) ? Ha véletlenül nem, akkor a master lekérdezési idei is melegíthetik szerintem többé-kevésbé a chip-et... ! szerk.: persze, ez csak a kábel hossz miatti hűtés ellenőrzése után ! A hozzászólás módosítva: Ápr 27, 2015
Írtam egy ilyen programot,de a ds18b20-am nem akar kommunikálni.A jelenlétre reagál. Utána van gond.Nem tudom hol rontottam el,a main()-ben van a hiba,vagy az adatIras()-ban, vagy az adatOlvasas()-ban?Az LCD-re 8 db 1-est ír ki,ha lecsökkentem a delay-t,akkor 8db nullát.
Sokáig nézegettem,aztán rájöttem,hogy a main()-ben a for ciklusnál a homerseklet[i] helyett homerseklet[0]-t tettem.Most már majdnem jól kiírja a vett hőmérsékletet,csak az első bit mindig lemarad.
Sziasztok!
Megépítettem ezt de olyan problémám lenne vele hogy 217C körüli értéket ír ki mi okozhat ilyen problémát? Válaszotokat előre is köszönöm!
Amit megépítettél, az DS1820 szenzorra lett tervezve, te pedig valószínűleg DS18B20 -as szenzort használsz. Utóbbinak nagyobb a felbontása.
DS1820: 0,5 °C DS18B20: 0,0625 °C Az okosabb 8x pontosabban mér, mint a butább. Ha a 217 -et elosztod nyolccal, kijön 27.125 °C, ami perpillanat nagyon is valószínű érték.
Áhh értem és ezt a hibát hogyan tudom orvosolni?
1: Másik szenzort használsz. 2: Átírod a programot.
Javaslom, kérdezz rá erre ebben a topikban: PIC kezdőknek. Én eddig tudtam segíteni.
Üdvözletem!
Van 4db DS18B20 vízálló tokozású szenzorom. A szenzorok1m es kábeljét megtoldtam még 1.5 m-el. A szenzorokat így egy pontban külön ellenállásokkal kötöttem be. Az a gond hogy ha mind a 4 szenzort felteszem akkor nem tudja kiolvasni őket. Ha csak 2 van a rendszerben akkor minden gond nélkül megy az olvasás. Hogyan javíthatom ki a hibát. Ha úgy nézm ez 2,5 m-es vezetékeken csillagpontos megoldás? Daraboljam szét az összes kábelt és fűzzem fel egymás után őket. Látványban nem annyira kultúrált ez a megoldás
Nem a legelegánsabb megoldás, de működnie kellene ilyen távon. Lehetséges, hogy az ellenállások párhuzamos kapcsolása miatt már túl kis értékű az eredő, már ha úgy vannak kötve, ahogy tippelem (szenzorok párhuzamosan). Négy szenzorhoz egy ellenállást, pl. 3,3 kOhm -ot használj.
4K7 ellenállások vannak. És ahogy sejted párhuzamos az eredő ha jobban megnézem. Így a 4db 4K7 1db 1.175 KOhm nak felel meg. Leveszem a jumpereket megnézem akkor mi történik.
(Az alap panelt úgy terveztem hogy az adatlábat jumperrel lehet VCC vagy GND-re kötni.)
Betetem mégegy ellenállást a többi mellé párhuzamosan. Így már ki is tudom olvasni a szenzorokat. Az eredő ellenállás 1K körül lehet.
Üdv.
A szenzor kiolvasása megoldódni létszik. Át kellett tennem a felhúzó ellenállást a szezor csatlakozási pontjához. Ami gondom most van az a felbontás. Jelenleg átállítódott 9 bitesre a 12 ről. Nekem meg a 12 bites kell. Tudja valaki hogy tudom visszaállítani. A leírás szerint a következő kóddal működniea kellene de nem sikerül.
A hozzászólás módosítva: Aug 21, 2015
Inkább 0xCC, 0x4E, 0xFF, 0xFF, 0x7F parancsok kellenének a felbontás 12 bitesre állításához, majd Reset után megint 0xCC és 0x48 a felbontás eltárolásához.
A hozzászólás módosítva: Aug 21, 2015
Az alap felbontás 12bit, ha nem állítasz semmit.
Nem történik semmi.
Azért 5F mert most egy keveset használt szenzoron próbálom átállítani. Itt meg még alapból 12 bites. A hozzászólás módosítva: Aug 21, 2015
Igen tudom. De volt egy kis gond a rendszerel és átállította magának 9 bitesre. Nem volt jó a felhúzó ellenállás. Hogy miként állította át lövésem sinycs.
Véletlenszerűen nem fog átállni. Ha mégis, következő tápelvételkor visszaáll az eredeti értékre. Ha el lett volna mentve az EEPROM-ba, azt hiszem akkor is mindig be kell tölteni a regiszterekbe az EEPROM tartalmát. De az biztos, hogy véletlen nem állítódik el úgy, hogy még el is menti. Miből gondolod, hogy csökkent a felbontás? Nem változtattál a programon is eközben?
Ez a rész szerintem butaság: raw = (raw & 0xFFF0) + 12 - data[6];
Ezzel mindig kb. fél fokkal többet kapok, adatlapban sem találtam erre való utalást. az adat[7]-et vizsgálja, de az mindig 10h értékű (Reserved), tehát a feltétel mindig igaz. Erre hozzáad kicsit, meg kivon egy szintén Reserved regisztert. A hőmérséklet csak az első két byte-ban van eltárolva. Így is 16bit-ünk van, amiből 12bit a valós, ha lenne még valahol hőmérséklet eltárolva, az a maradék szabad 4ben simán elférne valószínűleg. Én kitöröltem a kódomból. A hozzászólás módosítva: Aug 22, 2015
Itt még mindig 0x5F szerepel 0x7F helyett
Olyan kérdésem lenne, hogy van 1db ds18b20as szenzor, és ennek a jelét, 2db különálló arduinóval fel lehet e dolgoztatni? Ilyen tartalék rendszer lenne a második modul, ha az elsővel történne valami. Ezért lenne szükség erre a megoldásra.
Ha a tartalék kontroller nem húzza le vagy fel az adatlábat, akkor megoldható.
Köszi! Kell közé valami "elválasztó" elektronika, vagy a programba valami kiegészítés? Vagy mehet egyenesen a tartalékba is? A táp nem az unoról megy.
Mórickaábrát csatolom A hozzászólás módosítva: Aug 23, 2015
Így működnie kell. Arra figyelj, hogy a tartalék Uno azon lába, amelyikre a hőmérő csatlakozik, nem terhelje le az adatvonalat egyik irányba se. Azt már tőlem ne kérdezd, hogyan lehet megcsinálni...
|
Bejelentkezés
Hirdetés |