• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
zasilanie arduino a pomiar temperatury!!!!
#1
witam, mam problem z mega2560 i ds18b20.
system odczytuje temperatury z 3 pokoi, ds oraz rezystor na ścianie, kablem do punktu zbiorczego gdzie odczytuję i loguję temperaturę.
2 z 3 dsów zawyżało mi już od początku pomiar o około 2 stopnie w górę, sprawdziłem serię i nie jest to seria b7.
No nic, chciałem w sofcie offsetować ten błąd, lecz wymieniłem tylko zasilanie z ładowarki telefonicznej wpiętej w gniazdo usb na zasilacz 12V 4A i..... te dwa Dsy które wcześniej zawyżały o 2 stopnie teraz zawyżają o 7stopni!

2 dni to obserwowałem, zmieniłes z powrotem na zasilanie z usb i znowu tylko 2 stopnie błędu na ds'ach.

O co chodzi? w czym problem? Ponoć Dsy takie fajne, zaznaczę, że nie bawię się w adresowanie i każdy z nich podpięty jest na osobnym pinie.
 
Odpowiedź
#2
(20-12-2018, 18:45)fjohny napisał(a): witam, mam problem z mega2560 i ds18b20.
system odczytuje temperatury z 3 pokoi, ds oraz rezystor na ścianie,
Odczytujesz temperaturę z rezystora na ścianie?

(20-12-2018, 18:45)fjohny napisał(a): 2 z 3 dsów zawyżało mi już od początku pomiar o około 2 stopnie w górę, sprawdziłem serię i nie jest to seria b7.
(...)wymieniłem tylko zasilanie z ładowarki telefonicznej wpiętej w gniazdo usb na zasilacz 12V 4A i..... te dwa Dsy które wcześniej zawyżały o 2 stopnie teraz zawyżają o 7stopni!
2 dni to obserwowałem, zmieniłes z powrotem na zasilanie z usb i znowu tylko 2 stopnie błędu na ds'ach.

Sprawdź jakość połączeń.
Sprawdź jakość zasilania. Czy nie ma tam jakiś zakłóceń (pików). Sprawdź jakość zasilania na samych termometrach. Czy biblioteka obsługująca termometry sprawdza CRC? Jak nie to szukaj takiej co sprawdza. Sprawdź analizatorem komunikację.

(20-12-2018, 18:45)fjohny napisał(a): O co chodzi? w czym problem?
Błąd w sprzęcie i programie. Dobry program wykryje błąd w komunikacji z prawdopodobieństwem 99,6%. To niewiele ale zawsze coś, CRC16 wykrywa w ok 99,9985%, CRC32 99,99999998 (niewykrycie błędu, jest tak prawdopodobne, jakby ponad 300 razy pod rząd wygrać w lotka skreślając standardowo po 6 liczb).

(20-12-2018, 18:45)fjohny napisał(a): Ponoć Dsy takie fajne, zaznaczę, że nie bawię się w adresowanie i każdy z nich podpięty jest na osobnym pinie.
Tak, jeśli program i sprzęt są odpowiedniej jakości termometry te nie sprawiają kłopotu. Tysiące jak nie setki tysięcy konstrukcji używają tych termometrów, jak byłyby kiepskie, to nie byłyby tak powszechne.
 
Odpowiedź
#3
(20-12-2018, 19:45)es2 napisał(a):
(20-12-2018, 18:45)fjohny napisał(a): witam, mam problem z mega2560 i ds18b20.
system odczytuje temperatury z 3 pokoi, ds oraz rezystor na ścianie,
Odczytujesz temperaturę z rezystora na ścianie?

NIE, Przy Ds, który jest zamontowany na ścianie mam przylutowany rezystor 4,7k. Jest on po stronie dsa a nie przy płytce arduino.

 Czy biblioteka obsługująca termometry sprawdza CRC? Jak nie to szukaj takiej co sprawdza.

Używam standardowej :
#include <OneWire.h>
#include <DallasTemperature.h>



Sprawdź analizatorem komunikację.

I tu nie wiem o co chodzi...
 
Odpowiedź
#4
(20-12-2018, 20:14)fjohny napisał(a): NIE, Przy Ds, który jest zamontowany na ścianie mam przylutowany rezystor 4,7k. Jest on po stronie dsa a nie przy płytce arduino.
W jakiej dokumentacji wyczytałeś aby dać rezystor podciągający na oddalonym termometrze a nie przy hoście?

(20-12-2018, 20:14)fjohny napisał(a):
Cytat:Czy biblioteka obsługująca termometry sprawdza CRC? Jak nie to szukaj takiej co sprawdza.
Używam standardowej :
#include <OneWire.h>
#include <DallasTemperature.h>
Standardowych jest wiele. Sprawdź czy "DallasTemperature" sprawdza CRC. Obstawiam , że nie.

(20-12-2018, 20:14)fjohny napisał(a):
Cytat:Sprawdź analizatorem komunikację.
I tu nie wiem o co chodzi...
Szukaj w Google pod hasłem analizator stanów logicznych, analizator 1-Wire.
 
Odpowiedź
#5
przelutowałem rezystor ze ściany przy DS na drugi koniec kabla - przyłącze do arduino - bez zmian.

sprawdziłem zasilania:
przy zasilaniu z USB mam 5.11V na zasilaniu Dallasa
przy zasilaniu przez zasilacz 12V na złącze mega2560 mam napięcie 4,86V na zasilaniu Dallasa.

Biblioteka nie mam CRC, szukam innej...
 
Odpowiedź
#6
(20-12-2018, 23:26)fjohny napisał(a): sprawdziłem zasilania:
przy zasilaniu z USB mam 5.11V na zasilaniu Dallasa
przy zasilaniu przez zasilacz 12V na złącze mega2560 mam napięcie 4,86V na zasilaniu Dallasa.

Nie sprawdziłeś! Miałeś sprawdzić jego jakość, czy nie ma szpilek itp. Przypuśćmy, że na zasilaniu masz co 100ms szpilkę do 2V trwającą 1ms. Miernik pokaże 5V a transmisja będzie się sypać. CRC nie jest sprawdzane, więc błąd nie jest wykrywany.

Jaką wartość ma rezystor podciągający?
Jaki długi jest przewód połączeniowy, jaką ma pojemność?
Termometry włączone są w jedną gałąź czy tworzą gwiazdę?

(20-12-2018, 23:26)fjohny napisał(a): Biblioteka nie mam CRC, szukam innej...
Takie jest całe Arduino, zakłada, że wszystko jest ok, nie ma błędów, nie ma, zakłóceń, szumów, przewody się nie urywają, złącza zawsze mają styk.
Pełnej obsługi błędów w Arduinowych programach to ja jeszcze nigdy nie widziałem i pewnie nie zobaczę.
 
Odpowiedź
#7
ok, więc nie dysponuję sprzętem którym mógłbym tak precyzyjnie zobrazować źródło zasilania. Na mega2560 jest przetwornica, która pewnie nie jest ideałem.

rezystor podciągający mam 4k7

długość przewodu to około 8m, jest to kabel telefoniczny (alarmowy) YTDY 8 ŻYŁ 8X0,5

termometry tworzą gwiazdę, każdy z nich finalnie podpięty jest pod to samo zasilanie a pin DQ do odpowiednio róźnych pinów arduino.
 
Odpowiedź
#8
Nawet jak wydaje Ci się to bez sensu to pokazuj kod i schemat układu, o którym piszesz. Dla pewności również zdjęcia i informacja jakie masz przewody. Zdemontuj czujniki i przetestuj je na płytce stykowej jeden obok drugiego, może faktycznie jakiś jest uszkodzony, jednym softem, na jednym pinie, z pełnym zasilaniem (podłączenie 3 przewody). Możesz porównać zachowanie z rezystorami od 2 do 10k. Rezystor powinien być przy źródle zasilania. Najlepiej jakbyś miał do testów układ zrobiony dla DS, przez kogoś, kto ma o tym pojęcie https://allegro.pl/modul-termometr-dla-d...13356.html.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
#9
(21-12-2018, 10:42)kaczakat napisał(a): Możesz porównać zachowanie z rezystorami od 2 do 10k.

Gdzie kolega wyczytał ten zakres 2..10k?
1-Wire to nie I2C, sa dwie zdefiniowane prędkości. W standardowej, jasno napisano w specyfikacji jakie ma być podciąganie i na pewno nie jest to max 10k ani min 1k. Proszę więc nie wprowadzać w błąd.

Co do tego, że jeden z termometrów jest uszkodzony, Każdy termometr używa osobnego wyprowadzenia uC. Jakim cudem jeden uszkodzony wpływa na pozostałe?

(21-12-2018, 07:56)fjohny napisał(a): ok, więc nie dysponuję sprzętem którym mógłbym tak precyzyjnie zobrazować źródło zasilania.
No to masz problem. Bez sprzętu długo będziesz szukał banalnego błędu.

(21-12-2018, 07:56)fjohny napisał(a): rezystor podciągający mam 4k7
Może być ale zalecałbym zmniejszyć do 2,2k.

(21-12-2018, 07:56)fjohny napisał(a): długość przewodu to około 8m, jest to kabel telefoniczny (alarmowy) YTDY 8 ŻYŁ 8X0,5
Może być.

(21-12-2018, 07:56)fjohny napisał(a): termometry tworzą gwiazdę, każdy z nich finalnie podpięty jest pod to samo zasilanie a pin DQ do odpowiednio róźnych pinów arduino.
Każdy termometr do osobnego pinu, więc jeśli chodzi o linie danych, nie ma znaczenia czy połączenie jest w gwiazdę czy nie ale czy na zasilaniach dałeś bezpieczniki polimetowe lub inne zabezpieczenie?
Przy okazji, linie danych sa zabezpieczone?
Arduino w roli sterownika jak jest fizycznie połączony z termometrami? Czasem nie stykówka?

Może błąd jest w kodzie? Raczej obstawiam sprzęt. Warto by sprawdzić termometry na innym wiarygodnym systemie.
Termometry kupowałeś z pewnego źródła? Była seria DS18B20, która potrafiła się rozkalibrować właśnie o +/- 2stopnie. Mam procedury kalibracji ale pewnie Ci nie pomogą. Należałoby zacząć od obejrzenia co dzieje się na magistrali i zasilaniu. Nie masz możliwości tego zrobić i właściwie dalsze testy nie mają sensu. Sytuację uratuje sprawdzenie CRC. Jeśli CRC jest poprawne to 1/256, że jest błąd, który nie został wykryty. Bez sprawdzenia CRC dalsze próby to strzelanie w ciemno. Takie coś http://avt.4ra.pl/viewtopic.php?id=12 by pomogło. Może znajdzesz w necie jakiegoś gotowca na Arduino, który potrafi skanować 1-Wire. Nie spotkałem czegoś takiego, widziałem tylko różne slave.
Porządny oscyloskop kupisz za 1000zł. Jak poszukasz używek, pogodzisz się z ograniczeniami to 300..500zł. Szukaj też pod hasłem DSOxxx. Ceny 100..200zł, do 1-Wire czy I2C, RS232C wystarczą. Praca z tym będzie upierdliwa ale jak się niema co się lubi........
 
Odpowiedź
#10
Co tam na elektrodzie słychać u LChucki'ego Big Grin? Znowu nierozumiany geniusz? Lepiej szanować to forum, coraz mniej ich zostaje, nawet jeśli się wpada w konwulsje na dźwięk "Arduino". Nie napisałem, że ma zastosować 10k, tylko poobserwować co się dzieje, gdy zmienia wartość rezystora podciągającego. Jeden DS bez problemu zadziała z 10k na płytce stykowej, wraz ze zwiększaniem ilości czujników i długości przewodów trzeba zmniejszać rezystor. 4.7k jest optymalny dla kilku DS i kilkunastu m przewodu, potem musi być mniejszy. Napisałem to tylko dla użytkownika, nie będę brał udziału w żadnym biciu piany. Wesołych Świąt.
PS, możesz dodać kondensator przy DS (VCC-GND oczywiście), może przewody są tak fatalne, że nie starcza zasilania.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości