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   30 / 39
(#) gfj válasza Tetye hozzászólására (») Jan 18, 2016 /
 
Usbasp égető atmega8-al....már minden programot lecseréltem. Letöltöm az atmelt is...Ez kezeli az usbasp égetőt?
A hozzászólás módosítva: Jan 18, 2016
(#) mate_x hozzászólása Feb 17, 2016 /
 
Sziasztok!
DS1820-at próbálok életre kelteni PIC16F690-nel, 4 MHz belső oszcillátorról ketyeg. Hi-Tech C for PIC10/12/16 V9.70 fordító. Jelenlét jelet kapok, de valamiért nem akar elindulni a konverzió. Időzítéseknek rendben kellene lenniük, oszcilloszkóppal megnéztem és az adatlapban megadott értékeken belül vannak. Egyenlőre csak detektálni akarom a konverzió elindulását, amit ha jól értelmeztem úgy jelez a szenzor, hogy a konverzió idejére 0-ra húzza az adatvonalat. Egy LED-et szeretnék bekapcsolni, ha elindult a konverzió. Valamiért nem sikerül idáig eljutnom, csatoltam a kódot, ha valaki tudja miért nem indul ne tartsa magában.

  1. #include <pic.h>
  2. __CONFIG (INTIO & WDTDIS & PWRTEN & MCLRDIS & BORDIS & IESODIS & FCMDIS);
  3.  
  4. //DS1820 bekötés:
  5. #define DS_pin  RC7
  6. #define DS_dir  TRISC7
  7.  
  8. //Globális változók:
  9. unsigned char delay;
  10.  
  11. //Függvény deklarációk:
  12. void Delay(void);
  13. void DsInit(void);
  14. void WriteByte(unsigned char data);
  15.  
  16. //Főfüggvény:
  17. void main(void)
  18. {
  19.         TRISA4=0;
  20.         RA4=0;    //LED RA4-en
  21.         ANSEL = 0;
  22.         ANSELH = 0;
  23.         DsInit();  
  24.         WriteByte(0xCC);  //skip ROM
  25.         WriteByte(0x44);  //Convert T
  26.         while(DS_pin==0) RA4=1;  //konverzió alatt LED kapcsoljon be
  27.         while(1); //program vége      
  28. }
  29.  
  30. //Függvény definíciók:
  31. void Delay(void)
  32. {
  33.         asm("decfsz _delay");
  34.         asm("goto $-1");
  35. }
  36.  
  37. void DsInit(void)
  38. {
  39.         DS_dir=0;
  40.         DS_pin=0;
  41.         delay=165;
  42.         Delay();
  43.         DS_dir=1;
  44.         delay=18;
  45.         Delay();
  46. //ide jöhet a jelenlét jel érzékelés
  47.         delay=145;
  48.         Delay();
  49. }
  50.  
  51. void WriteByte(unsigned char data)
  52. {
  53.         unsigned char i;
  54.         for(i=0;i<8;i++)
  55.         {
  56.                 if(data & 1)
  57.                 {
  58.                         DS_dir=0;
  59.                         DS_pin=0;
  60.                         DS_dir=1;
  61.                         delay=23;
  62.                         Delay();
  63.                 }
  64.                 else
  65.                 {
  66.                         DS_dir=0;
  67.                         DS_pin=0;
  68.                         delay=23;
  69.                         Delay();
  70.                         DS_dir=1;
  71.                 }
  72.                 data=data>>1;
  73.         }
  74. }
A hozzászólás módosítva: Feb 17, 2016
(#) potyo válasza mate_x hozzászólására (») Feb 17, 2016 /
 
Nekem nem rémlik ilyen, hogy nullára húzza a vonalat a konverzió idejére. Valami olyan igen, hogy ha indítasz egy read time slot-ot, akkor nullát ad vissza, amíg tart a konverzió. De fixen nem húzza le.
(#) mate_x válasza potyo hozzászólására (») Feb 17, 2016 /
 
Az adatlapban van egy ilyen rész, csatoltam az ábrát, ebből gondoltam.
(#) potyo válasza mate_x hozzászólására (») Feb 17, 2016 / 1
 
Igen, ez az, de nem fixen húzza le a vonalat, hanem mint írtam, ha a konverzió start parancs után ha a master read time slotokat generál, akkor ott ad vissza nullát a konverzió ideje alatt. Gondolj bele, ha fixen nullára húzná a vezetéket, akkor nem tudna a master más eszközzel sem kommunikálni a konverzió ideje alatt, agyonütné a buszrendszer lényegét. Adatlap ötödik oldal jobboldali hasábot nézd meg.
(#) mate_x válasza potyo hozzászólására (») Feb 17, 2016 /
 
Teljesen igazad van, nem is értem hogy nem jutott eszembe.
Köszönöm szépen, szuper vagy.
(#) mate_x válasza mate_x hozzászólására (») Feb 17, 2016 /
 
Már világít is a LED a read time slot kiadása után
(#) mr.Cara hozzászólása Nov 2, 2016 /
 
Üdvözlet !
Egy DS18B20-assal harcolok . Ha a sorkapocsba van bekötve müxik. Ha teszek rá 1,2m vezetéket és úgy kötöm be , csak villan egyet a tiny visszajelző lábára kötött LED , de a szerkezet nem dolgozik. Próbáltam valami nagyon vékony vezetékkel..., nem megy (egyet villan a LED)! Leforraszt . beköt a sorkapocsba ...,megy! Ráforr 3X0,5mm-es MTK-ra nem megy (villan egyet a kontroll LED)! Van valami tuti tippetek?
Köszi !
(#) pont válasza mr.Cara hozzászólására (») Nov 2, 2016 /
 
A 4,7K felhúzó ellenállás rajt van a 1wire lábon? A programban a tökéletes időalap megvan?
(#) mr.Cara válasza pont hozzászólására (») Nov 2, 2016 /
 
Hello!
Rajta van, igen. Kínomban tettem a panelra a sorkapocshoz közvetlen egy 100nF-osat
és a lábakhoz, a forrasztásnál egy 22nF-osat, de csak egyet villan és scsíí ! Nem tudom tegyek még egy 4,7k-sat a lábakhoz közvetlen??? Amúgy a tiny45 1MHz-cel lett besütve arduinoval....
nem kell nagy freki (kazán keringetőt vezérelne SSR-en keresztül).
(#) Kovabe válasza mr.Cara hozzászólására (») Nov 2, 2016 /
 
Kevés az 1MHz, én pic-et használok és ott minimum 8MHz kell.
(#) mr.Cara válasza Kovabe hozzászólására (») Nov 2, 2016 /
 
Csak kérdezem...,nem kekec: amikor közvetlen van a sorkapocsban a DS18B20 akkor hogy tud működni, ha kevés a freki?
(#) mr.Cara válasza mr.Cara hozzászólására (») Nov 2, 2016 /
 
Köszi a hozzászólásokat! Megoldódott ! Kisfiamnak volt egy gyári kábeles DS18B20-asa . Bekötöttem és láss csodát ! Működik ! Előtte azért kiprópáltuk egy másik háromlábúval és a sorkapocsba kötve ment. MTK vissza , nem ment!
Még egyszer köszönet !
Gábor
(#) patrik81 hozzászólása Nov 26, 2016 /
 
Az RA2-re tettem egy ds18b20-at.Csak a jelenlétre válaszol.
Ez van a mainbe:
  1. Jelenlet();
  2.     AdatIras(0xcc);
  3.     AdatIras(0x44);
  4.    
  5.     Delay(0x7fff);
  6.     Delay(0x7fff);
  7.    
  8.     Jelenlet();
  9.     AdatIras(0xcc);
  10.     AdatIras(0xbe);
  11.     AdatOlvasas();

Hol lehet a hiba?Az adatolvasó függvényem jó?Az adatírás 0xbe után egyből jöhet az olvasás?
  1. void AdatOlvasas()
  2. {
  3.     for (unsigned char i = 0; i < 16; i++)
  4.     {
  5.         TRISA2 = 0;
  6.         RA2 = 0;
  7.         Delay(oido1);//20us
  8.         TRISA2 = 1;
  9.         Delay(oido2);//40us
  10.         if(RA2)                    
  11.             ho[i] = 1;
  12.         else ho[i] = 0;
  13.         Delay(oido2);
  14.     }
  15. }
(#) Bagi Zoltán hozzászólása Jan 27, 2018 /
 
Szeretnék segítséget kérni ds18b20 vezeték kialakításában. 30 méterre kellene a szenzort elvinni. Jelenleg kb 20m-ig működik. Csokkentettem a felhúzó ellenállást. Kb 2k-ra, így már hosszabb vezetékkel működött de még mindig nem elég. A szenzoroknal a gnd vcc között van 100n kondi.
Mi lehet a baj? A Dallas 400m távolságot említ valahol? Lehet, hogy ez nem igaz, vagy félreértés? Előre is köszönöm ha valaki tud válaszolni!
(#) Bakman válasza Bagi Zoltán hozzászólására (») Jan 27, 2018 /
 
Milyen kábelen lógnak a szenzorok?
(#) kiborg hozzászólása Feb 1, 2018 /
 
Sziasztok!

Vagy egy DS18B20-as szenzorom, mellette egy HDC1080 szenzor.
A kettő egymás mellett kb. 1 cm távolságban van, 1-2 tized fok eltéréssel azonosat mér. 23,1-23,3 °C.
Van tőlük kb. 3 cm-n belül 2db hagyományos hőmérő, de azok is kb. azonosat mutatnak, de konstansan 2-3 fokkal kevesebbet. Kb. 20,2-20,5 °C.
A hőérzetem is inkább a hagyományos hőmérőnek hisz.
Viszont a két digitális meg csak nem hazudik... vagy igen? A két digitális hőmérő házi készítésű két külön eszköz.
Hogyan lehetne ellenőrizni, hogy kinek/minek van igaza?
(#) dB_Thunder válasza kiborg hozzászólására (») Feb 1, 2018 /
 
Hiteles hőmérővel!
(#) Bakman válasza kiborg hozzászólására (») Feb 1, 2018 /
 
Túl gyakori lekérdezés esetén maga az IC is melegíti magát. Másrészt, mivel feket eműanyag tokban vannak, könnyen elnyelik az infravörös sugarakat is, ami tovább melegítheti a tokot.

Takard le a hőmérőket pl egy törölközővel, várj tíz percet és mérj egyet, majd lesd meg a hagyományos hőmérőket is.

Egyébként ahogy dB_Thunder írja, kell egy biztosan kalibrált hőmérő és olajba kell mártani a szenzorokat, így az izgő-mozgó levegő és egyéb dolgok biztosan nem zavarják a mérést.
(#) Bagi Zoltán válasza Bakman hozzászólására (») Feb 9, 2018 /
 
Szia Bakman!
Bocs, de munkám miatt nem értem rá foglalkozni a hőmérőimmel. Kérdésedre: kétféle kábellel is próbálkoztam, volt UTP és risztó kábel. Az UTP-t úgy is próbáltam, hogy a GND és DATA egy sodrott érpárra kerültek, és úgy is, hogy különálló kábelekre került a 3 kivezetés.
Közben egy másik fórumon kaptam egy ötletet, miszerint tegyek az arduino végen egy soros 100ohm ellenállást a jelvezetékre. A dolog működött, mert így a 20m-es távolságot meg tudtam növelni 25m-re (csak ennyi vezetékem volt).
Sajnos összességében nem működött a dolog, mert nekem csillagpont szerűen 3 dallas hőmérőm van. Együtt a 3 dallas nem működik a soros ellenállás, illetve ellenállások berakásával sem. Egy vezetéknél azonban segített a módszer.
Van esetleg valamilyen tapsztalatod vagy ötleted?
Köszönettel!
Bagi
(#) nedudgi válasza Bagi Zoltán hozzászólására (») Feb 9, 2018 /
 
Mekkora felhúzóellenállást használsz az adatvonalon?
(#) Bagi Zoltán válasza nedudgi hozzászólására (») Feb 11, 2018 /
 
Szia!
Kezdetben 5kohm volt a felhúzó ellenállás, de amikor párhuzamosan kötöttem a 3 dallas vezetéket már ezzel az értékkel nem működött. Kiserletezgetéssel 1,5k lett a jó érték, ezzel már működött. Az jutott eszembe, hogy tehetném akár mindhárom dallast külön arduino kivezetésre. Így nem befolyásolják egymást. A dallashoz használt függvényekkel ezt azt hiszem még lehet csinálni így:

#include <OneWire.h>
OneWire ds_x(2);
OneWire ds_y(3);

Ez működhet?

Köszönettel

Bagi
(#) nedudgi válasza Bagi Zoltán hozzászólására (») Feb 11, 2018 /
 
A tápfeszültség emelése segíthet. A vezetékhossz értelmezése nekem nem egyértelmű, de lehetséges, hogy csillagkapcsolás esetén a közös vezetéket a kontrollerhez közel ajánlatos elágaztatni. Ebben az esetben a táp lehet közös,de az adatvégeket a kontrollernél közösíteném.
(#) dB_Thunder válasza Bagi Zoltán hozzászólására (») Feb 11, 2018 /
 
Ez többvezetékes, emlékeim szerint működik is!

Ilyenkor váltani kell az adatvezetékek közt, viszont teljesen szükségtelen az egyedi azonosítókkal bajlódni.
(#) Bagi Zoltán válasza dB_Thunder hozzászólására (») Feb 18, 2018 /
 
Szia!
Sajnos ezzel a forráskóddal nem boldogultam első lépésben. Én szerencsétlen módon egy másik lib-et használtam, és az amit ebben a forrásban látok, nekem ismeretlen. Letöltöttem a lib-et, illetve azt amit a név alapján találtam, de a mintapéldákban egy harmadik "beltartalom" fogadott!! A "#include <DallasTemperature.h>" milyen lib-et kell használnom? Találok annak működéséről valamilyen leírást?
Köszönettel!
Bagi
(#) dB_Thunder válasza Bagi Zoltán hozzászólására (») Feb 18, 2018 /
 
Ez a lib van hozzá!

De a lib-ektől már én is libabőrös vagyok! Ha van más azonos nevű lib képes belefordítani azt, általában sikertelenül. Törölni kell az azonost..
Valamiért nem lett a kedvencem ez az Arduinos dolog, én még a Atmel Sudió 4,5-en szocializálódtam, ott számomra minden világos volt, hardverközeli. Ez a Sketchpad számomra gagyi. Agyilag is lejöttem a dolgokról, mióta plcket gyűröm
(#) niedziela hozzászólása Jún 13, 2018 /
 
Szia !

Egy szoba termosztátot kellene készítenem egyedi igényekre.
Kérdés ismeri valaki ezt a modult :
kijelző Modul
Erről a modulról lehet vajon valami értelmes jelet leszedni egy thermostat további építéséhez ?

Köszi.
(#) Bakman válasza niedziela hozzászólására (») Jún 13, 2018 / 1
 
Maga a DS18B20 -as szenzor nem elég? Így a modul sem fog kelleni és olyat építesz, amilyet akarsz.
(#) nedudgi válasza niedziela hozzászólására (») Jún 13, 2018 / 1
 
A modult szemügyre véve nem láttam olyan, soros interfészre utaló kivezetéseket, ami a hasonló feszültségmérő modulokon gyakran előfordul. Az 1wire adatátvitel figyelése éppenséggel lehetséges, de szerintem ennyi erővel lehet közvetlenül használni a DS18B20 szenzort. Elképzelhető a kijelző lábaira csatlakozva dekódolni a mért/kijelzett értéket, én megint csak egy szenzor közvetlen olvasását látom a könnyebb megoldásnak.
(#) niedziela válasza nedudgi hozzászólására (») Jún 13, 2018 /
 
Terv első körben az lett volna, hogy a kijelzés részét ezzel megoldjam, ahelyett, hogy szinte ugyan ezt újra megépítsem.
Következő: »»   30 / 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