https://obrazki.elektroda.pl/9826733000_... Wśród projektów dla początkujących elektroników' wszelkiej maści termometry i termostaty były swego czasu bardzo popularne. Łatwo się je teraz realizuje z użyciem mikrokontrolerów, a proste termostaty do wentylatorów przydają się na przykład do budowy wzmacniaczy audio i zasilaczy warsztatowych...
Mógłbym dać rybę ale dzięki wędce, dam Ci coś więcej. Zaglądnij do noty katalogowej, jest tam wartość dla ujemnej temp.: -10.125 1111 1111 0101 1110 FF5Eh Dodaj za hardcodowaną linię z temp. z dokumentacji, [syntax=c] temperatura = sensors.getTempCByIndex(0);//*100; temperatura = 0xFF5E; //<------ -10.125 Serial.println(temperatura); [/syntax] a...
unsigned int, long itp - musisz poczytać o typach zmiennych stosowanych w Arduino ( i nie tylko ) . To dość istotny ale prostu temat. Jeśli chodzi o maktro F_ to tak, nic nie wnosi do działania programu ale zapisuje stałe tekstowe w pamięci programu zamiast w pamięci RAM . To taki dobry nawyk na przyszłość :)
Chwilowo straciłem ten kod postaram się go znaleźć ale opierałem się na projektach z internetu. No bez jaj. Na 99% nic nie masz tylko czekasz na gotowca. Ale dobra, zlituję się na święta :D Pomijając całą beznadziejność kodu do multipleksowania wyświetlacza, takie coś powinno działać: $regfile = "ATTiny2313.dat" $crystal = 8000000 Dim Jednosci...
tak, uwzględniłem powyższe, jak narazie odczytuje poprawnie, jeszcze ujemne temperatury muszę sprawdzić.
Przecież JmL(TM) dość szczegółowo ci napisał jak to wykonać. Chyba że liczysz na gotowca, jeśli tak to nie tędy droga. Zrób sobie zmienną i w niej zapamiętaj wynik pomiaru. Przy kolejnym odczycie od tej zmiennej odejmij aktualną temperaturę: - jeśli wynik tej operacji będzie ujemny to temperatura spadła i strzałka w dół. - jeśli wynik równy jest 0 to...
Załączam sprawdzoną, działającą bibliotekę do 1-Wire. Opóźnienia są policzone dla kwarcu 16MHz. Skoro Ty wykorzystujesz kwarc 1MHz to wystarczy, że podzielisz przez 16 argumenty funkcji opóźniających. Jakbyś miał z tym problem to napisz. Gratis dorzucam też sprawdzoną i działającą funkcję do odczytu i konwersji temperatury z czujnika DS18B20. // odczytanie...
Patrząc na Twój kod zauważyłem że wykorzystujesz funkcję z biblioteki "delay.h". Tymi funkcjami nie uzyskasz dokładnych czasów potrzebnych do obsługi interfejsu 1-Wire po którym komunikuje się czujnik DS18B20. Udostępnię Ci swoją sprawdzoną w 100% bibliotekę do komunikacji po 1-Wire. W tej bibliotece wystarczy dobrać czasy opóźnień dla Twojego kwarcu...
Witam, Proponuję spróbować tego, to kawałek kodu z mojego pliku pomocy w obsłudze termometru DS18B20: 'Odczyt temperatury z dokladnością do dziesiątych części $regfile = "89s8252.dat" $crystal = 12000000 Dim Odczyt(2) As Byte 'deklaracja dwóch zmiennych typu byte do których będą zapisywane dane z termometru Dim T As Integer , Przecinek...
napisze to troche asemblerowym ( nie wiem czy dobrze napisalem) jezykiem: a wiec np: dla temperatury -25 stopni ( cos tam po przecinku ) odczytujesz taka wartość: 1111 1110 0110 1111 - ostnie 4 bity to wartość po przecinku nie bierzemy jej po uwage zostaje 1111 1110 0110 teraz zaneguj wszystkie bity; powstanie ci taki potwór 0000 0001 1001 a to jest...
Zabralem sie za termometr ds18b20. Wczesniej korzystalem z niego, wartosc temperatury wyswietlalem na LCD'ku i wszystko dzialalo. Teraz powrocilem do ukladu z ta roznica ze wart. temperatury wyrzucam szeregowo na kompa. Problem polega na tym ze w hyper terminalu wyswietla mi caly czas jedna wartosc (88). Kiedy wyciagam, w czasie pracy, procka uklad,...
Witam Z racji wolnego dnia postanowiłem jeszcze dokładniej poznać budowę DS18B20 (czasem trzeba sobie co nieco przypomnieć). Odpalam program który zawsze działał i tu niespodzianka... DS działa prawnie do 32 stopni a jeśli temperatura przekroczy ten próg bez względu na to co jest wyświetla 85 stopni aż temperatura nie zjedzie poniżej tego progu. Problem...
Witam Mam zbudowane obecnie dwa termometry na DS18B20 i delikatnie mowiac zaczynam sie irytowac. Oba mocno zanizaja temperature (o jakies 3 st C) Sprawa jest o tyle denerwujaca ze np w dni kiedy nie ma mrozu i temperatura jest na poziomie 1-1.5 st C czujnik pokazuje - 1.8 do -2.2 st C Czy tylko mi sie trafily takie "super" dallasy czy ten typ tak ma...
Witam, DS18B20 mierzy mi dokładnie od 0 do ok 15'C a powyżej tego zawyża temperaturę - maksymalnie o ok. 3,5'C. Podejrzewam że to jakaś wada fabryczna, czujnik kupiony na allegro. Co robić? Może ktoś sprawdzi u siebie te czujniki z allegro? Pozdrawiam
Witam Wiem, ze o DS1820 było juz bardzo duzo watkow ale niestesty nie znalazlem w nich odpowiedzi na moj problem. Zbudowalem sterownik wiatrakow do obudowy PC w którym jako czujniki mam wlasnie DS18B20. Czujnikow w ukladzie jest szesc, problem polega na tym ze 3 z nich dzialaja super i wskazuja temp a trzy kolejne pokazuja ciagle 85*C, zupelnie tego...
Witam właśnie uruchamiam urządzenie z powyższym układem. U mnie w domu temperatura powietrza jest ustawiona około 20*C, na biurku pod lampą i blisko komputera może być oczywiście cieplej. Mam kilka sztuk tego układu, dwa z "nowej" serii i jeden "antyk". Żaden z nich nie był nigdy lutowany. Wszystkie 3 sztuki pokazują temperaturę od około 27*C do prawie...
Kupiłem ostatnio na giełdzie RTV w Krakowie 3 szt DS 18B20 i mam big problem - albo gościu sprzedaje jakieś odrzuty( w budynku giełdy na Balickiej) ,albo ten termometr jest gówno warty !. Dwa z nich w miare dokładnie pokazują dodatnią temperature -ale trzeci kłamie w góre. Natomiast jak je razem zamroże to każdy pokazuje inną temperature.Różnica to...
Zrobiłem sobie termomentr na AVR 2313 i czujniku Dallasa 18b20. Do pewenego czasu działał dobrze, ale od niedawna(nic nie grzebałem w układzie, tylko w programie) jes cos nie wporządku. Podłaczam termometr do napiecia pojawia temperatura 85C i zaczyna wzrastac najpierw 40C potem 50C i tak dalej. Niewiem co mam zrobic, czy jest mozliwe ze, czujnik poszedł...
Witam. Pytam się "starszych" kolegów o radę, a dokładnie o mój sposób rozwiązania problemu, czy ma sens. Sytuacja: używam czujników temperatury opartych na DS18b20 - bardzo solidnie wykonanych, z przewodami w osłonie silikonowej, gilza z pastą przewodzącą, mechanicznie zaciskana w sześciokąt na połączeniu z kablem o średnicy fi5,5 mm, dodatkowo zabezpieczona...
Witam Kupiłem sobie DS18B20 wodoodporny z metrowym przewodem. Podłączyłem go do '51, Vcc, Masa i dane przez rezystor 4,7koma do plusa. Termometr zaczyna działać dopiero jak się go podgrzeje powyżej 30 stopni Celcjusza. Po ostygnięciu poniżej tej temperatury znów nie działa. Testowałem z drugim identycznym termometrem, ale ten drugi zaczyna działać powyżej...
Witam wiem że temat pewnie był już wiele razy wałkowany ale proszę o pomoc. Próbuję odczytać temperaturę z DS18B20 i zawsze mam wartość 16,1 nawet jak jest czujnik odłączony proszę o pomoc gdzie jest błąd w kodzie :cry: #define WE 0 #define PORT_1wire PIND #define SET_1wire DDRD &=~ _BV(WE) #define CLEAR_1wire DDRD |= _BV(WE) //Resetowanie...
Hi. Sklecilem sobie w ramach testow i zabaw termometr z DS18B20, i ogolnie mierzy w porzadku poza dziwnymi zachowaniami.. 1. Wskazuje 23,5 stopnia. (co jest mozliwe). przykladam do radiatorka... kolejno wskazuje: 8, 9,12,16,20,32,38 st... Odejmuje od radiatorka wskazuje kolejno : 38,37, 32,14,12,11,11,10,10,9,9,9,8,8,8, 23.8 Ktos wie skad sie to moze...
Chciałbym dokonywać pomiar temperatury z czterech czujników DS18B20. zależy mi aby ten odczyt był w czasie nie dłuższym niż 2s. Używając przerwań czasowych (TIMER1 co 1ms), [syntax=c] void przerwanie_czasowe() { tmp++; if(tmp>=2000){ tmp=0; odczytaj=8; //w petli loop gdy odczytaj>4 wykonywany jest odczyt z 4 czujników i wyzeruj zmienna odczytaj } //...
Przeczytałem chyba wszystkie posty dotyczące problemów z DS18B20 i nie znalazłem rozwiązania dla swojego problemu. W większości rozwiązaniem jest zastosowanie podłączenia trzyprzewodowego i obniżenie wartości rezystora podciągającego magistralę 1Wire, niestety w moim przypadku zastosowałem trzy przewodowe podłączenie a rezystor podciągający to 3k3 a...
Witam wszystkich Wrzucam część mojego programu do pomiaru i regulacji temperatury. Dla dodatnich temperatur wszystko działa jak należy ale po zejściu tepmeratury poniżej 0 stopni czujnik zamiast pokazac temperatury ujemne pokazuje 127,5C i opada dalej w dół: 127,0 126,5 126,0 itd. tzn nie pokazuje -1, -1,5, itd. Program posainy jest oczywiśice w C...
Witam ! Przegladlem juz milion kodow obslugujacych dwa termometry DS18B20, jednak zaden nie chce mi prawidlowo zadzialac...sklecilem z kilku kodow cos takiego: Config 1wire = P2.5 Dim Dat(9) As Byte Dim Ad1(8) As Byte , Ad2(8) As Byte Dim T As Single , T1 As Single Dim Tmp As String * 6 cls Ad1(1) = 1wsearchfirst()...
Witam Podczas sczytywania temperatur od 0-33 stopni wszystko jest ok. Po przekroczeniu 33 stopni diody sygnalizujące temperaturę zaczynają szalec. Zastosowałem rezytor zewnętrzny podciągający 4k7. Program: [syntax=asm].include"m8def.inc" #define DQ_PORT DDRC #define DQ 5 #define SET_DQ cbi DQ_PORT, DQ #define CLR_DQ sbi DQ_PORT, DQ #define IN_DQ PINC...
Witam, Używam czujników DS18B20 w połączeniu z przystawką USB MP01105T-USB firmy MeraProjekt. Jako że mam początkujące doświadczenie z w/w czujnikiem temperatury podczas testów zauważyłem, że czujnik ten bardzo wolno reaguje na zmiany temperatury. Dodatkowo też po uruchomieniu startuje nie wiadomo dlaczego z wysokiej temperatury i stabilizuje się w...
Witam, Napisałem program termostatu i mam niekiedy problem z odczytem temperatury. Wartość temperatury wyświetlana jest dobrze ale co pewien czasz wskakuje mi wartość 85. Jak można tą sytuacje wyeliminować ?. Drugie pytanie- jak zwiększyć precyzje wskazywania (liczba po przecinku). W chwili obecnej wskazywana jest tylko liczba całkowita. Układ DS18B20...
co prawda w C, ale zasada ta sama: http://mikrokontrolery.blogspot.com/2011...
Ja rozwiązałem ten problem w następujący sposób //.... tmp1 = temp1; // w tmp1 bedziemy trzymac czesc ulamkowa tmp1 &= 0x0f; // wycinamy niepotrzebne bity HHHH temp1 >>= 4; // przesuwamy HHHH w prawo wycinamy LLLL temp2 <<= 4; // wycinamy 4 niepotrzebne bity znaku t = temp1 | temp2; // laczymy i w t mamy czesc calkowita if (t >...
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...
Tak jest. Mam DS1820 (DS18S20) - tutaj temperatura jest stała ale o 60 stopni za nisko a po podpięciu DS18B20 temperatura jest ujemna i cały czas spada. A jaki rezystor został użyty?
Z DS18B20 otrzymujesz temperaturę w postaci zmiennej typu int16_t, którą możesz łatwo porównać z dowolną inną zmienną tego samego typu. Tak dokładeni, to to, co dostajesz jest temperaturą w stopniach Celsjusza mnożoną przez 16. Możesz więc napisać np. if (t > -4 * 16 && t < 25 *16) i sprawdzisz w ten sposób czy temperatura leży pomiędzy...
jestem ciekaw jak tam u ciebie z odczytem ujemnych temperatur, bo wg mnie to będą źle czytane. no chyba że nie potrzebujesz ujemnych
a skąd pewność, że Twój termometr cyfrowy poprawnie mierzy temperaturę? :lol: zaobserwowałem, że dallasy zacznają dobrze pokazywać temperaturę po kilku dniach (czasami godzinach) może trzymasz czujnik za blisko jakiegoś źródła ciepła (stabilizator napięcia), on jest dość czuły :P
1. czy jesteś pewien, że bateria ta będzie dobrze pracować w takich temperaturach ujemnych, jakie zakładasz? 2. Czy jesteś świadomy strat jakie będziesz miał na tak skonstruowanym zasilaniu? Zastosuj DS18B20 i problem z głowy, a przy okazji zmienisz uC na mniejszy i tańszy.
Bardzo fajny opis :) tylko czy bedzie dzialal na DS1820? Bo widze z ty opisujesz DS18B20... Pozdrawiam
..a tak , sorki, chcialem sie ogolnie dowiedziec czy w ogole ta biblioteka obsluguje ujemne temp.. ale oto moj kawalek kodu ..... sprintf(datatemp,"t%u=%+.1f\xdfC",0,ds18... lcd_gotoxy(0,0); lcd_puts(datatemp); .... datatemp jest tupy char, temperatura z ds jest typu flolat... taki kod tez nic nie daje.... w1_init();...
Sprawdzenie czy temperatura jest dodatnia czy ujemna, tylko w wypadku tej drugiej przed wyjściem z if'a trzebaby umieścic procedurkę wyświetlającą/zapamiętującą ten znak. Grzesiek.
Prawdopodobnie dlatego że ten czujnik używa kodu U2. Tutaj więcej informacji. [url=http://mikrokontrolery.blogspot.com... EDIT: Napisz jeszcze co oznaczają zmienne (szczególnie scratchpad)
Hej, czy możesz nam pomóc i zawęzić, która wersja łamie DS18B20 dla Ciebie?
ee no musiało pomóc, sprawdzałem u siebie i kod się zmniejszał o kilka kB pokaż jakim poleceniem ze wszystkimi flagami jakie używasz kompilujesz kod dla tych zmiennych równych 134 i 1: LS Byte: 10000110 MS Byte: 00000001 w MS Byte pięć najważniejszych bitów wskazuje na znak - zera to dodatnia, a jedynki to ujemna trzy najmłodsze bity z MS Byte i cztery...
Czy Ty nie widzisz , że ten kod to stek bzdur :?: :| Popatrz:[url=http://www.elektroda.pl/rtv... Piotrek
Jak projekt radzi sobie z temperaturami ujemnymi?
Zacząłbym od tego: Otrzymujesz wartość zmiennej temperatura równą np. 1871819,25. Jak przemnożysz to przez 16 to okaże się, że wyrażenie (temp1 + (temp2*256)) zwraca wartość 29 949 108. Teoretycznie zmienne temp1 i temp2 nie powinny przyjmować wartości większych od 255, więc wartość maksymalna wyrażenia (temp1 + (temp2*256)) = (255 + (255*256)) = 65535....
Jak wiadomo wzorem na temperaturę Farenheita jest TF=32+(5/9)*TC Akurat jest odwrotnie: T(F) = 32 + 1.8 * T(C) gdzie: współczynnik 1.8 to = (9/5) Należy pamiętać że ZERO(F) nie pokrywa się z Zero(C) ; i ta prosta formuła (a raczej zależność) musi byc odpowiednio zmodyfikowama dla wyznaczania temperatur ujemnych. e marcus
dobra.. mała pomyłka wcale nie musi być zaden float. Czujnik wysyła dane trochę inaczej. Polecam ten topic on dosyć duzo wnosi do tematu mimo że zawarta tam wiedza dotyczy obsługi tego czujnika w c. [url=http://www.elektroda.pl/rtvforum/to... GCC] DS18B20 i temperatury ujemne.
Kolejna sprawa to nie zdziw się jak będą wyświetlać się bzdury przy ujemnej temperaturze.
No niezupełnie, dla ujemnych temperatur to nie zadziała, a dla dodatnich dość pokręcone. [syntax=c]int16_t temp = data[1] << 8 | data[0]; if (temp < 0) { znak = '-'; temp = -temp; } else znak = '+'; ulamek = (temp & 0xf) * 5 / 8; temp >>= 4;[/syntax]
Jaca Dziękuje pięknie teraz wszystko działa jak należy. Zaraz wystawie czujnik za okno i zobaczę co się stanie przy ujemnych temperaturach. Pozdrawiam
Próbujesz szukać w tablicy pozycji ujemnych, tymczasem pozycje w tablicy zaczynają się od 0 do 65535. Nie rozumie takiego szukania temperatur w tablicy, ale jeśli już tak to próbujesz podmieniać, to gdy zmienna tempd2 jest mniejsza od zera to musisz ja zamienić na zmienną dodatnią aby odczytywać za pomocą instrukcji Lookup()
Mam problem jestem początkujący napisałem program który ma za zadanie regulować włączanie wiatraka i czas z jakim ma dmuchać , jednocześnie mierzy temperaturę i nie działa tak jak powinno : Temperatura pokazuję co jakiś czas błędny pomiar np 124 , 32 , 98 procek się resetuje chińskie znaki raz na jakiś czas w programie można było ręcznie zmieniać czas...
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...
Warto dodać, bo nikt nie wyjaśnił jeszcze, że wiatrak powoduje tylko i wyłącznie wymuszenie ruchu powietrza, czyli jak powietrze ma 23 stopnie, to na wylocie wiatraka jest przyspieszone powietrze o temp. 23 stopnie. Wiatrak schładza procesor czy człowieka w upale tylko dlatego, że człowiek czy procesor aktywnie generują ciepło na swojej powierzchni....
Kombinujecie jak koń pod górkę. Nie trzeba robić żadnej "obsługi" temperatur ujemnych. Wystarczy jedno: Ss = Format(ss , " 0.0") i to od razu zapewni poprawne wyświetlanie temperatur dodatnich i ujemnych.
Czy przypadkiem zmienna I nie zwraca ci temperatury ujemnej gdy ona występuje? Znak jest zawarty w drugim bajcie => patrz datasheet.
Dobrym pomysłem byłoby dodanie informacji, czy temperatura jest dodatnia, czy ujemna.
czyli dla dodatnich się mogą sumować ale dla ujemnych już nie ? tak ?
Tu masz sprawdzoną procedurę odczytu temperatury... No nie całkiem sprawdzoną :( Przy temperaturach ujemnych , zawyża wynik o 1 stopień :( Dla B1=&H90 i B2=&HFC wyświetla -54 a powinien -55.Skoryguj obliczenia dla ujemnych :) Piotrek
Ja zrobiłbym to na mosfecie typu P i włączał dodatni biegun zasilania, a nie ujemny.
sprubuj zmienić int na byte (chyba ujemnych temperatur nie będziesz mierzył).
wiem wiem, że tak to się robi mam to napisane w programie dokładniej ten fragment jest za to odpowiedzialny: ................. Tyle, że czujnik ds18b20 nie podaje temperatury tak po prostu do procesora np.: 20 stopni Celsjusza tylko trzeba to troszkę przekonwertować za co odpowiedzialna jest ta część programu: fajnie miło i przyjemnie jeśli temperatury...
OK Faktycznie działa. Ale co z temperaturami ujemnymi :). Wiem że temat jest już długo dla tego wątku poruszany, ale przypadkiem tu wpadłem, sprawdziłem i malutkie bzdurki pokazuje przy ujemnych. W pierwszym zadniu coprawda wspomniano że liczy od 0 to prawie 100 stopni , ale fajnie by było uzupełnić to o liczenie temp ujemnych. Może np. komuś się CO...
Skąd te 0.03V? AVR ma ADC 10 bit i to się tylko zgadza. 10 bit to 1024 ... Gdyby nawet przyjąć scenariusz, że odrzucasz ostatni bit to będzie 512. Gdyby wziąć najgorsze z punktów odniesienia czyli zasilanie 5V AVCC to -> 5V/512=0,009765625V (~10mV=1st. C) Gdyby tak wrzucić na sygnał wyjściowy dzielnik rezystorowy i użyć wbudowanego napięcia odniesienia...
Gdyby nie ujemne temperatury to zaproponowałbym Ci użycie dwóch DS18b20 do pomiaru wilgotności. Jednak ten sposób działa do temperatury zamarzania wody destylowanej. Jednak jest dokładny w szerokim zakresie od 0 do 100%.
Wersja z gotowym kodem nie działa poprawnie, cały czas na wyświetlaczu pokazuje mi 85st, natomiast pierwsza opcja jest już lepsza i widać poprawę, mianowicie przy schodzeniu poniżej 0st, LCD wyświetla nr seryjny DS-ów, ale tylko raz i to na ok jedną sekundę po czym wyświetla temperatury ujemne. Co jeszcze może być przyczyną nieprawidłowej pracy?
Mam okazję przetestować powyższy kod programu i w aktualnej formie nie współpracuje z DS18B20. Po dokonaniu modyfikacji w jednym miejscu zaczął poprawnie pokazywać temperaturę i zmiana typu zadeklarowanej zmiennej Tmierzona z Byte na Word [syntax=basic4gl] Tmierzona = 1wread(2) 'Odczytujemy tylko jeden bajt -> wartość temperatury Shift Tmierzona , Right...
Witam. Zauważyłem niepokojące zachowanie czujników DS18B20 przy pomiarze temperatur bliskich zeru i ujemnych. Moje spostrzeżenie jest następujące: przy pracy czujnika jego temperatura nieznacznie wzrasta i to nawet ponad 1'C ! Zbudowałem termostat. Po wejściu do menu nastaw czujniki nie są odczytywane i w tym czasie (tak mi się wydaje) ich temperatura...
ds18b20 temperatura ujemny ds18b20 ujemny ds18b20 odczyt ujemny temperatura
tranzystor tesla kd503 dzwonek sygnał mastercook kuchenka
eax65424001 schema zacisk akumulatora
Naprawa zasilacza boomboxa JVC RV-NB300DAB Rezystor mikrofalowy obciążenie zastępcze - zastosowanie i działanie