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....
hexen2k, z tego co przeanalizowałem, to ten fragment dokumentacji, który przytoczyłeś jest zrealizowany w moim kodzie (?): Zgadza się :) michalko12 ma rację, sprawdzasz za późno: http://obrazki.elektroda.pl/2352154200_1... 3us na krótkiej lini powinno zadziałać, jednak przy dłuższych magistralach może być problem. IMHO lepiej sprawdzać...
Potem, jak chcesz to dziel przez 10 i na float ... Float? O zgrozo 1,5kB w plecy :) Tak to się robi: http://mikrokontrolery.blogspot.com/2011...
witajcie. mam problem z konwersją temperatury na czujniku ds18b20 wszystko jak w manualu, ale... 1wire działa dobrze. vcc jest zewnętrzne, data jest podpięte do portu i do vcc poprzez rezystor 4.7K jak w datasheet. uklad dziala, ale pokazuje temperatury o jakieś 80 stopni C za niskie. to znaczy jak w pokoju mam 20 stopni, to na lcd mam -60 (około)....
Witam Wiem że takich tematów jest sporo ale mój problem jest trochę inny. Mam problem z DS18B20 nie wiem jak odczytać z niego dane. Umiem odczytać temperaturę z DS1820 ale z wersji B nie umiem. W wersji DS1820 jest tablica dwóch zmiennych typu byte i w tej drugiej zmiennej jak jest ujemna temperatura jest 255, a wersja DS18B20 drugą zmienną(tak jak...
Można wyświetlać temperaturę w podmenu "wybór_Ds" ale trzeba zmienić cały program. Chyba nie jest tak trudno zapisać sobie cztery ID czujników i wiedzieć później który gdzie przypisać. Najlepiej osobno podłączać każdy czujnik i na naklejce na kablu przy czujniki zapisać jego ID. Wiedząc gdzie jakie jest ID czujnika można już mu w podmenu przypisać odpowiednią...
Kolego fazolek zrobiłem konwersję co 10 sekund i wynika iż mniej się nagrzewa struktura DSa i niema efektu narastania temperatury. Mam dwa takie same czujniki i dwa takie same termometry w jednym konwersja jest co 850ms w drugim co 10s i rozbieżność tam jest około 0,4. Ciągle się im przyglądam i widzę liniowy offset. Oba czujniki są za oknem więc wiadomo...
http://obrazki.elektroda.pl/7995180000_1... Witam! Jakiś czas temu rozpocząłem naukę pisania programów na mikrokontrolery AVR w języku C++. Przeczytałem wiele tutoriali, poradników, itp., aż w końcu doszedłem do pisania własnych, prostych programów. Po kilku takich „pseudoprogramach” zdecydowałem, że teraz czas napisać coś...
http://obrazki.elektroda.pl/8751319800_1... Witam, chciałem zaprezentować termometr pokojowy, który został zbudowany dla rodziców dziewczyny do monitorowania temperatury pieca. Termometr został zbudowany z wykorzystaniem mikrokontrolera Atemga8 w obudowie TQFP32, a za czujnik temperatury służy DS18B20. Płytki pochodzą z innych projektów....
http://obrazki.elektroda.pl/5636705900_1... https://filmy.elektroda.pl/37_1378532310... Termometr mikromocowy LCD ATMEGA16 Tym razem głównym celem projektu było sprawdzenie możliwości wykonania mikromocowego systemu pomiaru temperatury w oparciu o możliwie standardowe elementy, mówiąc w skrócie byłem ciekawy czy zwykły avr może być...
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...
https://obrazki.elektroda.pl/9798266800_... Zwykle przy przeglądaniu nagromadzonych skarbów w postaci części el. przychodzą mi do głowy pomysły ich wykorzystania. Tak było i tym razem. Z jakiegoś starego projektu została mi para nadajnik/odbiornik 434MHz OOK, attiny13 i kilka DS18B20, pomyślałem że na tej bazie zmajstruję prosty bezprzewodowy...
Witam! Szukam jakichkolwiek informacji na temat sposobu pomiaru temperatury przez DS18B20 i temu podobnych układów. Nie chodzi mi o sterowanie magistralą 1-wire lecz o samą konwersję temperatury na wartość elektryczną (termopara/pirometr/czujnik rezystancyjny czy co tam siedzi w środku). Byłbym wdzięczny za wszelkie informacje na ten temat bo w data...
https://obrazki.elektroda.pl/6483751800_... Witam, PROJEKT ostatecznie ukończony :D wersja ostateczna programów dla płytek MASTER Arduino Mega2560 i SLAVE ESP8266-12E Testowałem urządzenie przez kilka dni, w międzyczasie dokonałem kilku przeróbek, jak w kodzie tak i w połączeniach PIN itp. Usunięte zostały wykryte błędy, najważniejsze to...
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 wszystkich przeczytałem wszystkie tematy związane z tym czujnikiem a i tak do końca nie wiem jak sie go odczytuje chcial bym by ktos na podstawie tego krotkiego programiku mogl mi wyjasnic co i jak Do Wait 1 //czekanie 1s 1wreset //inicjalizacja transmisji 1wwrite &HCC // wiem ze tak musi byc ale nie wiem do końca co to oznacza 1wwrite &HBE //jak...
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. 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...
na pcozatku mam pytanie czy czujnik DS18B20 ma jakies rejestry ktore nie są zerowane po wylaczeniu zasilania. Pytam bo kupilem 2 czujniki na allegro(cena 3,50) i wogole nie wiadomo co z nich odczytuje.... kazdy inaczej pokazuje. Poszedlem do kolegi, pozyczyl mi na chwile swoj czujnik i pokazuje dobrze temeperature na moim sofcie i sprzecie. Wiec kupilem...
Witam, mam problem jak w temacie a mianowicie nie wiem jak przekonwertować pierwsze cztery bity LSB które odpowiadają za dziesiąte części stopni aby otrzymać wartość od 0do9 a nie jak jest do tej pory od 0 do 15 (0x00 do 0x0F). Prosił bym o kawałek kodu w [asm] lub jakieś info jak to ma wyglądać.
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...
Wita! Mam problem z termometrem dziwnie wskazuje w pokoju mam 29 stop. ?? i mu nie wierze bo jest max 24 patrzylem na zwyklym termometrze, czytam czytam i kazdy cos wspomina o rozdzielczosci dla serii b moj programik ... config 1wire=portb.0 declare sub odczyt_temp dim temperatura(2) as byte do call odczyt_temp cls lcd "temp:"...
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 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 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, robię termometr z dwoma ds18b20 i mam problem, ponieważ nie mogę wykalibrować tych pomiarów aby uzyskać dokładność do 0,1. Oraz wyświetlić wartość np. 21,5 st C. Termometr pokazuje mi 215, szukałem na forum, ale nic konkretnego nie znalazłem. Przedstawiam mój kod: 'Declare Sub Init Declare Sub Convallt ' Convert T on ALL sensors Declare Sub Odczyt_z_ds18b21...
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...
Podałem wyraźnie, że oprogramowanie napisałem w WinAVR ;) Nie uznaję czegoś takiego jak bascom (wystarczyło mi raz w życiu się na nim przejechać...). Przedstawię "odchudzone" kody źródłowe - aby były całkowicie funkcjonalne należy troszkę dopisać. Ogólna idea jest przedstawiona. Sam main w programie jest niewielki. Dla przykładu pokażę jak zrealizowałem...
Udało mi się połączyć kod, i dopasować preskalery do Atmegi ale podczas kompilacji napotykam błędy których kompilator nie może dokładnie określić prosiłbym o sprawdzenie całości i ewentualne poprawki [syntax=c]//Sterownik wytrawiarki PCB, LCD2x16, ds18b20 #include <avr/io.h> #include <util/delay.h> #include <stdlib.h> #include <stdio.h>...
Po pierwsze odpada drugi procek. Po drugie temperatura jest na ds18b20 i konwersja jest ustawiona na 750ms. Po trzecie zegar wyświetla co do sekundy więc setne nie są istotne. Chcę tylko żeby mi sekundy wyświetlał ładnie, a nie z różną częstotliwością (zacina się na jakiejś, potem nagle przeskakuje szybciej). Wolałbym na przerwaniach...
Z tego co widziałem, to funkcja z pliku ds18b20 zwraca temperaturę jako int16_t czyli ze znakiem. Nie wiem jak to przekonwertować ani co dostanę po konwersji (jak znam życie to wynik będzie odniesiony do 1024 i jeśli 22 stopnie w przypadku int16 będzie częścią 512 bitów tak po zmianie typu na uint16 będzie częścią z 1024) Co do wartości bezwzględnej...
Przy samych jedynkach było by wskazanie 0 (a dokładniej -1/16, wartość binarna FFF.F) 85*C jest zwracane jak układ nie zdążył z konwersją. Nawet jak poprzednia konwersja się udała i poczekasz tą jedną sekundę, to po rozpoczęciu nowej konwersji i zbyt wczesnym odczycie nie otrzymasz nawet wartości z poprzedniej poprawnie przeprowadzonej konwersji. Bo...
Poszedłem po rozum do głowy i zastosowałem sprawdzanie CRC8 . Okazało się że konwersja temperatury w układach DS18b20 przebiegała poprawnie a uszkodzeniu ulegały dane podczas zczytywania ich z układów. Po sprawdzaniu sumy kontrolnej pomijam błędne dane i wyświetlam tylko prawidłowe dane. Chociaż tym przerwaniom także muszę się przyjrzeć. Zatem zrobiłem...
Jest tego sporo, DCF77, 7 x DS18B20 i DHT11 ( akurat jeśli chodzi o niego to mam wątpliwości, czy ten kod działa, bo jest na obydwu płytkach podpięty i zdarza się zawieszenie ) Nadajnik Atmega328p Dodano po 16 Odbiornik Atmega644P - trochę zmieniłem obsługę przerwania, wydaje mi się, że w przerwaniu nie powinno się wykonywać dużych obliczeń. [syntax=basic4gl]...
Jak pisał kolega (at)piotrva wystarczy użyć flagę w przerwaniu aby program był nieblokujący, więc żaden czas się nie marnuje. Osobiście odczyt zawszę robię bezpośrednio w przerwaniu dzięki czemu odpadają mi problemy z błędnym odczytem (nie rozwala mi komunikacji 1wire). Mimo niestosowania CRC nigdy nawet na długich przewodach nie mam ŻADNEGO błędnego...
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...
Tutaj masz gotowy przykład bez użycia float-ów (oszczędność pamięci): http://mikrokontrolery.blogspot.com/2011...
Konwersja na temperaturę : ow_reset() ; ow_write_byte(0xCC); ow_write_byte(0xBE); lsb = ow_read_byte() ; msb = ow_read_byte() ; Temperatura = (msb<<8 | lsb) * 10 / 16 ; A jak masz podłączone wyświetlacze ? Np. część kontrolerów potrzebuje kodów BCD. Używaj opcji SZUKAJ. To co podałem było już niejednokrotnie....
Czy moze ktos ma juz gotową procedure do odczytu temperatury z termometru DS18B20 w bascomie ? Ano proszę bardzo: Dim Bd(9) As Byte Dim Temp As Word Config 1wire = P1.0 Config Lcd = 16 * 2 Do 1wreset 1wwrite &HCC 'skip rom 1wwrite &H44 'convert T Wait 1 1wreset 1wwrite &HCC 'skip rom 1wwrite &HBE 'odczyt pamieci podrecznej Bd(1) = 1wread(9) 1wreset...
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 Używam Attiny2313 do pomiaru dwóch temperatur z DS18B20. Wynik ( Integer ) przesyłam bez żadnej obróbki przez UART przewodem 40 cm do Atmega328. Atmega rozbija odebrane dane i jest obróbka Kod Attiny2313 $regfile = "attiny2313.dat" $crystal = 8000000 $baud = 4800 '********************* Konfiguracja magistrali 1-Wire Config 1wire = Portd.5...
Witam, problem tkwi w wyświetleniu temperatury na LCD. Czujnik działa w trybie 12 bitowym. Szczytuje pierwsze 12 bitów z pamięci scratchpada, sprawdzam czy temperatura jest + czy -, a następnie dokonuje konwersji temperatury na string. Na wyświetlaczu pokazują się jednak dziwne rzeczy. Użycie funkcji typu sprintf odpada (zajmuje za dużo miejsca). Konwersja...
A więc tak:) Konwersja działa można powiedzieć prawie idealnie. Chodzi mi o ten sposób: unsigned char round2(double d1) { return (d1 - floor(d1) >= 0.5) ? ((unsigned char)ceil(d1)) :((unsigned char)floor(d1)); } unsigned char wynik1 = ds.nds[0]; unsigned...
Witam W ramach dalszego eksperymentowania z AVR i Bascom popełniłem połączenie odczytu z DS18B20 z sterowaniem wyjściem uC ( przez tranzystor FET ) + dodatkową atrakcję - buzer, który sygnalizuje wł/wył tranzystora/wyjścia. Chciałem dodać możliwość zmiany temp max i min, przez proste menu. Menu zrobiłem w oparciu inny mój kod obsługujący ustawianie...
Witam Czy ma ktoś doświadczenie w odbieraniu danych z dwóch (lub więcej) czujników drogą radiową... Chcę zbierać dane z różnych czujników (temperatura, ciśnienie, przyspieszenie, itp) wysyłających dane przez moduły 443MHz i odbierać je przez jeden odbiornik, taki DataLogger. Umiem to robić pojedynczo z każdego czujnika i wyświetlać wartości na wyświetlaczu....
Jeśli źle umieściłem temat to bardzo proszę o przeniesienie. Kod który wklejam : http://obrazki.elektroda.pl/7428430100_1...
Do czego to doszło ;p Może od nowa, wersja z i2c chce dopiero teraz wprowadzić jak na razie jest po Bożemu znaczy sie wyswietlacz ze sterownikiem znajduje się na 2pietru kamienicy układ wykonawczy i wyłącznik (countera) znajduje się w piwnicy. Z i2c to dopiero mam zamiar zrobić bo zależy mi na dwóch wyswietlaczach jednym w piwnicy drugim na 2pietrze....
Rezystory są już dane na płytce, zresztą zegar na PCF działa bez zarzutu ( no może trochę śpieszy, ale to kwestia kondensatora przy kwarcu ) sprawdziłem połączenia - nóżki 5 czyli SDA ( 24C02 i PCF8583 ) są podłączone do 23 nogi uC, czyli PC1-SDA. Podobnie z SCL. Teraz zrobiłem tak, że odczyt jest po włączeniu/resecie ( przed pętlą główna ), a zapis...
wykorzystalem zarowno ten sposob na obliczanie temperatury: void Read_Temperature(void) { char tmp[10]; char temp1, temp2; unsigned short int t; if (ow_reset__()==1) test(); write_byte(0xCC); //Skip ROM write_byte(0x44); // Start Conversion _delay_ms(1000); _delay_ms(1000);...
Witam. Proszę o brak agresji w moją stronę ze względu na moje pytanie które zaraz zadam. Temat wałkowany ale jednolitej odpowiedzi nie mogłem dostać więc proszę o pomoc. Wykombinowałem z paru źródeł taki o to kod (wraz ze zdefiniowanymi przeze mnie zmiennymi): #define F_CPU 8000000UL #include <util/delay.h> #include <avr/io.h> #include <stdlib.h>...
Sprawa wygląda tak, że siedze nad tym długo, a w Internecie nie znalazłem nic, co by mi pomogło. Szukałem dość dużo i już zaczynam się frustrować. Nie chodzi o delay trwający 750ms, bo ten wyeliminowałem. Rzecz jest m.in. w tych, które trwają od kilku do aż 500µs (reset pulse). Śmiem przypuszczać, że to właśnie za przyczyną tych krótkich opóźnień...
co prawda w C, ale zasada ta sama: http://mikrokontrolery.blogspot.com/2011...
Przyznam szczerze że mam problem z ogarnięciem tych rozmiarów danych zwracanych itd.. i nie bardzo wiem jak zmienić to wszystko tak, jak powinno być. Generalnie znowu mam problem. Na wyświetlaczu chce wyświetlić temperaturę z termometru DS18B20 - magistrala 1-wire zasilany zewnętrznie. Po dodaniu kodu odpowiadającego za obsługę tego termometru wyświetlacz...
Witam Mimo, że większość proponowanych tutaj rozwiązań podłączenia RFM12 do Atmegi wykorzystuje SPI programowe, ja podłączyłem tradycyjnie, przez SPI sprzętowe - mimo, że nie miałem problemów z wgrywaniem kodu do Atmegi spiętej z RFM12, to uruchomienie ich razem jest problematyczne ( każde osobno działa bez problemu ) [syntax=basic4gl] $include "Config_AVR-DOS.BAS"...
Ja zawsze tak robię i to niezależnie czy czujniki są podpięte w trybie parasite czy normalnie. To oczywiście działa bez najmniejszych problemów i jak pisze kolega wyżej tak wręcz powinno się robić ;)
http://mikrokontrolery.blogspot.com/2011...
http://mikrokontrolery.blogspot.com/2011...
Oto odpowiedź: http://mikrokontrolery.blogspot.com/2011...
Urządzenie dalej przy pierwszym uruchomieniu programu odczytuje 85'C. Nie może być inaczej, skoro pierwsze czytanie temperatur wykonujesz przed wysłaniem polecenia konwersji ;)
Trochę teorii w temacie: http://mikrokontrolery.blogspot.com/2011...
No dobra ... a czy zamiast układu z MOSem nie powinno wystarczyć zasilanie z portu poprzez wystawienie "1" na czas konwersji?
Nominalny czas konwersji temperatury przez DS18B20 to 750 ms, czyli wszystko się zgadza.
Witam. Wydaje mi sie ze masz cos naknocone z czasami. Po pierwsze to nie masz podanego makra: #define F_CPU 16000000UL po drugie wydaje mi sie ze: " void _delay_ms (double __ms) Wstrzymuje działanie programu na __ms milisekund, używając _delay_loop_2(). Makro F_CPU powinno zawiarac częstotliwość zegara w hercach. Maksymalne możliwe wstrzymanie to 262.14...
A o to mój kawałek kodu : ow_reset(); write_byte(0xcc); // pomin czytanie nr write_byte(0x44); // nakaz pomiar temperatury waitms(250); waitms(250); waitms(250); ow_reset(); write_byte(0xcc); // pomin czytanie nr write_byte(0xbe); // zadaj odczytania temperatury tempL = read_byte();...
konwersja temperatura ds18b20 ds18b20 konwersja konwersja temperatura
podłączyć antenę dachu odkamieniacz junkers amatorska elektronika
tester wtryskiwaczy nivona spieniacz
Adaptacja zamiennika przetwornicy w Oplu Insignia AFL Instrukcja obsługi Pioneer VSX-527 po polsku