Bawiłem się tym ostatnio. Jak wrócę do domu to ci wrzucę kod.
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()
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...
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......
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
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);...
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...
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
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ą...
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...
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.
To nie jest poprawny zapis http://obrazki.elektroda.pl/3954802400_1... Życzę miłego dnia
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.
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...
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
Chcę pominąć odczytywanie adresów na każdym z czujników. Wydaje mi się że tak będzie prościej obsługiwać ten termometr.
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)...
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",...
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.
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...
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...
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
Jest to DS18B20. Ale pomiar temp. działa OK tu mogę odczytać wszystkie 9 bajtów. Problem leży tylko w odczycie adresu układu. Może coś mi brakuje ? //Procedura odczytu adresu wire_reset(); wire_send(0x33); //odczyt adresu z ROM //wire_byte_read() odczytuje 1 bajt z 1-wire a=utoa( wire_byte_read() , buffer,16); LcdSetCursor_4(0x00,4); LcdPrint_4a,4);...
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,...
(...) 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...
Tak na szybko, arduino wyśle temperatury, jeżeli wyślesz znak O. [syntax=c]// Program odczytuje temperaturę kilku czujników #include <OneWire.h> #include <DS18B20.h> // Numer pinu do którego podłaczasz czujnik #define ONEWIRE_PIN 2 // Ilość czujników #define SENSORS_NUM 2 // Adresy czujników const byte address[SENSORS_NUM][8] PROGMEM = {...
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! 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, 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 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: Procesor32 napisał: Zapisujesz nazwy pod ten sam adres w EEprom Writeeeprom Q , 13 I odczytujesz też z tego samego adresu. Jeśli przeczytałbyś dokładnie post I po sprawie.Nie musisz pamiętać adresu pod który masz zapisywać i z pod którego odczytywać. Prosto i bez problemu. Jest to prosta metoda zapisu do EEProm, ale ma zasadniczą wadę. Użytkownik...
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... .
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...
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ć...
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....
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. 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 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...
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++)...
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...
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...
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...
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ć...
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"...
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...
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...
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ć...
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))...
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, 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...
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...
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...
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:...
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...
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...
[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,...
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...
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 ;---------------------------------------...
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...
(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ł,...
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...
Problem polega na tym, że odczytujesz wartość ADC z uC zamiast z DS18xxx. Brakuje ci obsługi DS18B20. Poniżej fragment kodu działającego u mnie. [syntax=vbnet] Config 1wire = Portb.0 '0,1,2 NOP 3,4,5,6,7 works good ON MY Equipment Do 1wreset 'reset 1wwrite &HCC 'jedna kostka, więc wykorzystujemy rozkaz SKIP ROM 1wwrite &H44 'dokonaj konwersji Waitms...
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.
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...
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, 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...
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...
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......
$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...
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...
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...
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 '***********************...
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...
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...
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...
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();
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...
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 =...
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...
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...
Fajny projekt, bo powstał na konkretną potrzebę i spełnia swoje zadanie. Do seryjnej produkcji znajdź fajną obudowę i rozmieść odpowiednio wyświetlacz i diody ;) Chciałem podrzucić Ci pomysł na mruganie wyświetlaczy, który jak piszesz miałes. Komunikacja 1wire posiada wysokie restrykcje czasowe. Też kiedyś robiłem urzadzenie, które czytało 2 x DS18B20...
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...
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...
Do czego to doszło ;p Może od nowa, wersja z i2c chce dopiero teraz wprowadzić jak na razie jest po Bożemu znaczy sie wyswietlacz ze sterownikiem znajduje się na 2pietru kamienicy układ wykonawczy i wyłącznik (countera) znajduje się w piwnicy. Z i2c to dopiero mam zamiar zrobić bo zależy mi na dwóch wyswietlaczach jednym w piwnicy drugim na 2pietrze....
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 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()...
Pisząc o adresowaniu nie masz na myśli ID czujnika, bo każdy DS18B20 ma unikatowy ID. Czujniki są na jednej linii, ale odczyt jest prawidłowy. Jeśli dobrze Cię rozumiem, to chodzi o to, aby mu bardziej "doprecyzować", który czujnik ma reagować na którą temp. Co prawda myślałem, że wykona proste porównanie wartości T1 z T_max i T2 z T2_max. Możesz mi...
Witam, moze ktos przesledzic ten kawaleczke kodu (BASCOM) i powiedziec co jest nie tak ? Problem tkwi w tym ze odczytywane temperatury sa ok (wystarcz mi dokladnosc do 1 st C) jednak jak odlacze ktoregokolwiek DS'a to Tin = Tout zamiast wpisac wartosc 99 (w taki sposob wykrywam ze uszkodznieu ulegla ktorys czujnik) Program to kawalek kodu ktory ktos...
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...
odczyt adres ds18b20 ds18b20 adres odczyt ds18b20
odbierać połączenie przychodzić klimatyzacja samochód usterka zapieczony hamulec
aomei backuper bateria prysznicowa
GXTrust słuchawki Bluetooth - ciągłe wyłączanie i włączanie Epson L355 pokazuje brak tuszu, mimo że jest pełny