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.
Tutaj masz gotowy przykład bez użycia float-ów (oszczędność pamięci): http://mikrokontrolery.blogspot.com/2011...
http://www.teslabs.com/openplayer/docs/d... Nie ma możliwości, żeby to nie pomogło.
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
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...
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);//...
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...
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
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
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 :)
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...
Dalej to samo... A czemu miało by być inaczej :?: Patrząc na Twój kod , dochodzę do wniosku , że: a) nie czytałeś dokumentacji DS18B20 b)czytałeś , ale nie zrozumiałeś Dlaczego odczytując dane o temperaturze , odczytujesz tylko 1 bajt :?: Pisałem już kilka razy na tym forum , że DS18B20 standardowo zwraca dane w postaci 16-bitowej liczby typu signed...
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...
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...
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>...
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
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...
Mozliwe. Dodales rezystor? Jeszcze masz taka zmienna err w bascomie, poczytaj troche o niej.
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...
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 {...
Oto odpowiedź: http://mikrokontrolery.blogspot.com/2011...
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)
Dzień dobry Mam mały problem ze zmianą kolejności adresów czujników DS18B20. Mam tablicę uint8_t z adresami czujników. Każdy adres zajmuje 8 pozycji tablicy. Napisałem menu ustawień z możliwością zamieniania kolejności. W menu po wejściu w wybrany czujnik mogę przypisać mu adres ze "świeżo" przeskanowanej magistrali. Problem w tym, że o ile po zapisie...
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...
Zajrzyj też [url=http://www.elektroda.pl/rtvforum/to... Tu była podobna dyskusja na ten temat. Pozdrawiam
Witam, mam problem z obsługą DS18B20. Plik main.c [syntax=c]/* * main.c * * Created on: 19 paź 2014 * Author: Kamil */ #include <avr/io.h> #include <util/delay.h> #include <stdlib.h> #include <stdio.h> #include "USART.h" #include "DS18B20.h" int main(void){ unsigned char ucReset; char cTemperatureH = 0, cTemperatureL = 0; float...
Odczytaj_ds: 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 T1 = T1 + 0.05 'T1 wartość temperatury xx.xx T1 = T1 * 10 'wartość całkowita...
Masz podciąganie linii danych?
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...
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ąć...
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....
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...
Może ten się nada. http://www.polpunkt.pl/termometr-wifi-ds...
Niestety nie znam BASCOM'a (za dobrze) wiec pewnie gdzieś popełnię błąd ale co mi tam, moim zdaniem to powinno raczej tak wyglądać: gdzieś na początku: Dim id(8) As Byte Dim tmp(9) As Byte Dim temperatura(2) As Byte Dim crc As Byte id(1) = 1wsearchfirst() pózniej gdzieś w pętli głównej: 1wreset 1wwrite &H55 1wwrite...
Witam. Ja wykonałem ten termometr zgodnie z tym programem i u mnie działa. Jak kolega pisał wcześniej sprawdź częstotliwość zegara mikro kontrolera z programem. Jeżeli kupiłeś nowy mikrokontroler to on ma ustawione 8 MHz/8 = 1MHz, czyli w programie musisz mieć ustawione 1 MHz. Ja mam problem z podobnym termometrem ale z książki "Programowanie mikrokontrolerów...
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.
podaję Ci przykład, ma dodatnie i ujemne, dokładność 0.1 pisany w Protonie, sprawdza sumę kontrolną dallasa, co jest niezbędne w obecności zakłóceń. same obliczenia są oryginalne. oczywiście na DS18B20 pozdrawiam DEVICE = 16F877A XTAL = 16 ALL_DIGITAL = TRUE SYMBOL DQ = PORTA.2 DECLARE LCD_INTERFACE 4 DECLARE LCD_LINES 2 DECLARE LCD_ENPIN PORTb.3 DECLARE...
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...
Witam, Mam podpięty ds18b20 pod atmęgę, korzystam z CodevisionAVR i mam parę pytań może te pytania pozwolą mi na znalezienie błędu w kodzie. 1. Czy taka definicja portu dla 1wire jest poprawna(w CodeVisionAVR): // 1 Wire Bus functions #asm .equ __w1_port=0x07 ;PORTE .equ __w1_bit=1 #endasm Głównie mi chodzi czy później jak się odwołam do samej funkcji...
Hej Wykorzystywałam do obsługi czujników przez avr bibliotekę : http://siwawi.bauing.uni-kl.de/avr_proje... chcąc uruchomić ją na xplained ,czujnik podłączony do PC1 + rezystor pull-up 2k do 3.3V,zmieniłam : [syntax=c]#define OW_GET_IN() ( PORTC.IN & PIN1_bm ) // odczyt wejscia #define OW_OUT_LOW() ( PORTC.OUTCLR = PIN1_bm ) // ustaw wyjscie...
Nie, nie, delay to porażka, wykorzystaj funkcję millis() np. tak : [syntax=c]unsigned long czas; const unsigned long przerwa = 60000; // 60 sekund void loop() { if ((unsigned long)(millis() - czas) >= przerwa) { czas = millis(); // tu pomiar temperatury i ustawienie przekaznikow } } [/syntax] To samo możesz zrobić dla wyświetlania danych na LCD, bo...
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...
niedawno stworzyłem sobie programik do przetestowania programu na pc zanim wgram go do avr. i masz tu go zmodyfikowanego (dev c++) #include <cstdlib> #include <iostream> #include <stdio.h> #include <stdlib.h> using namespace std; //------------------------------------- int main(int argc, char *argv[]) { int...
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.
Witam! Pracuję na AVR, piszę w WinAVR w C+. Otóż gdy temperatura schodzi do zera, to w momencie przejścia przez 0stC pojawia się -0.1, a potem już leci do góry i pokazuje wartość bezwzględną temperatury (znika -0.1 i dalej są same dodatnie wartości). Szukałem tutaj sporo, ale wiekszość jest pod bascoma, a ja piszę w C+... Kod (ściągnęty + oryginalne...
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...
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_...
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...
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
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
... do czego służy przycisk... Wciśnięcie tego przycisku, powoduje jednokrotne wykonanie programu głównego. DS1990A - odczytanie ID DS18B20 - odczyt temperatury
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
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.
Czyli błędny soft...
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...
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)...
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...
Witam Problem jest taki - mam kit AVT570 (8-mio punktowy pomiar temperatury), oparty na DS18b20 ( http://sklep.avt.pl/photo/_pdf/AVT570_US... ). Wszystko dziala bardzo fajnie ale na niezbyt dlugich kablach. W opisie jest ze calosc powinna dzialac do 30 metrow...i tu jest problem. Kabel skretka UTP 5-ta kat. dlugosc ok. 25 metrow i juz niestety brak...
Załącz cały kod po poprawkach.
Witam! Przezwyciężanie kolejnych problemów w programowaniu mikrokontrolerów bywa równie trudne co podniecające ;) Czasami poprostu natrafia się na "opór materii" i nijak idzie problem rozwiązać. Czasami się okazuję, że rozwiązanie było bardzo proste, ale to już inna bajka, a więc: Używając w większości postu zamieszczonego przez slimak281 tu: http://www.elektroda.pl/rtvforum/topic65...
Witam! Mam problem a polega on na tym że: Mam procka atmega 8 oraz trzy czujki temperatury ds18b20. Czujki temperatury skonfigurowane są na 1wire, rezystor podciągający tych czujek to 4,7 kohm. Połączenie czujek jest trój przewodowe. I problem jest w tym że co jakiś czas temperatura podawana przez czujki jest albo 0 albo 85 st. Mierzy dobrze temperaturę...
Program nie do końca jest mój, nie znam się dokładnie na tym więc zamieszczam cały kod programu.
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...
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 '-------------------------...
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
Witam Mam zbudowany układ na atmega 32 i do niego podpięte 4 czujniki DS18B20. Po włączeniu przez kilka godzin wszystkie pokazują właściwą temperaturę. Po tym czasie trzeci czujnik co jakiś czas pokazuje trzecie miejsce po przecinku, a czwarty czujnik również co jakiś czas pokazuje niewłaściwą temperaturę - w okolicach 130 stopni ( rzeczywista temperatura...
Witam próbuje obsługi 1-Wire na przykładzie termometra cyfrowego DS18B20, niestety odczytana temperatura nijak ma się do tego co powinno być, mianowisie dostaje same "1", Pliki biblioteki 1-Wire [syntax=c] #ifndef OWI_H_ #define OWI_H_ // Ustawienie pinu który bedzie pinem OWI #define DDR_OWI DDRD #define PORT_OWI PORTD #define PIN_OWI PIND #define...
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...
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.
Dołączam się do tematu bo mój problem jest podobny. Mianowicie, po złożeniu układu i podłączeniu, temperatura mierzona wyświetla mi 3,0 st C a nie 20 st C (temp. pokojowa). Nawet jak ogrzeję czujnik to wartości bardzo wolno się zmieniają ( nawet jak przyłożę lutownicę do czujnika to temperatura zmienia się z 3,0 do max 8,0 st C). Wszystko inne działa...
(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:...
Masz tu procedurkę odczytu i wyliczenia temperatury. Prościej się nie da. Nie wiem w czym piszesz, ale sama procedura (bascom) jest czytelna.
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.
Bardzo dziwna sprawa z tym delay bo w tym samym projekcie używam biblioteki do obsługi wyświetlacza HD44780 by Radzio i działa tam też jest użyta funkcja delay i działa poprawnie
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...
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.
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...
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".
Cześć, Ponieważ udało mi się poprawnie odczytać temperaturę z termometru cyfrowego DS18B20 na module prototypowym eXtrino XL z AtXmega128a3u na pokładzie - pragnę się podzielić tym minikodem z początkującymi osobami. Myślę, że informacje zawarte w tym przykładzie, pozwolą osobom początkującym (czyli takim co już potrafią migać diodą) na zrozumienie...
A z jaką dokładnością mierzysz tą temperaturę ?
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...
pewnie, że programowo można - ale podpowiem ci , że miałem podobny problem - jak pierwszy raz zrobiłem termometr i podłączyłem nawet 2 czujniki do jednej magistrali to jeden pokazywał prawie cały czas o 2st C więcej niż drugi ;) ... korygowałem to sobie programowo ale okazywało się po chwili, że ta różnica jest tylko przy temperaturach poniżej ok 30st...
Witam. Mam problem z błędnym pomiarem temperatury. Termometr pokazuje temperaturę ok 56-58 stopni(?) w temperaturze pokojowej. Sprawdzałem na innym modelu i nadal mam to samo. Po dotknięciu temperatura wzrasta, więc prawdopodobnie nie jest to spowodowane jakimś nagrzewaniem się układu. Kod napisałem w oparciu o ten artykuł: http://www.jaglarz.com/ja/elektronika/ds...
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:)
Piszesz DS1820 a czytasz dokumentację DS18B20, a te czujniki różnią się rozdzielczością. DS1820 ma 0,5 stopnia.
z maksymalna rozdzielczoscia DS18B20
A nie wystarczy np. zrobić _delay_ms przed każdą funkcją odczytu? Jak odczytuję z ds1302 i jak odczytuję z ds18b20?
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
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. ??
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)
Witam! Pozwolę dołączyć się do tematu żeby nie zakładać niepotrzebnie nowego. Mam taki problem, zbudowałem sobie termometr, który wyświetla temperaturę mierzoną przez czujnik DS1822 i program działa dobrze wyświetlana temperatura jest poprawna, kiedy zmieniłem czujnik na DS18B20 odczyt temperatury już nie działa :/ Cały czas wyświetlana jest temperatura...
Nie używam Arduino i nie znam processing, ale na logikę rzecz biorąc, należy zmienną inString zadeklarować nie jako zmienną lokalną (wewnątrz funkcji) tylko globalną (na początku programu) - tak jak Serial myPort; Coś takiego: [syntax=objc]import processing.serial.*; Serial myPort; // The serial port: String inString; PFont f; void setup() { size(400,...
6x ds18b20; Ale Kolega nie będzie używał overdrive
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.
Tak oczywiscie ze wiem. Program który zamiescilem w tym poście ma obslugiwac DS18B20 i mi nie działa. Ciagle pokazuje 127*C Zupelnie inny program (inna procedura obliczania temp.) napisany przy tych samych bibliotekach i na tym samym HW dla DS1820, dziala poprawnie. Podlaczenie jest typu parasite poprzez 4k7 do +5V. Dodano po 1 Zmieniłem rezystor pull-up...
odczyt temperatura ds18b20 bascom ds18b20 odczyt temperatura odczyt temperatura komputer ds18b20
slaby sygnal korad ka3005 wentylator honda civic termostat
reklamacja wtryskiwacze stable diffusion
PES 2024 na PlayStation 2 - czy to możliwe? Śruba uziemiająca w rozdzielnicy - czy musi być przyspawana?