Witam właśnie kończę sterownik pieca C.O. jako czujnik temperatury zastosowałem DS18B20. I właśnie sie zastanawiam jakie czujniki stosuje sie w "firmowych" sterownikach z tego co widziałem większość czujników ma wyprowadzenie 2 przewodowe co sugeruje czujniki rezystancyjne lub prace 2 przewodową 1-Wire. Czy ktoś rozmontował taki czujnik? Czy to sa czujniki...
Witam kolegów. Mam pytanie odnośnie tych czujników temperatury. Czy spotkał się ktoś z was z podobnym, ale z komunikacjom po modbusie RTU lub ASCII? Mam dylemat czy w domu w układzie gwiazdy stosować te czujniki. Kłopot jest o tyle, że muszę mieć jakiś konwerter 1wire na modbusa bo wszystko ma łączyć się z takim serwerem danych Weintek [url=]Link Z...
Tego Ci nie powiem, ale wiem że po włożeniu czujnika DS18S20 zamiast DS18B20 wszystko zaczeło działać jak należy. Widocznie nie chodzi tu może no nazwy w bibliotece co o jej konfigurację. Niestety nie jestem w tym biegły i nie znalazłem konkretnej przyczyny.
Tak jak pisałem mam odczyt z rozdzielczością 9-bitową, próbowałem wielokrotnie zapisać rejestr konfiguracji, ale przy odczycie zawsze dostaję, że zawiera same jedynki. Wczoraj, kiedy już straciłem całą nadzieję zauważyłem, że w sklepie sprzedali mi ds1820 zamiast ds18b20, a ten właśnie ma 9-bitową rozdzielczość. Dziękuję wszystkim za pomoc i zamykam...
A czy jako sterowany pull-up nie można użyć zwykłego PNP zamiast MOSFETa ?
Jesteś pewien, że nie podłączyłeś czujnika na odwrót, tzn vdd zamiast gnd?
Witam! Mam problem z poprawnym zaprogramowaniem kontrolera. Teoretycznie powinno wszystko działać, program kompiluje się bez problemu jednak nie wykonuje moich założeń czyli odczytu temperatury, jej konwersji oraz wyświetleniu(przez Terminal). Jeśli ktokolwiek spotkał się z podobnym problemem bądź wie jak ów rozwiązać to byłbym bardzo wdzięczny. Poniżej...
[syntax=c]while(1) { if(!(PINA & 0x02)) { hours++; if(hours>=24) { days++; hours-=24; } _delay_ms(80); while(!(PINA & 0x02)) {} } if(hours<18) { PORTA|=(1<<0); } else { PORTA^=(1<<0); } if(ds18b20_ConvertT()) { _delay_ms(750); ds18b20_Read(ds18b20_pad); temp_new = ((ds18b20_pad[1] << 8) + ds18b20_pad[0]) / 16.0 ; if(temp==0...
Witam Borykam się z problemem zajęcia programu przez oczekiwanie na wynik przetwarzania temperatury w czujniki DS18b20. Przy jednym czujniki jeszcze nie jest to aż tak bardzo uciążliwe w zależności od układu. Jednak tym razem dokonuję pomiaru z 4 czujników wiec łączny czas na konwersję temperatury to ponad 3.5s! Program w tym czasie nie robi dosłownie...
Witam, PROJEKT ostatecznie ukończony :D wersja ostateczna programów dla płytek MASTER Arduino Mega2560 i SLAVE ESP8266-12E Testowałem urządzenie przez kilka dni, w międzyczasie dokonałem kilku przeróbek, jak w kodzie tak i w połączeniach PIN itp. Usunięte zostały wykryte błędy, najważniejsze to obsługa klawiszy i błąd podczas modyfikacji bez zapisu...
Jest jeszcze jedna rzecz którą muszę wiedzieć ;). Jeśli mam coś wyświetlić na wyświetlaczu, korzystając z Twojego kodu jako bazy, potrzebuję Twojej biblioteki do obsługi LCD. Ewentualnie podeślę Ci gotową moją bibliotekę do LCD i napiszę kompletny kod. Wybór należy do Ciebie :) Co do zmiennych to unikamy na AVR floatów. Operacje na nich zajmują wieki...
Witam Wszystkich Zegar który Wam przedstawiam powstawał dosyć długo, przeważnie wieczorami. Zegar posiada: - Zegar na PCF8583. - Data - Budzik (programowy). - Obsługę pilotem RC5 - Wyposażony w diodę IR do włączenia lub wyłączenia światła o danej godzinie. - Tester zasilacza na LM358N. - Dwu punktowy termometr na DS18B20 Sercem układu jest Atmega16...
Mam znów mały problem:cry: Wykonałem termometr na jednym ds18b20 (kod do niego wziąłem gdzieś z forum) i problem jest z tym, ze wydaje mi się , ze zawyża on temp. o okolo 2-3 stopnie. Czy mógłby ktoś poprawić ten kod tak, żeby wyświietlana temp była mniejsza o 3 stopnie. Próbowałem wykonać to zmniejszając zmienną T (czyli np. TR = T - 3 i na wyświetlaczu...
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...
Ok wszystko fajowo. Tylko skad ta niedokladnosc ? Jeszcze w pokoju by mi nie przeszkadzalo jak by pokazywal 24 zamiast 21 st C ale jak zaczyna przeklamywac na dworze to jest niefajnie :(
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,...
Nie wiem czy to można nazwać postępem, ale wygląda że jest lepiej ale nie tak do końca. Po pierwsze nie wolno oddzielnie podawać napięcia pod czujnik ds18b20, momentalnie nagrzewa się - nie wiem dlaczego, myślałem że już go spaliłem, ale na to wygląda że żyje, w przypadku ds18b20p (wersja PAR) nic się nie dzieje i nie jest wykrywany. Czytając o wersji...
Witam Kolegów, zaczynam naukę programowania w środowisku Bascom, na warsztacie mam Attiny2313 i DS18B20, chciałem sprawdzić jak działa odczyt temperatury (wyświetlanie na LCD opanowałem wczoraj, pin'ologia LCD niezmieniona). DS18B20 podłączyłem następująco: 1 - Gnd, 2 - do pin'u wejściowego oraz przez R=4.7k do +5V, 3 - +5V. Całość jest zasilana przez...
Co do kodu: 1. Na początek zrezygnuj z przerwań. Obsługa 1wire wymaga dużej precyzji "czasowej" - opóźnienia liczą się w µs. Jeżeli w czasie trwania komunikacji 1wire pojawi się przerwanie to zależności czasowe się rozjadą. Jak już będzie działać to możesz wrócić do przerwań, ale wyłączać je na czas wysyłania/odbierania bitów z 1w. Lub jeszcze...
Prawidłowa transakcja dla kolegi Kubbaz . Żywcem wyjęte z dokumentacji i dostosowane do Twoich potrzeb: MASTER MODE DATA (LSB FIRST) COMMENTS 1. Tx Reset, Master issues reset pulse. 2. Rx Presence, DS18B20 responds with presence pulse. 3. Tx CCh, Master issues Skip ROM command. 4. Tx 44h, Master issues Convert T command. 5. Tx ,DQ line held high by...
nie pomogło bo na testowym z arduino jest to samo może czujnik padł Zgaduję, że gdy mówisz "na testowym z arduino jest to samo", próbujesz użyć innego mikrokontrolera do testowania tego samego czujnika? Jeśli tak, i wciąż widzisz te same wyniki, możliwe że problem leży faktycznie w czujniku DS18B20. Czujniki DS18B20 są zazwyczaj dość niezawodne,...
Witam. Zlecę napisanie programu na Atmegę, dowolny język. Ma symulować działania termometru DS18b20 na 1 wire. Mianowicie nasz układ mamy podłączyć zamiast prawdziwego termometru i podając mu na wejście UART wartości, ma na wyjściu je przekazywać po 1 wire w standarcie DS18b20. Proszę o wycenę. PILNE!
Witam forumowiczów. Jako że jestem w posiadaniu kilku czujników DS18B20 mam pytanie. Czy nadaje się on wyłącznie do odczytu w standardzie 1-Wire? Czy można zamiast mikroprocesora zastosować dowolny scalony przetwornik lub układ cyfrowy i odczytaną wartość dać na wyświetlacz? Planuję zrobić termometr na ICL7107(również w moim posiadaniu) i jako czujnik...
Witam, Postanowiłem zrobić termometr na DS18b20. Miałem kiedyś na nim termometr do PC na RS232. Napisałem mały programik w C i działa. Kupiłem nowego DSa podłączyłem zamiast tamtego i pokazuje cały czas 127,9. Kupiłem kolejny w innym sklepie i to samo. Ale po wgraniu na mege8 program Ducha wszystko smiga. Gdzie szukać błędu. Pozdrawiam, CIKO
Witam. Od razu, żeby uprzedzić co niektórych zaznaczę, iż problem, który opisuję pojawił się po ponad półrocznej pracy urządzenia, wykluczam zatem błąd programowy. Do rzeczy - jest sobie sterownik, którego jednym z zadań było mierzenie temperatury z dwóch czujników DS18B20. Oba połączone do wspólnej linii danych i z własnym zasilaniem. Jako µC...
Witam, Mam na linii kontrolera słynny DS18B20. Jeżeli czujnik jest podłączony to wszystko jest ok. Problem pojawia się wtedy jeżeli odepnę na chwilę czujnik. Funkcja zwraca mi wartość -1, a ponowne podłączenie czujnika nie powoduje ponowienia prawidłowych odczytów. Trzeba wtedy po podłączeniu zresetować cały układ. [syntax=c] int odczyt_DS (void) {...
Witam, zrobiłem termometr na podstawie tego schematu: układ wykonałem na płytce drukowanej ze schematem montażowym, zresztą elementów jest mało i duża płytka, więc nie ma mowy o zwarciach. Zastosowałem kondensatory C1 i C2 33pF zamiast 30pF. Układ ruszył od strzału i pokazywał na wyświetlaczu '' OFF '', po chwili zorientowałem się, że włożyłem niezaprogramowaną...
Mam dziwny(?) przypadek. Piszę tutaj, bo to niejako dotyczy tego układu. Podłączam DS18B20. Przewód 1m - ok. Wszystko pięknie działa. Przewód 4m - zamiast 4 dallasów w układzie widzi 18, 13, losowo. Do tego nie rozpoznaje żadnego. Co jest powodem - rezystancja linii??
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...
Opis może czasem różnić się w kodzie od oryginału, gdyż już zacząłem ostro kombinować z tymi opóźnieniami. Ale z delayus(15) też nie działa... Dziękuję za uwagę Uwaga: Zaktualizowałem plik ds18b20c. Znalazłem w starszej wersji linijke: FIO0DIR|=~(1<<WE); zamiast FIO0DIR&=~(1<<WE); . Obecny plik zawiera poprawioną zmianę kierunku portów....
Nie działa mi odczyt danych z DS18B20 Nie mam pomysłu co dalej robić W zasadzie masz kilka alternatywnych wyjść: Niektóre z nich to: - nie robić nic, porzucić projekt i powrócić do ulubionej gry….. albo pogłębić wiedzę o testowanym urządzeniu, konkretnie DS18B20 i wtedy zacząć coś z niego odczytywać. - innym, jednocześnie najłatwiejszym ruchem jest:...
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) DDRD zamiast DDRC, fakt, drobna pomylka, no to teraz ciagle mi pokazuje ze brak DS18B20...
Program ogólnie poprawny, choć: 1. Zamiast Waitms 750 postaraj się wszystko ztimingować na timerze. 2. Nie ma żadnych przeciwwskazań, żeby w normalnej aplikacji DS był blisko kwarcu. A co ma poza tym eeprom ds'a do odczytu temperatury? EEPROM jest zapisywany wtedy i tylko wtedy gdy wywołasz komendę zapisu konfiguracji temperatur alarmów i rozdzielczości...
No więc już pisze: 1) chcąc ułatwić pisanie wstawek jest w bascomie coś takiego: zamiast pisać adres zmiennej można napisać jej nazwe w nawiasie klamrowym. wszystko ok ułatwia to sprawe. Dim var As Bit SETB {var} Jest jedno ALE. spróbuj zadeklarować inną zmianną niż BIT lub BYTE. Przy odwołaniu do niej przez nawias kompilator nie wyświetki błędu tylko...
Witam! Wykonałem płytkę z Atmegą16, kwarc 12MHz, lcd, ds18b20, kilka kondensatorów, ledów i przycisków na pokładzie. Taka sobie płytka testowa do małych projektów uC. Skorzystałem z wątków umieszczonych na forum.elektroda.pl oraz mikrokontrolery.net i udało się odczytać temperaurę z ds-a. Wszystko pięknie działało 3 dni. Wczoraj wieczorem źle podłączyłem...
Witam Mam Problem Z Napisaniem Programu Do Atmega8. A Mianowicie Sprawa Wygląda Tak: Każdy ds18b20 Podpięty Do Innego Portu. I Chcę: 1. Zrobić Alarm Po Przekroczeniu Określonej Temperatury: a) W Miejscu Danego Czujnika np. 2 Zamiast Temperatury Wyskoczył Napis "GORĄCO" i Po Chwili Zniknął i Pojawiła Się Temperatura i Znowu Napis "GORĄCO" I tak W Kółko...
Ok. Teraz rozumiem i jest to sensowne. Niemniej serio można tyle podłączyć ? Po opiniach z różnych for internetowych widziałem, że ludzie podpinali ok 10 czujników i nie wykrywało im więcej ... z czego może to wynikać? Ja chce zrobić system, pomiaru temperatury i nieco się tego wystraszyłem, więc postanowiłem do każdego ds18b20 podłączyć attiny i zasilić...
Jeszcze się zastanawiam, czy nie lepiej będzie zamiast Lsb i Msb odczytanej temperatury pobierać obliczoną wartość przed przecinkiem i po przecinku ? Tzn. wynik pomiaru temperatury będzie przesyłany przez RFM12 - chyba prościej będzie mieć gotowe, czyli wysyłam: Dodano po 4 Jednak coś nie tak jest. Zrobiłem to tak: Dodano po 2 Nie rozumiem. Po dwóch...
Piszę program do prostego sterownika pieca, w książce "Programowanie mikrokontrolerów avr w j. Bascom" mam opisana obsługę czujnika DS1820, w sklepie elektronicznym w moim mieście mieli tylko DS18B20, myślałem że nie będą się może różnić za wiele, mogłem zajrzeć do noty katalogowej ale już za późno. Przeglądałem noty katalogowe tych dwóch układów, z...
Witam, Sprawdzając ponownie układ zauważyłem inny błąd który muszę najpierw rozwiązać a dopiero potem zabrać się ponownie za termometr. Mianowicie mam problem zasilaniem. Zamiast +5V mam +6.2V. Odłączyłem zasilacz od układu i widzę, że na wyjściu mam +7V zamiast +5V. Transformator ma na wyjściu 14.4V. Za mostkiem prostowniczym mam +12.6V natomiast za...
Zamiast powtarzać "if" daj "Select case" Zamiast stringów daj byte potem mnóż razy 100 zniknie ci przecinek. Korzystaj z funkcji Fusing. Podaj w którym miejscu przeszkadza Ci byte to spróbuję Ci pomóc.
Witam. Zrobiłem termometr taki jak w temacie tyle że zamiast AT90s2313 dałem ATmege8, taktuje go wewnnetrznym oscylatorem 4MHz ponieważ portb jest zajęty dla wyświetlacza. Po uruchomieniu na wyświetlaczu pojawiają się "niepełne" cyfry coś podobne do 2 lub innej cyfry. Programu nie zmieniałem podłączyłem wszystko według schematu.Wyświetlacz podłączony...
Odpaliłem i idziała :) Problem w tym, że pokazuje coś nie tak. Temperatura dodatnia błąd na plus około 2 stopień. Zamiast 22 pokazuje 24.3 a przy ujemnej (zwykły termometr) pokazuje -13 zamiast - 18 Do 1wreset 1wwrite &HCC 1wwrite &H44 Waitms 250 Waitms 250 1wreset 1wwrite &HCC 1wwrite &HBE Lsb = 1wread(): Msb = 1wread(): Tempa...
Dobrze kombinowałeś w programie wyżej, ale... błędy, błędy... i dlatego nie działało prawidłowo. Zobacz sam co to za kwiatki ;) [syntax=basic4gl] Readeeprom Dsid1(1) , 1 Readeeprom Dsid2(1) , 3 Readeeprom Dsid3(1) , 5 Readeeprom Dsid4(1) , 7 [/syntax] czytasz do Dsid1(1) jeden bajt z eepromu o adresie 1, później Dsid2(1) też jeden bajt z adresu 3 itd,...
Nie wszystkie AVRy mają jednopoziomowy system przerwań. Ale to i tak nic nie zmienia. Jeśli nawet wykorzystamy wielopoziomowy system to mamy wybór między dżumą a tyfusem. Albo wyższy priorytet będzie miał LED i będzie kaszanił transmisję OW, albo wyższy priorytet będzie miał OW, ale będzie kaszanił wyświetlanie LED. Albo zrobimy to jak należy i priorytety...
Masz odwrotnie zaprojektowana płytkę. Już nic Ci po nim jeśli długo go testowales to pewnie padł ale sprawdź odwrotnie wlutowanego. Na moje masz odwrotnie piny. Ps co Ci zabrania zajrzeć do dokumentacji zamiast szukać jakieś dziwne obrazki z painta? RTFM Co do zdjęcia to źle sobie wyobrazasz obrót czynnika. Oba rysunki są te same a tak ostatecznie znajdź...
Zrób zdjęcie ścieżek tego modułu w zbliżeniu, albo sprawdź jaką wartość ma rezystor podciągający linię transmisji do 5V. Może zamiast dywagować wystarczyłoby dodać równolegle jakiś rezystorek tak by linie podciągnąć mocniej. Standardowo podciągnięte to jest przez 4,7k a zejść można spokojnie do 1,5k.
Może wychodzi jednoczesne przesyłanie danych z ds1302 i ds18b20, przesyłanie danych z ds1302 podczas pomiaru przez ds18b20, albo podczas wysyłania na wyświetlacz, i sygnały wzajemnie się zakłócają? W obsłudze przerwania nie należy robić opóźnień - zamiast tego należy zapisać informację, która spowoduje odpowiednią akcję z opóźnieniem, np. wpisać 2 do...
Hmm też tak miałem. Jeden z DS18B20 uparcie pokazywał temperaturę pokojową 90C. Co ciekawsze po podgrzaniu pokazywał wyższą temperaturę (czyli coś tam działał). Inny egzemplarz najpierw działał normalnie, a potem zamiast 40C pokazywał -20C. Często Wam się zdarzają takie egzemplarze? myrcioch
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...
Natomiast za "nad-komentarze" i "niezgodność" z kanonami sztuki programowania w C , dostanie Ci się :shii: od kol. JacekCz :D To ja się wtrącę, żeby nie było, że tylko JacekCz krytykuje :D. Bo niestety ma on absolutną rację . Oczywiście kod wygląda na "CTRL+C -> CTRL+V" z kursu - stąd tyle komentarzy. Jak zwykle razi (nad)używanie #define. I tu poprę...
wykorzystalem zarowno ten sposob na obliczanie temperatury: void Read_Temperature(void) { char tmp[10]; char temp1, temp2; unsigned short int t; if (ow_reset__()==1) test(); write_byte(0xCC); //Skip ROM write_byte(0x44); // Start Conversion _delay_ms(1000); _delay_ms(1000);...
Poza tym nie wiem czy wykonanie skoku do porgramu który się wykonuje 600 ms (około) jest równoznaczne z komendą waitms 600 . Bo takie coś bylo w tej procedurze odczytu temperatury przez magistralę. to też jest dobre rozwiązanie , zamiast czekac możesz przez te 600ms wyświetlac wynik (wszędzie widziałem 750ms lub nawet 1s) , ds18b20 jest dośc dokładny...
Witam. Napisałem obsługę 2 termometrów DS18B20 w Bascomie. Wszystko ładnie działa, ale... W procedurze trzeba chwile poczekać po odczytaniu danych z termometrów. Wygląda to tak: 1wreset 1wwrite &H55 1wverify Dsid1(1) 1wwrite &HBE I1 = 1wread(2) 1wreset 1wwrite &H55 1wverify Dsid2(1) 1wwrite &HBE I2 = 1wread(2) 1wreset...
Witam serdecznie forumowiczów. Chciałem zbudować termometr wykorzystujący czujnik temperatury ds18b20, Atmega8 oraz wyświetlacz LCD 2x16. Używam asm (innego języka nie znam), lecz to raczej nie ma związku z moim problemem. Czujnik podłączam 3-przewodowo, nóżka DQ do PD3. Rezystor podciągający 4,7kOm. Próbowałem 2 tygodnie. W końcu zrobiłem sobie tydzień...
Witam. Składam sobie zegar z termometrem na Attiny2313 i DS18B20 lecz mam problem z ujemną temperaturą. Do odczytu temperatury używam programu kolegi "Elektrooonik" ponieważ zajmuje najmniej kodu co jest tu dla mnie ważne i z 1-Wire styczność mam pierwszy raz więc wpierw wolę mieć jakiś przykład. Program Oryginalny do pomiaru temperatury wygląda tak:...
Warunek nie jest poprawny, bo sprawdzasz stan całego portu, a interesuje Cię tylko jeden pin. Warunek sprawdza pin P1.0 Do sterowania pinami zamiast FIOPIN lepiej używać FIOCLR i FIOSET (dla całego portu). Robiłem kiedyś komunikację z DS18B20 na AVR. Przy implementacji programowej trzeba uważać na zależności czasowe, stąd moja prośba o oscylogramy...
Kurcze działa :D dzięki wielkie ale teraz powiedz mi dlaczego mój kod nie działał jeśli ja miałem tak: [syntax=c] uint8_t crc=0; for (int i=0; i<8; i++){ crc = _crc_ibutton_update(crc, ds18b20_pad[i]); }[/syntax] Tzn działało ale róznice były między CRC z DSa a obliczonym CRC, a Twój kod działa, tylko zamiast Sizeof() dałem <8, a DaneDS[i] zastapiłem...
Witam. Mam tak połączony układ i kod wgrany ten z początku postu pod ds18b20 Ale na wyświetlaczy pokazuje się tylko kreska i po wciśnięciu nic się nie dzieje :/ A jak przytrzymam to wyświetla się napis zwarcie. Proszę o pomoc edit: Nie miałem podłączonego rezystory idącego do czujnika ma być 4,7 K ja podłączyłem 5 K. I teraz zamiast napisu zwarcie wyświetla...
Bez schematu widać, że np linię DQ z czujnika DS18B20 podciągnąłeś rezystorem do GND zamiast do VCC - a to nie wróży jego poprawnego działania. Poza tym wydaje się z tych zdjęć, że źle podłączyłeś zasilanie procka - tzn nie do wszystkich pinów do których trzeba.
Witam mam wielki problem z ds18B20 kość podłączyłem zgodnie z załączonym tematem pobranym z neta soft też pobrany a nic nie działa wyświetlacz ciągle pokazuje 95 bez względy czy sie podgrzewa czy nie...... najdziwniejsze jest to że około roku temu układ działał bez problemu na tym samym sofcie i schemacie, jedynie zmieniłem attiny bo tamto wykorzystałem...
Witam, Nie mam tego jak sprawdzić, ale jak tak jest jak chcesz odebrać dane to wysyłasz USART2->DR = 0xFF; Sygnał "jedynki" na OneWire daje rezystor. Jeśli TX = 1, Ds18b20 chce podać 0 na szynę ale TX =1. To wtedy co? Jeśli jest Dioda na TX i TX =1 nie dzieje się nic... na szynie OneWire może być 0 albo 1, co dokładnie jest na szynie odbierze RX. Jak...
Chodzi o propozycję pullup'a do 5V zamiast 3.3V? To nie jest potrzebne. DS18B20 będzie prawidłowo pracował na 3.3V jeśli zapewni mu się silną 1 (min. 3.0V ale DS daje też radę ciut poniżej zalecanego 3V) na czas konwersji. Te propozycje z forum to próba rozwiązywania problemów wynikłych z braku stosowania się do zaleceń dokumentacji układu. Nie tędy...
Nie udaję mi się zmusić LPC1114 do komunikacji z miernikiem temperatury DS18b20, magistarle mam podciagniętą do Vcc rezystorem 4,7 kOm. Mój kod jest taki temperatura zawiera głupoty zamiast rzeczywistej temperatury. Gdzie popełniam błąd ?
Mój pierwszy post więc zacznę od "dzień dobry wszystkim". Od paru dni bawię się atmegą. Zrobiłem sobie termometr na 18B20. Ponieważ właśnie spaliłem kontroler wyświetlacza podpinając go przypadkowo bezpośrednio do zasilacza(sic, czas ogarnąć kabelki, bo wstyd) to mam czas zapytać jak poprawić wskazania termometru. Po pierwszym podłączeniu wskazywał...
To rzeczywiście pisząc kod raczej mniej się napracuje wykorzystując USART. W zaprojektowanej płytce i tak nie podpiąłem nóżki DATA DS18B20 do pinu powiązanego z Timerem więc i tak muszę ją przerobić. Dodano po 13 To jeszcze pytanie odnośnie obwodu komunikacji USART 1-Wire. Czy zamiast pary tranzystorów mogę użyć zwykłej diody shotkiego? Wydaje mi się...
Witam .. Fajny poradnik wszytko śmiga ale jedno ale.. Czy da się połączyć kod źródłowy tak aby obsługiwało i blynka i ThingSpeaka jednocześnie.. Jeśli tak to prośba o wstawienie kodu bo próbowałem coś tam rzeźbić ale bez rezultatu.. Dorzucam kod co prawda nie chodziło mi o czujnik DHT11 ale o ds18b20 zamiast niego.. A wrzucam to na ESP32 a nie na esp8266...
Są moduły SIM800 ze złączem do podłączenia akumulatora 4.2V (napięcie działania 3.5-4.4V). Atmega328 może swobodnie działać na takim napięciu ustawiona na wewnętrzny oscylator 8MHz, najlepiej użyć też gołego uC zlutowanego na płytce prototypowej (w podstawce jeśli obudowa DIP28). Taki akumulatorek podziała też znacznie dłużej niż identyczny w powerbanku...
Witam, zbudowałem w obiekcie sieć pod czujniki temp one wire (ds18b20). Sieć niestety wykonałem w topologii gwiazdy czyli od mastera puszczony jest jakieś 10-20m przewód utp w jedno miejsce i od jego końca schodzę do czujników temp gałęziami o różnych długościach od 3 do nawet 10m - gałęzi jest 4. Przyznam szczerze że trochę od d... strony zabrałem...
Witam. W sumie mam kilka pytań do osób zorientowanych w temacie ESP i czujników. Tak jak w temacie, wszystkie sterowniki jakie znalazłem które mają np. łączność wifi i kilka innych przydatnych i nieprzydatnych funkcji kosztują swoje. Dlatego postanowiłem zrobić własny. Płytka nodemcu v2/v3 3 lub 4 DS18b20 Tft LCD 1,4" Czujnik powietrza Prawdopodobnie...
Próbowałem zamiast dawać Waitms 250 jakieś Do loop until a = 2 i żeby a było zliczane przez timer ale to też nic nie dało
Najprawdopodobniej problem stanowi procedura "Waitus".Wykonanie "Waitus(1)" , dla proca z kwarcem 1MHz , trwa ~23 uS(zajrzyj do pliku *.lst) , a czas tRDV(początek timeslot) wynosi max 15 uS. unsigned char slot_odbierz1w(void){//odbi... bit nadany przez urz. 1wire unsigned char bit1w; //w w jednym slocie czasowym cbi(PORT1w,PIN);...
Kiedyś ludzie robili to na 2051 i spokojnie i ładnie im to działało. Moja rada: Zamiast ATMEGA32 użyj ATMEGA 128, nie będziesz musiał nic multipleksować, bo ma dość pinów. 4*8 = 32, do tego 2 na DSa =34 + klawiatura 4 przyciski mamy 38, więc jeszcze pare zostanie :) :)
Kod jak dla mnie zupełnie nieczytelny, nieoptymalny - dokładasz jakąś funkcję krytyczną w czasie i jesteś w kropce. Konstrukcje typu : dec loop_odb_bajt cpi loop_odb_bajt,0 brne odb_dale swobodnie moga występować bez cpi . Masz najprawdopodobniej źle dobrane opóźnienia, może predkośc zegara się różni od przyjętej ? Nie lepiej zrobic obsługe na timerze,...
Decigrades = Decigrades * 10 Ta linia jest dobra. Mnożysz *10 ponieważ wykonujesz obliczenia na INTEGER i aby zaoszczędzić kodu i pamięci a nie na SINGLE. Aby zamiast, np. 211 wyswietlic 21,1 trzeba zastosować jakiś chytry myk. Można na wiele sposobów. Najlepszy jest chyba taki (w zmiennej T mamy 211 i chcemy wyświetlić na pozycji, np. 2,7): 1. Ustawiamy...
Zeppo, czym to kompilujesz? Czy kompilator nie czepia się przy instrukcji TRIS? Ja bym się od razu przyczepił (na jego miejscu). Instrukcji "TRIS" oficjalnie już nie ma. Zamiast niej powinieneś w swoim programie używać takiej konstrukcji: bsf STATUS,RP0 ; ustaw bank 1 movlw b'00000001' ; ustaw pin RA0 movwf TRISA ; jako wejście bez podciągania bcf STATUS,RP0...
Witam Da sie uzyskac takie czasy z kwarcem 16Mhz. Wystarczy ze zamiast preocedurki opozniajace _delay_loop_1 dasz _delay_loop_2 - Po pierwsze mozna wpisac wartosc maks do 65536 a po drugie petla zajmuje 4 cykle procesora.
Config 1wire = P3.6 Tsensor Alias P3.7 Tsensorout Alias P1.0 Powyżej widze że zmienna Tsensor została przypisana do portu 3.7 a Tsensorout do portu 1.0 A pastylka pamięci została przypisana do portu 3.6 Nie rozumiem tego troche czy mógłbys mi podwpowiedziec jak dokładnie to zastosować w moim przypadku bo rozumiem że chodzi tu o to żeby zamiast za każdym...
Ja już rozwiązałem ten problem i był banalny - nieuważnie czytałem dokumentację i widok od dołu DS-a z dokumentacji uznałem za widok z góry - z tąd odwrotnie połaczyłem kilka DS-ów, dwa z nich przeżyły ale źle pokazują temperaturę. Kolejny z błedów jaki zrobiłem to rezystory podciągające 4k7 zamiast 470ohm. Polecam zacząć od tego - po usunięciu tych...
Jest program napisany dzieki waszej pomocy. A tu program w razie jakiś błędów piszcie. Config Portb = &B11111111 Portb = &B11111111 Config Portd = &B1111111 Portd = &B1111111 Config 1wire = Portd.5 : Dim Odczyt(2) As Byte , A As Byte , T As Integer Do 1wreset : 1wwrite &HCC : 1wwrite &HBE 'odczyt z DS1820...
Siemka! 1: Sprawdź z tym poleceniem Config 1wire = PORTB.5 1wreset Ty przytaczasz to polecenie w trochę inny sposób. 2: Sprawdź czy poprawnie podłączyłeś układ czujnika, czy nie pomyliłeś końcówek i czy masz podłączony do linii DQ portu 1-Wire rezystor podciągający np: 4,7KΩ 3: W kodzie który przytaczasz usuń tę linijkę z mnożeniem przez 10 bo...
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...
dzieki "zumek" - pomoglo:) mam jeszcze jeden problem z wyswietlaniem minusa przy ujemnych temp i z przesunieciem gdy tem jest poniezj 10st czyli jedno cyfrowa. w zrodlem mam osobna czesc odpowiedzialna za wyswietlanie i osobna za odczyt temp z czujnikow. ta za odczyt wyglada tak: Temp: 1wreset 1wwrite &HCC 1wwrite &H44 1wverify Dsid1(1)...
Witam i prosze o pomoc bo nie wiem co robic. DS milczy. Pr u bowalem na trzech sztukach i nic zadna nie odpowiada. Podlaczenie na 100% dobre do PORTD 4. Program: //*** Port #define PORT(x) XPORT(x) #define XPORT(x) (PORT##x) //*** Pin #define PIN(x) XPIN(x) #define XPIN(x) (PIN##x) //***...
Witam Zaczynam trenować mikrokontrolery i programowanie. Próbowałem w asm ale jakoś ciężko - próbuje teraz w bascomie - i też ciężko niestety :( znalazłem jakiś przykład programu w bascom ale coś mi nie hula. $crystal = 16000000 '$regfile = "m16.dat" Config Portc = Output Config 1wire = Porta.1 Dim Odczyt(2) As Byte Declare Sub Odcz_temp...
Witam, ja także dołączę się do pozytywnych opinii na temat wykonanego układu przez autora. Naprawdę fajnie pomyślane - i hmm ciekawy ten nadruk na płytce - to chyba wydruk na kartce, która została przyklejona do płytki ;) efekt super! ;) to że nie ma obudowy no jest może jakimś tam mini mankamentem ale tak ze swojej praktyki podpowiem tylko, że może...
To coś strasznie dziwnego, aby rezystor podciągający przeszkadzał ... - może faktycznie źle podłączasz, choć to mało prawdopodobne i powinno być tak jak piszesz, pomiędzy VCC i linię danych; - może źle określasz rezystancję, np. z kodu kreskowego, i dajesz powiedzmy 470 zamiast 4k7, wtedy faktycznie podciąganie może być za silne i przeszkadzać; - może...
Ja Ci radzę, zrób najpierw działający, dla jednego DSa a potem po prostu zmień PIN. Swoją drogą, ja nie rozumiem dlaczego ludzie nie korzystają z zalety ONE WIRE jaką jest możliwość wpięcia kilku czujników równolegle? Różni się to tylko tym, że trzeba znać numery seryjne czujników i zamiast Skip Rom zrobić Match Rom... tyle
szkoda że całość nie jest zrobiona na płytce ze ścieżkami zamiast na uniwersalnej
moze Q zamiast 4 wstawic 8?? czy 4,7 czy 3,3 nadal nic wedle programu jaki napisales wyswietla "0" de-sow. JESLI MACIE PEWNE CZUJNIKI Z JAKIEGOS SKLEPU Z NETA PODAJCIE LINKA!!! Dodano po 1 Ciekawostka wstawiajac w miejsce "Shift T , Left , 8 " zamiast 8wstawiam 9 uzyskujemy -16.1 stopnia czy jest czujnik czy go nie ma ale jesli zewre DQ czyli wejscie/wyjscie...
Wtedy program się wiesza na tej pętli ... To zamiast tego odczekaj spokojnie te 800ms Dodano po 8 Wtedy program się wiesza na tej pętli ... Może dlatego że DS jest w stanie wysłac tylko jeden bit potwierdzający koniec konwersji, chociaż w dokumentacji napisane jest że po konwersji wysyła "1s" Proponuję więc jeszcze taka wersję: int16_t OW_Read_temperature(void)...
zamiast dzielenia przez 128 mozesz zastosowac przesuwanie bitowe o 7 pozycji w prawo - nigdy nie wiadomo czy kompilator nie zrobil z twojego dzielenia jakiejs przepotwornej petli. pozatym - jesli dobrze widze - to konwertujesz swoja wartosc na kod binarny? jesli tak, to mozna to zrobic jeszcze optymalniej, ale nie wiem czy w C sie da zejsc tak nisko...
rozwiązanie z tymi czujnikami jest dosyć proste. Jak ja to zrobiłem? opiszę po krótce sposób postępowania .... ....otóż po włożeniu dowolnej (tzn ustalonej programowo np 2, 5 lub 10) ilości czujników układ rozpoznaje je wszystkie co jakiś czas na wypadek gdyby któryś umarł, albo go ktoś ukradł, zabrał czy zamienił ;) - czyli tworzy ich tablicę ale dynamiczną...
Zamiast wyłączać przerwania możesz zastosować pewien trik. Mianowicie zadeklaruj sobie jakas flage. Gdy konczy sie przerwanie zresetuj ja. Wtedy bedziesz wiedzial ze sie zakonczylo i ze masz troche czasu do nastepnego. Potem piszesz cos takiego : Set Flaga : While Flaga = 1 : Wend To umieszczaj w miejscu gdzie masz odczyt temp. Pamietaj o tym...
Chciałbym się upewnić w pewnej sprawie. Przeszkadza mi konieczność oczekiwania na konwersję tmperatury przez DSa nawet te ~100us przy rozdzielczości 9 bitowej to za dużo. Czy można zamiast waitus wykorzystać timer i zrobić odpowiednią procedurę z warunkami gdzie odczyt będzie realizowany po iluś tam przepełnieniach timera i tak w kółko ?
Sam PWM też daje ostre zakłócenia, podłącz roboczo zamiast wentylatora zwykły rezystor i powiedz jak działa .
Witam Jeśli urządzenie nie jest zbyt prądożerne to można w szereg, na dodatnim biegunie zasilania, za mostkiem Graetz'a dać diodę 1N400x. Między plusem mostka a anodą wspomnianej diody wpinasz dzielnik napięcia. Za diodą prostowniczą dajesz sobie oczywiście kondensatory stabilizatory i co tam jeszcze chcesz. W każdym razie na dzielniku masz napięcie...
Co prawda nie znam bascoma ale czy w 2 linii zamiast 0(cyfra) nie powinno być O(litera) ?
Zrób sobie tak: podlącz ds do np. attiny i podczerwien i wysylaj do drugiej megi z odbiornikiem. Lub zamiast podczerwieni kup nadajnik i odbiornik telocontroli.
if(!(PIN(ONEWIRE_PORT) & 1<<ONEWIRE_PIN)) stan = 1; else stan = 0; delay100us8(5); return stan; Faktycznie taka procedura sprawdzania resetu wystarczy :) Tam był istny błąd !! //prototyp void lcd_dec(float val); <-- oczywiście tutaj też była nieścisłość i jest już poprawiona // a w main()...