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   13 / 39
(#) watt válasza atgyuric hozzászólására (») Márc 22, 2013 /
 
Kondit ha nem teszel, bármikor előjöhet hiba. Ez alapvető dolog.
(#) janimester hozzászólása Ápr 22, 2013 /
 
Sziasztok, azzal a kérdéssel fordulnék hozzátok hogy valaki nem e tud ds18b20 szenzorra olyan MikroC-ben megírt termosztát programot amit én fel tudnék használni és változtatni itt ott sajnos neten csak basic-est találtam meg lefordított hex-et. Egy motor műszerfalába kellene ezzel kapcsoltatnám a vízpumpát beálltható hőfokon és azért muszály hogy c-ben legyen mert már nagyon sok féle dolgot megcsináltam programügyileg a műszerben és működik is nem akarom csak ez miatt más nyelven előröl kezdeni az egészet.
(#) Kovabe hozzászólása Jún 11, 2013 /
 
Sziasztok
Holnap be kellene kábeleznem egy szenzórt de nem tudom mit tegyek be, a hely mindenféle vezetékek a környezetben és kb15-20m távolság a PIC illetve a DS között. Van esetleg valami olcsó de jó ötlet? Esetleg egy árnyékolt riasztosvezeték vagy esetleg UTP?
(#) kyrk válasza Kovabe hozzászólására (») Jún 11, 2013 /
 
En mar sokmindent lattam, pl motorok mellet kihuzott mukodo I2C-t. Hiszek a csodakban.

SW szempontbol ha van CRC akkor jarhato a dolog, mert hiba eseten ujra lehet kerdezni az eszkozt. HW-esen nem tudom, en nem kozkaztatnam meg. Minimum valami differencialis buszt valasztanek.
(#) Villamos válasza janimester hozzászólására (») Jún 29, 2013 / 1
 
unsigned int temp_fraction;
const unsigned short TEMP_RESOLUTION = 12;
char *text = " 00.0";
unsigned temp;

void Display_Temperature(unsigned int temp2write) {
const unsigned short RES_SHIFT = 4;
char temp_whole;
// check if temperature is negative
if (temp2write & 0x8000) {
text[0] = '-';
temp2write = ~temp2write + 1;
}
// extract temp_whole
temp_whole = temp2write >> RES_SHIFT ;
// convert temp_whole to characters
if (temp_whole/100)
text[0] = temp_whole/100 + 48;
else
text[0] = ' ';
text[1] = (temp_whole/10)%10 + 48; // Extract tens digit
text[2] = temp_whole%10 + 48; // Extract ones digit
// extract temp_fraction and convert it to unsigned int
temp_fraction = temp2write << (4-RES_SHIFT);
temp_fraction &= 0x000F;
temp_fraction *= 625;
// convert temp_fraction to characters
text[4] = temp_fraction/1000 + 48; // Extract thousands digit
// Display temperature on LCD
Lcd_Out(1, 10, text);
}

void main() {
INTCON = 0; // All interrupts disabled
ANSEL = 0x04; // Pin RA2 is configured as an analog input
TRISA = 0x04;
ANSELH = 0; // Rest of pins are configured as digital
ADCON1 = 0x82; // A/D voltage reference is VCC
TRISA = 0xFF; // All port A pins are configured as inputs
C1ON_bit = C2ON_bit = 0; // Disable comparators

///////////////////////////
Lcd_Init(); // Initialize LCD
Lcd_Cmd(_LCD_CLEAR); // CLEAR display
Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off
/////////////////////////
do {
//--- perform temperature reading
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_ms(750);
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;
//--- Format and display result on Lcd
Display_Temperature(temp);
// Print degree character, 'C' for Centigrades
Lcd_Chr(1,15,223); // different LCD displays have different char code for degree
// if you see greek alpha letter try typing 178 instead of 223
Lcd_Chr(1,16,'C');
} while(1);
} // End main()

Tessék remélem tudtam segíteni!!
A hozzászólás módosítva: Jún 29, 2013
(#) Wudoou hozzászólása Aug 18, 2013 /
 
Sziasztok!
Egy elég félelmetes projektbe vágtam a fejem és akinek picit több tapasztalata van ds18b20-as érzékelők terén, attól kérnék egy kis segítséget.
Szóval silók hőmérsékletét szeretném mérni vele, a silóba 24 mérési pont kell 3x8-as oszlopokban.
Meg is írtam rá a kódot, csak nem igazán tudom, hogy stabil lesz-e. Mert legelőször próbapanelben raktam össze, csili-vilin működött. Utána csináltam egy nyákot hozzá+ a ds-eket 1 méteres vezetékekkel összefűztem. Mindjárt meg se nyikkant. Csökkentettem a felhúzó ellenállást 1,5K-ra, akkor megjavult. Itthon futtattam kb. 1-2óráig. Majd másnap ismét bekapcsoltam, de már a reset-re 0 jött, vagyis nincs eszköz, pedig 24 volt rajta, ebből 15 kábelen.
A reset függvénybe beszúrtam +50 us késleltetést, meg is javult. Valószínű a kábel jelterjedési ideje miatt.
Szóval a kérdésem az lenne, hogy szerintetek érdemes erőltetni a ds-eket?
Gondolkoztam leválasztáson, de bidirekcionális optocsatolóról nem igen tudok, mivel a ds-ek 1 vezetéken beszélnek.
A siló 14 méter mély, így ha a vezérlőt kb. 1,5 méter magasra teszem, akkor is a vezetékkel fel kell menni majd lemenni... Ez így legalább 40-50 méter, mert ugye 3 oszlopban kell mérni.
Minden ötlet érdekelne, akár maszekban is.
(#) watt válasza Wudoou hozzászólására (») Aug 18, 2013 /
 
A ds-ek táplábai mellett ott vannak a 100n..1µF-s kerámiák? Külön tápot kapnak, gondolom. Egyébként az időzítések beállításával lehet próbálkozni, elvileg mennie kellene.
(#) Wudoou válasza watt hozzászólására (») Aug 18, 2013 /
 
Egyenlőre nem mindegyikhez tettem, csak minden oszlophoz egyet. De még ez csak próbakábel. Egyenlőre azt sem tudom, hogy a hüvelyes érzékelőket tegyem-e fel, vagy saját magam csináljak valami tokozatot neki. A tulaj nem akar masszív csövezést, csak egy "lelógó kábelt". Szóval még azt sem tudom, hogyan kellene elhelyezni. A táp közös a PIC tápjával, de természetesen nem parazita módban megy.
Idézet:
„Egyébként az időzítések beállításával lehet próbálkozni, elvileg mennie kellene.”
Ezt úgy gondolod, hogy hasraütésre, míg jó nem lesz, vagy számoljam össze a vezetékhosszakat (CAT5 UTP-n fog menni), vagy számoljam ki a kábel időállandóját és minden várakozáshoz, legyen az read_bit write_bit... adjam hozzá?
(#) watt válasza Wudoou hozzászólására (») Aug 18, 2013 /
 
Én maradi vagyok, először próbálkozok, aztán számolok, ha végképp nem megy! Nézd meg milyen határértékek vannak és a legnagyobbakkal próbálkozz, ami még működhet. Ha a sebesség elég, akkor nem is kell gyorsítani.

Viszont érdemes lenne minden ds táplábához egy smd kerámiát beforrasztani. Ez csodákra képes, nem beszélve arról, hogy így helyes.

Esetleg zsugorcsövezés jó lehet, "tokozatnak". Léteznek olyan műanyag csövek, amik megolvadnak a zsugórcsőben a rámelegítés közben, így vízhatlan lesz az egész. Önszabályzós fűtőkábeleknhez szoktak ilyeneket adni, igaz nagyobb átmérőben. Lehet, hogy bármilyen műanyagcső megfelelhet, ami erősen meglágyul 150C körül.
(#) Wudoou válasza watt hozzászólására (») Aug 18, 2013 /
 
Én valami ilyenre gondoltam.ds18b20 kép

A 3 oszlopos érzékelőt külön indítsam el a vezérlő dobozból, vagy majd a siló tetején elosztom őket? Mert akkor párhuzamosan futó vezetékeket csinálok belőle, az is baj lehet.
Elég az UTP keresztmetszete? Vagy esetleg fogjak össze több eret? Most úgy van, hogy narancsfehér +, narancs - , zöldfehér adat, többi GND-re lekötve(táp negatív), de csak a vezérlő doboz oldalt. A ds-eknél nem. Vagy ne kössem le őket, mert így csak kondenzátort csinálok belőle?
(#) watt válasza Wudoou hozzászólására (») Aug 18, 2013 /
 
Én egy-egy csavart érpárat használnék a tápnak(narancs pár és a kék pár) és egy szálat az adatnak. A többi eret nem kötném be sehová.
Mérőpontoknál leágaztatnám röviden, ha lehet. Ha nem lehet röviden(max. 10cm), akkor az egész UTP kábelt elvinném a mérőpontig és onnan vezetném tovább akkor is, ha egy szakaszon oda-vissza dupla kábel lenne.
(#) Wudoou válasza watt hozzászólására (») Aug 18, 2013 /
 
Idézet:
„és egy szálat az adatnak”
Úgy érted, hogy egy eret? Pl. zöld?
Valahogy így nézne ki(lásd melléklet).
Azt elfelejtettem mondani, hogy a silóban kukorica, vagy gabona lesz.

silo.JPG
    
(#) watt válasza Wudoou hozzászólására (») Aug 18, 2013 /
 
Igen.
Nem lehetne akkor, 3 kimenettel, 3 külön kört létrehozni? Az érzékelőket pedig a kábelre rögzíteni valahogy közvetlenül?
A hozzászólás módosítva: Aug 18, 2013
(#) Wudoou válasza watt hozzászólására (») Aug 18, 2013 /
 
Dehogynem. Csak nem tudom, hogy hogyan fog beleférni a PIC memóriájába.
Mert most úgy van megírva, hogy van két tömb
  1. signed char tomb[24][4];                        //átlagok számításához
  2. int atlag[24];
az elsőben az utolsó 4 mérés, az atlagban a 4 mérés összege van.
Az LCD-re az atlag/4 van kiírva. Szóval 16f886-os PIC-et használok hitech C-ben írva a kód.
Plusz most írom a modbus ascii protokollt a távoli lekérdezéshez.
Így a programmemória kb 70%, az adatmemória viszont 85%-os kihasználtságon van.
Idézet:
„Az érzékelőket pedig a kábelre rögzíteni valahogy közvetlenül?”

Jó lenne, csak félek, hogy a termény szétszaggatja töltés, vagy ürítés közben.
(#) watt válasza Wudoou hozzászólására (») Aug 18, 2013 /
 
A memóriát nem nagyon érinti az egy kimeneteshez képest, ha ugyanazokkal a rutinokkal csak más kimenetre váltva egymás után olvasod ki a vonalakat.

A letépést csak védőcsővel lehetne megoldani.
(#) Wudoou válasza watt hozzászólására (») Aug 18, 2013 /
 
A védőcső rendben is lenne, csak akkor meg nem fogja átvenni a takarmány hőmérsékletét a ds.
Most voltam kint a terepen, belenéztem a silóba, hát...
14 méter mély, 10 méter átmérőjű és gyakorlatilag semmi nincs, amihez rögzíteni lehetne, csak vagy az oldalfalhoz, de akkor az nagyon szélen van, vagy felülről leengedni, de akkor meg hogy védem meg a mechanikai sérüléstől?
Ha fentről leengedek egy csövet és ahol az érzékelő van, oda egy T idomot tenni és kibújtatni az érzékelőt, az rendben lenne, csak akkor is rögzíteni kell a csövet, hogy ne táncoljon a silóban. Ráadásul az alja egy ürítési kúp, mint ahogy a teteje is kúpos.
(#) Bakman válasza Wudoou hozzászólására (») Aug 18, 2013 /
 
Én valami ilyesmivel rögzíteném a csövet (lásd melléklet). sőt, ha nagyon biztosra akarsz menni, a szárakat beleragasztod a furatba. Van több ilyen termék, pl. ez is ilyen: betonragasztó. Viszont, a cső rögzítése eléggé ipari alpinista munkának tűnik.

Ha nem használtál még ilyen ragasztót, akkor pár jó tanács: első lépésként a furatok elkészítése, majd a ragasztás. Ha a keverőszárba beleköt a ragasztó, akkor nincs mese, másikat kell rátenni. A ragasztó 30 °C-on pár perc alatt megköt, tehát igyekezni kell vele. Ragasztó a furatba, amit előtte kiportalanítottál, bele a menetes szár és usgyi a következőhöz.

303821.jpg
    
(#) Wudoou válasza Bakman hozzászólására (») Aug 18, 2013 /
 
Igen, én is gondoltam ilyesmire, csak a siló nem beton, csak a lába.
A siló horganyzott acél, műanyag festékkel lekenve.
Attól a bilincsezés nem lenne gond, csak azért 10 méter átmérőjű a siló, és legalább a sugár 1/3-ára be kellene engedni az érzékelőket, hogy helyes képet kapjak. Én először úgy gondoltam el, hogy végigengedni egy horganyzott acélcsövet méterenként egy hollandival és egy T idommal, a hollandinál bontható, a T idomnál kidugni az érzékelőt és menetes szárral, vagy köracéllal az oldalfaltól végigengedve fel a tetejéig. Az egyszer biztos, hogy alpinista munka.
Másra nem merem bízni.
Persze a NIVELCO-nak vannak ilyen több ponton mérő szenzorai, amik gyakorlatilag egy drótsodronyból állnak a végén egy nehezékkel és + 400 darab ezresért lehet is mosolyogni+ 200 darab ezres a feldolgozó egység.
(#) watt válasza Wudoou hozzászólására (») Aug 18, 2013 /
 
Fogsz egy 15..20mm-es alucsövet, "hátulról" kifúrogatod ott, ahol az érzékelő kell legyen, odaragasztod az érzékelő íves fejét a szembelévő falra FBS-el és kész az érzékelő. A UTP simán elfér az érzékelő mögött. Kicsit ügyeskedni kell, de nem vészes szerintem. A 14m hossz nem semmi, ilyen hosszon mindenképpen kell valami, ami mechanikailag megvédi a kábelt és az érzékelőt, mert a bezúduló gabona szerintem még a csupasz UTP-t is eltépné! A hőfokot jól fogja mérni a csövön keresztül is, sőt.
(#) Wudoou válasza watt hozzászólására (») Aug 18, 2013 /
 
És a cső nem fogja "átvinni" a hőt az egyik mérési pontból a másikba?
Amúgy jó ötletet adtál, csak akkor is valahogyan rögzíteni kellene a csövet, mert ugye nem rakhatom a siló oldalára, mert akkor az messze van a közepétől.
A kábelen már gondolkodtam, hogy bele kellene rakjam beton flex csőbe, nagyon masszív, mégis hajlékony.
Úgy érted az érzékelő elhelyezését, hogy gyakorlatilag a csőre hátulról egy kis ablakot vágni és odaragasztani a cső szembeni falára? Igen, ez már stabilnak tűnik, bár feltéve, ha sűrűn meg van erősítve, bilincsezve a cső.
Visszakanyarodva a ds időzítés problémához, a reset parancsba beszúrtam + 20us késleltetést és láss csodát szépen müxik.
A write, read_bit-hez hozzá sem nyúltam.
A védelemről: Van valami ötletetek hogyan lehetne védeni a PIC lábát? Azért 50-60 méter kábel 24 ds18b20 nem semmi egy PIC-nek szerintem.
(#) watt válasza Wudoou hozzászólására (») Aug 20, 2013 /
 
Biztosan elkeni kicsit, de elég messze lesznek egymástól a mérőpontok, nem nagyon zavarnak be egymásnak. Esetleg lehet savállóból, az nem vezeti annyira a hőt és sokkal erősebb is és jobban bírja a korróziót is (és dragább is).
Igen, úgy értettem a csőre ablak vágást.
Örülök, hogy ilyen kis módosítással is működik, de majd a helyén!
A PIC lábára tegyél egy diódát a Vdd felé katóddal, és a Vss felé anóddal. Sajnos a gyors Shotky diódáknak elég nagy kapacitásuk van, ezért valami 1N4148-at érdemes kipróbálni.
A hozzászólás módosítva: Aug 20, 2013
(#) Wudoou válasza watt hozzászólására (») Aug 21, 2013 /
 
Értettem. Köszönöm szépen az eddigi segítséget, mindent megfogadok, amit mondtál. Még egy utolsó kérdésem lenne. Érdemes-e optocsatolóval leválasztani az RS485 kimenetemet?
Vagyis még a max485 előtt, PIC után úgy, hogy a VDD-je a max485-nek és a PIC-nek is azonos(7805)? Szóval 1 db 7805 látná el a panelt 5v-al. Ha bután fogalmaztam, akkor csatolok egy kapcsolási rajzot.
(#) watt válasza Wudoou hozzászólására (») Aug 21, 2013 /
 
Ha egy a táp, akkor nem érdemes, de léteznek olyan RS485 csatolók, amik leválsztottak, opto sem kell benne van minden az IC-ben. Ilyen a MAX1480BCPI. Igaz, nem tudom kapható-e!? Gabonánál a statikus feltöltődés előfordulhat, érdemes lehet a leválasztás távoli kommunikációnál.
(#) potyo válasza watt hozzászólására (») Aug 21, 2013 /
 
Viszont nem árt össze is földelni valami módon, mert ha pl. el lesznek szigetelve a cuccok, de feltöltődik mondjuk 20kV-ra valamelyik, aztán átüt az optós leválasztó, az kellemetlen tud lenni. Én a földeket összekötném mondjuk 50-100k ellenállással. Így nem lesznek mereven összekötve a cuccok, viszont nem tud nagy statikus feltöltődés sem kialakulni közöttük.
(#) watt válasza potyo hozzászólására (») Aug 21, 2013 /
 
Egyetértek.
(#) Wudoou válasza watt hozzászólására (») Aug 21, 2013 /
 
Per pillanat úgy van a prototípus megcsinálva, hogy nincs optoleválasztás, viszont a GND az átalakítónak ki van vezetve egy soros 100ohmos ellenálláson keresztül mind a PIC-nél, mind a PC oldalt, ami RS232-re alakít. És ezek össze vannak kötve. Az UTP kábel úgy van bekötve, hogy 1-1 érpár van használva, vagyis A- narancsfehér narancs, B- zöldfehér zöld, GND-barnafehér barna.
Kékfehér kék, sehova.
Ez így jó? Mármint nem gond, hogy elvileg a csavarás miatt lesz zavarérzéketlen az UTP és én nem ereket, hanem érpárokat használok?
Ja, és a PC oldalt egy másik 12dc tápból van megcsinálva az átalakító 5v-ja.
A hozzászólás módosítva: Aug 21, 2013
(#) watt válasza Wudoou hozzászólására (») Aug 21, 2013 /
 
RS232-nél nem számít a csavarás, csak RS485-nél.
A probléma a gabona bezúdulásakor keletkező statikus feszültséggel lehet...
Kicsit elkanyarodtunk.
(#) kissi válasza watt hozzászólására (») Aug 21, 2013 /
 
Szerintem nagyobb gond van a kiürítésnél ! A hatalmas mennyiségű gabonát alulról szokták "leengedni": na mikor a felakadt, összetömörödött több tonna gabona egyszer-egyszer megomlik, akkor szakít, tép mindent ( legalábbis az UTP kábelt simán! )!
A hozzászólás módosítva: Aug 21, 2013
(#) Wudoou válasza watt hozzászólására (») Aug 21, 2013 /
 
Azzal tisztában vagyok, mivel az egyik szimmetrikus(RS485), a másik aszimmetrikus átvitel(RS232).
De én nem is az RS232-ről beszélek, hanem az RS485-ről. Vagyis a vezérlő panelből elindul egy UTP, ami RS485-ön kommunikál a PC-vel, de a PC előtt visszaalakítom RS232-re. És a vezérlő panel illetve a PC átalakítója között lévő kábelezést kérdeztem. A vezérlő valószínüleg nem a silóra lesz felszerelve, hanem egy picit távolabb van egy kis betonrész és oda gondoltam.
Így a statikus feltöltődés nem érintené azt a részt, max a ds-eket.
Elnézést, ha félreérthetően írtam valamit.
(#) Wudoou válasza kissi hozzászólására (») Aug 21, 2013 /
 
Hát igen, ettől félek én is. Ezért is gondolkodunk valami masszív szerelvényen, ami véd is, hőt is átad, legalább 8-10 méter hosszú, könnyű szerelni, és még egy ötös lottó szelvényt is nyerőre kitölt.
Következő: »»   13 / 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