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   26 / 39
(#) Hp41C válasza gfj hozzászólására (») Jan 8, 2016 /
 

Olvasd el a dush.bas 4. és a termometr.bas 8. sorát. Más panel kell a két verzióhoz.
Idézet:
„dush.bas
Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.5 , Db7 = Portc.4 , E = Portc.1 , Rs = Portc.0”

Idézet:
„termometr.bas:
Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.4 , Rs = Portb.5”

Más panel kell a két programhoz.... Az utóbbihoz jó a panel.
A hozzászólás módosítva: Jan 8, 2016
(#) dB_Thunder válasza Hp41C hozzászólására (») Jan 8, 2016 /
 
Vagy át kell írni az LCD lábkiosztás részét egyformára, és újrafordítani a forrást..
(#) Hp41C válasza dB_Thunder hozzászólására (») Jan 9, 2016 /
 
Idézet gfj -től:
Idézet:
„Programot írni nem tudok...csak beégetni.”

Ebből arra következtettem, hogy a forrást tartalmazó csomagban levő hex -ekkel próbálkozik.
Nem én építeném meg, de még a Bascom fordításban sem tudok segíteni.
(#) dB_Thunder válasza Hp41C hozzászólására (») Jan 9, 2016 /
 
Ezzel én is így vagyok! Nekem sincs basic fordítóm avrhez, csak C-hez.Mondjuk ez egy jó alkalom hogy feltankoljak egy bézik fordítóból. Tud nekem valaki ajánlani olyat privibe?
(#) morgo válasza dB_Thunder hozzászólására (») Jan 9, 2016 /
 
Szia!
Bascom-AVR. Ha jól tudom, méretkorlát van benne, ingyenesen letölthető.
Egyébként gfj kolléga szerintem rossz rart linkelt, amit nekem adott abban stimmel az LCD lábkiosztás, és 1MHz az órajel. Próbanyákon kipróbálva működik. Igaz, csak 2 DS-t találtam, de azokkal szépen megy. Ha a kiírandó szöveget módosítod, 2x16-os LCD- is megy. Itt a forrás:
A hozzászólás módosítva: Jan 9, 2016
(#) gfj válasza morgo hozzászólására (») Jan 9, 2016 /
 
Szia!
Mikor vetted a szenzorokat?
(#) morgo válasza gfj hozzászólására (») Jan 9, 2016 /
 
Szia!
A 18B20 valamikor ősszel lett vásárolva a HEStore-ban. A másik 18B20P az már van 2-3 éves.
(#) gfj hozzászólása Jan 9, 2016 /
 
Van Bascom AVR-m. Azzal próbálkozom. Na szóval az alábbi program felismeri a szenzorokat és mér is. A másik nem. Lehet, hogy rosszat linkeltem be...akkor elnézést!Nekem viszont négy érzékelő kezelésére van szükségem...az a program viszont nem ismeri fel a szenzorokat. Felrakom mind a kettőt!Mind a kettő betöltődik..a programok futnak...csak az egyik nem inicializálja a szenzorokat. Én még mindig a ds-k esetleges paraméter változására gyanakodom. A kapcsolásokat kipróbáltam atmega8 és atmega8-16pu -val is. A helyzet ugyanaz volt mind a kettőnél!

Két érzékelős:

'Termometr 4 punktowy DS18b20 by Duch na podstawie materiałów znalezionych w sieci
'Kontakt duszkowski@o2.pl


  1. $regfile = "m8def.DAT"                                      'deklaracja procesora, w tym wypadku Atmega8
  2. $crystal = 1000000                                          'deklaracja cześtotlwiości pracy (wew oscylator 1MHz w zupełności wystarcza)
  3. 'Deklaracja portów od wyświetlacza LCD
  4. Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.4 , Rs = Portb.5
  5.  
  6. Config Lcd = 16 * 2                                         'ustawiamy typ wyświetlacza (soft jest dostosowany do pracy z wyświetlaczem 2x20, przy pracy z innym wyświetlaczem trzeba będzie skorygować wyświetlanie znaków)
  7.  
  8. '*************************************WAŻNE**********************************************
  9. 'Pamiętać o podłączeniu rezystora podciągającego o wartości 4.7kohm między linią DQ a VCC
  10. Config 1wire = Portd.5                                      'deklaracja portu na którym będą podpięte DS18b20
  11.  
  12. Config Pinc.0 = Input
  13. Config Pinc.1 = Input                                       ' definicja portów
  14. Config Pinc.2 = Input
  15. Config Pinc.3 = Input
  16. Config Pinc.4 = Output
  17. Config Pinc.5 = Output
  18. Config Pind.0 = Input
  19.  
  20. Set Portc.0                                                 ' podciągnięcie portów rezystorem do plusa
  21. Set Portc.1
  22. Set Portc.2
  23. Set Portc.3
  24. Set Portd.0
  25.  
  26. Pk1 Alias Portc.4
  27. Pk2 Alias Portc.5
  28.  
  29.  
  30. Dim I1 As Integer , Ss As String * 6
  31. Dim I2 As Integer
  32.  
  33. Dim Dsid1(8) As Byte
  34. Dim Dsid2(8) As Byte
  35. Dim B As Byte                                               'deklaracja zmiennej do odczytu kodów ID
  36. Dim W As Byte                                               'deklaracja zmiennej do odczytu ilośc czujników
  37. Dim A1 As Integer                                           'deklaracja zmiennych dla alarmów
  38. Dim A2 As Integer
  39.  
  40. Readeeprom A1 , 0
  41. Readeeprom A2 , 100
  42.  
  43. Deflcdchar 0 , 8 , 20 , 11 , 4 , 4 , 4 , 3 , 32             'znak stopnia Celsjusza
  44.  
  45. Cursor Off                                                  'Wyłącza kursor
  46. Cls                                                         'Funkcja CLS czyści ekran
  47. Lcd "**Elektroda.pl**" ;                                    'ekran startowy (pojawia się tylko podczas włączania urządzenia)
  48. Lowerline
  49. Lcd "      2010      "
  50. Wait 1
  51. Cls
  52. W = 1wirecount()
  53. Lcd "Ilosc czujnikow:"                                      'Informuje ile czujników jest podpiętych do układu (pojawia się tylko podczas włączania urządzenia)
  54. Waitms 500
  55. Lcd W
  56. Wait 1
  57. Cls                                                         'Znajdź pierwszy czujnik podpięty do portu
  58. Dsid1(1) = 1wsearchfirst()                                  'Znajdź kolejny czujnik podpięty do portu
  59. Dsid2(1) = 1wsearchnext()
  60.  
  61. '*******************Odczyt numerów ID czujników temperatury*********************
  62.  
  63. If Dsid1(8) = Crc8(dsid1(1) , 7) Then                       'ta opcja pojawia się tylko przy włączaniu urządzenia
  64. Locate 1 , 1
  65. Lcd "CRC OK Czujnik 1 ID"
  66. Wait 1
  67. Locate 1 , 1
  68. For B = 1 To 8
  69. Lcd Hex(dsid1(b))
  70. Next
  71. End If
  72. Wait 1
  73.  
  74. If Dsid2(8) = Crc8(dsid2(1) , 7) Then
  75. Locate 2 , 1
  76. Lcd "CRC OK Czujnik 2 ID"
  77. Wait 1
  78. Locate 2 , 1
  79. For B = 1 To 8
  80. Lcd Hex(dsid2(b))
  81. Next
  82. End If
  83. Wait 1
  84. Cls
  85.  
  86. '*******************koniec odczytu ID czujników temperatury*********************
  87.  
  88. Do
  89.    1wreset
  90.    1wwrite &H55
  91.    1wverify Dsid1(1)                                        'wysyłamy adres pierwszego czujnika
  92.   1wwrite &HBE
  93.   I1 = 1wread(2)
  94. '---------------------------------
  95.    1wreset
  96.    1wwrite &H55
  97.    1wverify Dsid2(1)                                        'wysylam adres drugiego czujnika
  98.   1wwrite &HBE
  99.   I2 = 1wread(2)
  100. '--------konwersja temp dla wszystkich dsow
  101.    1wreset
  102.    1wwrite &HCC
  103.    1wwrite &H44
  104.  
  105.  
  106. '****Jeśli pracujesz z wyświetlaczem innym niż 2x20 to tutaj trzeba wprowadzić zmiany w LOCATE********
  107.  
  108.   I1 = I1 * 10
  109.   I1 = I1 / 16
  110.   'If I1 > 0 Then Cls                                       'korekta przesuniecia znaku st C przy przejściu z temp ujemnej na dodatnią
  111.   Ss = Str(i1)
  112.   Ss = Format(ss , " 0.0")
  113.   Locate 1 , 1                                             'Pozycja wyświetlania nazwy i temperatury (1.1 -> 1 linia 1 kolumna, 2.10 -> 2 linia 10 kolumna itd)
  114.    Lcd "1-" ; Ss ; Chr(0) ;
  115.  
  116.    If A1 <= I1 Then
  117.       Set Pk1
  118.    Else
  119.       Reset Pk1
  120.    End If
  121.  
  122.    I2 = I2 * 10
  123.    I2 = I2 / 16
  124.    'If I2 > 0 Then Cls
  125.   Ss = Str(i2)
  126.   Ss = Format(ss , " 0.0")
  127.   Locate 1 , 10
  128.   Lcd "2-" ; Ss ; Chr(0) ;
  129.  
  130.   If A2 <= I2 Then
  131.      Set Pk2
  132.   Else
  133.      Reset Pk2
  134.   End If
  135.  
  136.   Locate 2 , 1                                             'Wyświetlanie wartosci alarmów
  137.    Lcd "Al-" ; A1
  138.  
  139.    Locate 2 , 10
  140.    Lcd "Al-" ; A2
  141.  
  142. '***** Obsługa Przycisków **********
  143.  
  144. If Pinc.0 = 0 Then
  145.   Incr A1
  146. End If
  147.  
  148. If Pinc.1 = 0 Then
  149.   Incr A2
  150. End If
  151.  
  152. If Pinc.2 = 0 Then
  153.   Decr A1
  154. End If
  155.  
  156. If Pinc.3 = 0 Then
  157.   Decr A2
  158. End If
  159.  
  160. If Pind.0 = 0 Then
  161.   Writeeeprom A1 , 0
  162.   Writeeeprom A2 , 100
  163. End If
  164.  
  165. Loop
  166.  
  167. 'Koniec programu
  168. 'Pozdrawiam Duch
  169.  
  170. Négy ÉRZÉKELŐS:
  171.  
  172. 'Termometr 4 punktowy DS18b20 by Duch na podstawie materiałów znalezionych w sieci
  173. 'Kontakt duszkowski@o2.pl
  174.  
  175.  
  176. $regfile = "m8def.DAT"                                      'deklaracja procesora, w tym wypadku Atmega8
  177. $crystal = 1000000                                          'deklaracja cześtotlwiości pracy (wew oscylator 1MHz w zupełności wystarcza)
  178. 'Deklaracja portów od wyświetlacza LCD
  179. Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.4 , Rs = Portb.5
  180.  
  181. Config Lcd = 16 * 2                                         'ustawiamy typ wyświetlacza (soft jest dostosowany do pracy z wyświetlaczem 2x20, przy pracy z innym wyświetlaczem trzeba będzie skorygować wyświetlanie znaków)
  182.  
  183. '*************************************WAŻNE**********************************************
  184. 'Pamiętać o podłączeniu rezystora podciągającego o wartości 4.7kohm między linią DQ a VCC
  185. Config 1wire = Portd.5                                      'deklaracja portu na którym będą podpięte DS18b20
  186.  
  187. Config Pinc.0 = Input
  188. Config Pinc.1 = Input                                       ' definicja portów
  189. Config Pinc.2 = Input
  190. Config Pinc.3 = Input
  191. Config Pinc.4 = Output
  192. Config Pinc.5 = Output
  193. Config Pind.0 = Input
  194.  
  195. Set Portc.0                                                 ' podciągnięcie portów rezystorem do plusa
  196. Set Portc.1
  197. Set Portc.2
  198. Set Portc.3
  199. Set Portd.0
  200.  
  201. Pk1 Alias Portc.4
  202. Pk2 Alias Portc.5
  203.  
  204.  
  205. Dim I1 As Integer , Ss As String * 6
  206. Dim I2 As Integer
  207.  
  208. Dim Dsid1(8) As Byte
  209. Dim Dsid2(8) As Byte
  210. Dim Dsid3(8) As Byte
  211. Dim Dsid4(8) As Byte
  212. Dim B As Byte                                               'deklaracja zmiennej do odczytu kodów ID
  213. Dim W As Byte                                               'deklaracja zmiennej do odczytu ilośc czujników
  214. Dim A1 As Integer                                           'deklaracja zmiennych dla alarmów
  215. Dim A2 As Integer
  216.  
  217. Readeeprom A1 , 0
  218. Readeeprom A2 , 100
  219.  
  220. Deflcdchar 0 , 8 , 20 , 11 , 4 , 4 , 4 , 3 , 32             'znak stopnia Celsjusza
  221.  
  222. Cursor Off                                                  'Wyłącza kursor
  223. Cls                                                         'Funkcja CLS czyści ekran
  224. Lcd "**.......pl**" ;                                       'ekran startowy (pojawia się tylko podczas włączania urządzenia)
  225. Lowerline
  226. Lcd "      2010      "
  227. Wait 1
  228. Cls
  229. W = 1wirecount()
  230. Lcd "Ilosc czujnikow:"                                      'Informuje ile czujników jest podpiętych do układu (pojawia się tylko podczas włączania urządzenia)
  231. Waitms 500
  232. Lcd W
  233. Wait 1
  234. Cls                                                         'Znajdź pierwszy czujnik podpięty do portu
  235. Dsid1(1) = 1wsearchfirst()                                  'Znajdź kolejny czujnik podpięty do portu
  236. Dsid2(1) = 1wsearchnext()
  237. Dsid3(1) = 1wsearchnext()
  238. Dsid4(1) = 1wsearchnext()
  239. '*******************Odczyt numerów ID czujników temperatury*********************
  240.  
  241. If Dsid1(8) = Crc8(dsid1(1) , 7) Then                       'ta opcja pojawia się tylko przy włączaniu urządzenia
  242.  Locate 1 , 1
  243.  Lcd "CRC OK Czujnik 1 ID"
  244.  Wait 1
  245.  Locate 1 , 1
  246.  For B = 1 To 8
  247.  Lcd Hex(dsid1(b))
  248.  Next
  249. End If
  250. Wait 1
  251.  
  252. If Dsid2(8) = Crc8(dsid2(1) , 7) Then
  253.  Locate 2 , 1
  254.  Lcd "CRC OK Czujnik 2 ID"
  255.  Wait 1
  256.  Locate 2 , 1
  257.  For B = 1 To 8
  258.  Lcd Hex(dsid2(b))
  259.  Next
  260. End If
  261. Wait 1
  262. Cls
  263.  
  264.  If Dsid3(8) = Crc8(dsid3(1) , 7) Then
  265.  Locate 2 , 1
  266.  Lcd "CRC OK Czujnik 3 ID"
  267.  Wait 1
  268.  Locate 3 , 1
  269.  For B = 1 To 8
  270.  Lcd Hex(dsid2(b))
  271.  Next
  272. End If
  273.  
  274. Wait 1
  275.  If Dsid4(8) = Crc8(dsid4(1) , 7) Then
  276.  Locate 2 , 1
  277.  Lcd "CRC OK Czujnik 4 ID"
  278.  Wait 1
  279.  Locate 4 , 1
  280.  For B = 1 To 8
  281.  Lcd Hex(dsid4(b))
  282.  Next
  283. End If
  284. Wait 1
  285. '*******************koniec odczytu ID czujników temperatury*********************
  286.  
  287. Do
  288.   1wreset
  289.   1wwrite &H55
  290.   1wverify Dsid1(1)                                        'wysyłamy adres pierwszego czujnika
  291.    1wwrite &HBE
  292.    I1 = 1wread(2)
  293. '---------------------------------
  294.   1wreset
  295.   1wwrite &H55
  296.   1wverify Dsid2(1)                                        'wysylam adres drugiego czujnika
  297.    1wwrite &HBE
  298.    I2 = 1wread(2)
  299. '---------------------------------
  300.   1wreset
  301.   1wwrite &H55
  302.   1wverify Dsid3(1)                                        'wysylam adres drugiego czujnika
  303.    1wwrite &HBE
  304.    I2 = 1wread(2)
  305.  '---------------------------------
  306.   1wreset
  307.   1wwrite &H55
  308.   1wverify Dsid4(1)                                        'wysylam adres drugiego czujnika
  309.    1wwrite &HBE
  310.    I2 = 1wread(2)
  311. '--------konwersja temp dla wszystkich dsow
  312.   1wreset
  313.   1wwrite &HCC
  314.   1wwrite &H44
  315.  
  316.  
  317. '****Jeśli pracujesz z wyświetlaczem innym niż 2x20 to tutaj trzeba wprowadzić zmiany w LOCATE********
  318.  
  319.    I1 = I1 * 10
  320.    I1 = I1 / 16
  321.    'If I1 > 0 Then Cls                                       'korekta przesuniecia znaku st C przy przejściu z temp ujemnej na dodatnią
  322.    Ss = Str(i1)
  323.    Ss = Format(ss , " 0.0")
  324.    Locate 1 , 1                                             'Pozycja wyświetlania nazwy i temperatury (1.1 -> 1 linia 1 kolumna, 2.10 -> 2 linia 10 kolumna itd)
  325.   Lcd "1-" ; Ss ; Chr(0) ;
  326.  
  327.   If A1 <= I1 Then
  328.      Set Pk1
  329.   Else
  330.      Reset Pk1
  331.   End If
  332.  
  333.   I2 = I2 * 10
  334.   I2 = I2 / 16
  335.   'If I2 > 0 Then Cls
  336.    Ss = Str(i2)
  337.    Ss = Format(ss , " 0.0")
  338.    Locate 1 , 10
  339.    Lcd "2-" ; Ss ; Chr(0) ;
  340.  
  341.    I3 = I3 * 10
  342.    I3 = I3 / 16
  343.    'If I3 > 0 Then Cls
  344.   Ss = Str(i3)
  345.   Ss = Format(ss , " 0.0")
  346.   Locate 1 , 11
  347.   Lcd "Wew " ; Ss ; Chr(0) ;
  348.  
  349.   I4 = I4 * 10
  350.   I4 = I4 / 16
  351.   'If I4 > 0 Then Cls
  352.    Ss = Str(i4)
  353.    Ss = Format(ss , " 0.0")
  354.    Locate 2 , 11
  355.    Lcd "Piec" ; Ss ; Chr(0) ;
  356.  
  357.     If Pinc.0 = 0 Then
  358.    Incr A1
  359. End If
  360.  
  361. If Pinc.1 = 0 Then
  362.    Incr A2
  363. End If
  364.  
  365. If Pinc.2 = 0 Then
  366.    Decr A1
  367. End If
  368.  
  369. If Pinc.3 = 0 Then
  370.    Decr A2
  371. End If
  372.  
  373. If Pind.0 = 0 Then
  374.    Writeeeprom A1 , 0
  375.    Writeeeprom A2 , 100
  376. End If
  377.  
  378.  Loop



'Koniec programu
A hozzászólás módosítva: Jan 9, 2016
(#) gfj válasza morgo hozzászólására (») Jan 9, 2016 /
 
Én pedig novemberben néztem át egy bolt teljes készletét...ott dolgoztam valamikor eladóként/EC Fehérvár/...így megtehettem. Ez 31 db volt. Ebből 3db-t ismert fel. Utána rendeltem az ebay-ról 10db-t. Ebből pedig egyet sem. Mármint a 4 érzékelős változat. A két érzékelős simán viszi az összeset.
(#) morgo válasza gfj hozzászólására (») Jan 9, 2016 /
 
Kukáztam egy 3. szenzort. (kiszedtem egy hőmérőből...) 3 DS esetén NEM akart inicializálni!
Érdekes módon 4k7 10k-ra emelésével viszont úja működik.
(#) gfj válasza morgo hozzászólására (») Jan 9, 2016 /
 
ezt most kipróbálom....igen...de akkor mekkorára csökken vajon az érzékelő maximális távolsága..a központtól?
A hozzászólás módosítva: Jan 9, 2016
(#) potyo válasza morgo hozzászólására (») Jan 9, 2016 /
 
Idézet:
„Érdekes módon 4k7 10k-ra emelésével viszont úja működik.”


Lehet emiatt szívtam én is? Építettem egy hete egy áramkört PIC32-vel, és bizonytalanul működött, a Search ROM másodiknak találta meg az egyetlen szenzort, és nagyon bizonytalanul működött, minden ötödik-tizedik olvasásra volt csak CRC helyes mért adat, legtöbbször 0xFF-ek jöttek vissza, tehát a Match ROM sem volt jó valószínűleg (A search által visszaadott egyetlen ROM kód viszont CRC helyes volt érdekes módon). Már minden időzítést leszimuláltam, us-on belül tökéletes. Billegtettem egy lábat megszakításból, a mért frekvencia tökéletesen egyezik a számítottal. Egyszerűen nem volt már semmi ötletem, mi lehet a gond, fel is adtam, mivel ez egy hobbi projekt volt csak, mondván majd máskor előveszem újra. Viszont most hogy írod, akkor ugrott be, hogy 2k2 ellenállást használtam, mert hosszú vezetéket kell meghajtania, legyen erősebb felhúzás és nem próbáltam meg nagyobbal. Egy másik áramkörben, amiben 16F hajtja meg a szenzorokat, ott ugyanezek az ebay-es szenzorok tökéletesen mennek, igaz 4k7 felhúzóval. Alkalomadtán teszek nagyobb felhúzót és megnézem újra, mi történik.
(#) gfj válasza potyo hozzászólására (») Jan 9, 2016 /
 
Így, hogy kicseréltem én is 10k-ra...egyet már felismer a 4 verziós....valószínű, hogy teszek oda egy trimmert és megnézem, hogy melyik az az ellenálás érték amelynél esetleg mind a négyet felismeri...
(#) Lamprologus válasza potyo hozzászólására (») Jan 9, 2016 /
 
Ezt a CRC kódot hogyan lehet kiszámolni a vett adatokból?
Néztem a leírást, de nem sikerült rájönnöm. Ehhez kevés az én angol tudásom.
(#) kissi válasza Lamprologus hozzászólására (») Jan 9, 2016 / 1
 
Szia!

Watt kolléga útmutatása szerintem jól használható...
Bővebben: Link
(#) potyo válasza Lamprologus hozzászólására (») Jan 9, 2016 / 1
 
Nem tudom már, hol találtam, de ez a két verzió van 1wire kommunikációhoz. Mindkét verziónál a crc számoló függvénynek meg kell adni a tömböt, amire a crc-t akarod számolni, és második paraméternek, hogy a tömbből hány bájtra számolja. Pl. a rom kódnál crc(tomb, 7) kell, míg a scratchpad-nál crc(tomb, 8). És ha a függvény ugyanazt adja vissza, mint ami a tomb[8] vagy tomb[9]-ben szerepel, akkor stimmel a crc.
Azóta olvastam valahol, hogy ha crc(tomb, 8) illetve crc(tomb, 9)-el hívod, vagyis a crc bájtot is beleveszed a számításva, akkor a függvénynek nullát kell visszaadnia, ha stimmel a crc. Én az előbbi formában használtam mindkettőt, utóbbit még nem próbáltam.

1wire_crc.c
    
(#) potyo válasza potyo hozzászólására (») Jan 9, 2016 / 1
 
Idézet:
„És ha a függvény ugyanazt adja vissza, mint ami a tomb[8] vagy tomb[9]-ben szerepel, akkor stimmel a crc.”


Helyesbítés: És ha a függvény ugyanazt adja vissza, mint ami a tomb[7] vagy tomb[8]-ban szerepel, akkor stimmel a crc.
(#) Lamprologus válasza potyo hozzászólására (») Jan 10, 2016 /
 
Köszönöm a segítséget!

Átolvastam Watt útmutatását és rájöttem, hogy ezt én nem fogom leprogramozni!
Keresnem kell kész kódot ... És meg is érkezett!
(#) gfj hozzászólása Jan 11, 2016 /
 
A felhúzó ellenállások változtatása sem járt eredménnyel. Még mindig ott tartok, hogy a két érzékelős variácó simán felismeri bármelyik szenzort...míg a négy érzékelős nem.
(#) Hp41C válasza gfj hozzászólására (») Jan 11, 2016 /
 
Nos, azt hiszem kimerültünk:
Nem tudjuk, a 4 érzékelős program milyen verziója fut. Nem tudjuk, hogy egyáltalán kommunikál -e a vonalon, ír -e ki valamit az LCD re. Nem tartjuk megfelelőnek a panel zavarszűrését.
Fel kellene tenni az ajánlott kondenzátorokat (3-10 Ft / darab). Meg kellene mérni a PORTD.5 -ön a jelalakot (Ajánlottam két olcsó analizátort). Mivel nincs további információ, nem tudonk újat mondani...
"A dolgok sokféleképen lehetnek rosszak, de csak egyféle módon jók."
(#) gfj válasza Hp41C hozzászólására (») Jan 11, 2016 /
 
De tudjuk mert feltettem. http://www.hobbielektronika.hu/forum/topic_post_1887231.html#1887231
Mindkét esetben a körülmények ugyan azok. Nincs 100 nf ez igaz..de a két érzékelős még is működik...és felismeri a szenzorokat Tehát a panel jó!Az érzékelők is azonosak!Való igaz analizátorral még nem néztem...de per pillanat nincs rá keret. Majd holnap megnézem szkóppal.
(#) dcsabi hozzászólása Jan 11, 2016 /
 
Sziasztok! Sokat játszottam én is az adott szenzorral (szenzorokkal) Ugyanis először az S20-at használtam, újabban be lehet szerezni vízmentes kapszulában 5m vezetékkel Ds18B20-t (2-3$) áttértem erre. A kiolvasás ugyanaz, csak a felbontás jobb. Az utolsó pár oldal vitájához néhány észrevétel. Nem ismerem pontosan a kapcsolást, de a Quartz egy fontos alkatrész lehet, főleg a két érzékelős megoldásban. Én 4db-ot olvasok, ezeket viszont 4066 kapukkal kapcsolgatom. Általában univerzálisan módosítható projektekben használom. Be kellett látnom, hogy az impulzusok idejére rendkivül érzékeny(!),ez az adatlapból tisztán látszik. Miután szkóppal felvértezve próbálkoztam, nem volt gondom. Ami még megjegyzésre kivánkozik, ha 20-30C környékén jól mér az előfordul, hogy 100C környékén nem olvas. Ekkor, még módosítgatni kell az időkön. A modulrendszerű PIC programozás topicban kb fél éve tettem fel működő programokat.
Ha több szenzort akarunk egyidejüleg olyan alkalmazásban, ami mást is csinál még, akkor valamilyen áthidaló megoldással problémamentesen lehet többszörözni. Jelenleg egy Kb 1-30db ig megoldáson dolgozom, hamarosan készen lesz. PIC 12F1840 Uarton továbbküldve (RS485) cím szerint. 10mmx32mm nyákon elfér. 12mm átmérőjű 4:1 zsugorcsőben Pl: Cat6 Utp-vel több 100 méter távolságra is elvihető. Teljes megoldás a már jelzett topicban részletesebben. "Amatőr gyakorlatban" ennél pontosabb, megismételhető hőmérést nehéz csinálni. Mellékeltem egy nyáktervet, ennek egyik oldalán további MAX6675 hőmérés távadás is ki van alakítva. Az van csak beforrasztva amelyik kell...
A hozzászólás módosítva: Jan 11, 2016

1W1X.GIF
    
(#) gfj válasza dcsabi hozzászólására (») Jan 12, 2016 /
 
Megkeresem...mert a pic-s is érdekel. Teljesen mindegy mivel, csak működjön 4-6 szondával és egy vonalról...
A hozzászólás módosítva: Jan 12, 2016
(#) Hp41C válasza potyo hozzászólására (») Jan 12, 2016 /
 
Keresem, hogyan is működik a BASCOM 1-Wire könyvtára. Közben eljutottam a Tavir AVR oldalra. Felkeltette a figyelmemet a 1-Wire eszközök parazita tápellátása.
Nem az okozza a problémát, hogy csak a felhúzó ellenálláson keresztül kapják a tápfeszültséget?
Megírtam már PIC-re a saját könyvtáramat, abban minden reset pulzus előtt a 1-Wire lábat kimenetnek kapcsolom és magas szintet adok ki rá egy időre. Aztán kezdem a kommunikációt. A hőmérséklet mérő eszközöt a mérés ideje alatt nagyobb áramot igényelnek. Ez alatt az idő alatt is érdemes a vonalat aktívan a tápfeszültségre kapcsolni.
A hozzászólás módosítva: Jan 12, 2016
(#) potyo válasza Hp41C hozzászólására (») Jan 12, 2016 /
 
Csak arra az időre kell az erősebb felhúzás (illetve kimenetnek kapcsolás), amíg a hőmérséklet konverzió vagy az EEPROM írás tart. Egyébként nem kell, elmegy parazita tápról is.

Nálam be volt kötve a táp is, nem parazita módban próbáltam.
(#) Tetye válasza gfj hozzászólására (») Jan 12, 2016 /
 
Érdekes ez a szenvedés, nem értem miért nem működik neked.
Tettem fel két fájlt, ha van soros portod akkor próbáld ki melyik mit ír, ezek biztos működnek 6 érzékelővel 30-40m utp-n rendes 5v-os táppal 4,7k val felhúzva(de 10kval is működött).
Ki ollóztam ami neme kell bele, egyébként egy kazánházba kínai szenzorokkal 4 éve megy, -20 és +90C közt méricskélnek. Én nem kerestetem a buszon hanem ID alapján kérdezgetem le őket. A panelen van 4,7K 0,6w és a tápon 100nf kerámia kondi. A kábel sima gagyi fali utp és a szivattyúk és mágnes szelepek kábeleivel megy egy tálcában. Eddig egy gondom van amire még nem volt megoldás de nem is fontos mert ritka és nem zavaró, az az hogy ha felkapcsolom a világítást(régi fénycső armatúrák) néha el a kapcsolás pillanatában eldobja azt a szenzort CRC hibával amit épp kérdezett. De mivel 20 másodpercenként kérdezgetem ez nem számít. Na mind1 a lényeg hogy extrém környezetben is működik stabilan. Próbáld ki.
üdv, g
(#) Kovidivi hozzászólása Jan 12, 2016 /
 
Helló!
Gondolkodok, hogy hogyan lehetne használni ezeket a szenzorokat közös DATA vezetékkel? Mármint a problémának azt tartom, hogy hogyan azonosítom be? Már a legegyszerűbb feladatnál is nehézkes, pl. belső/külső hőmérő. Melyik szenzor van bent, és melyik kint? Van több megoldás: be lehet programozni egy "szenzor csere" menüpontot, de ennek szerintem automatikusnak kellene lennie. Ugye ha külön csatlakozóval vannak a szenzorok felszerelve, a simán felcserélem őket nem segít. Lehetne tippelni, hogy télen amelyik hidegebb, az van kint, nyáron meg fordítva, de ha én éppen tavasszal használnám a készüléket, akkor ez nem megoldás. Akkor sem, ha valaki a radiátort vagy a kazánhoz visszatérő csövet szeretné mérni (csak tegyük fel), akkor hogyan különböztetem meg őket? És ha szenzorcsere történik, mert az egyik bedöglött, akkor lehet, hogy az eddig megszokott sorrend felcserélődik. Vagy meg kellene kérni a usert-t, hogy: "Dugd be a benti szenzort", "Most a kintit", és elmenteni a ROM kódjukat? Ez is macera. 10 szenzornál meg túl sok munka.
Most külön lábon vannak a szenzorok, így pontosan tudom, hogy melyik-melyik, csere esetén se lesz probléma, mert átugrom a ROM kódot, tehát így felhasználóbarát ez a megoldás. De el lehet érni hasonlót úgy is, ha minden szenzor egy kábelen van? 10 szenzornál 10 láb túl sok. De ha közös lábon vannak, akkor meg honnan tudom, hogy melyik hol van?
(#) edison14 válasza Kovidivi hozzászólására (») Jan 12, 2016 /
 
Egyszerű a dolog. Adsz a szenzoroknak egy számot vagy azonosítót, pl. kint és bent amihez hozzárendeled a szenzorok ROM kódjait amit a menüben fel tudsz cserélni. Utána belemész a menübe és megfogod azt a szenzort amit benti mérésre szánsz. Ha a bent nevű azonosítónál nőtt a hőmérséklet akkor jó a szenzorok sorrendje, ha nem akkor felcseréled az azonosítókat.
(#) Tetye válasza Kovidivi hozzászólására (») Jan 13, 2016 /
 
Nézd meg az a kódot amit az előző h.sz.-hoz csatoltam.
A kikommenteled ezt a részt:
  1. Dsid1(1) = 1wsearchfirst()                                  'Znajdź kolejny czujnik podpięty do portu
  2. Dsid2(1) = 1wsearchnext()
  3. Dsid3(1) = 1wsearchnext()
  4. Dsid4(1) = 1wsearchnext()

Ami alatta van kikommentelve arról kiveszed a kommentet,
  1. '1
  2. Dsid1(1) = &H10
  3. Dsid1(2) = &HF3
  4. Dsid1(3) = &H72
  5. Dsid1(4) = &H9E
  6. Dsid1(5) = &H01
  7. Dsid1(6) = &H08
  8. Dsid1(7) = &H00
  9. Dsid1(8) = &H17
  10. '2
  11. Dsid2(1) = &H10
  12. Dsid2(2) = &H47
  13. Dsid2(3) = &HA0
  14. Dsid2(4) = &H7A
  15. Dsid2(5) = &H01
  16. Dsid2(6) = &H08
  17. Dsid2(7) = &H00
  18. Dsid2(8) = &H56
  19. '3
  20. Dsid3(1) = &H10
  21. Dsid3(2) = &H8E
  22. Dsid3(3) = &HA9
  23. Dsid3(4) = &H9E
  24. Dsid3(5) = &H01
  25. Dsid3(6) = &H08
  26. Dsid3(7) = &H00
  27. Dsid3(8) = &HEB
  28. '4
  29. Dsid4(1) = &H10
  30. Dsid4(2) = &H2C
  31. Dsid4(3) = &HCC
  32. Dsid4(4) = &H7A
  33. Dsid4(5) = &H01
  34. Dsid4(6) = &H08
  35. Dsid4(7) = &H00
  36. Dsid4(8) = &H5D
  37. ')


És át írod a neked megfelelő azonosítókra.
Ennyi.
Innentől a saját ID-án fogja megszólítani a buszon a szenzort az avr, és csak az válaszol amelyiket kérdezed. Így mindig tudod hogy melyik melyik.
Egyszer kell az ID-t lekérdezni mindegyiktől, azt bevasalod a progiba, vagy én én már újabban az eeprom-ba hogy weben át tudjam írni ha csere van.
(#) Kovidivi válasza edison14 hozzászólására (») Jan 13, 2016 /
 
Azt tudom, hogy hogyan kell ROM kódot keresni, és elmenteni, de jó lenne, ha automatán be tudná azonosítani, hogy melyik-melyik (fizikailag, nem kód alapján), cserekor is automata legyen az átállás, és ne kelljen menübe beleírni semmi cserét, vagy programot módosítani az új ROM kóddal és újra feltölteni. Szerintem ez nem megoldható, csak ha külön lábakon van minden szenzor.
A hozzászólás módosítva: Jan 13, 2016
Következő: »»   26 / 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