Dzień dobry Mam mały problem ze zmianą kolejności adresów czujników DS18B20. Mam tablicę uint8_t z adresami czujników. Każdy adres zajmuje 8 pozycji tablicy. Napisałem menu ustawień z możliwością zamieniania kolejności. W menu po wejściu w wybrany czujnik mogę przypisać mu adres ze "świeżo" przeskanowanej magistrali. Problem w tym, że o ile po zapisie...
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()
(...) 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...
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...
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
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...
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...
Witam poszukuje adresowalnych układów z odczytem wejść 0-1 - adresowalne czujniki stanu ( cos podobnego do DS 18B20 z tym że zamiast informacji o temeperaturze podawana jest info o stanie wejścia ) pz waldek :D
Teoretycznie tak. Trochę mało RAM jak na zabawę z HTTP, ale do zrobienia. DS18B20 są identyfikowane 64 bitowym, unikalnym identyfikatorem (albo adresem jak kto woli). Jak jest w chińćkich podróbach sam chińcik wie, ale skoro ma udawać prawdziwy, legitny czujnik to można mniemać że jest podobnie.
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...
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ą...
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.
To nie jest poprawny zapis http://obrazki.elektroda.pl/3954802400_1... Życzę miłego dnia
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ć.
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
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...
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...
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.
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",...
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...
Chcę pominąć odczytywanie adresów na każdym z czujników. Wydaje mi się że tak będzie prościej obsługiwać ten termometr.
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...
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! - 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
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...
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...
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...
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...
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ć...
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...
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... .
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....
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....
Prosze bardzo, zmenne oraz main. Zakomentowane linie sluza do odczytu temperatury z ds1820, wyswietlania jej na LCD czy tez zapiswanie do eepromu. [syntax=c]#include <avr/io.h> #include <util/delay.h> #include <stdio.h> #include <stdlib.h> #include <util/twi.h> #include "hd44780.h" #include "ds18b20.h" #include "i2cds1307.h"...
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...
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:...
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))...
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...
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ę....
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...
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ć...
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...
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...
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...
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ć...
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. 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...
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...
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...
[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,...
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...
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ą...
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...
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...
(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...
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...
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ść)...
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...
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.
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...
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,...
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...
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...
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...
Adresy nie mogą być zapamiętane w ATMedze, musi to być zewnętrzny EEPROM jako część kabla, bo kable będą wymienne. Niestety kabel z czujnikami będzie tracony w trakcie badania, będzie więc jednorazowy, zostanie tylko logger i wtyk z EEPROMem. Logggerów będzie kilka, kabli dużo więcej. Po wstępnych próbach widzę, że konieczne będzie w nim zapamiętanie...
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...
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();
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...
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...
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()...
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...
To jest konwersja na ASCII, np. do wyświetlenia na LCD lub terminalu. Pytania, które zadajesz, nie dotyczą mikrokontrolerów, a podstaw języka C. p jest zmienną wskaźnikową, czyli adresową. *p ++ = x - to zapis x pod adres zawarty w p i zwiększenie tego adresu, tak, aby p wskazywała następny bajt bufora. Jedynka w apostrofach - to znak ASCII - cyfra...
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*************************************... '***************************************...
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......
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...
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...
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...
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 =...
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 :(
Nie trzeba nawet czytać strony jedenastej żeby się domyślić co jest grane :D Strona dziesiąta: BH1750FVI is not able to accept plural command without stop condition. Please insert SP every 1 Opecode. To oznacza że nie ma tam typowego zwiększania adresu przy wydawaniu komend. Dlatego trzeba to zrobić tak i jest to wyraźnie napisane, że zmiana dwóch bajtów...
Jako ze mialem problemy z uruchomieniem w C wyswietlacza, a nie mam teraz czasu na bawienie sie z zaleznosciami czasowymi, wiec sprobowalem bascomem (o dziwo wyswietlacz sie uruchomil bez problemow). Czyli jezyk dla ulomnych wiec sam dopasowywuje zaleznosci czasowe dla procedur. Kwarc 8MHz, proc 90S4433. Kwarc taki duzy bo w zalozeniach mialem liczyc...
Aktualizacja ............ Z tego co się zorientowałem późnej z dokładniejszej analizy dokumentacji to jest to takie prawie 1-wire gdyż w kodzie odczytu z nich danych nie podaje się żadnego adresu tylko operuje się na odpowiedniej sekwencji wysyłanych sygnałów oraz ich odpowiednim czasie. Dzięki za pomoc To źle to kolego zrozumiałeś! Tak możesz postępowac...
Ostrzegam, że nie jestem pewny jak to zrobić, tylko głośno myślę. Mamy 12 czujników, adres każdego zajmuje 8 bajtów, deklarujemy sobie więc DS_ID(96) as Byte jak odczytać adresy to już wiesz. Czyli w bajtach od 1 do 8 będziesz mieć ID czujnika nr 1, od 9 do 16 ID czujnika nr 2, itd. Teraz do funkcji proponuję przekazywać adres z pierwszym bajtem...
Proszę o wyjaśnienie przyczyny przekłamań odczytu temperatury z czujnika DS18B20, program poniżej. Najczęściej układ "kłamie" że jest 55 lub 127,5 °C Dodam że wykorzystuję odbiornik RC5 i PWM do sterowania podświetleniem LCD. Czy przekłamania mogą się brać z tego że kilka komend korzysta z tych samych timerów lub przerwań timerów? jak to obejść z góry...
odczyt adres ds18b20 ds18b20 adres odczyt ds18b20
podłączyć bezpiecznik garaż oporność kabel antenowy podłączenie wtyczki kolory
jacuzzi dmuchane jacuzzi dmuchane
Moment dokręcania pokrywy zaworów John Deere 4045TL Moment dokręcania śruby regulacji zaworów John Deere 4045TL