Żeby coś więcej powiedzieć musisz załączyć bibliotekę ds18b20 [syntax=cpp]/***************************... /* */ /* Access Dallas 1-Wire Device with ATMEL AVRs */ /* */ /* Author: Peter Dannegger */ /* danni(at)specs.de */ /* */ /* modified by Martin Thomas <eversmith(at)heizung-thomas.de> 9/2004 */ /***************************************...
Jeśli chodzi o oczekiwanie na pomiar to przy podłączeniu 3 przewodowym (+5V, masa i sygnał) to nie ma potrzeby oczekiwać na pomiar. Jest on dostępny od razu po wykonaniu komendy ow_write_byte(DS18B20_CMD_CONVERT);
Tak Asembler masz racje- 85 to nie sa jedynki. To skutek pobrania temperatury bez wcześniejszego wysłania rozkazu convert.
Ok, to ja dorzucę swoje trzy grosze :) Przede wszystkim, aby procedury _delay_* działały poprawnie należy włączyć optymalizację kodu np -O1 Sprawdź może to powoduje problem. Po drugie, na czas odczytu i zapisu magistrali warto zablokować przerwania, tak żeby procedura obsługi przerwania nie rozjechała czasu poszczególnych okien. A na koniec moje procedury,...
Jedna mała uwaga: Plik nagłówkowy tylko wskazuje, że dane funkcje gdzieś tam istnieją i można z nich korzystać. Nie potrzebujesz w nim deklaracji Read i Send Byte bo nigdy na zewnątrz z nich raczej nie skorzystasz. Z punktu widzenia użytkownika takiej biblioteki, jest to potencjalnie niebezpieczne i lepiej w nagłówku mieć tylko to, z czego się korzysta...
Masz dwie rzeczy do poprawienia 1. konwersję wartości, 2x za duża wychodzi, powinna być 85*C 2. timingi, po wysłaniu rozkazu ConverT trzeba wstawić opóźnienie
Może Reset 1Wire przed Skip ROM (0xCC) i Convert T (0x44) ?
Nigdy nie zmieni :( DS jest grzecznym chłopcem(?) więc wykonuje tylko polecenia i odpowiada gdy jest pytany , poza tym milczy jak grób :wink: Pzdr. Piotrek Sz. To radze poczytac pdf'a :) CONVERT T This command initiates a single temperature conversion. Following the conversion, the resulting thermal data is stored in the 2-byte temperature register...
Kilka kilkanaście czujników to nie jest jeszcze problem, ale już kilkadziesiąt to jest problem. Jeśli masz kilkadziesiąt czujników i interesują Cię tylko przekroczenia to wysyłasz do wszystkich komendy SKIP ROM i CONVERT TEMPERATURE, a następnie ALARM SEARCH. Jeśli są jakieś przekroczenia to zgłoszą się tylko te czujniki, które te przekroczenia zarejestrują....
Mowisz ze oszukuje do 0,5C przy konfiguracji 2-druty i 4k7 ? A jak zapodasz strong pullupa (tranzystor) to ile trzeba czekac na operacje Convert T ?
main.c [syntax=c]#define F_CPU 16000000UL //definiujemy F_CPU na 16MHz #include <avr/io.h> #include <util/delay.h> #include <avr/io.h> #include <stdlib.h> #include "HD44780.h" #include "DS18B20.h" char str[17]=" Termometr "; int main (void) { double temp; /* W tablicy zapisywane będą dane odczytane z układu ds18b20 */ unsigned...
Czemu ludzie korzystający z tego przetwornika (DS18B20) "czekają' te 750 ms?? Czemu ludzie korzystający z tego przetwornika (DS18B20) nie używają narzędzi, które daje im tenże przetwornik? Oczywiście przy podłączeniu 3 przewodowym ;) If the DS18B20 is powered by an external supply, the master can issue read time slots after the Convert T command and...
Witam, otóż posiadam czujnik dallasa ds1820 nie ds18b20 i mam taki problem ponieważ nie mogę znaleźć żadnego kodu by odczytać temperaturę, próbuję korzystać od ds18b20 ale wynik mam równy 4. Oto kod: main.c [syntax=c] if(ds18b20_ConvertT()) { /* 750ms - czas konwersji */ _delay_ms(750); /* Odczyt z układu ds18b20, dane zapisywane są w tablicy ds18b20_pad....
Witam, jestem początkujący więc proszę nie krzyczcie na mnie. Chciałem zrobić termometr na atmega16, z temperaturą wyświetlaną na 3 7-segmentowych wyświetlaczach LED (trzeci to 1 liczba po przecinku). Z głębin internetu udało mi się wyłuskać coś takiego: main.c [syntax=text]#include <stdio.h> #include <avr/io.h> #include <util/delay.h>...
Nawet jak sprawdzam zmienna err=1 i kaze wyswietlic tylko komunikat error na LCD nadal są problemy z transmisją jeżeli brak jednogo z DS'ow. 1wreset if err=1 then lcd error else 1wreset 1wwrite Skip_rom 1wwrite Convert reszta analogicznie
Dzień dobry, Korzystam z gotowego kodu na komunikację przez protokół 1-wire oraz odczyt temperatury z czujnika DS18B20. Dla tego kodu prubuję zmienić rozdzielczość czujnika z 12bit na 9bit. Proszę o weryfikację kodu, a w zasadzie miejsca moich zmian, czy w dobrym miejscu kodu zmieniam wartości bajtów rozdzielczości czujnika? Oraz czy w ogóle robię to...
Witam, mam problem z przerobieniem biblioteki do obsługi DS1820, tak ,aby można było odczytywać temperature z kilku czujników umieszonych na osobnych pinach. Biblioteki pobrane są ze strony http://kursc.dioda.com.pl/. W podanym niżej pliku port PC0 do którego przypięty jest czujnik jest przypisany na sztywno. Chciałem zrobić tak: #define SET_ONEWIRE_PORT...
Piotrek_P napisał: Co do zamieszczonego kodu to nie wiem czy Ci się źle wkleił bo kilka piewszych linii nie jest "zakomentowanych". Już poprawiłem, błąd przy wklejaniu. majeranek53 napisał: Czy włączyłeś optymalizację kodu: -Os Dzięki wielkie to właśnie pomogło. Teraz mogę bez problemu zaprogramować atmęge. Oczywiście odwdzięczam się za pomoc. Teraz...
Nie działa mi odczyt danych z DS18B20 Program który napsałem: // NIE DZIAŁA - odczytuje FF byte present = 0; byte data[9]; byte addr[8]; #include <OneWire.h> OneWire ds(A0); // DS18B20 pin void setup(void) { Serial.begin(9600); } void loop(void) { ds.reset(); ds.write(0x44);...
Pliczek do obsługi DS18B20 bez odczytu kodu :) może Ci się przyda [syntax=c] //**************Plik ds18b20.h****(xyz.isgreat.org)**********... int nrpin; // numer pinu sensora ds #ifndef DS18B20_H #define DS18B20_H /* DS18B20 przyłączony do portu AVRa */ unsigned char ds18b20_ConvertT(void); int ds18b20_Read(unsigned char []); void OneWireStrong(char);...
If the DS18B20 is powered by an external supply, the master can issue read time slots after the Convert T command and the DS18B20 will respond by transmitting a 0 while the temperature conversion is in progress and a 1 when the conversion is done. Czyli po prostu poczekaj aż czujnik wystawi 1 na magistrale i dopiero później wysyłaj następne instrukcje....
Witam, przekopałem się przez wiele tutoriali, postów, wątków, i nie znalazłem rozwiązania, więc postanowiłem opisać własny problem. Mianowicie: mam podłączone do Atmegi8 dwa wyświetlacze 7seg multipleksowane, oraz termometr cyfrowy DS18B20. Chciałem aby zmierzona temperatura była wyświetlana na tych 7seg, oczywiście ze względu na dwa wyświetlacze jedynie...
Czy do układu DS18B20 masz podłączone zasilanie +5V, czy pracuje on w konfiguracji dwupinowej? W karcie katalogowej jest wzmianka "If the DS18B20 is powered by an external supply, the master can issue read time slots after the Convert T command and the DS18B20 will respond by transmitting a 0 while the temperature conversion is in progress and a 1 when...
Proszę bardzo. Nie wiem jak to mogło się popsuć jak działało. A może z uC jest coś nie tak? [syntax=cpp] /* Plik ds18b20.c (minimum kodu do odczytu temperatury z ds18b20) xyz.isgreat.org */ #include <avr/io.h> #include <util/delay.h> #include "ds18b20.h" /***************************************... unsigned char ds18b20_ConvertT(void)...
Witam serdecznie, coś pięknego. Gratuluje roboty! Przejrzałem z grubsza kod i rzucił mi się jeden błąd w oczy, który kiedyś może spowodować Panu jakiś zamęt (więc warto go poprawić) w pliku ds18b20.c mamy funkcję : [syntax=c] unsigned char ds18b20_ConvertT1(void) { if (!OneWireReset1()) return 0; OneWireWriteByte1(0xcc); // SKIP ROM OneWireWriteByte1(0x44);...
Witam wszystkich, w temacie mikrokontrolerów nie jestem zbyt mocny, dlatego proszę o pomoc. Postanowiłem zbudować termometr dwupunktowy na ds18b20 i wysterować multipleksując IW-18. Poniższy program działa, jego mankamentem jest losowy zanik pomiaru w jednym (IN) albo drugim (OUT) czujniku, czasem przekłamuje na sekundę pomiar, podając 80 stopni, jednak...
Zamiast opóźnienia po komendzie converT 44h, dopisz sprawdzanie stanu linii i czekaj dopóki nie zmieni się na wysoki. Tia ... Niech no kolega weźmie słownik angielsko-polski , przetłumaczy poniższy fragment i nie pisze więcej o takich rewelacjach j/w :D If the DS18B20 is powered by an external supply, the master can issue “read time slots”...
Witam chce uruchomić 1wire na dowolnym pinie GPIO bez wykorzystywania modułu kernela do 1wire . Mój kod [syntax=csharp] #include <stdio.h> #include <inttypes.h> #include <string.h> #include <errno.h> #include <stdlib.h> #include <time.h> #include <wiringPi.h> // #define WIRE_PIN 29 #define OW_GET_IN() digitalRead(WIRE_PIN)...
Witam serdecznie. Mój cel jest dosyć prosty - zbudować termometr oparty na uC ATmega128 wykorzystując czujnik DS18B20. Sprawa wydawała się banalna - wydawała się, gdyż niestety do tej porty nie potrafię sobie z tym poradzić. KOD: Identyczny jak ten ze strony http://hobby.abxyz.bplaced.net/index.php... (oczywiście ze zmienionym pinem 1wire):...
To jest kod z kursu i nie wiem czy mogę go tak umieszczać na forum ale najwyżej jeśli to niezgodne z regulaminem to proszę usunąć [syntax=c]/* Plik ds18b20.c (minimum kodu do odczytu temperatury z ds18b20) xyz.isgreat.org */ #include <avr/io.h> #include <util/delay.h> #include "ds18b20.h" /***************************************...
ok znalazłem... teraz jeszcze zaimplementować: If the DS18B20 is powered by an external supply, the master can issue “read time slots” (see the 1-Wire Bus System section) after the Convert T command and the DS18B20 will respond by transmitting 0 while the temperature conversion is in progress and 1 when the conversion is done. If the DS18B20...
Dzięki za wyczerpujące odpowiedzi. Mam jeszcze jedno pytanie. Co się dzieje jeśli mamy trochę czujników zasilanych i trochę w trybie pasożytniczym. W dokumentacji, jest napisane If the DS18B20 is powered by an external supply, the master can issue read time slots after the Convert T command and the DS18B20 will respond by transmitting a 0 while the...
witam! przy wysylaniu polecen typu Convert czy skip ROM ktory bit powinien zostac wyslany pierwszy przez mastera?? LSB czy MSB??
(at)wojtek6000 Te diody niczemu nie służą i nic nie zabezpieczają. Jeśli podłączysz DS'a odwrotnie to i tak będzie podłączony odwrotnie ze wszystkimi tego konsekwencjami. Rezystor 4k7 przy zasilaniu 5V jest zupełnie ok. Pomysł z jakimkolwiek zabezpieczeniem ESD jest dobry. Na schemacie nie ma RS485. Natomiast takie podłączenie DSów, każdy do osobnego...
...Czy w bascomie można zadeklarować tablicę dwu wymiarową Nie :!: Dla czego przy odczycie danych muszę ponownie resetować magistralę i podawać numer seryjny układu... Bo tak są skonstruowane - patrz tabelki w PDF-ku :) Czy jest możliwe najpierw wysłanie do wszystkich czujników polecenia mierzenia temperatury ... Jasne ;) '... 1wreset If Err=0 Then...
Musisz czekac, bo uklad musi obliczyc temperature - troche to trwa. w DS18B20 przy rozdzielczosci 0.5 stopnia czas konkwersji wynosi ok 100ms, wiec moze zmien scalak - chociaz to dookola.
Poniżej cytat z datasheet : "CONVERT T [44h] This command initiates a single temperature conversion. Following the conversion, the resulting thermal data is stored in the 2-byte temperature register in the scratchpad memory and the DS18B20 returns to its low-power idle state. If the device is being used in parasite power mode, within 10 µs (max)...
Niestety sprzeszukałem Internet i czytałem dadatasheet ... Nie wiem czemu , ale jakoś Ci nie wierzę :P 1wwrite &H33 'komenda convert T W/g dokumentacji , Convert T - i co Ty na to :?: Piotrek
Opis magistrali 1Wire masz w helpie. Poniżej kod na obsługę dallasa DS18B20. Config 1wire = P1.0 'konfiguracja magistrali 1wire Config Lcd = 16 * 1a 'konfiguracja wyswietlacza Deflcdchar 1 , 4 , 10 , 4 , 32 , 32 , 32 , 32 , 32 'znak stopnia Dim T1 As Single Dim T2 As Single Dim B1 As Byte , B2 As Byte , R As Byte Dim Tmp As String * 6 Dim Znak As String...
Jarosław J --> po pierwsze postaraj się jak najszybciej robić odpowiednie wcięcia w kodzie to będzie łatwiej nie tylko nam tutaj na forum analizować twój kod - ale tobie samemu będzie łatwiej a to jest nawet ważniejsze ;) po drugie masz tam gdzieś w tej swojej pętli głównej coś takiego: Convallt ' "Convert ALL T on the 1w-bus" Waitms 1 czyli...
taktowanie procesora: 16MHz atmega32a main.c: [syntax=c] int main(void) {/* sprawdzamy ile czujników DS18xxx widocznych jest na magistrali */ czujniki_cnt = search_sensors(); /* wysyłamy rozkaz wykonania pomiaru temperatury * do wszystkich czujników na magistrali 1Wire * zakładając, że zasilane są w trybie NORMAL, * gdyby był to tryb Parasite, należałoby...
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...
Ja bym dał Disable Interrupts i Enable Interrupts pomiędzy wszystkimi operacjami 1Wire: [syntax=basic4gl]Sub Inicjowanie_ds: Disable Interrupts 1wreset Enable Interrupts Disable Interrupts 1wwrite &HCC ' &H CC skip rom Enable Interrupts Disable Interrupts 1wwrite &H44 ' &H 44 convert T Enable Interrupts End Sub[/syntax]
Funkcja odczytu jest wywoływana tylko tutaj w nieskończonej pętli głównej: [syntax=c] convert(); LCDcls(); temperatura=(odczyt_DS()); LCDhome(); LCDstr("Tb= "); LCDdec(temperatura); LCDsend(0xDF); LCDstr("C "); [/syntax][/code] Sama obsługa wyświetlacza raczej nie będzie tu przyczyną...
Może za krótko czekasz na koniec konwersji. Jeśli niezależnie od DQ zasilasz DSa spróbuj odczytać koniec konwersji testując linię DQ: [syntax=c] DSW(0xCC); //skip rom DSW(0x44); //convert T do { _delay_ms(100); } while(!DSR()); _delay_us(100); j=DSRES(); DSW(0xCC); DSW(0xBE);[/syntax]
witam, po raz kolejny powtarzam temat, nie znalzałem rozwiązania wertujac inne dlatego piszę. Złożyłem termometr wg kursu AVR GCC. I nie działa naturalnie tzn. na wyświetlaczu pokazuje się jedynie napis Termometr a kiedy odłącze czujnik pojawia się wartość temperatury czasem 0.0C a czaem 800C. Na czujnik nie reaguje. Wyświetlaz obsługuje hd44780 i działa...
Witam chciałbym zaprezentować układ pomiaru temperatury z wielu czujników Ds18b20 ,na razie czterech z jednego modułu ESP8266. Projekt nawiązuje do tego rozwiązania : https://www.elektroda.pl/rtvforum/topic3... Tamten projekt już nie będzie rozwijany w tym natomiast wprowadziłem wiele zmian przygotowując sobie grunt pod przyszłą rozbudowę i...
A więc tak, pozamianie z PORTB na DDRB czujnik wogóle przestał reagować na reset i nic nie działa. Zmieniłem kod tak jak powiedział Hamster_71 i pierwszy odczyt z czujnika wynosi -63,9*C nastepny 0.0. Spróbuje teraz z konwersja. EDIT: I dalej nic... po wysłaniu komendy skip rom odczytana temp= -63,9, taki sam efekt jest jak wyśle również komende Convert...
Okej rozumiem , dziękuję za pomoc ;) Jeszcze przy okazji , aby nie robić nowego tematu specjalnie. Czy możecie sprawdzić program obsługi tego ds18b20? Program ma sterować diodą i optotriakiem podłączonym do PB1 oraz pośrednio (przez optotriak) triakiem do którego podłączona bedzie grzałka i w zależności od temperatury z czujnika DS18B20 uklad ma utrzymac...
Może zamiast dochodzić czy zawyża czy nie zawyża? co się dzieje? No to może ja opisze objawy: Temperatura powietrza 21*C, temperatura obudowy DS18B20 około 25*C, wynik pomiaru ok 25*C. Układ: Zasilanie 5V, rezystor 4k7, częstotliwość pomiaru (i realna komunikacji) 30sek. Wyczytałem w sieci że to jest normalne że czujnik się grzeje jak się zbyt często...
WItajcie Czy jest szansa, by w 2 kB 90s2313 zmieścić obsługę DS18B20 wraz z obliczeniami by uzyskać na LCD temperaturę z wartościami po przecinku. Walczę z optymaliacją programu i wszystko łacznie z LCD i komunikacją sie mieści, ale gdy dodam operacje obliczania temperatury to zawsze wychodzi mi ponad 2 kB. Jak do procedury DS18B20 i na jakich zmiennych...
Moja wersja odczytu z ds18b20 jest na pewno poprawna bo pracuje, wprawdzie na atmedze8 ale to chyba nie ma znaczenia. [syntax=basic4gl][/syntax] 1wreset ' 1wwrite &HCC 'komenda skip ROM 1wwrite &H44 'komenda convert T Waitms 250 Waitms 250 1wreset ' 1wwrite &HCC 'komenda skip ROM 1wwrite &HBE 'komenda read B1 = 1wread() 'odczyt z termometru B2 = 1wread()...
... czy czujnik DS18B20 ma jakies rejestry ktore nie są zerowane po wylaczeniu zasilania. Tak , są takie 2 rejestry dla użytkownika. Wg. tego co wyczytalem z Datasheeta kod korygujacy powinien wygladac tak: A to czytałeś i zrozumiałeś :?: The DS18B20 output temperature data is calibrated in degrees centigrade; for Fahrenheit applications, a lookup...
Otóż dzieję się tak dlatego, że w momencie wysłania polecenia CONVERT_T DS18B20 zaczyna pomiar temperatury. I wynik tego pomiaru będzie dostępny w rejestrze dopiero za 750ms, natomiast to co odczytasz zaraz po tej komendzie będzie najprawdopodobniej wynikiem poprzedniej konwersji. Tak robić nie powinieneś, bo to że akurat nie masz błędów, nie znaczy,...
Ja mam tak (DS18B20) i to chodzi: 1wreset 1wwrite &H55 ' Będę wysyłał adres 1wwrite Adresy(1) , 8 ' Wysyłam adres 1wwrite &HBE ' Komenda dla czujnika o wysłanym adresie Wew(1) = 1wread(9) 1wreset 1wwrite &H55 1wwrite Adresy(9) , 8 1wwrite &HBE Zew(1) = 1wread(9) 1wreset 1wwrite &HCC ' Komenda skip ROM,...
Zgadza się czujnik to DS18B20 :) . Powiedz mi proszę jeszcze o co chodzi z "Strong PULLUP" w momencie odczytu temperatury bo nie bardzo się orientuje. Wysłałem do sensora sekwencje "RESET -> Read ROM -> Convert T" i z pomiaru mama same zera. Czy to jest problem z tym tak zwanym "Strong PULLUP" W roli uzupełnienia w jaki sposób jest podłączony sensor...
Dodam, że pamięci zaczyna brakować, gdy chcę wykonać instrukcje if. Jeśli daje ją w komentarz to program używa 20.2%, a z nią 131% i data 206%. [syntax=c] /* Plik ds18b20.h (xyz.isgreat.org) */ #ifndef DS18B20_H #define DS18B20_H /* DS18B20 przyłączony do portu PD7 AVRa */ #define SET_ONEWIRE_PORT PORTB |= _BV(5) #define CLR_ONEWIRE_PORT PORTB &=...
Program jest banalny dla was ;) ja dopiero się uczę ;) Żaden program nie jest dla nikogo banalny jak jest w nim narozp*******ne. Nawet jak zamienisz Return na End Sub to program nie będzie działał bo tak go napisałeś że dla Menu_Id =0 program zawsze będzie wracał do wyświetlania temperatur. Dodano po 2 Pomiędzy "convert T" a "read" to Waitms 750 co...
Kod poprawiony przedstawiam dla zainteresowanych. Wyszedł mi ładny serwer temperatur z obsługą po protokole UART z użyciem modułu USI procka ATTiny85. Śmiga jak ta lala. Zastanawiam się czy przejść na 12 bitową rozdzielczość ale nie wiem czy zyskam na dokładności. Jak to z tym jest Panowie? Może dodatkowo zaimplementuję protokół Modbus RTU w procku...
Nikt nie jest w stanie mi pomóc? nie wie wiem dla czego kontroler nie porównuje wartości Rozumiem że jesteś początkujący , ale nawet Ty powinieneś wiedzieć , że nie porównuje się zmiennej binarnej(Us) ze stringiem (Tmp) :( To tak , jak byś porównywał kilogram z czerwonym :D Poza tym , ten program jest niezwykle pamięciożerny(Fusing,Single). Jeśli ten...
Panowie mam debilne pytanie bo nie rozumiem tego a sporo się naszukałem i nie znalazłem wyjaśnienia. Chodzi mi o to: kody rozkazów do ds18b20 w manuału są takie: ' 1 Wire commands: ' 1. Read ROM - 33h ' 2. Match ROM - 55h ' 3. Search ROM - F0h ' 4. Skip ROM - CCh ' 5. Alarm Search - ECh ' Convert T - 44h ' Read Scratchpad - BEh ' WriteScratchpad - 4Eh...
Witam , chciałbym przedstawić mój emulator czujnika ds18b20. Celem projektu było zaprojektować i wykonać emulator, by skończyć z przypalaniem podgrzewaniem itp. czujników ds18b20. Pewnie nie raz każdy zmagał się z tym tematem podgrzewania czujnika, aby sprawdzić czy jego urządzonko działa poprawnie np. sterownik pieca czy wyłącza piec po przekroczeniu...
hym.. nie wiem czy rozszyfrowywac wszystko po kolei, jesli uznasz za stosowne napisz. powklejam kolejne wywolania. Funkcja ktora pisze (zle dzialajaca) wyglada tak: void ds18x20::pobierz_kod(uint8_t kood[8]) { if(!reset()) return ; write_byte (0x33); for(uint8_t i=0;i<8;i--) { kood[i]=read_byte();...
Czesc wszystkim, Mam problem z poprawnym działaniem termometru na 7-segmentowym wyświetlaczu. Załączam film - no nie chce się bardzo rozpisywać. Generalnie to nic złego w bibliotekach multipleks. Coś z kodem jest nie tak prawdopodobnie w dsb1820. Poniżej załączam kod. Proszę o pomoc. Pozdrawiam. Dodam tylko, że temperatura jest wyświetlana poprawnie...
Witaj, z tego co piszesz to raczej z czasami a przynajmniej tymi niskopoziomowymi nie ma problemu. Twój problem polega na tym że czujnik Ci się resetuje i pokazuje Ci defaultową temperaturę 85C. Spójrz w dokumentację co powinieneś odczytać po resecie czujnika. Chodzi o to że czujnik zaraz po włączeniu zasialania i zresetowaniu go posiada w swoim buforze...
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...
Podepnę się pod temat, aby swojego nie zakładać. Zrobiłem taki program(jak poniżej). Kostka DS18B20 odpowiada(obserwuję oscyloskopem) na sygnał Reset z mikrokontrolera. Czyli kostka "żyje". Ale nie reaguje później na żadne rozkazy(Skip ROM, Convert T, czy inne). Okna czasowe są realizowane według zaleceń z datasheet układu DS18B20. Więc co tu może nie...
Jeszcze jedno pytanie gdybyś mógł potpowiedzieć. Aby przetworzyć wynik należy wysłać komendę CONVERT (0x44) więc mamy 0x44=01000100 BIN Teraz robimy na odwrót, otrzymując 00100010 Zamieniając na: FC FC FF FC FC FC FF FC No ale takiego czegoś w kodzie nie ma. Dlaczego?
timer zlicza czas w jakichś tam odstępach i dodaje do licznika +1. (wyeliminowano przepełnienia timera) . Jeśli jest impuls z halotronu (magnes kręci sie na łyżkach wiatromierza) to znaczy ze wykonano jeden obrót, i wtedy ten czas jaki zleciał do momentu przejechania magnesu, (np 1/50 sekundy) przeliczam na prędkość. Tylko do tego timera używam. Biblioteka...
No tak by było chyba najlepiej... razem z printfem: printf ("%g",convert_temp(tds... Zdaje się, że trochę przekombinowałem... :p Pytanko: A czy to nie powinno wyglądać tak: float convert_temp(unsigned int temp) { unsigned char sign = 0; float ret = 0; if(temp & 0x8000) { sign = 1; temp = ~temp + 1;...
hexen2k, z tego co przeanalizowałem, to ten fragment dokumentacji, który przytoczyłeś jest zrealizowany w moim kodzie (?): ResetPulse jest 2 wiersze wyżej niż wiersz który wskazałeś... nsvinc, jak wygląda cały Twój algorytm z częścią komendy Convert T? Bo ten fragment chyba dotyczy tylko już samego odczytu wartośći ze ScratchPada...?
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++)...
Udało mi się rozwiązać problem, rzeczywiście nie było po prstu pliku string.h, więc musiałem go przypadkowo usunąć.. Kompilacja przechodzi już bez problemu, muszę teraz chyba ustawić odpowiednie wartości w pliku ds18x20, jednak nie wiem na jakie, jakoś z datasheetu nie potrafie tego wyczytac.. O ile rzeczywiścei trzeba to wyczytać z dokumentacji, mam...
Pliczek do odczytu termometru z [url=http://www.elektroda.pl/rtvforum/to... tematu. [syntax=c] //**************Plik ds18b20.h****(xyz.isgreat.org)**********... int nrpin; // numer pinu sensora ds #ifndef DS18B20_H #define DS18B20_H /* DS18B20 przyłączony do portu AVRa */ unsigned char ds18b20_ConvertT(void); int ds18b20_Read(unsigned...
Witam Testuje czujniki temp ds18b20 3 sztuki na jednej magistrali. Mam już ich rom code i odczytuje ładnie temperaturę . Jak sprawdzić czy dany czujnik jest wpięty czy nie lub uszkodzony. Niby prosta sprawa a nie mogę sobie z nim poradzić Proszeę o pomoc. [syntax=c] while(!OneWireReset()); OneWireWriteByte(0xCC); // SKIP ROM OneWireWriteByte(0x44);...
Mniej więcej zrozumiałem.. ideę zrozumiałem Linia 1-Wire musi być przełączona na silne podciąganie 10us (max) po wydaniu komend Convert T (44h) lub Copy Scratchpad (48h) i magistrala musi być utrzymywana przez czas konwersji (tconv) lub czas transmisji danych (twr=10ms). Żadne inne działanie nie może mieć miejsca na magistrali 1-Wire kiedy włączone...
Dziękuję Wam za pomoc :) . Poniżej wstawiam już działający kod, wiem że nie jest on idealny, ale zajmuje bardzo mało pamięci RAM i Flash (50 bajtów RAM, 627 bajtów Flash, czyli mniej jak 1/3 pamięci i tak bardzo starego i słabego PIC16F628A ;) ). Kod:[syntax=c]//unsigned short TEMP_RESOLUTION = 9; unsigned temp; //char *text = "000.00"; char text[]...
czy czas od zainicjowania do odczytu (ds'a) może być większy od 750ms Question Jeśli tak to jaka jest jego maksymalna wartość Question Nie ma maksymalnego czasu. Dane czekają w "scratchpadzie" przetwornika aż je odczytasz lub do czasu, kiedy przetwornik otrzyma następną instrukcję (np. znowu 0x44 - "CONVERT T"). A 750ms to czas dla rozdzielczości 12bit....
Witam, Jakiś czas próbuję doprowadzić do ładu mój termometr. Odsyła on sygnał po resecie, jednak próba odczytania temperatury kończy się fiaskiem. Działam na procesorze Atmega8, do opóźnień używam bilblioteki util/delay.h (WinAVR). Termometr podłączony jest na stałe do zasilania. Ten kod napisałem na podstawie dokumentacji temometru i dokumentu opisującego...
Witam Robisz tak : Deklarujesz macierz czy tam tablice zwał jak zwał o x zmiennych byte. 1wreset W = 1wirecount() Adres(1) = 1wsearchfirst() Adres(9) = 1wsearchnext() 1wreset itd itd. Masz w tej tablicy adresy kilku czujników a później: 1wreset 1wwrite &H55 ' Będę wysyłał adres 1wwrite Adres(1) , 8 ' Wysyłam...
Czy moze ktos ma juz gotową procedure do odczytu temperatury z termometru DS18B20 w bascomie ? Ano proszę bardzo: Dim Bd(9) As Byte Dim Temp As Word Config 1wire = P1.0 Config Lcd = 16 * 2 Do 1wreset 1wwrite &HCC 'skip rom 1wwrite &H44 'convert T Wait 1 1wreset 1wwrite &HCC 'skip rom 1wwrite &HBE 'odczyt pamieci podrecznej Bd(1) = 1wread(9) 1wreset...
Witam, ok wycofuje wstawkę z while(delay--); oraz zmiana makra z // get 1-wire bus input (bus released) #define OWR PINC & OWMASK na // get 1-wire bus input (bus released) #define OWR (PINC & OWMASK) Po przeanalizowaniu przyznaję rację użytkownikowi TMF. Przepraszam za wprowadzenie w błąd. Proponuję zastąpić tylko...
Kod razem z bibliotekami skopiowałem ze strony. /* Plik "main.c" KURS AVR-GCC cz.5 (xyz.isgreat.org) Termometr cyfrowy, przykład nr. 3 (schemat i opis działania w artykule) atmega16 (1MHz) */ #include <stdio.h> #include <avr/io.h> #include <util/delay.h> #include "hd44780.h" #include "ds18b20.h"...
Teraz jak zmieniłem bibliotekę do ds18b20 to mam wynik -0.0625, czyli tak jak by ta zmienna temp_word miała cały czas 1 i nie zmieniała swojej wartości [syntax=c]/*****************************... * file name: temp_sensor.c *********************************/ #include <avr/io.h> #include <stdint.h> //#define F_CPU 7372800UL #include <util/delay.h>...
witam Mam kilka pytań a propos obsługi 1-wire w ASEMBLERZE dla 8051. Procedury odbioru bit po bicie i takiego zapisu do slave-a są mi znane i rozumiane. Chodzi mi raczej o użycie komend w stosunku do np. termometru DS18B20. W sieci dostępnych jest mnóstwo informacji dotyczących obsługi 1-wire dla 8051, ale w Bascomie lub też w asemblerze ale dla AVR....
Witam Mam problem z obsługą sensora temperaturowego :( Mianowicie po przeczytaniu datasheet'u nie wiem w jakiej kolejności wysyłać dane ustawień do ww czujnika :( Chce ustawić tryb 9bitowy i odczytywać temperaturę (nie jest mi potrzeba obsługa alarmów temperaturowych) Czy może mi ktoś powiedzieć w jakiej kolejności wysyłać dane: convert t Poprawiłem...
typedef union dallas_rom_id_U { long long id; u08 byte[8]; } dallas_rom_id_T; #ifndef ds18b20_h #define ds18b20_h //----- Include Files ----------------------------------------... "global.h" //----- Defines ----------------------------------------... #define ds18b20_rev 3 // family...
Odczytywać temperature po ustawieniu określonej flagi w przerwaniu. Kawałek kodu z mojego programu kiedy robiłem to jeszcze w Bascom Dim Flaga As Byte : Flaga = 0 On Timer0 Int_timer0 ' wskazanie do obsługi przerwania Timer 0 Const Factor = &H6A 'częstość wywołania przerwania timera Config Timer0 = Timer , Prescale = 64 'ustawiona na ok. 1,6ms Timer0...
Główkuję już 3 dzień nad programem ... aa: jbp1.3,aa mova,#44h ;wysłanie komendy Convert T movr2,#8 next: rrca djnzr2,next Czy uważasz, że np. powyższy fragment Twojego programu wysyła komendę "Convert T" na magistralę 1wire bo tak napisałeś w komentarzu ? Procesor nie czyta komentarzy - ślepo wykonuje to co mu każesz, a każesz mu przesunąć...
Co do czekania to oczywiście po convert powinieneś te 750ms odczekać (ale to wartość przybliżona, bo przecież ten termometr nie jest taktowany kwarcem), więc może okazać się za krótka. Można zrobić pooling i sprawdzać kiedy konwersja jest gotowa. Można też to całe czekanie olać - wtedy dopóki konwersja trwa odczytujesz poprzednią wartość. Co dla ciebie...
witam, Od razu do rzeczy. Jak w temacie! Program odczytuje po 1wire temperatury z 2 czujników. Wszystko działa poprawnie (płytka, czujniki dodam ds18b20). Kod programu poniżej. Error : 261 Line : 39 Array expected [ID1] Error : 261 Line : 43 Array expected [ID2] Error : 124 Line : 43 LOOP expected ostatnim errorem...
mam coś dla ciebie. działający prosty programik do testowania DS'ów Const Skip_rom = &HCC Const Convert = &H44 Const Read_sp = &HBE Const Write_sp = &H4E Const Copy_sp = &H48 Const Recall_ee = &HB8 Const Search_rom = &HF0 Const Read_rom = &H33 Const Match_rom = &H55 Const Alarm = &HEC Config Lcd = 16 * 2 Dim Scrachpad(8) As Byte Dim Tmp As Integer...
Witam serdecznie! Mam nadzieje, ze nie pomyliłem na początek działów. Chciałbym wykorzystać czujnik DS18B20 we własnych aplikacjach w .NET (C# lub VB.NET). Pytanie moje brzmi: czy jest to możliwe, a jeżeli tak, to czy miał ktoś już z tym doświadczenie i mógłby się nim podzielić ?? Niby schemat komunikacji z czujnikiem nie jest zbyt skomplikowany: 1....
witam kolegów. ja do jako program wyjsciowy do DS'a stosuje coś takiego jak poniżej. jeszcze niegdy mnie nie zawiódł, na początku wysyła bity konfigóracyjne które niebardzo pamiętam co robią ale to mozna pominąc gdyż są to ustawienia domyślne DS'a wysyłam tak na wszelki wypadek :) Const Skip_rom = &HCC Const Convert = &H44 Const Read_sp = &HBE Const...
W bascomnie ciężko zrobić LED + Ds18b20 wszytko psuje Waitms 750. Zwiększ do 8 a jak możesz do 16MHz kwarc. A od kiedy to musimy czekać 750ms nie robiąc nic innego? Od czego mamy timery? Przepraszam najmocniej Kolegę, ale jeśli Kolega tego zrobić nie potrafi to: 1. Nie oznacza że się tego zrobić nie da - ja nie potrafię zbudować komputera klasy PC...
Pirometr + 7szt DS18B20 + WS2812 + Zapis na PenDrive + USB do komputera. Pierwsza wersja: https://filmy.elektroda.pl/34_1503087551... Pilot RC5 ale pisze obsługę popularniejszego RC6. Wywalę też demo LED przy przełączaniu kanałów. Pilotem można regulować jasność LED: https://filmy.elektroda.pl/13_1503088228... Na filmie kiepsko to widać. Automatyka...
Ale w czym problem? Robisz tak: 1. Wysyłasz do każdego czujnika CONVERT_T 2. Robisz przerwę 750ms 3. Odczytujesz temp z każdego czujnika
Witam wszystkich, projekt powstał na przełomie marca/kwietnia tego roku w wyniku zapotrzebowania na pompkę perystaltyczną potrzebną przy realizacji pracy magisterskiej. Nigdy wcześniej nie miałem do czynienia z elektroniką (nie licząc podłączania diod z rezystorem i prostych zasilaczy na LM7812) a tym bardziej z mikrokontrolerami. http://obrazki.elektroda.pl/2272591900_1...
Witam. Przewertowałem juz cały internet i elektrodę. Nie jedna osoba ma ten problem co ja lecz gdy już znajdą rozwiązanie to nie piszą co było nie tak. Do atmegi8 podłączony mam czujnik ds18b20 - podłączenie prawidłowe z rezystorem 4,7k. Problem polega na tym ze dwa pierwsze odczytane bajty zawierające temperaturę to same jedynki(). Poniżej pokazuje...
Witam Jaki powinien być czas pomiędzy odczytami temp. z 2-uch czujników DS18B20? Chodzi o to, że złożyłem układ napisałem kod który odczytuje temp. jednak przy próbie odczytu temp. z czujników jeden po drugim wyświetla mi tylko temp. jednego z nich (coś jakby pomijało jeden czujnik)... Temperaturę wyświetlam w dwóch liniach na LCD linia pierwsza temp....
visual convert library convert cannot convert
schemat helios tc500 strumienica zamiast katalizatora odświeżania pamięci
berges falownik peugeot expert
Einhell SGA 160 - Charakterystyka i Zastosowanie Telewizor nie włącza się po puknięciu w róg