Witam Mam problem z odczytaniem temperatury z 2-uch ds18b20 program napisałem w C w oparciu o znalezione pliki owire.c i owire.h program się kompiluje jednak na wyświetlacz nie trafiają informacje o MSB i LSB (na początku chcę przetestować na jednym ds18b20 bez konwersji na temperaturę) jedyną modyfikacją jaką wprowadziłem było zdefiniowanie typu u08...
Widzę, że większość pytań o d18b20 jest w tym dziale więc chyba tutaj najsensowniej zadać pytanie. Mam 10 termometrów ds18b20 podłączonych w trybie parasite. Problem jest tym, że odczytanie po kolei wszystkich zajmuje trochę czasu. Z tego co się orientuję, to pomiar temperatury wygląda tak, że wysyłamy do termometru polecenie Convert T i czekamy z wysokim...
Witam, mam problem, kiedyś robiłem termometr oparty na atmega8, z podpiętym lcd i czujnikiem ds18b20, działało elegancko, teraz chcę wykorzystać starą płytkę, uruchamiam a tu nie wyświetla temperatury, tekst na wyświetlaczu jest elegancko, nawet mam podpięty do portu com i też działa, a z tym czujnikiem się już kilka dni użeram i nic. Testowałem na...
Witam, mam pytanie odnośnie przesyłania pomiaru temperatury z czujnika DS18b20 przez RS232 do PC. Korzystam z płytki edukacyjnej: Do uC mam podłączony czujnik DS18b20, wyświetlacz LCD. Pomiar temperatury na LCD wyświetla się poprawnie, to samo chcę wysłać przez RS232 do PC i już nie działa, w ogóle nie widzę, żeby się coś przesyłało (używam Terminal...
Podepnę się pod temat, aby swojego nie zakładać. Zrobiłem taki program(jak poniżej). Kostka DS18B20 odpowiada(obserwuję oscyloskopem) na sygnał Reset z mikrokontrolera. Czyli kostka "żyje". Ale nie reaguje później na żadne rozkazy(Skip ROM, Convert T, czy inne). Okna czasowe są realizowane według zaleceń z datasheet układu DS18B20. Więc co tu może nie...
Aaaa ! bo ty masz układ z tzw. pasożytniczym zasilaniem, to wymaga trochę innej obsługi. Te wersje oprogramowania co zamieściłeś to obsługują transmisję w przypadku gdy Dallas jest normalnie zasilany, tj. GND - Masa DIO - dwukierunkowa linia danych (podciągnięte do +5V przez 4.7k Vdd - +5V W twoim przypadku stosuje się zasilanie z linii danych co wymaga...
Witam! Zacznę od tego, że jestem mocno początkujący w programowaniu uC w C (no i w ogóle w programowaniu). Chciałem zrobić termometr na atmega32, wyświetlaczu lcd przy wykorzystaniu DS18B20. Przewertowałem podobnych tematów na forum multum, przerobiłem datasheet'y i inne takie. Siedzę już nie wiem ile czasu nad tym i nie mogę dojść co jest nie tak więc...
Teraz muszę wykonać polecenie: "Tak jak pisałem wcześniej, domyślnie funkcje printf i sprintf nie obsługują liczb zmiennopozycyjnych. Zatem trzeba też w menu "Makefile->printf() options" zaznaczyć opcję "floating point"." ??? Do tak prostych obliczeń nie potrzeba używać liczb zmiennoprzecinkowych: i nagle program wynikowy staję się króciutki.
Witam Kolegów, zaczynam naukę programowania w środowisku Bascom, na warsztacie mam Attiny2313 i DS18B20, chciałem sprawdzić jak działa odczyt temperatury (wyświetlanie na LCD opanowałem wczoraj, pin'ologia LCD niezmieniona). DS18B20 podłączyłem następująco: 1 - Gnd, 2 - do pin'u wejściowego oraz przez R=4.7k do +5V, 3 - +5V. Całość jest zasilana przez...
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...
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...
Witam wszystkich Elektrodowiczów! Otóż muszę użyć układu DS18B20 do pomiaru temperatury. Sięgnąłem po niego, gdyż kiedyś go używałem i działało wszystko OK ;) - jednak nie tym razem :/. Chcę wykonać po prostu zwykłą pojedynczą konwersję temperatury i odczytać ją ze ScratchPada. Wykonuję: 1. Wysyłam Presence Pulse do DS18B20. 2. Otrzymuję "1". (zapala...
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...
W końcu udało mi się coś odczytać ! :) Dla zainteresowanych podaje sposób w jaki udało mi się to uzyskać. Na początek podał moją konfigurację komputera: - WinXP sp3 PL - Visual Studio .NET 2005 - Microsoft .NET Framework 1.1 oraz 2.0 - złącze RS232 - fabrycznie w komputerze nie posiadam złącza RS232, więc użyłem przejściówki PCMCIA<-->RS232 (...
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. Wyświetlacze są multipleksowane z częstotliwością około...
Witam. Przedstawiam układ który pozwala na podszywanie się pod czujnik temperatury DS18B20. Mógłby się przydać każdemu kto oprogramowuje/projektuje coś co wykorzystuje czujniki DS18B20 lub nawet jakiemuś monterowi czy serwisantowi. Ideą było to, żeby można było odłączyć działający czujnik temperatury, w razie potrzeby skopiować jego ID by się nim przedstawiać...
Po zmianie //send_byte(0xCC); //send_byte(0x44); //_delay_ms(250); //_delay_ms(250); //_delay_ms(250); //_delay_ms(100); sprawdz = RESET_PULSE(); send_byte(0xCC); send_byte(0xBE); tempL = read_byte(); tempH = read_byte(); //konwersja temperatury tempdz = tempL &...
Problem pewnie leży w procedurze. therm_read_temperature(temp); Tam zapewne masz jakiegoś delay-a ustawionego (na czas potrzebny na konwersje temperatury przez DS-a). Musiał byś pokombinować, żeby przebudować tą funkcję a delay-a wbudować najlepiej w obsługę przerwań z timera z którego korzystasz. Np. Timer przerywa częściej, za każdym razem...
Witam Próbuje przerobić kod obsługujący kilka DS18B20 na jednej linii i drugi obsługujący kilka DS18B20 na kilku liniach. Niestety jak na razie efekt jest taki, że działa tylko pierwsza linia, czyli dwa DS18B20. Jeśli chodzi o konfiguracje, to celowo nie ma Config 1wire = Porta.1 gdyż wpisanie tego portu, jako 1WIRE powoduje wyświetlanie 0.0 dla pierwszego...
Witam serdecznie Przejrzałem mnóstwo wątków i stron www o AVR i problemach z komunikacją z czujnikiem temp. DS18B20. U mnie pomiar działa ale jest pewien haczyk - temperatura mierzona jest (i wyświetlana na LCD) do wartości 70stopni Celsjusza. Dalsze ogrzewanie czujnika powoduje, że otrzymuję tylko jedną wartość temperatury tj. 127,9. Po schłodzeniu...
Tym oczekiwaniem jest odświeżanie wyświetlacza (i napisałem że jest beznadziejne :D). Poprawiłem tylko to co sprawiało kłopot, czyli temperatury ujemne. Ale oczywiście też uważam że ten cały kod jest skrajnie błędny. Napisany na kolanie po prostu. No więc widzisz, nie obrażaj się, ale jednak taka pomoc na kolanie też nic nie da komuś kto nic się jeszcze...
Witam Chcę skonstruować urządzenie, które oprócz zegarka mierzyłoby jednocześnie temperaturę i obydwie wielkości wyświetlałoby na wyświetlaczu LCD. Gdy programy napisałem osobno, obydwa działały, lecz gdy połączyłem je w całość, to czas odczytuję bez problemu, natomiast nie wyświetla mi się temperatura. Podejrzewam, że problem jest w przerwaniach. Poniżej...
Piszę obecnie program obsługujący termometr ds18b20. Nie mogę wykorzystać gotowych bibliotek dostarczonych razem z kompilatorem (CodeVision), więc obsługę 1 wire napisałem sam na podstawie specyfikacji. Jednak poza wysłaniem resetu komunikacja nie przebiega poprawnie. Oto mój kod: /***************************************... This program was...
Printf + float na tym procesorze to proszenie się o problemy. Te para ma spore wymagania pamięciowe i można się przejechać przy małych procesorach. Wszystko jeszcze zależy od tego z których bibliotek korzystasz. Konwersję temperatury z DS można wykonać w prosty sposób bez używania floatów.
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...
Dzień dobry, Zbudowałem termometr cyfrowy oparty na układzie Atmega8 i czujniku DS18B20. Do tego podpięty jest wyświetlacz LCD. Termometr "pamięta" i wyświetla temperaturę maksymalną i minimalną z ostatnich 12 godzin. Do tego wszystkiego podłączyłem diodę RGB tak jak na schemacie: Zadaniem diody jest świecenie w zależności od temperatury, czyli jak...
Witam. Napisałem taki program lecz mieszkam w internacie i nie mam przy sobie fizycznie układu. Proszę kolegów o teoretyczne sprawdzenie programu, czy dobrze to zrozumiałem. Pozdrawiam [syntax=basic4gl] ' Termometr DS18B20 $regfile = "m8def.dat" $crystal = 8000000 Config Lcdpin = Pin , Rs = Portc.5 , E = Portc.4 , Db4 = Portc.3 , Db5 = Portc.2 , Db6...
Witam. Posiadam inkubator i sterownik do niego. Wszystko jest okej gdy program działa na wait'ach. Chcę przepisać go do przerwania na timerze ale program mi się zawiesza po wgraniu. Po uruchomieniu nie zawsze pokaże temperaturę, po wyjściu z "menu" również czysty ekran zamiast pomiarów. Cała konstrukcja składa się z: *czterech przycisków Sw1-Sw4 *dwóch...
Taka sprawa: Zasilalem termometr "pasożytniczo", ale dosyc nieuważnie przejrzałem Data Sheet od niego i nie zauwazylem, ze nalezy zapodawac high pullup na szyne przez mosfet, podczas konwersji temperatury i operacji na eepromie :( O dziwo na poczatku ds konwertowal prawidlowo i poprawnie mierzyl temp. ujemne i dodatnie, jednak z czasem zaczely pojawiac...
Program przepisałem całkowicie z zmieniłem tylko port na PC5. Najpierw podłączyłem dobrze i otrzymywałem takie coś: -16.1\0x00\0x00\0x00-16.1\0x00\0x00\0x00... No w moim mieszkaniu to tak ok 24°C. Potem wyciągnąłem układ i wpiąłem źle (odwrotnie masę z zasilaniem)....
Witam mam wielki problem z ds18B20 kość podłączyłem zgodnie z załączonym tematem pobranym z neta soft też pobrany a nic nie działa wyświetlacz ciągle pokazuje 95 bez względy czy sie podgrzewa czy nie...... najdziwniejsze jest to że około roku temu układ działał bez problemu na tym samym sofcie i schemacie, jedynie zmieniłem attiny bo tamto wykorzystałem...
Oj kolego, poważny błąd - zasilaj prawidłowo mikrokontroler: Dzięki za upomnienie, faktycznie gdzieś to przeoczyłem, na schemacie ideowym nawet masa wisi :) Poniżej zamieszczam poprawiony schemat ideowy i płytkę w EAGLE. Widząc duże zainteresowanie kodem wrzucam wsad w BASCOM. Załączam również program współpracujący z urządzeniem. Program może działać...
Odczytywać temperature po ustawieniu określonej flagi w przerwaniu. Kawałek kodu z mojego programu kiedy robiłem to jeszcze w Bascom Dim Flaga As Byte : Flaga = 0 On Timer0 Int_timer0 ' wskazanie do obsługi przerwania Timer 0 Const Factor = &H6A 'częstość wywołania przerwania timera Config Timer0 = Timer , Prescale = 64 'ustawiona na ok. 1,6ms Timer0...
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...
Witam. Nurtuje mnie pytanie czy da się zrobić termostat na 90S2313 przy wykorzystaniu DS18B20. Chodzi mi by wysterować grzałak 200W tak by utrzymywała się temp. ok 40 oC. Co do szczegułów to ma to być ogrzewana wodo o pojemności ok 5 litrów. Napisałem taki program . Config 1wire = Portd.5 : Dim Odczyt(2) As Byte , A As Byte , Dim Z As Byte , T As Integer...
Witam, wiem ze to jest trochę utarty temat potrzebuje pomocy w programowaniu czterech termometrów ds18B20 a meczę sie już dłuższy czas. Poniżej mój kod. (narazie jeden termometr. bez sprawdzania błędów i stanu podłączenia) 1. jak odczytać i wyświetlić temperaturę (z mojej konfiguracji) nie musi być dokładna do 0.1 stopnia!(narazie nawet same pełne stopnie)...
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...
Witam, właśnie pragnę podłączyć dwa czujniki do szyny 1-wire, problem w tym, że przy sekwencji odczytu 64bitowego romu, nie zgadza mi się CRC (jeden czujnik podłączony) i po zaadresowaniu go na szynie, nic się nie dzieje, odbieram same jedynki. przy odbiorze scratchpada crc oczywiście poprawne i wszystko biega... menu: in R16, SREG push R16 rcall...
Witam, zmieniłem trochę program oraz czujnik w tryb parasite power . Sytuacja trochę się poprawiła ale niewiele . Czujnik cały czas pokazuje temperaturę 128.0 stopni . Na początku jak dałem mu za mały czas po komendzie konwersji (0x44) to podawał 85.1 stopnia czyli jak to było gdzieś już powiedziane na forum to nie wyrabiał się z konwersją . Po zwiększeniu...
Witam. Zrobiłem termometr taki jak w temacie tyle że zamiast AT90s2313 dałem ATmege8, taktuje go wewnnetrznym oscylatorem 4MHz ponieważ portb jest zajęty dla wyświetlacza. Po uruchomieniu na wyświetlaczu pojawiają się "niepełne" cyfry coś podobne do 2 lub innej cyfry. Programu nie zmieniałem podłączyłem wszystko według schematu.Wyświetlacz podłączony...
Wklejam funkcje których ja używam i działają w porządku. W moim wypadku jest to osiem czujników na jednej linii więc dla innej wartości też raczej nie będzie problemu. ID pobieram tylko przy jednym czujniku obecnym na magistrali. unsigned char get_onewire_id(void) { int n; RESET_PULSE(we); onewire_send_byte(0x33); for (n=0;n<8;n++)...
Witam. Złożyłem sobie termometr na tym sławnym czujniku. Wszytko chodziłoby ok, gdyby nie to, że powyżej temperatury 34 stopnie wszystko zaczyna wariować. Zaczyna pokazywać na zmianę dobrą temperaturę i podwojoną -zmienia się co kilka sekund i nie zawsze w tym samym odstępie czasowym. Czujnik jest podłączony w ten sposób: Rezystor jak na schemacie 4,7kΩ....
Witam. Mam problem z kompilacja programu. Posiadam gotowego maina i biblioteki tylko nie wiem czy to wszystko dobrze robie... Jest to program do wytrawiarki który steruje grzałka i wyświetlaczem LCD. Chciałbym go nieco przerobic. Tak wyglada main:
Mam problem, podłączyłem dwa czujniki i nie mogę odczytać temperatury. Czy schemat odczytu wygląda tak: 1) Reset 2) write H55 - aby powiedzieć kto ma słuchać poleceń 3) Podaje adres czujnika 4) write HBE dla odczytu scratchpad 5) Odczyt scratchpad do zmienych 6) Reset Mam jeszcze pytanie, co tak właściwie robi 1wverify, co on weryfikuje? Czy połączenie...
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ń...
Witam. Koledzy niby prosty układzik między innymi z czujnikiem temperatury DS18b20. Nijak nie mogę uruchomić tego czujnika. Sprawdziłem wszystko pod kątem połączeń zwarć i zimnych lutów. Ba nawet czujnik podmieniałem i nadal temperatura odczytana z czujnika to -0.1. Wiem że mam jakiegoś babola w programie którego nie widzę. Jak znam życie to jakiś banał...
Witam! Swego czasu zacząłem przygodę z atmegą i nadszedł czas na zrobienie termometru. Chcę to zrealizować za pomocą dwóch 7 segmentowych wyświetlaczy, termometru DS18B20 oraz mikrokontrolera Atmega8. Układ złożyłem, przedstawiony jest na zdjęciu. Niestety nie posiadam układów, żeby użyć mniejszej ilości pinów, dlatego wyświetlacze zajmują właściwie...
Witam. Chciałbym odczytać temperaturę z czujnika DS18B20 przez długie i krótkie migania diodą. Np gdy mamy temperaturę 25 stopni to dioda sygnalizowała by dziesiątki za pomocą dwóch długich piknięć a jedności poprzez 5 krótkich. Dopiero zaczynam zabawę z Bascomem i kompletnie nie wiem jak się za to zabrać. Poniżej wklejam fragment kodu z odczytem temperatury....
Witam. We wstępie chciałem zaznaczyć, że szukałem podobnych problemów, lecz bezskutecznie. Mój problem polega na tym, że po wgraniu poniższego kogu do mikrokontrolera atmega8, na wyświetlaczu LCD wyświetla się napis "*temperatura* wynik: -0,1 stopnia C", brak reakcji na zmiany temperatyry czujnika cały czas -0,1stopnia. [syntax=basic4gl] $regfile...
Jak rozumiem, nie działa w sensie pokazuje stała wartość temperatury? Zapomniałeś wrzucić polecenie startu konwersji temperatury. Dopiero po nim czekasz na zakończenie konwersji i dajesz MatchROM oraz odczyt temperatury.
Może daj odrobinę większy czas na konwersję temperatury, np. 800ms, bo dawanie "na styk" może powodować jakieś problemy; a w ogóle warto sprawdzić, czy występowanie błędu zależy od robienia konwersji temperatury. Plus jakiś mały delay (np. 50ms) po odczytaniu temperatury. Temperaturę czyta prawidłowo?
Poza niepotrzebnymi delay sekunda, 200ms itp wywołujesz requestTemperatures() Dodano po 11 W biblitece masz funkcję "setWaitForConversion". Wywołają ją "setWaitForConversion(0)", wtedy requestTemperatures nie będzie czekać. Po likwidacji delay w loop umieść Dodano po 3 Dobrze byłoby sprawdzać statusy operacji. Nie robisz tego przez co nic nie wiesz...
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 Po przesunięciu w prawo w miejscu gdzie mamy informacje o temperaturze +/- są uzupełniane automatycznie bity 0000 i nie mamy możliwości rozpoznania tego znaku Dlatego stosujemy maskę i wszystko wraca do normy Jeżeli kolega zumek ma inne rozwiązanie to proszę o przedstawienie kilku linijek kodu Jestem ciekaw jak to robią inni Ten kod był sprawdzany...
Stosuję odczyt DS18B20 w przerwaniu, dlatego, że przerwanie rozkładało mi transmisję 1wire. Przerwanie jest wyzwalane z częstotliwością 100 Hz, przez częstotliwość sieci 220 V i służy do obsługi ściemniacza. Transmisję 1wire umieściłem w tym przerwaniu, żeby uniknąć jej zakłócania właśnie przez to przerwanie. Co przerwanie wykonywana jest kolejna instrukcja...
Hej No juz nie moge... Znalazlem tutaj troche informacji o dzialaniu tych czujnikow w trybie bez zewnetrzenego zasilania. Staram sie wlasnie taki oprogramowac, Napisalem juz program dzialajcy poprawnie gdy mam zewnetrzne zasilanie dla czujnika. Teraz staram sie to zrobic gdy tego zasialnia nie ma. Podlaczylem sobie VDD do GND. I po rzadaniu konwersji...
Witam Już wiem co miałem nie tak. Opóźnienia to jest to na co trzeba uważać w dallasie (jak tego nie zrobisz porządnie, to nici z Twojej pracy). Ja wykorzystywałem na początku delay’a który najmniej mógł zliczyć (teoretycznie) 5,7814us (bo #include <avr/io.h> #include <stdlib.h> ///////////////////////// LCD define /////////////////////////////////////...
Witam Oto kod czy ktoś mógłby rzucić okiem gdzie jest błąd? Ogólnie wyświetla przez cały czas 85 stopni. Tak wygląda sama konwersja w czujniku: void LCD_18b20_multidrop(/*unsigned char posx, unsigned char posy,*/ unsigned char *adrr) { unsigned char i,tablica[4]; signed char alarm; int temp; ow_reset(); ow_byte_wr(0xCC);...
Witam mam program który wyświetla temperaturę oto on void temperatura(void) { ow_reset(); ow_write_byte(0xCC); ow_write_byte(0x44); _delay_ms(100); // czas pomiaru ow_reset(); ow_write_byte(0xCC); ow_write_byte(0xBE); lsb = ow_read_byte(); msb = ow_read_byte(); ow_reset();...
Witam panowie od razu podkreślę że jeszcze uczę się bascoma więc proszę nie krzyczeć i nie usuwać tego postu do kosza Siedzę już nad tym 3 dzień i efekt mojej pracy nie najgorszy ale mam parę pytań po pewnych rzeczy nie rozumiem i nie mogę rozwiązać. Więc tak założeniem był pomiar temperatury przez ds18b20 wyświetlenie je na LCD i 4 wyświetlaczach 7...
W nocie katalogowej tego układu jest podany czas jaki maksymalnie może upłynąć od wysłania rozkazu konwersji temperatury do podania strong pullup. Stosowałem tę metodę na avr bez żadnych problemów. Sprawdź czy naprawdę procesor wystawia duży prąd na port. Nie napisał kolega nic o tym co oznacza stwierdzenie "nic takie rozwiązanie nie daje". Nie wiadomo...
Witam. Koledzy mam pytanie dotyczące tego czujnika. Dlaczego w bascomie z powodzeniem i bez błędów działa odczyt temperatury z tego czujnika bez oczekiwania na czas konwersji temperatury? Od jakiegoś czasu stosuje taki właśnie sposób odczytu ds-ów i teraz przy budowie sterownika c.o. zacząłem się temu przyglądać, czytać i wychodzi że czas konwersji...
W moim projekcie sterownika do kotłowni mam problem z odczytem temperatur. Mam 9 czujników, problemu nie było, gdy były podłączone testowo na krótkich przewodach (3 przewody na czujnik). Czujniki DS18B20 są na przewodach o długościach od 2m do 10 m (najdłuższy 10m). Do momentu, gdy podłączonych jest 7 czujników wszystko działa poprawnie, problem pojawia...
Witam, Zgodnie z lekturą próbuję odczytać temperaturę. Przepisałem wszystko tak jak jest w dokumencie, sprawdziłem kilka razy - wydaje mi się że błędu nie popełniłem. Mimo to odczyt temp. nie działa. Otrzymuję wynik -0.1 Oto kod: /* * ds18s20.h * */ #include <avr/io.h> #include <stdlib.h> #include <util/delay.h> // makra #define WE...
Witam, programując termometr z czujnikiem DS18B20 i up Atmega8 napotkałem bardzo drażniącą przypadłość, pomiar temperatury z DS'a potrafi wahać się nawet o 2*C, co jest błędem niedopuszczalnym i nie wiem jaka może być przyczyna takiego uchybu. Czujnik ma 1s na dokonanie konwersji pomiaru, w zupełności wystarczające jest 750ms, ale dałem z zapasem, co...
Witam ! Dokonuje odczytu temperatury z ds18b20. Otrzymuje dwa bajty danych. Te bajty to nie są takie normalne bajty, bo jak wiecie pierwsze 4 bity młodszego bajtu, to część ułamkowa, 5 najstarszych bitów starszego bajtu to znak, a cała reszta, to temperatura, gdzie najmłodszy jej bit ma wagę 2^0. Teraz mam problem jak dokonać konwersji. Bo jak użyję...
Witam serdecznie. Walcze już z tym drugi dzień. Na początku problemem było permanentne wskazanie 0 -1. Jednak gdzieś na forum znalazłem informację aby wymienić czujnik co okazało się strzałem w dziesiątkę. Teraz jednak mam inny problem. Maksymalna temperatura jaką chciałbym zmierzyć to około 100 stopni. Jednak po przekroczeniu wartości 35 stopni układ...
Witam serdecznie Jest to pojekt z tego linku: I stamtąd też pochodzi kod, zmodyfikowałem jedynie maksymalną temperaturę zadaną z 30 do 99. [syntax=vbnet] '***************************************... '#######################################... '# # '# Autor: klops_mops # '# Kontakt: wojtek.gb(at)gmail.com # '# GG: 4925733...
4,7k jest wyliczony raczej dla 5V, DS18B20 jak i STM32 może działać na 3.3V i wtedy proporcjonalnie to już jest ~3k. A jak zasilasz układ czujników jednak 5V to tym gorzej dla układu. Nie mam styczności z MacOS, sprawdzałeś to: ? Poza tym przy wgraniu bootloadera trzeba pamiętać o zworkach, bo się kasuje, może uległeś rutynie? Dlatego robię notatki,...
Gdy ja próbowałem użyć DS18b20, to gdzieś wyczytałem (chyba w przykładzie, który użyłem i zmodyfikowałem), że kolejny odczyt z danego dallasa może nastąpić, dopiero po upływie określonego czasu. Albo to było, że inicjujemy konkretnego dallasa, chwilę musimy odczekać i dopiero za chwilę możemy go odpytać o pomiar. To nie były milisekundy. Spróbuj z...
Sorry zmyliłeś mnie tym koden na 1820(18s20). DS18B20 w pierwszych dwu bajtach temperatura zapisana jest na 12bitah (11 + bit znaku), a w 1820 na dziewięciu (8+1 znaku). 50h i 05h to 0550h (0000 0101 0101 0000binarnie) jeżeli przesuniesz 4 bity w prawo otrzymasz 0000 0000 0101 0101 czyli 0055h czyli 85stC (gotowe stopnie). A w mlodszym niblu mlodszego...
Jeżeli podłączasz na dwóch przewodach DSa to rezystor zmniejsz do 3,3k. Nie chcę mi się pisać więc podaję kod (bascom/asm) '***************************************... !read_temp_1w: Read_temp_1w: 'odczyt rejestrow z ds1820 'Stop Timer0 jnb {fl_pomiar},read_temp_1w_end clr {fl_pomiar} 1wreset...
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...
Witam, Chcialem sobie zbudowac regulator predkosci smigielek a w przyslosci troche rozwinac ten projekt. To moj pierwszy program napisany na podstawie pewnego opracowania. Poniewaz w opracowaniu byla konwersja temperatury dla 1820 a ja mam 18b20 chcialem zasiegnac waszej wiedzy czy u mnie te dzialania sa podejmowane prawidlowo ? Bardzo byl bym takze...
Poniżej przykład. Zwróć uwagę, że w tym przykładzie komenda konwersji temperatury występuje na końcu, a nie na początku. Odczytana temperatura będzie zatem tą która została konwertowana po poprzednim odczycie. To oczywiście nie ma znaczenia dla tego jak adresować czujniki. Powodzenia ! PL Config 1wire = Portd.6 Dim Adresy(16) As Byte Dim T1 As Byte...
To ma być sterownik ogrzewania i docelowo ma obsługiwać większą liczbę czujników, z tego względu zależy mi na tym aby to przerwanie inicjowało konwersję temperatury. Nie chcę programu głównego zatrzymywać na czas oczekiwania na konwersje, a w pętli głównej chcę umieścić jeszcze kilka innych zadań jakie ma spełniać układ. Zdziwiło mnie tylko zachowanie...
Taka modyfikacja nie rozwiązuje problemu ( cykliczny zanik świecenia wyświetlaczy na około 1sek). Kod: Temperatura2: Config 1wire = Portb.4 1wr 'podprogram 1wr 1wwrite &HCC 'komenda skip ROM 1wwrite &H44 'rozkaz konwersji temperatury wait 1 'odczekanie jednej sekundy Return
1. konwersję wartości, 2x za duża wychodzi, powinna być 85*C OK, dodalem: test2= (test>>1); 2. timingi, po wysłaniu rozkazu ConverT trzeba wstawić opóźnienie opoznienie musi byc min 750ms.. bo inaczej otrzymasz zle wartosci Po dodaniu opoznienia i zmiane interwalow czasowych, podczas inicjalizacji, odczytu zapisu zaczelo mi cos odczytywac. Wartosci...
Pokaż cały program. Masz podłączone w trybie parasite, musisz więc ustawiać stan wysoki na linii danych podczas konwersji temperatury.
Jeśli temperatura się zmienia to winą jest procedura konwersji, jeśli temperatura jest stała to bym się zgodził że winne są timingi. Ponieważ nie korzystasz z własnych procedur komunikacyjnych najlepszym rozwiązaniem będzie pomiar timingów oscyloskopem.
Witam! Najogólniej mówiąc musisz te 4 bity podzielić przez 16, natomiast jeśli masz ujemną temperaturę to robisz to samo a następnie otrzymany wynik odejmujesz od 1.
DS18B20 potrzebuje 750ms do konwersji temperatury. Jak nie dajecie tego opóźnienia to otrzymujecie temperaturę nie z danego pomiaru a z wcześniejszego pomiaru(zakładając że odpytujemy czujnik o temperaturę w odstępach czasu co najmniej 750ms). Jeżeli komuś to nie robi różnicy to oczywiście nie musi dawać opóźnień.
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...
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...
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...
No tak wszystko to wiem tylko że próbowałem już podłączać zasilanie ds-a normalnie i program bez polecenia "waitms750" i nic to nie zmieniło. Teraz ds będzie tak właśnie podłączony. Dzisiaj podłączyłem kwarc 12MHz i nie bardzo to pomogło, dobrze pokazuje temperaturę ale wyświetlacz strasznie mruga. Wątpię aby podpięcie 16MHz coś pomogło. Czy nie da...
Nie wiem jeszcze jak więc, liczę na pomoc do kodu poniżej chciałbym dodać funkcje sygnalizacji piknięciem z głośniczka na płytce, informującego o zmianie temperatury co 1 stopień w górę lub dół. płytka EvB 4.3 procesor - Atmega32 kod napisany w Bascomie ' Termometr DS18B20 $regfile = "m32def.dat" $crystal = 16000000 Config Lcdpin = Pin , Rs...
Witaj, Na początku powiem że to wykonalen i to na AVR. Niestety podczas konfiguracji również napotkałem kilka problemów. Opiszę po krótce co i jak. W dokumentacji technicznej masz opisane co i jak powinno być zrobione w trybie parasite power tzn. 1. Podłączyć pin zasilania do masy (o ile dobrze pamiętam) 2. Teraz najważniejsze najbardziej prądożerną...
Temat chyba przekazał wszystko kod od 10 lat nie ruszany działający ale zachciało mi się aby zwracał błąd gdy nie ma jednego czujnika na magistrali kombinuję i stoję w miejscu. [syntax=basic4gl] Sub Odcz_temp K = 1 For J = Poczatek To Koniec 'Odczyt numeru seryjnego z eeprom Readeeprom Register_number(k) , J Incr K Next J Call Zap_num 'Wywolanie procedury...
odczytanie i wysłanie całego bajtu [syntax=c]void send_byte(char wartosc) //wysyla caly bajt do ukladu { unsigned char i; //licznik unsigned char pom; //zmienna pomocnicza for(i=0; i<8; i++) { pom = wartosc>>i; //przesuniecie bitowe w prawo pom &= 0x01; //skopiowanie bitu do zmiennej pomocniczej send(pom); //wyslanie bitu na magistrale...
Witam, Jakiś czas próbuję doprowadzić do ładu mój termometr. Odsyła on sygnał po resecie, jednak próba odczytania temperatury kończy się fiaskiem. Działam na procesorze Atmega8, do opóźnień używam bilblioteki util/delay.h (WinAVR). Termometr podłączony jest na stałe do zasilania. Ten kod napisałem na podstawie dokumentacji temometru i dokumentu opisującego...
Tu masz przykład kodu trochę bardziej zaawansowanego, użyte są podprogramy, można by jeszcze zrobic jeden podprogram do obsługi samej 1Wire, ale to już może sam na przykładzie tego będziesz chciał sie nauczyć. Do czego są te podprogramy? Co do kompilatora, leonsocio(at)wp.pl. Z góry dzięki. Gdybym chciał dodać powitanie przed odczytem nr seryjnego...
DS sygnalizuje w ten sposób błąd/brak konwersji. Podłącz mu +5V do nóżki zasilającej i sprawdź ponownie.
przy odległosci 20m prawda nie, wystarczy zmniejszenie rezystora podciągającego do np. 2.2k. Ja mam 3 czujniki - długośc kabla ponad 30m (kilka sztukowanych) i rezystor 1k. na DS18B20 już drożej. mógłbyś sprecyzować ile? DS18b20 to 3PLN, więc każda różnica nie ma znaczenia. Prędzej fakt, czy musisz ruszyć tyłek i zmarnować czas, odpalić samochód lub...
Dziwne, u mnie wszystkie sterowniki chodzą na 8MHz i DS nigdy nie ma za mało czasu. Może po prostu nie dajesz mu czasu na konwersję (750ms)...
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...
W kodzie widziałem _delay_us(2), _delay_us(15) przy obsłudze magistrali 1W bez wcześniejszego użycia cli(). Sprawdzałeś jak długo wykonują się twoje przerwania? Dotyczy to sytuacji: //wykonanie funkcji w tym miejscu powoduje błędne wyświetlenie lecz nie powoduje migania Miganie zaś (gdy wynik pomiaru ok) jest spowodowane tym, ze w przerwaniu masz _delay_us(15)...
Witam. Mam procedurę odczytu trzech czujników temperatury: [syntax=vbnet] Sub Odczyt_ds18b20 Reset Watchdog Disable Interrupts 1wreset Select Case Ktory_ds Case 0: 1wwrite &HCC 1wwrite &H44 Case 1: 1wwrite &H55 1wwrite Ds1(1) , 8 'adres pierwszego czujnika 1wwrite &HBE Odczyt(1) = 1wread(2) 'odczytaj dwa pierwsze bajty T = Odczyt(2) : Shift T , Left...
AVE... Do wszystkich funkcji podajesz nazwę bitu w rejestrze portu i nazwę bitu w rejestrze kierunku. Przykładowo dla PICa te rejestry to PORTx i TRISx, gdzie x to nazwa portu (A, B, C, etc.). Zatem przykładowo kod dla PIC16F do sprawdzenia obecności dwóch sensorów na dwóch pierwszych pinach portu A i ustawienie stosownych flag w dedykowanej ku temu...