85 ST jest wartością domyślną wpisaną do rejestru w którym przy kolejnych konwersjach DS wpisuje już zmierzoną temp i przy pierwszym pomiarze zawsze taka liczbę odczyta. Może gdzieś nie łączą przewody i czujnik traci na chwile zasilanie i wpisuje to wartość domyślną.
Nie to sprawdzałem. Wygląda to jakby procedury odczytu DS-a działały bo ta temperatura wyświetlana -0.1 o tym świadczy. DS jest zasilany z 3,3V i wyczytałem że przy takim zasilaniu rezystor podciągający linie DQ ma mieć około 2k i taki mam. Ale z rezystorem 4,7k też nie działało. Gdzie to wyczytałeś? Datasheet nic na ten temat nie mówi, poza "Can be...
Zbyt duzo razy widzialem zapewnienia, ze "wina w 100% nie lezy po mojej stronie", aby w nie uwierzyc :) Byc moze tak jest, pokazanie nam swojego kodu nie zaszkodzi, a moze ktos cos zauwazy niewlasciwego. No i nie napisales, czy inne funkcje (zapis/odczyt wewnetrznego EEPROM) dzialaja poprawnie.
http://www.teslabs.com/openplayer/docs/d... Nie ma możliwości, żeby to nie pomogło.
Tutaj masz gotowy przykład bez użycia float-ów (oszczędność pamięci): http://mikrokontrolery.blogspot.com/2011...
a 8MHz masz?:> Sprawdź PCB Rezystor 4.7kΩ masz na linii danych? Może podaj konkretnie co pokazuje sie na lcd. "Przyczepiliście się" :D do sprzętu , a żaden z Was nie zajrzał do kodu ;) A błąd ukrył się sprytnie , w deklaracji zmiennej T1 , która powinna być typu Integer , a jest ... :?: Piotrek
Masz tu dokument z Texasa na temat zalet i wad różnych sposobów łączenia takich czujników: http://www.ti.com/europe/downloads/2-%20...
Ten kod napisałem na podstawie dokumentacji temometru i dokumentu opisującego interface 1 wire od atmela: A do dokumentacji AVR-ka zaglądałeś :?: Zastanów się, czy można uzyskać niski stan na magistrali 1wire, jeżeli pin do niej podłączony jest ustawiony jako wejście :?: [syntax=c]unsigned char _DS18B20_ReadByte() { _DATA_DDR &= ~(1 << _DATA_WIRE);//...
1. Trzeba uważać na funkcje delayms i delayus, ponieważ mają one ograniczenia - tzn. nie można tam wstawić dowolnie duże liczby. Szczegóły w delay.h 2. U mnie ciekawy problem się pojawił w czasie konwersji temperatury - ponieważ układ był zasilany pasożytniczo. Nieważne jak kombinowałem z pullupami - zawsze to samo. W końcu po wystawieniu "1" na nóżce...
Czyli DS pewnie jeszcze zyje :) A czy na tej twojej uniwersalnej płytce zrobiłeś podciągnięcie do zasilania 1-wire tj. czy dałeś opornik podciągający np 3,3k od 1-wire do 5 V ??? pozdr KN
Blad odczytu z DS18B20 objawia się odczytem temperatury -127 st., tyle, że może to również oznaczać błąd czujnika, brak łącznoeci itp., więc nie jest to jednoznaczne z brakiem zasilania. Pozdr
Oto odpowiedź: http://mikrokontrolery.blogspot.com/2011...
Mozliwe. Dodales rezystor? Jeszcze masz taka zmienna err w bascomie, poczytaj troche o niej.
Dobra, poradziłem sobie inaczej. Użyłem timera, ale nie korzystałem z przerwań, tylko ustawiłem częstotliwość inkrementacji timera na 1us i czekałem, aż wartość timera przekroczy zadany czas ;) Na potrzeby 1-wire wystarczyło :)
Na temat fuse bitów był osobny temat wałkowany i to dobrze ale narazie ich nie ruszaj bo "uwalisz" procka. DS-y są "wyczulone" na czas w którym następuje konwersja i jesli bedzie nieodpowiedni(wg noty 750ms) to DS moze wariowac i w ogole nie mierzyc(nie zdarzy wykonac konwersji). Jesli chodzi o ADC to w zasadzie różnica jest taka ze przy standardowym...
Jesteś jednym z pionierów bo sprzęt drogi i mało popularny, więc sam musisz sprawdzić co się dzieje. Pierwsze co bym sprawdził, czy piny IO działa OK - miganie LED, potem kup sobie jakiś analizator Saleae (klony na Allegro kilkadziesiąt PLN), w programie Saleae Logic masz dekoder 1-Wire, możesz podejrzeć co się dzieje na magistrali, czy to Arduino nie...
No nic dziwnego, w ustaw_czas robisz call do wys_czas który wbrew obiegowej opinii wyświetla temperaturę;] i... ustawia kursor kilka spacji za *C :) a potem sobie reta do ustaw_czas gdzie już jak widać LCD "Ustaw czas" :) Ot i tajemnica;] Pozdro ;] Dodano po 1 PS lowerline sux, ja bym używał locateów na twoim miejscu ;-) Poza tym funkcje są fajnejsze...
Witam ! N apisałem taki program: $regfile = "m8def.dat" $crystal = 8000000 Config Portd = Output : Portd = 255 Config Portb = Output : Portb = 255 K1 Alias Portd.0 K2 Alias Portd.1 K3 Alias Portd.2 K4 Alias Portd.3 K5 Alias Portd.4 K6 Alias Portd.5 K7 Alias Portd.6 K8 Alias Portd.7 Config 1wire = Portc.5 Dim Nr_kol As Byte , A As...
nie wiem czy coś ze mną nie tak czy z tym forum, ale piszę tą odpowiedź drugi raz, albo odpowiedziałem w innym temacie ... użyj tej funkcji, u mnie działa to jest dla DS18 S 20 (niepotrzebnie wkleiłem , ale niech już zostanie) float zamien_temp(unsigned char MSB,unsigned char LSB) { float ftmp; if(MSB==0x00)//dodatnia,lub 0 {...
Przy 1 urządzeniu na 1Wire nie ma potrzeby używać ani SearchROM, ani MatchROM, ani ReadRom, tylko wystarczy SkipROM. 1. Reset1Wire 2. Jeśli Reset poprawny to SkipROM (0xCC) i ConvertT (0x44) 3. Odczekanie czasu na konwersję 4. Reset1Wire 5. Jeśli Reset poprawny to SkipROM (0xCC) i ReadScratchpad (0xBE)
Ok, temat rozwiązałem. W pętli której podmieniam wartości był warunek <7, w powinien być <8. Gdy adres był na nieoryginalnej pozycji ostatni bajt adresu się nie zgadzał.
Witam, Posiadam Atmega8 + DS18B20 + wyswietlacz LCD. 3ci wieczor nie umiem znalezc bledu w mym kodzie odczytajacym temperature. Caly czas pojawia sie 170. Inicjacje przechodzi poprawnie, odczyty niby tez ale pokazuje zla temperatura, naprawde nie mam juz pomyslow co jest nie tak... Prosze o sugestie co mzoe byc nietak. Dziekuje //KONFIGURACJA PORTOW:...
Skonfiguruj prawidłowo magistralę 1wire, czasem może być problem z krótkim opóźnieniem. W dokumentacji pisze żeby czekać 0,5s, ale czasem trzeba więcej. Wydłuż czas opóźnienia, a powinno chodzić. Pozdrawiam
Panowie naprawde nie wiem czemu mi nie dziala termometr, wyswietla 0 na wyswietlaczu 7seg. Sygnal resetu dziala poprawnie, jest odzew od DS nadawanie bitow tez dziala bo widze na oscyloskopie nadawane ramki po resecie, ale wyswietla 0. Mysle ze mam gdzies blad w czasach ale nie potrafie go odnalezc siedze juz 3 dzien. [syntax=c]#include <avr/io.h>...
To mój pierwszy raz z DS18B20. Mam problem z odczytem temperatury z DS18b20. Pierwszy odczyt z układu daje warość 0x0550 czyli defaultowa wartosc po resecie. Jednak nastepne odczyty dają wartość 0x07FF. WTF? Poniżej listing. Procek taktowany 16MHz z zewnętrznego oscylatora. (F_CPU zdefiniowane na 16000000) int main () { uint8_t a=0; uint8_t...
problem tkwi w tym, że program masz do obsługi układu DS1820, a podpięty masz DS18 B 20 (różnią się one rozdzielczością i sposobem zapisu temperatury w rejestrach). W internecie znajdziesz masę programów pod BASCOM i nie tylko obsługujących ten termometr.
Moje doświadczenia z wifi, tymi modułami i gotowymi bibliotekami nie są zbyt dobre. Natomiast popinguj sobie, zobacz też czy z poziomu access pointa widzisz utratę połączenia (włącz może jakiś dodatkowy poziom logowania). Jest sporo kart wifi zasilanych z USB, więc i to powinno dać radę. A jak chcesz żeby ktoś oglądał kod, to wrzuć go w "syntax" wraz...
Masz podciąganie linii danych?
Zajrzyj też [url=http://www.elektroda.pl/rtvforum/to... Tu była podobna dyskusja na ten temat. Pozdrawiam
Uściślijmy jeszcze czy w kodzie który działa też nie masz wartości $framesize, $swstack i $hwstack? Rzeczy należy eliminować sukcesywnie. Dopisałbym te brakujące rzeczy od razu zamiast je podejrzewać... !EDIT! Zapomniałem o tym a już się w tej sprawie kontaktowałem kiedyś z Supportem :D Słowo Hbyte jest słowem używanym przez wewnętrzne procedury Bascom....
Przepraszam, że dopiero teraz ale jestem w delegacji. Minęły dwa dni a Twój termometr nie działa... Możesz słuchać każdego. Ja proponuję takie rozwiązanie które zajmuje dosłownie dwie minuty jeśli robiło się to wczesniej. Sprawa jest w pełni odwracalna. To nie ślub z kobietą :D Więc co szkodzi spróbować? Kiedyś może sam komuś pomożesz. Należy zacząć...
Opis magistrali 1Wire masz w helpie. Poniżej kod na obsługę dallasa DS18B20. Config 1wire = P1.0 'konfiguracja magistrali 1wire Config Lcd = 16 * 1a 'konfiguracja wyswietlacza Deflcdchar 1 , 4 , 10 , 4 , 32 , 32 , 32 , 32 , 32 'znak stopnia Dim T1 As Single Dim T2 As Single Dim B1 As Byte , B2 As Byte , R As Byte Dim Tmp As String * 6 Dim Znak As String...
Ten plik o ile się nie mylę to jest sama biblioteka, w dodatku niekompletna ponieważ kompilator wywala całą masę błędów :/ Edit. I jeszcze jedno znalazłem kolejny przykład spróbowałem skompilować i tym razem dzieją się takie cuda: http://scr.hu/8e6i/jt5tp kody: DS18B20.h [syntax=c]#ifndef DS18B20_H #define DS18B20_H /* DS18B20 przyłączony do portu PA0...
1wreset If Err = 0 Then 1wwrite &HCC 1wwrite &HBE Ds_1 = 1wread() Ds_2 = 1wread() Status_temp = 1 If Ds_2 >= 248 Then 'wartość ujemna Ds_1 = 255 - Ds_1 Ds_2 = 255 - Ds_2 Status_temp = 0 End If T1 = Ds_1 / 16 T2 = Ds_2 * 16 T1 = T1 + T2 ten fragment odczytuje czujnik i pod zmienną T1 umieszcza wartość tempreatury (z pełną rozdzielczością...
Może ten się nada. http://www.polpunkt.pl/termometr-wifi-ds...
Ten twór [syntax=C] if(bit_is_set(PORT_1WIRE, PIN_1WIRE)) ucBit = 1; else ucBit = 0; [/syntax] jest paskudnym sposobem na pisanie kodu ;] Lepszym jest [syntax=C] ucBit=bit_is_set(PORT_1WIRE,PIN_1WIRE); [/syntax]
Podejrzewam, ze jest jakis bład w algorytmie interpretacji odczytanych ajtów z termometru. Z ciekawosci wlazlem na http://pdfserv.maxim-ic.com/en/ds/DS18B2... i jest tam tabelka przykładowych wskazań dla wybranych temperatur. Nie znając programu niemożliwe jest powiedzenie czegos wiecej. pozdrawiam
Hi, CRC nie sprawdzam, ale jestem w trakcie dopisywania mod wziety z http://pdfserv.maxim-ic.com/en/an/app162... W celu ulatwienia sobie zycia na poczatek obliczanie temperatury z dokladnoscia do 0.1 (bit konfiguracyjny na taka wskazuje) kod wyglada tak: res=temp_msb*256 + temp_lsb; res=(float) res/16.0; sprintf(str,"TEMP: %2.2f",res); Dziwna sprawa...
A dokładnie w TSR2 jest DS1820 a ja wpiąłem DS18B20 czyli jedna nie ten czujnik. Zakupiony i wpięty czujnik DS18S20 z oznaczeniem na czujniku DS1820 - działa elegancko.
Jak zrealizować w esphome odczyt temperatury z ds18b20 tylko w czasie załączenia danego urządzenia. Również odczytane dane były wysyłane do HA tylko w czasie włączenia urządzenia i to w interwale czasowym np 5 sek.
Ja też tego nie rozumiem. Chociaż rozumiem, że w tego typu przypadkach na 99% wina leży po mojej stronie. W C programuje dopiero od kilku miesięcy i nie czuję się jeszcze w tym zbyt pewnie. Najprawdopodobniej coś przeoczyłem. Z mojej ręki "poszło do ludzi" ponad dwie setki takich czujników, wszystkie zasilanie oczywiście parasite - innego zasilania...
crc22 = 1wread(8) 'pobranie crc z DS18b20 numer 1 If crc2 = crc22 Then I2 = 1wread(2) 'odczyt temp. To nie ma sensu: 1. 2 bajty temperatury ktore niby odczytujesz do I2 sa zawarte w crc22 (pierwsze 2 bajty tej tablicy). 2. crc musisz obliczać po każdym odczycie z czujnika, z tych 8miu pobranych bajtów. taki pseudokod: Zadeklaruj JakasTablica...
A gdzie odpowiedź na pytanie? ... ... i dalszy ciąg postu, żebym spa..ł itp. który zdążyłeś już skasować, ale ja widziałem i mam kopię :) Nie przesadzasz czasem z tymi żądaniami i pretensjami? Kwarc względem aukcji na allegro jest wbudowany Powtarzam, nie jest wbudowany żaden kwarc, jest oscylator RC. https://obrazki.elektroda.pl/8634664000_...
Jeszcae raz ci powtarzam, iz ten program mam wgrany i dziala na sto procent. Szukaj błedu w ustawieniach. Czy na pewno masz dobrze podłączony DS 18B20 ??
Jak myślisz co tu jest nie tak: #define OW_PORT PORTC // port na ktorym jest termometr #define SET_1Wire DDRC&=~_BV(OW_PIN) #define CLEAR_1Wire DDRD|=_BV(OW_PIN)
Witam Jako początkujący z modułem ESP8266 mam pytanie do znających język programowania LUA: Załączam screen i efekt jego wyświetlania w konsoli i moje pytanie: czemu instrukcja PRINT raz zwraca tylko jedną liczbę a raz 8? Jakiś szkolny błąd, ale chciałbym wiedzieć. Druga sprawa: załączam listing programu (jakiegoś z netu) oraz po prawej na screenie...
Fakt mój błąd, czytałem z góry zamiast z dołu i zamieniłem nóżki 1 i 3. Teraz działa. Tylko że nie wiem czemu nie pokazuje więcej niż 25 st, powyżej dostaje na 7segmentowca 07.0 (wartość po przerobie na 7 segmentów, ale 7 faktycznie wskazuje) I się zastanawiam czy krzywdy nie zrobiłem tej czujce, jakieś pomysły czemu tak się dzieje? ds18b20_init(0,0,...
Sign=43 ; Domyślnie znak "+" (kod ASCII dla + to 43 ) IF Temp.11=1 then ; wykryte, że temperatura jest ujemna Temp=~Temp+1 ; obliczenie Temp=-Temp Sign=45 ; znak "-" endif Deg = Temp & 0x07FF ; wydzielenie bitów temperatury Deg=Temp>>4 ; Wydzielenie bitów wartości całkowitej remain=Temp & 0xF ; wydzielenie bitów ułamkowych ; przeliczenie ich na wartości...
Z reguły to w XMEGA są 4-8 USARTy, z wyjątkiem rodziny E5.
Mam podlaczony do Atmegi16 LCD HD44780 i DS18B20 (pod pin PD0). Nie dziala mi poprawnie transmisja 1-wire. Caly czas na wyswietlaczu wyswietlona temperatura to -16.1 (a powinno wskazywac ok. 25). Prosze o jakas podpowiedz #include <avr/io.h> #include <avr/delay.h> #include <stdlib.h> //LCD #define LCD PORTA #define E 3 #define RS 2...
Co ile czasu odczytujesz temperaturę ? Pozdr
Czy Ty nie widzisz , że ten kod to stek bzdur :?: :| Popatrz:[url=http://www.elektroda.pl/rtv... Piotrek
Witam, dzięki za odpowiedź, teraz nie mam jak sprawdzić ponieważ wyjechałem na święta ale jak tylko wrócę to napiszę co u mnie odczytuje oraz sprawdzę twój projekt. Jeszcze porównam twój gpio.h z oryginalnym. P.S. mam prośbę mógłbyś u siebie odpalić ten mój projekt. Zobaczymy czy u ciebie ruszy. Konfigurację masz w katalogu driver/target_config.h. Pozdrawiam
Witammój problem polega na tym że podłączyłem do megi termometr i po wywołaniu tego kodu im T1 As Single Dim T2 As Single Dim B1 As Byte , B2 As Byte , R As Byte Dim Tmp As String * 6 Dim Znak As String * 1 Sub Temp 1wr 'podprogram 1wr 1wwrite &HCC 'komenda skip ROM 1wwrite &H33 'komenda convert T Waitms 250 Waitms 250 1wr 'podprogram 1wr 1wwrite &HCC...
z 9 bitów to bedzie ciezko wycisnac dokladnosc 0.1 C ale jezeli sie da tp prosze o oswiecenie ;) a co do zmiany to powinna Ci pomuc dokumentacja do DS18B20 strona 7 i 17 jesli piszesz w bascomie to powinienes sobie poradzic
... do czego służy przycisk... Wciśnięcie tego przycisku, powoduje jednokrotne wykonanie programu głównego. DS1990A - odczytanie ID DS18B20 - odczyt temperatury
Daleki jestem, aby moje rady były wyznacznikiem wiedzy, ale w moim projekcie, którym też miałem dalasy też mam problemy z danymi z kosmosu. Co do twojego pytania czy przerwania mogą przeszkadzać w odczycie? Z mojego skromnego doświadczenia tak. U mnie przy projekcie po dodaniu obsługi przerwań zaczęły występować błędy również gdzieś na forum znalazłem...
Do zmiany stanu na porcie "D" służy "PORTD". A "DDRD" zmienia czy to ma być wejście albo wyjście. laki_17 masz rację tylko w przypadku linii 1wire jest akurat dobrze ponieważ wpisując na początku programu zero do rejestru PORTD i ustawiając port jako wyjście ściągamy linię 1 wire do zera. Ustawiając go jako wejście (port w stanie wysokiej impedancji)...
Problem rozwiązany. Okazało się że podciągnięcie z 3,3v przez rezystor 4,7kOhm było niewystarczające. Wystarczyło zmienić podciągniecie na 5V.
Witam, od kilku miesiecy dzialał mi poprawnie projekt na Arduino Mega + 5 sztuk ds18b20 (od 2m do 7m kabla) + oryginalna biblioteka OneWire Wczoraj zaczeło to świrowac i zwracać czasami dziwne temperatury - skoki od małych do wielkich wartości, na przyklad 1->4 40->180 stopni Zmieniałem opornik na inny (z 4,7k na 3,3k, później na 5,6k) ale nie ma różnicy,...
Witam Sprawdziłem dzisiaj długość skrętki - w/g testera to 35m :( Podłączyłem czujnik na 3 osobnych przewodach, a DQ i GND są razem skręcone. Sprawdziłem napięcie na końcówkach przewodu - są prawidłowe (5V). A odczytów niestety wciąż nie ma. Będzie to działać na tak długich przewodach?
Załącz cały kod po poprawkach.
Witajcie, chciałbym lekko odgrzać kotleta i poprosić o wskazanie błędu przy próbie wyliczenia temperatur ujemnych. Odczytuję czujnik DS18B20 w maleńkim ATTINY13 (zmienne float właściwie odpadają) i co około sekundę wysyłam wynik poprzez UART. Dla temperatur dodatnich - dzięki uprzejmości p. Podkalickiego i jego "odchudzonej" biblioteki DS18B20 działa...
Program nie do końca jest mój, nie znam się dokładnie na tym więc zamieszczam cały kod programu.
Z tym próbkowaniem to jest dobry pomysł, wtedy odczyt temperatury spokojnie można robić na przerwaniach licznika sterowanego impulsami z zegara, a µC może robić coś ciekawszego w czasie konwersji w DS18B20... Pzdr, LightI
dziwny problem .. AAaaa .. a czemu skoro zmniejszyłeś rozdzielczość do 9 bitów to robisz wartość / 16 ?? / czy nie trzeba by odpowiednio zmienić działki .. ?? / Masz tu moją bibliotekę dla wielu Ds-ów ( używałem 8 ) chodzi bardzo sprawnie - miałem problemy z zakłóceniami / siały mi falowniki /. Otrzymujesz tablicę z wartościami temp w dziesiątych częściach...
1-WIRE jest bardzo podatne na zakłócenia, poczytaj sobie w dokumentacji DS18B20 i Bascoma o sprawdzaniu sumy kontrolnej CRC.
Zgadzam się z przedmówcą. Kiedyś nie mogłem wyjść z podziwu, że program przestawał działać po załączeniu optymalizacji. Dopiero po pewnym czasie zauważyłem, że optymalizacja pod względem prędkości działania dosięgnęła również... pętli opóźniających :) Dlatego odmierzanie czasu na timerze jest najbardziej precyzyjnym i uniwersalnym wyjściem. I optymalizacja...
main.c [syntax=c]#define F_CPU 16000000UL //definiujemy F_CPU na 16MHz #include <avr/io.h> #include <util/delay.h> #include <avr/io.h> #include <stdlib.h> #include "HD44780.h" #include "DS18B20.h" char str[17]=" Termometr "; int main (void) { double temp; /* W tablicy zapisywane będą dane odczytane z układu ds18b20 */ unsigned...
Nie mogę znaleźć rozwiązania problemu z czujnikiem DS18B20 w wersji w obudowie SO8 - mianowicie czujnik nie odczytuje poprawnie temperatury. Przykładowy kod programu (nie sugerujcie się procesorem bo to działało i na mniejszych, a że pod ręke wpadł akurat 1280 to chyba raczej nie istotne. ) $regfile = "m1280def.dat" $crystal = 8000000 '-------------------------...
Udało mi się rozwiązać problem. Kabel jaki posiadam to kabel USB - RS232 UART TTL i dlatego nie chciało działać. Znalazłem gdzieś w sieci opis podłączenia poprzez ten kabel czujnika ds1820 ale 3 przewodami. Vcc-Vcc Gnd-Gnd Zwieram RX z TX i podłaczam do czujnika do środkowego pinu DQ. Od razu we wszystkich programach bez żadnego problemu wykryło adapter...
Problem jest w sprzęcie a nie w programie. W układzie brakuje kondensatorów ceramicznych 100nF na pinach zasilających uC, LCD, czujnika, wejściu ADC. Nie widzę też filtru na AVCC oraz jakiegokolwiek tantala/elektrolita na zasilaniu. Popraw zasilanie a zamiast analogowego czujnika użyj cyfrowego np DS18B20 na 1Wire.
Bo w HD opóźnienia nie są krytyczne. Swoją drogą to czemu nie użyjesz porządnie napisanej bibliotek z AVR-libc? To piękny kawałek kodu.
Tak na szybko, włączasz przerwania ale ja nigdzie nie widzę żadnej obsługi przerwania.
Tak jak wyżej napisał kolega Szyszkownik Kilkujadek oba czujniki zamontuj obok siebie, być może niewielka odległość oddalenia czujników wpływa na inny odczyt temperatury. Możesz też wykonać następny termometr i badać temperaturę ! Potem następny i następny. Jednak najpierw " wspólna kołderka".
Tu potrzebna jest zmiana koncepcji rozwiązania. Zacznij od skrócenia przerwania obsługi wyświetlacza do jakichś max. 10..12 linii. Co sekundę w obsłudze wyświetlacza inicjuj start pomiaru temperatury, a po np. 800 ms inicjuj odczyt temperatury z czujnika. Całą obsługę DS18B20 zrób w postaci automatu w przerwaniu drugiego timera. Wtedy obsługa DS nie...
1. Poczytaj w datasheet układu co dokładnie robi komenda &H55 i jak jej używać ;) Jeśli już to użyj bascomowego 1wverify(), ale możesz dać tu też &HCC, jeśli masz tylko 1 czujnik. 2. Co do zasilania: http://www.micropik.com/PDF/ds1820.pdf (Strona 24) http://datasheets.maximintegrated.com/en... (Strona 19)
DS18B20 ma chyba programowaną rozdzielczość i wygląda na to że to nie jest zamiennik do DS1820. Ściągnij z Googla PDF-y do obu czujników i je porównaj.
Wiem, temat układów wałkowany ale takiego problemu jak mój nie znalazłem. Od początku, układzik na Atmedze8 , linia 1 wire trój przewodowa, linia danych podciągnięta 4k7. Mam na sztywno wpisane do tablicy nr seryjne układów - tak wiem niezbyt eleganckie. Ale w tym momencie to mało ważne. char czujnik[5][9]={ {0x28,0x64,0xf6,0xb5,0x01,0x00,0x00,0x80...
Masz tu procedurkę odczytu i wyliczenia temperatury. Prościej się nie da. Nie wiem w czym piszesz, ale sama procedura (bascom) jest czytelna.
Z dokładnością do tego, że trzeba byłoby mieć nieblokującą obsługę DS18B20, bo inaczej sam odczyt temperatury zajmie 3/4 sekundy.
Układ termometru DS18B20 jest na pewno oryginalny ? Nie jest podróbką? Był parę dni temat własnie o tych układach, że podróbki stwarzają często dużo problemów z uruchomieniem i prawidłowym działaniem programów. https://www.elektroda.pl/rtvforum/viewto...
A z jaką dokładnością mierzysz tą temperaturę ?
Witam wszystkich! Bawię się czujnikiem temperatury DS18B20 i po odczytaniu wartości temperatury stwierdziłem, że jest ona 3 st. ... A co Ty za "algebrę" spłodziłeś ;) , a na dokładkę jeszcze Fusing :?:. Chcesz strzelać z armaty do wróbla :?: Takie "cuś" , robi sie niezwykle prosto: '*********** DS18B20 12 bit *********************** Dim Tds As Integer,Sds...
Kasować licznik- a nie przerwania- na początek. Kasować licznik i musisz zastosować dwie flagi, inaczej nie da rady. Jedna sprawdzająca czy już możesz odczytać dane, drugie sprawdzająca czy już możesz wysłać żądanie odczytu:)
Proszę bardzo. Nie wiem jak to mogło się popsuć jak działało. A może z uC jest coś nie tak? [syntax=cpp] /* Plik ds18b20.c (minimum kodu do odczytu temperatury z ds18b20) xyz.isgreat.org */ #include <avr/io.h> #include <util/delay.h> #include "ds18b20.h" /***************************************... unsigned char ds18b20_ConvertT(void)...
Piszesz DS1820 a czytasz dokumentację DS18B20, a te czujniki różnią się rozdzielczością. DS1820 ma 0,5 stopnia.
witam, po raz kolejny powtarzam temat, nie znalzałem rozwiązania wertujac inne dlatego piszę. Złożyłem termometr wg kursu AVR GCC. I nie działa naturalnie tzn. na wyświetlaczu pokazuje się jedynie napis Termometr a kiedy odłącze czujnik pojawia się wartość temperatury czasem 0.0C a czaem 800C. Na czujnik nie reaguje. Wyświetlaz obsługuje hd44780 i działa...
Każdy przyrząd/element pomiarowy ma swój błąd.O ile pamiętam DS ma 0,5stopnia.Nawet twój wzorcowy termometr nie mierzy wartości dokładnie
Przeczytać opis protokołu 1-wire? Generalnie odczyt zawsze jest z termometru wybranego poleceniem np. MatchRom. Czyli wysyłasz polecenie MatchROM, następnie ROMCode termometru, któy cie interesuje i dokonujesz odczytu.
(at)opamp: rozkręciłem za pomocą wewnętrznego oscylatora do 8MHz (za pomocą mkavrstudio) i nic to nie dało. Po włączeniu watchdoga "ucina" mi kawałek temperatury, np. kiedy temperatura powinna wynosić 022.3 'C pokazuje mi się 022. albo 3 'C. Tak na marginesie to jednak 30 cm a 2 m to jest lekka różnica ;) (at)tronics: niestety nie pomogło (at)dondu:...
Możesz kolego napisać coś więcej ?? Dodano po 6 Przepraszam, że pisze drugą wiadomość pod rząd, ale możebyś także umieścił tutaj także kompilator kleina. ??
Witam. Proponuję wszystkie operacje przeprowadzić na przerwaniach. Czyli na przykład Przerwanie od Timer 1 steruje wyświetlaniem znaków co określony czas wyświetlasz kolejny znak czas dobierasz na tyle krótki żeby nie widzieć migotania, Przerwaniem od Timer 0 odmierzasz czas dla odczytu temperatury. Pozdrawiam
A nie wystarczy np. zrobić _delay_ms przed każdą funkcją odczytu? Jak odczytuję z ds1302 i jak odczytuję z ds18b20?
Po prostu trzeba odjąć te 3 stopnie przed wyświetleniem temperatury. A jak często odczytujesz temperaturę? Zbyt częsty odczyt powoduje nagrzewanie się czujnika. Pozdrowienia -teedd
z maksymalna rozdzielczoscia DS18B20
(...) y jeżeli elektronicznie podłączenie jest sprawne, zaproponujesz listing (AVR GCC) testujący taka "obciążoną" magistralę wyświetlający adresy odczytanych termometrów, ich parametry i temperatury oraz szacunek, który z nich to fake. Program ma możliwie najwięcej nieprawidłowości wychwycić (obsługa błędów). Rozpoznanie podróbek DS18B20 wymaga zaimplementowania...
Wyczytałem, że czas odczytu czujnika to 750ms To zależy od ustawionej rozdzielczości dla sensora: https://obrazki.elektroda.pl/2866156500_... Chodzi o czas potrzebny na ustabilizowanie się pomiaru (konwersji) od momentu zażądania pomiaru do odczytu temperatury. Dodano po 6 Używając przerwań czasowych (TIMER1 co 1ms), Przerwanie...
(at)504651921 Dobrze, że próbujesz. Warto jednak poczytać co to jest to open drain, bo skoro masz MCU, który obsługuje takie bajery... Tu masz mój przykład z 1-wire na USART (znowu, skoro masz w XMEGA kilka USARtów, to grzechem jest to robić na pinie): http://www.elektroda.pl/rtvforum/viewtop...
6x ds18b20; Ale Kolega nie będzie używał overdrive
odczyt temperatury ds18b20 odczyt temperatury ds18b20 arduino ds18b20 odczyt temperatury windows
magazynowanie excel wygłuszanie pomieszczeń pendrive odzyskanie partycji
łucznik naprężacz sprinter podłączenie webasto
Problemy z kierunkowskazami LED w samochodach Protektory w płycie głównej A2194442A Sony