Zbudowałem ostatnio kilka urządzeń z wykorzystaniem pinu WR wyświetlacza. Ta biblioteka nie jest szczęśliwa. Jest dużo nowsza i w dodatku z możliwością użycia dowolnych pinów biblioteka. Jest włączana automatycznie jeśli jako ostatni parametr/pin napiszesz WR = PIND.3 (przykład) Użyta zostanie biblioteka "lcd4busy_anypin" Przykład z moich kodów: Zapomniałem...
85 ST jest wartością domyślną wpisaną do rejestru w którym przy kolejnych konwersjach DS wpisuje już zmierzoną temp i przy pierwszym pomiarze zawsze taka liczbę odczyta. Może gdzieś nie łączą przewody i czujnik traci na chwile zasilanie i wpisuje to wartość domyślną.
Nie to sprawdzałem. Wygląda to jakby procedury odczytu DS-a działały bo ta temperatura wyświetlana -0.1 o tym świadczy. DS jest zasilany z 3,3V i wyczytałem że przy takim zasilaniu rezystor podciągający linie DQ ma mieć około 2k i taki mam. Ale z rezystorem 4,7k też nie działało. Gdzie to wyczytałeś? Datasheet nic na ten temat nie mówi, poza "Can be...
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...
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++)...
Zbyt duzo razy widzialem zapewnienia, ze "wina w 100% nie lezy po mojej stronie", aby w nie uwierzyc :) Byc moze tak jest, pokazanie nam swojego kodu nie zaszkodzi, a moze ktos cos zauwazy niewlasciwego. No i nie napisales, czy inne funkcje (zapis/odczyt wewnetrznego EEPROM) dzialaja poprawnie.
http://www.teslabs.com/openplayer/docs/d... Nie ma możliwości, żeby to nie pomogło.
Nie kojarzę już przy jakiej okazji otrzymywałem ten błąd. Ale zaproponować Ci mogę skorzystanie z tych kodów:[url=http://www.stsystem.elektroda... czujnik, [url=http://www.stsystem.elektroda.eu/pr... czujników. Kody działają w 100%, pochodzą z wdrożonego rozwiązania. Przyjrzyj...
Ja miałem podobne problemy i okazało się, że to z powodu funkcji czasowej delay_us. Zastąpiłem ją inną i wszystko zaczęło chodzić OK. Zastosuj tą: void delayus(unsigned char t) //parametr t od 0 do 255. { do{asm("nop");}while(--t); } W miejscu gdzie masz zdefiniowaną częstotliwość oscylatora wpisz też: #define F_CPU 8000000ul
Tutaj masz gotowy przykład bez użycia float-ów (oszczędność pamięci): http://mikrokontrolery.blogspot.com/2011...
Masz tu dokument z Texasa na temat zalet i wad różnych sposobów łączenia takich czujników: http://www.ti.com/europe/downloads/2-%20...
a 8MHz masz?:> Sprawdź PCB Rezystor 4.7kΩ masz na linii danych? Może podaj konkretnie co pokazuje sie na lcd. "Przyczepiliście się" :D do sprzętu , a żaden z Was nie zajrzał do kodu ;) A błąd ukrył się sprytnie , w deklaracji zmiennej T1 , która powinna być typu Integer , a jest ... :?: Piotrek
mialem podobny problem umnie wariowal przy odczytywaniu temp ponizej 15 stopni problem był w 1 wire za dlugo czekalem na odczytanie znaku nieszcesne 1 μs jak zmniejszylem czas to poszlo
Ten kod napisałem na podstawie dokumentacji temometru i dokumentu opisującego interface 1 wire od atmela: A do dokumentacji AVR-ka zaglądałeś :?: Zastanów się, czy można uzyskać niski stan na magistrali 1wire, jeżeli pin do niej podłączony jest ustawiony jako wejście :?: [syntax=c]unsigned char _DS18B20_ReadByte() { _DATA_DDR &= ~(1 << _DATA_WIRE);//...
1. Trzeba uważać na funkcje delayms i delayus, ponieważ mają one ograniczenia - tzn. nie można tam wstawić dowolnie duże liczby. Szczegóły w delay.h 2. U mnie ciekawy problem się pojawił w czasie konwersji temperatury - ponieważ układ był zasilany pasożytniczo. Nieważne jak kombinowałem z pullupami - zawsze to samo. W końcu po wystawieniu "1" na nóżce...
Masz poniżej zawartość dwóch plików, które trzeba podmienić: [syntax=c] #include <util\atomic.h> #include <util\delay.h> #include <avr\io.h> #include "1wire_basic.h" uint8_t Error; uint8_t PinMask; void OW_SendBit(bool bit) { ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { DDRB |= PinMask; _delay_us(3); if(bit) DDRB &= ~PinMask; _delay_us(60);...
Podejrzewam, ze jest jakis bład w algorytmie interpretacji odczytanych ajtów z termometru. Z ciekawosci wlazlem na http://pdfserv.maxim-ic.com/en/ds/DS18B2... i jest tam tabelka przykładowych wskazań dla wybranych temperatur. Nie znając programu niemożliwe jest powiedzenie czegos wiecej. pozdrawiam
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);...
...czyli najpierw zamieniam 0x33(READ_ROM) na 0xFF(znajdź pierwszy) to zamiast numeru ID ds-a wyświetla mi FF FF FF FF ... Co robię źle ?... Ha, żeby to było takie proste. "SEARCH ROM" - to jest zaklęcie, które powinno Cię zainteresować. Poszukaj, bo to dość ... popularny temat.
Uściślijmy jeszcze czy w kodzie który działa też nie masz wartości $framesize, $swstack i $hwstack? Rzeczy należy eliminować sukcesywnie. Dopisałbym te brakujące rzeczy od razu zamiast je podejrzewać... !EDIT! Zapomniałem o tym a już się w tej sprawie kontaktowałem kiedyś z Supportem :D Słowo Hbyte jest słowem używanym przez wewnętrzne procedury Bascom....
nie zagłebiajac sie w kod, wydaje mi sie ze to jest ten delay_ms. ma prawo wystepowac cos takiego ze siedzisz w delay'u to juz sie zmienil czas ale minie spory kawałek sekundy zanim odswiezysz wyswietlacz.. na test usun delay'a, jak pomoze to zrob to czekanie na timerze
Blad odczytu z DS18B20 objawia się odczytem temperatury -127 st., tyle, że może to również oznaczać błąd czujnika, brak łącznoeci itp., więc nie jest to jednoznaczne z brakiem zasilania. Pozdr
Podciągnij linię zewnętrznym opornikiem 4k7 do +5V, Ustaw na tej linii stan niski i steruj kierunkiem. Szybko można przerobić jak poniżej: [syntax=c]#define CLR_DQ sbi(OW_DDR, OW_NUM);cbi(OW_PORT, OW_NUM); //0 na wyjscie #define SET_DQ cbi(OW_DDR, OW_NUM);cbi(OW_PORT, OW_NUM); //1 na wyjscie[/syntax]
Witam, Wstrzymaj się z bascomem na razie. Wynik jaki otrzymałeś tzn: 16, 197, 244, 1, 2, 8, 0, 128. nie dokońca jest zły. Koledzy słusznie Ci napisali że pierwszy bajt jak powinieneś otrzymać powinien być 0x28 ale w przypadku użycia 12 bitowego czujnika DS18B20 a Ty odebrałeś 0x10 w Hexie więc ja wyrokuję że Ty poprostu korzystasz z czujnika DS18S20...
Powrócę jeszcze do tematu. Timery programowe to objaśnił Mirekk36 w swojej książce oraz artykułach i wideo poradnikach, bardzo dobrze je się stosuje. Jest to proste, wystarczy ustawić jakiś timer w tryb CTC i wywoływać przerwanie co jakiś zamierzony czas (stosuje około 10ms). F_CPU/Prescaler/100 Zaokrągloną wartość wpisujemy do rejestru OCRx. W przerwaniu...
Dokładność pomiędzy rzeczywistą temperaturą a wskazaniami tych czujników według noty wynosi 0.5st Może wykonaj jeszcze test umieszczając czujnik na przewodzie. Co tak dokładnie mierzy temperaturę w Twoim pokoju że ufasz bardziej temu urządzeniu? Wszystko zależy gdzie te urządzenie mierzy temperaturę. W sezonie grzewczym myślę że w różnych miejscach...
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,...
Cześć. Podczas pracy z tymi czujnikami, kiedy znajdują się w zakłóconym środowisku, co jakiś czas dojdzie jednak do jego zresetowania się i poda temperaturę +85C (domyślna zawartość rejestru po resecie zasilania). Wydaje się, że nie ma innego sposobu jak tylko sprawdzać czy odczyt wynosi +85 i po prostu go nie uwzględniać. Ale co wtedy kiedy akurat...
po pierwsze wez w palce czujnik i sprawdz czy temperatura sie podniesie po drugie wstaw do programu funkcje error bo jezeli wskazuje 15 to znaczy ze odczytales z czujnika temperature 15 stC
Na pierwszy rzut oka w Twoim kodzie, jak i u autora, nie ma żadnej manipulacji trybem wyjścia portu - pinu. Po wrzuceniu tego na STM32F722RE okazuje się, że nie ma to znaczenia. Przy ustawieniu trybu pinu na wyjście z open drain, odczytanie rejestru IDR daje poprawne działanie, bez zmiany trybu na wejście. Sprawdziłem to na porcie A i pinie PA0. Nie...
a po co ci takie duże zmienne uint16_t decicelsius; uint16_t subzero, cel, cel_frac_bits; tam zdaje sie powinny być unsigned char no i tu hd44780_putInt((decicelsius/100), 10,0); chyba powinno być (decicelsius/10) - jak sama nazwa wskazuje decicelsius zwraca wartość w dziesątych stopnia np. 26.5°C -> 265
Czyli DS pewnie jeszcze zyje :) A czy na tej twojej uniwersalnej płytce zrobiłeś podciągnięcie do zasilania 1-wire tj. czy dałeś opornik podciągający np 3,3k od 1-wire do 5 V ??? pozdr KN
Witam Dokonałem tej zmiany i także wyrzuciłem zmienna S na Lcd i dalej program nie działa tak jak bym chciał. ................ Jest ok zmieniłem znak ''<" i działa . Do swojej podstawki programującej mam podłączone 2 przyciski do pin d.0 pierwszy do pind.1 drugi gdybym chciał zmieniać progi załączania pind.7 tymi przyciskami (czyli regulować temperaturę...
Podpięte w trybie normal czy parasite? Pokaż kod. Timingi ok?
Oto odpowiedź: http://mikrokontrolery.blogspot.com/2011...
Mozliwe. Dodales rezystor? Jeszcze masz taka zmienna err w bascomie, poczytaj troche o niej.
Jesteś jednym z pionierów bo sprzęt drogi i mało popularny, więc sam musisz sprawdzić co się dzieje. Pierwsze co bym sprawdził, czy piny IO działa OK - miganie LED, potem kup sobie jakiś analizator Saleae (klony na Allegro kilkadziesiąt PLN), w programie Saleae Logic masz dekoder 1-Wire, możesz podejrzeć co się dzieje na magistrali, czy to Arduino nie...
Dobra, poradziłem sobie inaczej. Użyłem timera, ale nie korzystałem z przerwań, tylko ustawiłem częstotliwość inkrementacji timera na 1us i czekałem, aż wartość timera przekroczy zadany czas ;) Na potrzeby 1-wire wystarczyło :)
nie wiem czy coś ze mną nie tak czy z tym forum, ale piszę tą odpowiedź drugi raz, albo odpowiedziałem w innym temacie ... użyj tej funkcji, u mnie działa to jest dla DS18 S 20 (niepotrzebnie wkleiłem , ale niech już zostanie) float zamien_temp(unsigned char MSB,unsigned char LSB) { float ftmp; if(MSB==0x00)//dodatnia,lub 0 {...
Na temat fuse bitów był osobny temat wałkowany i to dobrze ale narazie ich nie ruszaj bo "uwalisz" procka. DS-y są "wyczulone" na czas w którym następuje konwersja i jesli bedzie nieodpowiedni(wg noty 750ms) to DS moze wariowac i w ogole nie mierzyc(nie zdarzy wykonac konwersji). Jesli chodzi o ADC to w zasadzie różnica jest taka ze przy standardowym...
Czy przypadkiem zmienna I nie zwraca ci temperatury ujemnej gdy ona występuje? Znak jest zawarty w drugim bajcie => patrz datasheet.
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...
No nic dziwnego, w ustaw_czas robisz call do wys_czas który wbrew obiegowej opinii wyświetla temperaturę;] i... ustawia kursor kilka spacji za *C :) a potem sobie reta do ustaw_czas gdzie już jak widać LCD "Ustaw czas" :) Ot i tajemnica;] Pozdro ;] Dodano po 1 PS lowerline sux, ja bym używał locateów na twoim miejscu ;-) Poza tym funkcje są fajnejsze...
Przy 1 urządzeniu na 1Wire nie ma potrzeby używać ani SearchROM, ani MatchROM, ani ReadRom, tylko wystarczy SkipROM. 1. Reset1Wire 2. Jeśli Reset poprawny to SkipROM (0xCC) i ConvertT (0x44) 3. Odczekanie czasu na konwersję 4. Reset1Wire 5. Jeśli Reset poprawny to SkipROM (0xCC) i ReadScratchpad (0xBE)
Dalej to samo... A czemu miało by być inaczej :?: Patrząc na Twój kod , dochodzę do wniosku , że: a) nie czytałeś dokumentacji DS18B20 b)czytałeś , ale nie zrozumiałeś Dlaczego odczytując dane o temperaturze , odczytujesz tylko 1 bajt :?: Pisałem już kilka razy na tym forum , że DS18B20 standardowo zwraca dane w postaci 16-bitowej liczby typu signed...
Jeżeli stosujesz funkcję typu delay1us(X) (rozumiem, że sam ją napisałeś) to pamiętaj, że wejście i wyjście oraz pętle odliczające też trzeba uwzględnić. Polecam zrobić na potrzeby ds'a funkcje o określonym czasie trwania (będzie ich raptem kilka), bo jak zmienisz taktowanie to może się okazać, że wyżej wymienione dodatkowe opóźnienia mogą mieć znaczenie...
Zakładam, że temp -127C jest błędem A dokładniej < -50C lub > 50C Naukowa metoda :-) Tak naprawdę to nie wiesz co się dzieje ma magistrali! Czy brak odpowiedzi na reset, czy złe CRC jak w ogóle jest czytane a wątpię w to. Sprawdzaj CRC! Wcześniej jednak zrób sobie log co się dzieje na magistrali: - reset - presence - search rom (tu masz crc)...
Timera nie trzeba, w sumie program wygląda jakby był napisany bez przemyślenia, strzelam że się zawiesza przy oczekiwaniu na dane które nigdy nie przychodzą.
Cześć A to było tak: 1 - po rozkazie do dallasa "pomiar" daj mu DWIE SEKUNDY!!!! czasu na rozmyślanie o temperaturze a potem daj komende "odczyt" 2 - daj rezystor podciągający 3k3 U mnie tak chula w samochodzie i jest ok aaa i to wszystko na 2-óch przewodach
1. linia danych jest podciągnięta do plusa?, sprubuj zasilić go "normalnie" 2. jak czesto robisz pomiar, manual podaje że nie powinno sie tego robic częściej niż co 750ms. 3. nie wiem jak zwiekszyć precyzje odczytu w bascomie
Panowie naprawde nie wiem czemu mi nie dziala termometr, wyswietla 0 na wyswietlaczu 7seg. Sygnal resetu dziala poprawnie, jest odzew od DS nadawanie bitow tez dziala bo widze na oscyloskopie nadawane ramki po resecie, ale wyswietla 0. Mysle ze mam gdzies blad w czasach ale nie potrafie go odnalezc siedze juz 3 dzien. [syntax=c]#include <avr/io.h>...
To nie powinno być więc trudne. W pole can_frame.can_dlc wpisujesz rozmiar typu float, a następne wypełniasz tablicę can_frame.data , np. can_frame.can_id .
Łączę to w ten sposób: https://obrazki.elektroda.pl/9438237900_... Czyli źle. Przeanalizuj to co napisałem o pullup i wyniki pomiaru multimetrem. Sprawdź jakie napięcie mikrokontroler traktuje jako poziom niski a jakie jako wysoki. Wskazówka: Zobacz w innych projektach jak włącza sie klawisze i jak je obsługuje. Prawie zawsze napięcia...
Masz rezystor podciągający? Niektórzy o nim zapominają.
nie zaszkodziło by gdybyś umieścił kompletny kod bo może jednak covert t nie jest wywoływany co 5 s. tylko znacznie częściej.
Możesz wrzucić tu program z proca? pzdr
problem tkwi w tym, że program masz do obsługi układu DS1820, a podpięty masz DS18 B 20 (różnią się one rozdzielczością i sposobem zapisu temperatury w rejestrach). W internecie znajdziesz masę programów pod BASCOM i nie tylko obsługujących ten termometr.
Masz podciąganie linii danych?
I w dodatku jesteś pierwszym i jedynym, który napotkał ten problem, nieprawdaż? Spróbuj najpierw przeczytać odpowiedzi w setce analogicznych wątków.
Moje doświadczenia z wifi, tymi modułami i gotowymi bibliotekami nie są zbyt dobre. Natomiast popinguj sobie, zobacz też czy z poziomu access pointa widzisz utratę połączenia (włącz może jakiś dodatkowy poziom logowania). Jest sporo kart wifi zasilanych z USB, więc i to powinno dać radę. A jak chcesz żeby ktoś oglądał kod, to wrzuć go w "syntax" wraz...
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......
Przepraszam, że dopiero teraz ale jestem w delegacji. Minęły dwa dni a Twój termometr nie działa... Możesz słuchać każdego. Ja proponuję takie rozwiązanie które zajmuje dosłownie dwie minuty jeśli robiło się to wczesniej. Sprawa jest w pełni odwracalna. To nie ślub z kobietą :D Więc co szkodzi spróbować? Kiedyś może sam komuś pomożesz. Należy zacząć...
Zajrzyj też [url=http://www.elektroda.pl/rtvforum/to... Tu była podobna dyskusja na ten temat. Pozdrawiam
Witam Mam 7 układów DS18B20 i chciałem dokonywać ich odczytu w kolejności. W przerwaniu od Timer0 ustawiam co 4 sekundy flagę, która ma spowodować wywołanie programu odczytu. Wywołanie od przerwania Timer0 Wywołanie programu pomiaru Podprogram pomiaru Zdefiniowałem zmienne Case nie ma chyba sensu, bo w momencie wyboru z Case, dane jeszcze nie są obliczone.
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...
Witajcie, chciałbym lekko odgrzać kotleta i poprosić o wskazanie błędu przy próbie wyliczenia temperatur ujemnych. Odczytuję czujnik DS18B20 w maleńkim ATTINY13 (zmienne float właściwie odpadają) i co około sekundę wysyłam wynik poprzez UART. Dla temperatur dodatnich - dzięki uprzejmości p. Podkalickiego i jego "odchudzonej" biblioteki DS18B20 działa...
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...
Może sposób zasilania lub tryb pracy powoduje ogrzewanie czujnika. Oszacuj jaka moc wydziela się w DS18B20.
Może ten się nada. http://www.polpunkt.pl/termometr-wifi-ds...
Str. 100 i 101. Rejestr TCCR0, bity COM00 i COM01.
wg helpa bascoma masz: Gosub podprogram 'wywołanie .... .... a oznaczenie podprogramu podprogram: .... .... Return sub wymaga wcześniejszej deklaracji i wywołania poprzez call poza tym możesz mieć kłopoty ze zmiennymi oznaczonymi samymi cyframi w załączniku masz termometr który zrobiłem dla koleżanki (robiony na szybko więc nie jest specjalnie zoptymalizowany)...
Kasować licznik- a nie przerwania- na początek. Kasować licznik i musisz zastosować dwie flagi, inaczej nie da rady. Jedna sprawdzająca czy już możesz odczytać dane, drugie sprawdzająca czy już możesz wysłać żądanie odczytu:)
Witam, mam problem z obsługą DS18B20. Plik main.c [syntax=c]/* * main.c * * Created on: 19 paź 2014 * Author: Kamil */ #include <avr/io.h> #include <util/delay.h> #include <stdlib.h> #include <stdio.h> #include "USART.h" #include "DS18B20.h" int main(void){ unsigned char ucReset; char cTemperatureH = 0, cTemperatureL = 0; float...
Hi, CRC nie sprawdzam, ale jestem w trakcie dopisywania mod wziety z http://pdfserv.maxim-ic.com/en/an/app162... W celu ulatwienia sobie zycia na poczatek obliczanie temperatury z dokladnoscia do 0.1 (bit konfiguracyjny na taka wskazuje) kod wyglada tak: res=temp_msb*256 + temp_lsb; res=(float) res/16.0; sprintf(str,"TEMP: %2.2f",res); Dziwna sprawa...
Miałem problem z odczytem z 1 ds18b20 i problem tkwił w opóźnieniach (standardowa biblioteka nie jest najlepsza) http://www.elektroda.pl/rtvforum/topic98... nie jestem znawcą ale pomogło.
Jak zrealizować w esphome odczyt temperatury z ds18b20 tylko w czasie załączenia danego urządzenia. Również odczytane dane były wysyłane do HA tylko w czasie włączenia urządzenia i to w interwale czasowym np 5 sek.
Udało mi się rozwiązać problem. Kabel jaki posiadam to kabel USB - RS232 UART TTL i dlatego nie chciało działać. Znalazłem gdzieś w sieci opis podłączenia poprzez ten kabel czujnika ds1820 ale 3 przewodami. Vcc-Vcc Gnd-Gnd Zwieram RX z TX i podłaczam do czujnika do środkowego pinu DQ. Od razu we wszystkich programach bez żadnego problemu wykryło adapter...
A co to ma być :!: :?: : for(uint8_t i=0;i<8;i--) i-- :?: Myślę, że problem tylko w tym i sprawa oczywista, bo pobierało tylko jeden bajt. Nie możesz poprzedzać komendy 0x33 przez 0xCC, bo w jednej ramce może być tylko jedna komenda ROM!
A dokładnie w TSR2 jest DS1820 a ja wpiąłem DS18B20 czyli jedna nie ten czujnik. Zakupiony i wpięty czujnik DS18S20 z oznaczeniem na czujniku DS1820 - działa elegancko.
Więc pojawia się pytanie jak sprawdzać kolejne bity w kolejnych przebiegach "pętli" (w przypadku procedury zapisu) oraz jak ustawiać logiczne 1 w kolejnych bitach przy kolejnych przebiegach "pętli" (w przypadku procedury odczytu). Jeśli chodzi o zapis to zrób tak, że sprawdzasz, czy najmłodszy bit w rejestrze jest wyzerowany, jeśli tak to ustawiasz...
Pokaż chociaż kawałek kodu to zobaczymy jak to zrobiłeś. Do przemyślenia podam kilka przybliżonych wartości. Odczyt 9 bajtów z DS18B20 (razem z CRC) trwa ~7ms Odczyt tylko dwóch bajtów ~3ms Multipleksowanie 4 LED7Segment to najcześciej 200Hz czyli co 5ms Obsługa wyświetlaczy w przerwaniu trwa ~ 5 us przy 8MHz Napisz przerwanie optymalniej a Dallas nawet...
Waitms 750 musisz mieć przed odczytem.
A gdzie odpowiedź na pytanie? ... ... i dalszy ciąg postu, żebym spa..ł itp. który zdążyłeś już skasować, ale ja widziałem i mam kopię :) Nie przesadzasz czasem z tymi żądaniami i pretensjami? Kwarc względem aukcji na allegro jest wbudowany Powtarzam, nie jest wbudowany żaden kwarc, jest oscylator RC. https://obrazki.elektroda.pl/8634664000_...
Jeszcae raz ci powtarzam, iz ten program mam wgrany i dziala na sto procent. Szukaj błedu w ustawieniach. Czy na pewno masz dobrze podłączony DS 18B20 ??
Jak myślisz co tu jest nie tak: #define OW_PORT PORTC // port na ktorym jest termometr #define SET_1Wire DDRC&=~_BV(OW_PIN) #define CLEAR_1Wire DDRD|=_BV(OW_PIN)
Ja też tego nie rozumiem. Chociaż rozumiem, że w tego typu przypadkach na 99% wina leży po mojej stronie. W C programuje dopiero od kilku miesięcy i nie czuję się jeszcze w tym zbyt pewnie. Najprawdopodobniej coś przeoczyłem. Z mojej ręki "poszło do ludzi" ponad dwie setki takich czujników, wszystkie zasilanie oczywiście parasite - innego zasilania...
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...
Sign=43 ; Domyślnie znak "+" (kod ASCII dla + to 43 ) IF Temp.11=1 then ; wykryte, że temperatura jest ujemna Temp=~Temp+1 ; obliczenie Temp=-Temp Sign=45 ; znak "-" endif Deg = Temp & 0x07FF ; wydzielenie bitów temperatury Deg=Temp>>4 ; Wydzielenie bitów wartości całkowitej remain=Temp & 0xF ; wydzielenie bitów ułamkowych ; przeliczenie ich na wartości...
... do czego służy przycisk... Wciśnięcie tego przycisku, powoduje jednokrotne wykonanie programu głównego. DS1990A - odczytanie ID DS18B20 - odczyt temperatury
Z reguły to w XMEGA są 4-8 USARTy, z wyjątkiem rodziny E5.
Fakt mój błąd, czytałem z góry zamiast z dołu i zamieniłem nóżki 1 i 3. Teraz działa. Tylko że nie wiem czemu nie pokazuje więcej niż 25 st, powyżej dostaje na 7segmentowca 07.0 (wartość po przerobie na 7 segmentów, ale 7 faktycznie wskazuje) I się zastanawiam czy krzywdy nie zrobiłem tej czujce, jakieś pomysły czemu tak się dzieje? ds18b20_init(0,0,...
1. Komunikacja po OneWire - tylko jeden termometr 2. Odczyt jest bezpośredni - nie mam żadnego opóźnienia odczytu danych 3. Nie mam teraz w pracy kodu - wrzucę go po południu 4. Biblioteki standardowe 5. Kabel zwykły trzyżyłowy, nieekranowany - kurcze może tutaj jest problem 6. Problem występuje w bardzo losowych momentach - czasem zdarza się 2 razy...
Można oba odczyty dać do przerwania. Zliczać je i co któreś przerwanie robić odczyt. Czyli timer, np. przerwanie co 250 ms - co 3 przerwanie robisz odczyt temp. (w pierwszym dajesz polecenie konwersji, w 3 odczyt), co 8 przerwanie odczyt wilgotności.
usuń delay(1000); z sensors.requestTemperatures(); i wykonaj opóźnienie na timerach
Mam podlaczony do Atmegi16 LCD HD44780 i DS18B20 (pod pin PD0). Nie dziala mi poprawnie transmisja 1-wire. Caly czas na wyswietlaczu wyswietlona temperatura to -16.1 (a powinno wskazywac ok. 25). Prosze o jakas podpowiedz #include <avr/io.h> #include <avr/delay.h> #include <stdlib.h> //LCD #define LCD PORTA #define E 3 #define RS 2...
ale to jest procedura do DS18S20, który różni się nieco formatem podawanego wyniku od DS18B20 ;)
Witam, wykorzystuję układ ds18b20 do pomiaru temperatury. Układ działa prawidłowo przez około 30s od załączenie zasilania. Następnie odczyty pokazują temperaturę 9 lub 10stopni. Podczas normalnej pracy temperatura jest przetwarzana prawidłowo. Do pull-up'a wykorzystuję wewnętrzny rezystor podciągający uC. Czy ktoś spotkał się z podobnym problemem? Co...
Przeczytać opis protokołu 1-wire? Generalnie odczyt zawsze jest z termometru wybranego poleceniem np. MatchRom. Czyli wysyłasz polecenie MatchROM, następnie ROMCode termometru, któy cie interesuje i dokonujesz odczytu.
I popraw ten 33h :>
Czy Ty nie widzisz , że ten kod to stek bzdur :?: :| Popatrz:[url=http://www.elektroda.pl/rtv... Piotrek
ds18b20 błąd odczyt odczyt ds18b20 atmega8 ds18b20 odczyt przerwa
sterowanie hydrauliczne koparki thunderbird konfiguracja bosch agregat prądotwórczy
filtr piaskowy szuflada kuchenna
Zakres pracy ciągłej kotła: Efektywność i bezpieczeństwo Schemat instalacji elektrycznej VW Passat 2.0 TDI CBAB