Instrukcja odczytuje 8 bajtów unikalnego numeru i zapisuje je w tablicy począwszy od wskazanego indeksu w stronę narastania indeksów. Czyli jeśli wskazuje się 1 to numer pierwszego czujnika jest w komórkach od 1 do 8. To znaczy, że powinieneś napisać: Z = 9 Adres(z) = 1wsearchnext()
Bawiłem się tym ostatnio. Jak wrócę do domu to ci wrzucę kod.
https://obrazki.elektroda.pl/3874188600_... Zgodnie z propozycją (at)pkaczmarek2 postaram się podzielić tutaj kilkoma pomysłami na rozszerzenia i funkcje firmware OpenBeken IoT, zaczynając "zgodnie z życzeniem" ;-) od rozszerzonego sterownika DS18(B)20. Kod znajduje się w typedef uint8_t DeviceAddress[8]; // wir müssen die...
Odczyt z jednego czujnika (12bit) Co za różnica czy 9 czy 12? trwa około 20ms, Dlaczego tak długo? Bit w 1-Wire trwa ok 64us więc bajt ok 0,512ms. Dziewięć bajtów (wszystkie rejestry razem z CRC) + adres 8 bajt + cmd ok 9,5ms do tego reset (460us) i presence (240us) i pauza pomiędzy reset a presence (nie pamiętam 30 czy 50us), w każdym razie poniżej...
(...) y jeżeli elektronicznie podłączenie jest sprawne, zaproponujesz listing (AVR GCC) testujący taka "obciążoną" magistralę wyświetlający adresy odczytanych termometrów, ich parametry i temperatury oraz szacunek, który z nich to fake. Program ma możliwie najwięcej nieprawidłowości wychwycić (obsługa błędów). Rozpoznanie podróbek DS18B20 wymaga zaimplementowania...
Z tego swojego kodu usuwasz "Odczyt numerów ID czujników temperatury" A w to miejsce wpisujesz odczytane adresy do tablicy z adresem danego czujnika. np. tak będzie to wyglądało dla pierwszego czujnika: Dsid1(1)=&H28 Dsid1(2)=&H65 Dsid1(3)=&HC3 Dsid1(4)=&H89 Dsid1(5)=&H05 Dsid1(6)=&H00 Dsid1(7)=&H00 Dsid1(8)=&H25
Wstałem rano z wyspaną głową i patrzę na Twój kod przy kawie. Deklarujesz 80 bajtów na adresy czujników. Start każdego adresu określasz tak, że mnożysz razy dziesięć wartość zmiennej "Zmienna" Pierwszy Dallas zajmuje więc komórki 10,11,12,13,14,15,16 i 17 Siódmy Dallas zajmuje 70,71,72,73,74,75,76 i 77 ... i tutaj zadeklarowane 80 bajtów się kończy......
https://obrazki.elektroda.pl/1760348500_... Witam. Mam już w posiadaniu kolejny czujnik temperatury DS18B20. Czujnik ten podłączyłem zgodnie ze schematem umieszczonym na zdjęciu. Do jednej dużej podpiąłem 5V, do drugiej Dane (pin cyfrowy np: 13) oraz GND, z Arduino. Dodatkowo umieściłem rezystor 4,7k ohm, w celu dokładnego odczytu...
Rozpoznawanie za każdym razem ID ROM może i jest uniwersalne ale ja tez wybrałem prostszy sposób oznaczyłem sobie każdy czujnik i odczytałem jego ID. Aby odcztać ID ROM na magistrali musi być tylko jedno urządzenie na którym wykonujesz np taka operacje: [syntax=c] void IdRead(u08 *tab)//Odczyt adresu przetwornika { u08 n; wire_reset(); wire_write_byte(0x33);...
Witam. Widze ze brak jakichkolwiek odpowiedzi. Może ktoś z was napisałby mi taki program pod ten procesor. Oczywiście za opłatą. czekam na info na powyższy adres
Piszesz o testowaniu po kolei każdego bitu. O jakie bity chodzi? Bo tego nie załapałem. Jeśli piszesz o możliwych czterech stanach to co masz na myśli dokładnie? Idea jest taka, po instrukcji Search ROM dokonujesz dwa odczyty (w sensie magistrali 1wire, czyli odpowiednie impulsy odczytujące), najpierw urządzenia które mają pierwszy bit zero zwierają...
Ale zle ci hulało, albo jeden tylko sie meldował !!! W przypadku gdy stosujemy tryb pracy DS z pasywnym zasilaniem to nie działa logika DS odpowiedzialna za pracę układu w trybie adresowym ! Normalnie gdy kazdy DS pracuje z zasilaniem 5V to można podłaczyć wiele DSów do magistrali 1-wire i kazdy jest rozrózniany po swoim unikatowym numerze (adres) i...
Witam, jak dokładnie ma wyglądać procedura wyszukiwania podpiętych do magistrali układów 1wire? Komenda to niby "F0h" ale jak to dokładniej ma wyglądać? Nie ma problemu z obsługą 1 układu na lini, czy też wielu układów jak znam już ich adresy. Jednak nie wiem jak poprawnie wykonać procedure odczytu adresów w przypadku gdy do lini podpiętych jest kilka...
I właśnie o tą tablicę mi chodzi, czy dany czujnik temperatury zawsze przyjmie to samo miejsce(pozycje) w tej tablicy???, czy np po restarcie zasilania, czy po ponownym wyszukaniu jego pozycja w tablicy się zamieni??? Jak one się sortują na tej tablicy??? Kol. BlueDraco już odpowiedział. Ja tylko dodam, że ta tablica jest sortowana po adresach i warto...
Ręce to opadają i masz rację ;) Masz błąd w definicji zmiennej do której wpisujesz ID czujników to nie jest jeden bajt tylko tablica 8x8bitów czyli 8 bajtów. Adresujesz nie istniejące czujniki bo ich adresy sa niepoprawne, wysyła procek ciagle ten sam bajt. Dim Adres1 As Byte 'adres pierwszego Dim Adres2 As Byte 'adres drugiego Dim Adres3 As Byte 'adres...
Najlepiej będzie jednak jak pokażesz kod. Algorytm odczytu ROM-adresu rzeczywiście powinien wyglądać tak jak opisujesz. Być może uda się dostrzec jakieś błędy w samej funkcji.
Drogi kolego dondu, Kiedy ściągałem oprogramowanie ze strony Atmel nie znalazłem informacji że to BETA Bardzo proszę o rozwinięcie tematu delay Podaje jeszcze raz adres źródła www.jaglarz.com/ja/elektronika/ds18b20.p...
Cześć. Z Arduino Uno chcę zrobić termometr 5 kanałowy z odczytem na LCD i przez przeglądarkę na komputerze/smartfonie w sieci LAN. Mam UNO, termometry MY18E20 (kupione na all... jako DS18B20, ale ktoś z kupujących je rozebrał i stwierdził, że układ jest to właśnie MY18E20) i płytkę W5100 podłączaną na 10 pinów. Czy to wszystko ze sobą zagada? Nie bardzo...
To nie jest poprawny zapis http://obrazki.elektroda.pl/3954802400_1... Życzę miłego dnia
soft wyglada OK, uszkodzenie DSa jest mozliwe, zaobserwowalem ze gdy wywala sie na CRC to odczyt z czujnika jest FF FF FF FF FF FF FF FF bledne odczyty zdarzaja sie z roznych czujnikow, nie z jednego co ktora enumeracja czujnikow pomija tez niektore czujniki - adres nie zgadza sie z zadnym ze zdefiniowanych
Jak potrafisz odczytać adres czujnika to dokumentacja ds18b20 do ręki i strona 17 tabelka pierwsza. Cała sekwencja do odczytu przy adresowaniu poszczególnych czujników. Prościej już się nie da wytłumaczyć.
Ważny też jest rezystor podciągający DS-y. Przy 4 szt. stosuj ok. 1,5 kOm , przy większej ilości czujników trzeba jeszcze mniej, nie mniej jednak niż ok. 700 Om. Przy źle dobranym pull-up rezystorze miałem problemy z odczytem temperatur mimo poprawnego programu i właściwycch adresach DS-ów.
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)...
Czy tak może być? Nie. Po komendzie: "1wwrite &H55" Spodziewana jest komenda wpisu adresu adresu device do której odnoszą się dalsze komendy, ponadto: Błędem jest stosowanie tejsamej flagi (niby stopniowej) do wielu operacji bez jej kasowania. Zauważ że flaga=1, lub flaga =2 utrzymuje sie przez dłuższy czas, o wiele dłuzszy niż 'przewinięcie 'pętli...
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...
W ogóle skoro nie potrafisz odczytać tego co napisałem wyżej to znaczy że do końca nie rozumiesz co to tablica. Wyjaśnię najbardziej łopatologicznie. Wyobraź sobie, że tablica to pociąg z wagonami od 1 do 8. Każdy wagonik może przewozić daną liczbę. A cały pociąg ma swoją nazwę np. pociąg "Kopernik" Więc. Ds1(1)=9 Oznacza, że mamy tablicę o nazwie "Ds1",...
Witam Skompilowałem wsad na którym można uruchomić to urządzenie napisany na kodzie z int DS_TEMP = 5; // DS18B20 Temperature pin int AC_LOAD = 3; // PD3 Output to Triac pin code from https://alfadex.com/2014/02/dimming-... int PC817_DET = 2; // PD2 INT0 interrupt pin connected to cross zero detect circuit volatile byte state...
co do dlugosci i2c, od biedy da sie wyciagnac 50m o ile jest dobry kabel...kiedys robilem takie testy, cyrk był nieziemski ale stosujac pare buforów ze schmittem i odpowiednio powolną transmisje (scl=50kHz max) nie ma bledów...co do MCP23008, istnieje tez MCP23016 ktory mozna kupic w tej samej firmie (linka podawalem w poprzednim poście) i jest on 16bitowy....
Chcę pominąć odczytywanie adresów na każdym z czujników. Wydaje mi się że tak będzie prościej obsługiwać ten termometr.
Ja mam to u siebie zrobione na maszynie stanów - niestety program jest napisany w ASM i a PIC'a, więc nie nadaje sie do bezpośredniego przeniesienia, ale istotny fragment mogę zamiescic: [syntax=asm] ;---------------------------------------... ; Odczyt temperatury z DS1820 - Match ROM bra uL_ResPres ; State=9 - reset/presence...
Szybkie pytanie od laika, na odmóżdżenie ;) z akademii nettigo skopiowałem sobie kod odczytujący dane z kilku czujników DS18B20 - działa on prawidłowo. Jednak arduino z tym kodem zasypuje mnie co 0,5s odczytami z czujników. A nie wiem jak przerobić kod tak, by arduino wysyłało mi odczyty na wyraźne żądanie, czyli np na komendę "odczyt" Mój obecny kod(a...
Witam! - Między wysłaniem polecenia pomiaru, a odczytem temperatury musisz odczekać 850ms. - Żeby odczytać temperaturę z konkretnego czujnika musisz w poleceniu odczytu podać adres czujnika. - Błędna ilość czujników często wynika z zakłuceń i "luzów" na magistrali 1-wire. Pozdrawiam
Wszystko masz w dokumentacji układu http://www.iele.polsl.pl/elenota/Maxim/2... Wystarczy przeczytać dokładnie. ... 1wreset 'reset magistrali 1wwrite &HCC 'komenda opuszczenia adresu (bo jest jeden DS18B20) 1wwrite &H44 'komenda rozpoczęcia konwersji Waitms 750 *czeka aż ds18b20 przetwozy temp -tu dobrze 1wreset 'reset magistrali 1wwrite...
Witam, potrzebuję pomocy z kodem na Arduino. Chodzi o adres czujnika DS18B20. Korzystam z poniższego kodu aby zeskanować adres: '..................' Korzystam również z biblioteki DallasTemperature.h do obsługi DS18B20 i tu moje pytanie jak z tego kodu skanera wyciągnąć ten adres do jakiejś zmiennej aby później zapisać go nie tak: To po co w takim...
Kombinuję z programem obsługującym DWA termometry DS18B20. Używam ATmegi8 i programuję pod C. Chodzi o odczytywanie temperatury na dwóch magistralach onewire - dwóch pinach. Przerobiłem standardową, powszechną bibliotekę do obsługi DS18B20 zmieniając to, że normalnie adres bitu portu magistrali 1W jest definiowany jako makro, a ja zrobiłem z tego parametr,...
Tak samo jak masz 10 zmiennych na adresy, możesz zrobić 10 zmiennych na temperatury, zadeklarowane w tym samym bloku programu będą globalne i dostęp będzie do nich z każdego miejsca w programie. Jeszcze lepiej zrobić tablicę o 10 elementach. Potem tam gdzie masz funkcję, w której odczytujesz temperaturę i ją drukujesz możesz też przypisać do zmiennych...
Witam Temat jest taki. Posiadam magistralę 1wire na której są zamontowane termometry DS18B20 oraz przełączniki DS2407. Pracuje na tym sterowanie ogrzewaniem w mieszkaniu. Do tej pory sterowałem nią układem na bazie Atmega168 i działało to prawidłowo. Zbudowałem następny sterownik z Atmega32 na pokładzie i zaczeły się schody. Odczyt adresów układów prawidłowa....
Witam Ja także mam problem z DS1820. Być może spotkaliście się z czymś takim i możecie mi podpowiedzieć co zrobić . Próbuję odczytać 64-bitowe adresy ROM układów celem podłączenia kilku sztuk do jednej lini i odpowiedniego adresowania. Mam podłączony 1 DS i używam nastepujących kroków: 1. reset 2. wysłanie 33h 3. odczyt 8 kolejnych bajtów adresu Ale...
Wydaje mi się, że pomyliłeś fazy sygnałów wysyłanych do czujników. Najpierw powinno być[syntax=basic4gl] 1wreset 1wwrite &HCC 1wwrite &H44[/syntax] . To oznacza, ze wszystkie czujniki muszą zacząć konwersję. Następnie trzeba w jakiś sposób odczekać około 750 milisekund i dopiero dokonać odczytu z poszczególnych czujników. Odczyt też wypadało by poprawić...
Jak mam rozwiązać aby omijał adresy czujników które ma i które są już dodane - chciałbym aby adoptował adres którego jeszcze nie zna. Hm... może jakaś lista aktywnych czujników? Może się przyda..., tutaj masz kod z podobnym problemem: https://www.elektroda.pl/rtvforum/topic3... .
Wydaje mi się, że wystaczy na port COM podać jakieś dane (na linię TXD), a układ sam powinien nam odpowiedzieć wysyłając na linę RxD np. temperature? No to źle Ci sie wydaje :D To raczej oczywiste że należy czujnikowi wysłać rozkaz konwersji, a po (co najmniej) 750ms rozkaz odesłania wyniku. O adresowaniu (bo masz więcej jak 1 czujnik) nie wspomnę....
Mój program nie uwzględnia podłączenia dwóch czujników do jednej linii. Trzeba by przerobić funkcję odczytów tak aby nie ignorować adresów (opcja/komenda skip ROM powoduje ominięcie adresowania). Adres w DS ma 64 bity a nie jak kolega napisał 16 bit. Trzeba by go gdzieś wprowadzać po odczycie. Można na etapie kompilacji w plik np. .h lecz zmiana czujnika...
Siemka! Nie ma większego problemu i z paroma czujnikami. Rozwiązania tego problemu są conajmniej dwa. 1. Wrzucasz czujniki każdy na innym pinie portu mikrokontrolera i odczytujesz wynik korzystając właśnie z algorytmu dla jednego czujnika. Jedyna kwestia to tylko sekwencyjne przełączanie interface'u 1-Wire pomiędzy połączonymi z czujnikami pinami portu....
koledzy, zlitujcie się :) Zamiast dyskutować akademicko, może byście poratowali po prostu prawidłową funkcją :) Pewnie,że sam powinienem się wgryźć w ten 1wire, ale nie mam teraz czasu na to. Przejrzałem wszystko co się dało znaleźć na elektrodzie, i nie znalazłem łopatologicznego wyjaśnienia, dlatego po prostu zrobiłem jak mi się wydawało ok. No ale...
A w jaki sposób wyszukujesz te czujniki? Należy to zrobić przez SEARCHROM, zapisać gdzieś wszystkie adresy, a przy odczycie temperatury wywoływać kolejno te adresy. Wyszukiwanie wszystkich układów: unsigned char ow_search_address() { uint8_t conf_mask[8]={0}; uint8_t i, j, retcode; unsigned char dev_num; for(j=0;j<3;j++)...
Ten opis nie jest raczej numerem ROM w przypadku DS18B20. Niestety nie mam pod ręką odpowiedniego asortymentu, aby to sprawdzić, ale znalazłem gdzieś w internecie zdjęcie, na którym jest kilka czujników z takim samym napisem (o ile to nie fotomontaż). Liczba cyfr też by na to wskazywała. Najlepiej skontroluj CRC dla odczytywanych adresów, o ile masz...
Kod dla 18B20 1wreset 1wwrite &H55 1wwrite Adres(1) 1wwrite Adres(2) 1wwrite Adres(3) 1wwrite Adres(4) 1wwrite Adres(5) 1wwrite Adres(6) 1wwrite Adres(7) 1wwrite Adres(8) 1wwrite &HBE Odczyt(1) = 1wread(2) T(p) = Makeint(odczyt(1) , Odczyt(2))...
Jeśli wyswietla wartość 127,9 to znaczy ze z czujnika ida same wartości FF. Z doświadczenia wiem że taki stan rzeczy powoduje błędne podłączenie czujnika! Patrz dokumentacja ( ale w niej widok nóżek od spodu czujnika!!). Jeśli raz to źle podepniesz juz zwsze będzie pokazywał 127,9...... Jesli chodzi o poprawność transmisji to napisz sobie krótki programik...
Tzn. mam tablicę 24 bajty ( na razie do testów). I teraz podaje adres początkowy z tablicy, od którego zaczyna się ID układu DS18B20. Podprogram ma załadować ID, odczytać, sprawdzić CRC i w odpowiedzi podać mi LSB, MSB, status czujnika, histereze ( poprzednią muszę mu jakoś podać ) i wynik w postaci zmiennej typu string. Wzorowałem się na czymś takim:...
Hey czyli problem jest w instrukcji Ss = Format(ss , " 0.0") wrzuć ten program i powiedz czy wszystko gra jeżeli tak będę pisał co zrobiłem. [syntax=basic4gl]$regfile = "m8def.DAT" 'deklaracja procesora, w tym wypadku Atmega8 $crystal = 1000000 'deklaracja cześtotlwiości pracy (wew oscylator 1MHz w zupełności wystarcza) 'Deklaracja portów od wyświetlacza...
Zajrzyj do przykładów z biblioteki DallasTemperature, błędów masz tu wiele, brak "begin" dla czujników, nie zlecasz pomiaru temperatury, nie określiłeś sensownego interwału odczytu czujników i wyświetlania danych na LCD. Odczyt czujnika 3 na magistrali to ...ByIndex(2). W przykładach DallasTemperature jest też jak odczytać adresy czujników i pytać...
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 Wszystkich. Na wstępie chciałbym zaznaczyć iż nie jestem nawet początkującym jeżeli chodzi o język C czy Arduino . Chciałbym jednak dokonywać pomiaru z dwóch czujników ds18b20 podłączonych pod wspólny port modułu ESP, drugi port ew. do pomiaru napięcia. Chciałbym to robić przez UDP na adresie rozgłoszeniowym i tylko lokalnie po mojej sieci. Do...
Wrzucam tu procedurki którymi ja odzczytuję DS18B20 w asemblerze '51 może się przydadzą :) ; /-----\ ; |-------| ; | | ; |DS12B20| ; |_______| ; | | | ; GND Vdd ; DQ ; PIN1WEQU P1.0 ;=======================================... ; procedura odczytu temperatury z DS18B20 ;---------------------------------------...
Witam. Kolega Kazjo się chyba pomylił. Punkt 2 wysłanie komendy (55h) Match rom uaktywnia układ którego zawartość ROM jest taka jak sekwencja wysłana przez mikroprocesor. Ale skąd mam wiedzieć jaki jest adres urządzenia i CRC. Przeanalizowałem notę ds18b20 (zaznaczam że z angielskim to nie mam wiele wspólnego, użyteczna okazała się pomoc słownika) i...
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ą...
Witam. Mam problem z programem który w inny urządzeniu działa jak należy. Program odczytuje numer ID z DS18B20 zapisuje w pamięci a później odczytuje go z pamięci i dzięki niemu odczytuje temperaturę z jednego z dwu czujników. Problem w tym że tej temperatury nie odczytuje. Procesor "widzi" czujniki bo wyświetla ich ID. Same czujniki też mogę odczytać...
Masz w dokumentacji napisane, innym rozkazem zwróci Ci wartość rejestrów wewnętrznych (jest wśród nich wartość temperatury) innym jeszcze rozkazuje się wykonać pomiar. Komunikacja jest identyczna jak przy odczycie adresu ROM.
Tworzę sterownik który będzie operował na 4szt DS18b20 Program jest pisany w bascom Czy w bascomie można zadeklarować tablicę dwu wymiarową Tablica (4)(8) Dla czego przy odczycie danych muszę ponownie resetować magistralę i podawać numer seryjny układu. Podobno po wysłaniu za pierwszym razem numeru układu inne milczą a wskazany nadsłuchuję 1wreset 1wwrite...
Nie ma bata. Z ds na 1wire i multiplexem led musi mignać. I nie słuchajcie zadnych zapewnień że "mi nie miga". Napewno miga. rygory czasowe w ds to są us (mikrosekundy) i nie ma takiej możliwości żeby bascom się wyrobił. Rozwiazanie? Zacząć stosować czujniki na I2C zamiast 1wire. Transmisja moze być całkowicie zatrzymana i nic to nie przeszkadza. Do...
Kod, jak zwykle "bogato" komentowany i nieumieszczony w znacznikach syntax. Umieść w syntax, łatwiej się to analizuje. Na pierwszy rzut ok powinno działać. Czemu służy to: OneWire oneWire(ONEWIRE_PIN); OneWire onewire(ONEWIRE_PIN); [/syntax] ? Co pokazuje analizator (np SaleAE)? Zamieniałeś adresy termometru który nie działa z innym? Jakie efekty? Co...
Witam ponownie Zrobiłem to przez Timer0. Jednak problem z aktualizacją wyświetlania dalej występuje. Jeszcze drugi problem to start, przez okres zdefiniowany zmienną Licznik ( teraz równą 300 ) nic się nie wyświetla - dopiero po czasie = 300. Próbowałem również z Enable/Disable Interrupts na czas pomiaru, ale nie było żadnego efektu. Mam takie pytanie...
Można zapamietywać adresy Dallasów w Eepromie Atmegi taką metodą jak w plikach fontów. Adres każdego czujnika znajdziesz w Eepromie dodając do adresu startowego wielokrotność liczby osiem. Możesz wczytywać do SRAM tylko jeden adres na raz. Załóżmy że nie nie zapisujesz adresu 00 bo ten adres może zostać zamazany podczas Reset wiec zaczynamy od 01. Każdy...
Witam, W datasheet'cie tych termometrów możesz dokładnie przeczytać w sekcji "CRC GENERATION", że układ generuje 2 sumy CRC, jedną ze swojego adresu a drugą z zawartości scratchpad'a (czyli pamięci w której jest przechowywany przed wysłaniem odczyt temperatury), tak więc sprawdzając (jeśli dobrze rozczytuje twój kod) CRC adresu uchroni cie jedynie częściowo...
[syntax=c] #include <Wire.h> #include <OneWire.h> #include <DS18B20.h> #include <LiquidCrystal.h> LiquidCrystal lcd(2, 3, 4, 5, 6, 7); // Numer pinu do którego podłaczasz czujnik #define ONEWIRE_PIN 9 // Ilość czujników #define SENSORS_NUM 2 // Adresy czujników const byte address[SENSORS_NUM][8] PROGMEM = { 0x28, 0x6A, 0xE6,...
Witam Zachęcony sukcesami z płytką EVB 4.3 zaprojektowałem i zamówiłem swoją - na początek z AtMega8 w DIP. Do tego pamięć 24C32 oraz układ do RS485. Wszystkie układy mają kondensatory 100 nF ( stabilizator 7805 również + jeden elektrolit ). Całość ze złączem pod wyświetlacz 2*24 ( właściwe 4*12 ) Reset przez rezystor 10 K do +5V AtMega8L ( na 8 MHz...
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...
Jeżeli chodzi o konwersie bin na dec i wysłanie tego przez rs232 to chyba nie powinienem mieć problemów. Nie wiem jak ugryźć adres MAC. Jak go wysyłam przez rs232 to w oknie terminala wyświetlają mi się litery z tego kodu a ja nie chcę liter tylko chcę wyświetlić ich wartość szesnastkową z kodu ASCII. Czyli jak w tablicy mam zapis 4A,61,72,65,6B,53...
Wsadź odczyt pod jakiś label np: odczyt: "wyłącz przerwania" "dokonaj odczytu z ds" "włącz przerwania" return w programie zamiast całej formułki : 1wreset 1wwrite &H55 1wverify Dsid1(1) 'wysyłamy adres pierwszego czujnika If Err <> 1 Then 1wwrite &HBE Tp = 1wread(2) Wywołuj tylko label...
http://obrazki.elektroda.pl/8342911300_1... ESP8266-12E tym razem będzie to NodeMCU Amica . Po umieszczeniu poprzedniej części materiału: DS18B20 komunikujący z wykorzystaniem cyfrowej magistrali 1-wire . W porównaniu do analogowego TMP36 na magistrali 1-wire może pracować kilka czujników. Warto zwrócić uwagę na długość (pojemność)...
Witam jakiś czas temu kupiłem na Allegro wyświetlacz VFD od kasy fiskalnej model Fujitsu VF60. Postanowiłem zrobić na nim termometr jednopunktowy z czujnikiem DS18B20, po rozkręceniu wyświetlacza okazało się że jest to wyświetlacz z interfejsem UART i pojawił się problem. W sieci jest sporo projektów termometrów ale wszystkie opierają się na tradycyjnym...
Np. tak 1wverify Dsid4(1) jeżeli urządzenie o podanym adresie ID odpowiada to zmienna err zwraca 0 jeżeli nie to 1. A wszystko w helpie opisane... Zgadza się z tym że ja już nie chę korzystać z każdorazowego odczytu adresów czujników tylko wpisac je na stałe np do tablicy w programie i nie korzystać już z komend Dsid1(1) = 1wsearchfirst()...
(at)R-MIK Czas transmisji po IIC (nawet 400kHz) jest stosunkowo długi. Interesująca teoria. Rozumiem że wysyłka 115k UART jest szybsza niż 400k i2c. Ile bajtów trzeba wysłać i odebrać po IIC do/z DS2482 aby wysłać jeden bajt na 1-W, a ile po USART do DS2480? Używał kolega któregoś w tych układów w praktyce? Ja tak, obu. I widzę, że kolega zapomniał,...
http://obrazki.elektroda.pl/2929008000_1... Witam. Po raz pierwszy zdecydowałem się przedstawić na łamach forum swoją konstrukcję. Chciałbym zaprezentować swój pomysł na Termometr Samochodowy. Podczas upalnego lata zauważyłem że po zainstalowaniu instalacji gazowej moje auto ma bardzo duże wahania mocy silnika w zależności od temperatury...
Ja pisuję w ASM'ie PIC'ków. Mogę Ci tylko podpowiedzieć "założenia algorytmu": - Przy 8 czujnikach pominąłem każdorazowy odczyt adresów ROM - odczytuję je tylko przy instalacji systemu (zapis każdego ID do EEPROM) - przy komunikacji, jak czujnik się nie zgłasza, obsługuję procedurę BŁĄD (ignoruję odczyt) P.S. Na porcie mam "pullup'a" 2.2k (a nie,jak...
Udało mi się trochę odchudzić program. Wykorzystałem tablice + inkrementacja numeru komórki w tablicy. Chciałem wykorzystać FOR - NEXT, ale coś nie działa jak trzeba Do Locate 1 , 1 Lcd A Locate 1 , 7 Lcd B Locate 2 , 1 Lcd C Locate 2 , 7 Lcd D Locate 1 , 13 Lcd E Locate 1 , 19 Lcd F 'If Szukaj = 0 Then Call Przeszukaj_i2c 'End If Loop End '***********************...
Na początek spróbuj uruchomić odczyt temperatury na liczbach 8 bitowych (jeden bajt) - będzie łatwiej ogarnąć w asemblerze. Wynik odebrany w 12 bitach przesuwasz w prawo 4 razy i zostaje 8 bitów. clr c ; Zamien 12 bitow na 8 mov a, temp+1 rrc a mov temp+1, a mov a, temp rrc a mov temp, a clr c mov a, temp+1 rrc a mov temp+1, a mov a, temp rrc a mov...
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...
Niestety próbowałem sam, ale juz nie mam siły. Przeczytałem tematy na forum jednak nie widze w nich rozwiązania problemu, dlatego zacząłem nowy temat. Problem tkwi w tym, że otrzymuje z układu DS18B20 po dokonaniu odczytu z rejestrów wynik w postaci FFFF. Program piszę pod ATMega48. Czujnik połączony jest z zasilaniem z stabilizatora 7805. Najpierw...
Przypuszczam że chyba nie ma takiego kogoś na tym forum. Ale na twoim miejscu podłączyłbym 50 DS-ów do jednej lini, wcześniej odczytując adres jednego z nich. Teraz wykonałbym pełną komunikację z tym DS-em którego numer wczesniej odczytałem. Jeśli komunikacja by poszła to już masz odpowiedz (bez przewodów doprowadzających, a te też mają wpływ). Natomiast...
kogucikk! spokojnie, spokojnie,... już lepiej.... sorry, za bardzo popłynęłam żargonem - "kody" - kody źródłowe programu... no, mam nadzieje że mnie moderator nie obkrzyczy za ten post.... budowa jest z grubsza taka że jest to 256 bajtów ram z czego pierwsze 16 (0x00..0x0F) to rejestry zegarka pozostałe (0x10..0xFF) to wolny obszar na dane użytkownika...
Nie mam zdefiniowanego co ile ma być odczyt temperatury Tutaj jest fragment kodu: #include <DallasTemperature.h> //biblioteka czujnika temp #include <OneWire.h> //biblioteka interfejsu #include <LiquidCrystal_I2C.h> //biblioteka wyświetlacza 2004 #define ONE_WIRE_BUS2 //definiowanie pinu ONE-WIRE OneWire oneWire(ONE_WIRE_BUS); DallasTemperature...
Sprawa dość podstawowa: Do 1wreset - reset magistrali 1wwrite &HCC- pomija podanie adresu (gdy jedna kostka) 1wwrite &H44-dokonaj pomiaru i konwersji Wait 1 - czas na konwersję 1wreset - ponowy reset 1wwrite &HCC - jak wyżej 1wwrite &HBE - odczytaj Odczyt = 1wread(2) Locate 1 , 1 Lcd Odczyt ; " " loop ..może mi jakieś linki zapodajcie przydatne do nauki......
Witam Poszukuje pomocy w temacie dość mi obcym jakimi są procesory PIC i ich programowanie. Już dość dawno znalazłem pewien projekt, z którego do dzisiaj korzystam. Ale jako że trochę rozbudowuję swój układ potrzebuję pewnych zmian. Program wysyła temperaturę pobraną z czujników DS18B20 i przesyła po MODBUS-się. Jako że temat tego projektu już dawno...
Mialem taki gotowiec wraz z fachowa literatura ale nie dzilalo Do 1wreset 'standardowe polecenie resetu 1wwrite &H33 'rozkaz READ ROM Adr(1) = 1wread(8) 'odczytaj adres 'zamiast powyższych 3 linii zamiennie można użyć jednego polecenia: ' Adresik(1) = 1wsearchfirst() 'odczytaj numer-adres kostki 1wreset 'standardowe polecenie resetu 1wwrite &H55 'polecenie...
by było zapisy odczytów via HTTP na zasadzie AVR "otwiera" stronę http://10.0.1.1/sesnor zapis.php?id=id punktu&wartosc=wartosc temperatury No to jak nie znajdziesz bibliotek (dla STM nie ma problemu) to masz sporo roboty. Zapytanie ARP, powie jak MAC ma adres 10.0.1.1. Brak odpowiedzi, kolejne zapytanie po 2, 4, 8, 16....itd sekundach. Co pewien czas...
Dziękuję za pomoc krzbor. Wszystko działa ok. Wklejam poprawiony kod: http://obrazki.elektroda.pl/7511115700_1... Co robią poniższe linijki kodu? (na samym jego końcu) sent++; client.stop();
Usunąłem dwie linie: [syntax=basic4gl] I2cstart 'powtórz warunek startu I2cwbyte &HA2 'Adres zapisu [/syntax] ale brak różnicy Ten kod zapisu podają również w samplach Bascoma ( co prawda tam zapis i odczyt jest w pętli FOR .. NEXT). I generalnie się sprawdza. Podobnie jak w przypadku Atmega8 + LED na MAX7219 - tutaj działa jak trzeba. Nawet dla testu...
Witam Mam mały problem z tym dość prostym programem. Generalnie działa tak jak powinien, tylko przy włączeniu układu następuje krótkie załączenie przekaźnika. Jest to spowodowane tym, że początkowy odczyt z DS18B20 jest 85 stopni ( integer 850 ) co przekracza ustaloną przeze mnie początkową wartość 45 stopni ( integer 450 ). Próbowałem dać badanie warunku...
Jeśli chodzi o odczyt ID DS18B20, zrobiłem coś takiego: [syntax=basic4gl] Do Locate 1 , 13 Lcd T_solar1 Locate 2 , 13 Lcd T_solar2 If Flaga_wybor = 0 Then If Flaga_ds = 1 Then If Numer_ds = 1 Then Adres = 40 T_solar1 = Ss Gosub Odczyt_eeprom Elseif Numer_ds = 2 Then Adres = 48 T_solar2 = Ss Gosub Odczyt_eeprom End If Flaga_ds = 0 Flaga_wybor = 1 End...
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...
Powodem dla którego każdy termometr działa osobno jest fakt, że musiałbym znać adres każdego termometru jaki znajduje się na magistrali abym mógł określić w którym pomieszczeniu znajduje się ten konkretny termometr. Oczywiscie. Chociaz ... Odczyt wszystkich aktywnych ID nie jest jakoś specjalnie trudny. Dallas dal nawet przykładową implementacje algorytmu...
Nawet nie wiedziałem że nowych wersjach Bascoma można robić takie rzeczy. Czyli , czy miało by to wyglądać tak: ? 'DS-y na pinach B.0 - B.7 '***************************************... '*********************************1 WIRE SET*************************************... '***************************************...
Witam, mam dziwny problem, pomoże mi ktoś go rozwiązać? Chodzi o to, że buduję urządzenie, które na żądanie będzie mierzyło temperaturę układem DS18B20. Żądanie odbywa się poprzez naciśnięcie odpowiedniego przycisku na pilocie RC5. Całe moje urządzenie to dwa AVR: Atmega8 (jako dekoder RC5, który wysyła odebrany adres i komendę poprzez USART do drugiego...
Czujnik Dallas DS18B20 jest czujnikiem z magistralą 1-Wire, komunikuje się z procesorem jednym przewodem, a możliwe jest podłączenie dużej ich ilości równolegle. Użytkownika powinno interesować, jak adresować ten czujnik, jak odczytać jego ID i dane o temperaturze. Do czujnika ds18b20 da się wpisać chyba tylko poziomy alarmów, więc raczej nie ma mowy...
Usunąłem Wait 1 przy konwersji z DS18B20, działa, bez problemu ( na trzech przewodach ), tylko wyniki są opóźnione - tzn. wyświetlany wynik nie jest z aktualnego pomiaru, tylko z poprzedniego. Dodałem jeszcze dwa czujniki DS18B20. Ich zapis razem z godziną i datą na karcie jest jak najbardziej w porządku, tylko wyświetlanie trochę szwankuje - tzn. czasem...
Witam Mam układ, który mierzy dwie temperatury ( DS18B20 ), dwa napięcia ( PCF8591 ( pobiera czas ( PCF8563 ), a z powodu niedużego wyświetlacza ( 12 x 4 ) wskazania są zmieniane do 10 sekund po przepełnieniu Timer1. Układy PCF8563 i PCF8591 są podpięte z "zewnątrz" przewodami około 10 cm. Magistrala I2C ma obniżoną prędkość przez Config I2cdelay =...
Witam! 1. czas na konwersję 750 ms, jest to maksymalny czas potrzebny tylko wtedy, gdy mamy czujnik podłączony tylko dwoma przewodami, a wiec przy zasilaniu "parazytowym" i przy maksymalnej rozdzielczości pomiaru. 2. w przypadku kiedy czujnik jest podłączony trzema przewodami, ten czas może być skrócony do około 20 ms. 3. ten czas nie oznacza, że trzeba...
$regfile = "m16def.dat" $crystal = 8000000 On Int2 Int2_int Config 1wire = Pinb.0 Enable Interrupts Enable Int2 Dim Iloscczuj As Byte 'Ilosc wykrytych czujników Dim Ktory As Byte 'Ktory czujnik będzie odczytywany Dim Index As Byte 'Index do tablicy z adresami czujników Declare Sub Oblindex 'Funkcja do obliczania indeksu w tablicy adresu dla...
używam bray terminala i wiem już jak to ma działać, nie wiem tylko jak mam z tego terminala wysłać sygnał RESET do układu :(
ds18b20 adres odczyt ds18b20 adres odczyt ds18b20
iskrownik ustawić zdjąc simloka wentylator klimatyzatora
schemat elektryki skutera schemat elektryki skutera
Gazy w żarówkach o dużej mocy: argon, krypton, ksenon Lokalizacja modułu centralnego zamka Jeep Patriot