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...
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
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...
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 .
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...
Podpięte w trybie normal czy parasite? Pokaż kod. Timingi ok?
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......
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....
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)
Masz rezystor podciągający? Niektórzy o nim zapominają.
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);//...
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ąć...
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)...
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
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...
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ą.
Masz podciąganie linii danych?
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...
Po pobieżnym przyjrzeniu się programowi nasuwają mi się takie wnioski. 1. Zadeklarowałeś wejścia, ale zostawiłeś je jako "pływające". Powinieneś port-y przycisków podciągnąć do plusa, czyli ustwić stan wysoki =1 2. Nie widzę deklaracji dla magistrali 1wire dla DS-ów i całej procedury odczytu i zapisu danych do pamięci. Być może to celowe na tym etapie,...
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
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...
Możesz zrobić 2 próby (w dolnej wersji). Zdefiniuj float temperatureC jako volatile Zamiast wysyłać temperaturę, wysyłaj zmienną za każdym razem zwiększaną, w ten sposób oszacujesz czy funkcja się wywołuje, czy pakiety dochodzą po kolei i czy problem ogranicza się do odświeżania odczytu z czujnika. Nie używałem Dallasów, ale w przykładach request jest...
Podłączając czujnik trzymałeś go w palcach, więc się ogrzał. DS18B20 myli się o nie więcej niż 1.5 stopnia, o ile pamiętam.
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
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...
select case xxx (oznacza podaj wartość XXX) case 0 (jeżeli wartość = 0 to) ... tu może być wiele linii kodu który zostanie wykonany aż do kolejnej lini z case ... case 1 (jeżeli wartość = 1 to) .... itd itd... end select (zakańcza select case) ok do odczytu temperatury z DSa potrzeba dwóch zmiennych typu byte (jak się mają nazywać) u mnie są Ds_1 Ds_2...
Ta sama reakcja ... odczyt 0x0101 ... Z tego co zauważyłem w tym artykule a Atmel'a, to większość "ramek" ma ~70us ... więc czas raczej dobry ... W trakcie odczytu bitu musisz zmieścić sie przed upływem 15us od chwili zainicjowania odczytu, po 15us dane moga być nieaktualne (Parametr t RDV ), ale to i tak nie zmienia faktu że masz zły odczyt. Dodano...
Pewnie chodzi o to: Niezupełnie, raczej o to: :) [syntax=c]int16_t data = (msb << 8) | lsb; if (data < 0) data = -data; data = data * 5 / 8[/syntax]
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...
Pt100 i DS18B20 to całkiem różne czujniki temperatur i o ile sam wskaźnik/regulator nie jest przystosowany do obsługi obydwu rodzajów czujników to nie da się ich zamieniać. Czujnik Pt100 jest czujnikiem rezystancyjnym. Zbudowany jest z cienkiego drutu platynowego, którego opór elektryczny się zmienia pod wpływem temperatury. Im większa temperatura tym...
Musisz dodatkowo kasować licznik po wysłaniu komendy odczytu (czy tam tej po której czekasz 750ms). Dlaczego? Dlatego że po jakimś czasie kompletnie ci się to rozjeżdża, ty chcesz odczekać 750ms, od wysłania tej komendy. U Ciebie teraz jest tak, inicjalizujesz licznik i już od tego momentu liczysz, potem wysyłasz komendę, a licznik już tak na prawdę...
Witam wszystkich forumowiczów... Posiadam płytę ewaluacyjną AVT5311 na której znajduje się czujnik temperatury lm50 oraz układ mcp3021. Korzystając z wcześniejszych porad dotyczących odczytu temperatury z czujnika DS18B20 napisałem kod w bascomie. Oczywiście mam świadomość, że będzie on inny w moim przypadku. Natomiast nie mogę poradzić sobie w odczycie...
Witam, Ostatnio zakupiłem Automatyczny Karmnik dla Rybek od Mam kilka pytań: Przylutowałem czujnik temperatury DS18B20 do GPIO17. Pomiędzy dane (GPIO17) a VCC wlutowałem rezystor 150k, GND do GND. Ale nie znalazłem jak to poprawnie skonfigurować. GPIO mapper wizzard z sieci nie pomaga. Przełączanie bębna nie wyłącza go po jednym obrocie, nadal się obraca....
Chyba już wiem co może być, tylko nie wiem gdzie jest źródło problemu. Doczytałem się, że po zerowaniu po włączeniu zasilania bajty odczytu temperatury są ustawiane na wartość 85.00 stopni i tę wartość udaje ci się odczytać z rejestrów DS18b20 (co świadczy, że procedury odczytu działają poprawnie). Doczytałem się jednak też, że w układzie zasilania...
oooooo to chodzi ;) to taki szkielet - ale na podstawie tego sam wiesz już jak sobie poradzić z tym tyle że bez Wait'a dodam jeszcze, że sam fragment: 1wreset 1wwrite &HCC 1wwrite &H44 Waitms 750 warto zapuścić jeszcze przed wejściem wtedy w pętlę główną żeby już mieć gotową pierwszą zmierzoną temperaturę w czujnikach po resecie - gdyby przypadkiem...
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...
Muni a liczysz sume kontrolna CRC ?? Jak policzysz i sie bedzie zgadzac to wyswietlasz pomiar jak nie to odczytujesz nastepne.
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...
A posiada kolega includowane na początku pliki nagłówkowe? [syntax=cpp]#include "DS18B20.h" #include "DS18B20_ports.h"[/syntax] Czy te 2 pliki znajdują się w katalogu projektu?
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...
dokładnie tak tylko że to nie ma się dobrze wyświetlać tylko poprawnie działać w programie wyświetlam to dlatego że nie bangla
U mnie jest tak: Dim T As Integer ... ... T = Makeint(bd(1) , Bd(2)) T = T / 16 ... ... gdzie Bd(1) i Bd(2), to dane odczytane z termometru (pierwsze 2 bajty z 9) Pozdrawiam,
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...
Mam problem jestem początkujący napisałem program który ma za zadanie regulować włączanie wiatraka i czas z jakim ma dmuchać , jednocześnie mierzy temperaturę i nie działa tak jak powinno : Temperatura pokazuję co jakiś czas błędny pomiar np 124 , 32 , 98 procek się resetuje chińskie znaki raz na jakiś czas w programie można było ręcznie zmieniać czas...
Nie wiem co rozumiesz przez stwierdzenie: " aby regulacja temperatury była zależna od czasu", jak i kiedy realizujesz obsługę przerwań ale błędy odczytu temperatury prawdopodobnie są wynikiem zakłócania cyklu odczytu ds-a przez przerwanie od timera. Poczytaj o zależnościach czasowych 1-wire. Jest to interfejs asynchroniczny i musisz zapewnić aby poszczególne...
Dim Sc(9) As Byte 'w tej tablicy beda dane odczytane z czujnika Dim Temperatura As Integer 'tu obliczona temperatura Dim Blad_crc As Bit 'a ten bit bedzie ustawiany w razie bledu CRC odczytu '... program ... 1wreset 1wwrite &HCC 1wwrite &HBE Sc(1) = 1wread(9) 'odczytujemy wszystkie bajty z czujnika If Sc(9) = Crc8(sc(1)...
I w dodatku jesteś pierwszym i jedynym, który napotkał ten problem, nieprawdaż? Spróbuj najpierw przeczytać odpowiedzi w setce analogicznych wątków.
Czy w tej maleńkiej obudowie istnieje jakiś mikrokontroler? Jeśli to nie mikrokontroler - prosiłbym o wskazanie jaka część elektroniczna się zajmuje przetworzeniem odczytu z czujnika półprzewodnikowego. To jest monolityczny układ scalony, produkowany na masową skalę, a więc opłacało się zaprojektować "na miarę", wszystkie elementy i układy na jednej...
Prosiłabym o wyrozumiałość i pomoc w nakierowaniu mnie na rozwiązanie problemu. Spróbuję nakierować :) Jeśli zapis ID do eeprom ma być jednorazowy, w kodzie programu deklarujesz (wcześniej innym programikiem i LCD odczytane) ID $eeprom Termometr2: 'nr seryjny termometru 1 Data 40 , 25 , 0 , 133 , 2 , 0 , 0 , 196 Termometr1: 'nr seryjny termometru...
...Jakieś pomysły?? Źle "składasz/sklejasz" odczytany bajt :( //procedura odczytu bajtu z urzadzenia unsigned char wire_read_byte1(void) { unsigned char bajt, tmp, i; bajt = 0; for(i = 0;i<8; i++) { tmp = wire_read_bit1(); tmp = tmp << i; bajt = bajt | tmp; } return bajt; } Ja zrobiłbym to tak: //procedura...
Co ile czasu odczytujesz temperaturę ? Pozdr
jesli sie nie myle to żle obliczasz temperature dla DS18B20 dla DS1820 było by ok,a dla DS18B20 to chyba trzeba najpierw podzielic przez 10 a potem pomnożyć przez 16,może specjalisci sie wypowiedza na ten temat.Pozdrawiam
Wypadałoby wysłać do DS18b20 polecenie pomiaru temperatury:&H44 i zaczekać jakieś 700ms przed odczytem:?:
Napisane na szybko nie sprawdzałem ale chyba powinno działać. [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) '*************************************WA... 'Pamiętać o podłączeniu...
czyli jak przykładowo dam: .... czyli flaga zmienia stan co ok. 1s,..... Z przedstawionej informacji wynika że masz w systemie tylko jeden układ DS, więc nie ma potrzeby go adresować (&H55-match ROM). wystarczy 'skip ROM'. Jeżeli flaga jest używana tylko do obsługi odczytu temperatury, to nie ma potrzeby aż tylu jej stanów (0/1/2/3; -wystarczy 0/1)....
Sam kiedyś z ciekawości i chęci sprawdzenia jak mają się pomiary różnymi czujnikami do siebie zbudowałem taki układ z termoparą, LM35, DS18B20 i czujnikiem NTC. Jeśli te pomiary Ci się w kodzie "nie spieszą" to może przyda Ci się taka prosta metoda. Jako że ADC czyta się do Word bo ma więcej niż pomieści Byte to pozostaje w tej zmiennej dużo wolnego...
Ten plik o ile się nie mylę to jest sama biblioteka, w dodatku niekompletna ponieważ kompilator wywala całą masę błędów :/ Edit. I jeszcze jedno znalazłem kolejny przykład spróbowałem skompilować i tym razem dzieją się takie cuda: http://scr.hu/8e6i/jt5tp kody: DS18B20.h [syntax=c]#ifndef DS18B20_H #define DS18B20_H /* DS18B20 przyłączony do portu PA0...
$regfile = "m8def.dat" $crystal = 'Częstotliwość rezonatora Config Lcd = 'Sam nie wiem co wpisać Config Lcdpin = 'Konfiguracja LCD Cls Cursor Off Cls Deflcdchar 1 , 32 , 12 , 18 , 18 , 12 , 32 , 32 , 32 Cls Dim A(2) As Byte Dim T(3) As Byte Dim Temp As Byte Config 1wire = Port 'Konfiguracja magistrali 1-wire Do 1wreset 'Inicjalizacja...
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...
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",...
Witam Kolego Unreal89. Pracuję pod Bascomem 8051 i nie spotkałem się z funkcją, o której wspominasz. Przejrzałem pliki help'a i tam również nic nie znalazłem. Zainteresowany jestem z jakiego powodu odpada komenda "fusing"? Dla czego pytam? Pozwolę sobie obszerniej skomentować zaprezentowany listing. 1. Termometr DS18B20 przechowuje informacje o temperaturze...
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...
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....
A to niby dlaczego nie wolno stosować waitms ??? U mnie jakoś działa przy wielu czujnikach na jednej linii i co to ma wspólnego z wysyłaniem przez uarta ? W tym przypadku waitms nie zakłóca obsługi przerwań, wiec nie widzę problemu. Kolega namieszał trochę w procedurze "odczyt". Na początku wyszukujesz czujniki na linii 1wire, a później, w procedurze...
Biblioteka której użyłeś nie ma możliwości dowolnej konfiguracji pinów. W załączniku masz bibliotekę prosto z Rosji :D Chiński wyświetlacz sam mi się uszkodził ale coś tam wyświetla :D http://obrazki.elektroda.pl/6257086800_1... Kod którego użyłem do zrobienia tego zdjęcia [syntax=vbnet] $regfile = "m8def.dat" ' specify the used micro...
Witam. sornell napisał: Witam Buduję sterownik solarny. Chcę zastosować do niego popularne czujniki temperatury DS18B20. Zakres temperatury -40...125 wydaje się być w zupełności wystarczający. Cały czas mnie jednak zastanawia, dlaczego gotowe rozwiązania dostępne na rynku używają czujników Pt1000. Dokładność nie jest tu kluczowym parametrem, więc wydaje...
Hey czyli problem jest w instrukcji Ss = Format(ss , " 0.0") wrzuć ten program i powiedz czy wszystko gra jeżeli tak będę pisał co zrobiłem. [syntax=basic4gl]$regfile = "m8def.DAT" 'deklaracja procesora, w tym wypadku Atmega8 $crystal = 1000000 'deklaracja cześtotlwiości pracy (wew oscylator 1MHz w zupełności wystarcza) 'Deklaracja portów od wyświetlacza...
Witam 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...
Ja to zrobiłem na Attiny13, temperatura jest określona na stałe, taka byłą specyfika mojego projektu laminatora (do folii UV). Kod był zaczerpnięty z sieci, lekko go zmodyfikowałem. Pamiętam, że teoria nie pokrywała się z praktyką i musiałem wpisać temperaturę z przesunięciem o kilka stopni. [syntax=vbnet]' Uk³ad z sam¹ diod¹ dzia³ao...
Zmontowałem termostat AVT 950 na procesorze PIC16F628 z czujnikiem temperatury DS18B20 i okazało się że temperatura wyświetlana na wyświetlaczu jest 1,5 stopnia C wyższa niż zmierzona na wzorcowym termometrze rtęciowym.Czy ktoś podpowie jak rozwiązać ten problem? Czy jest to wina czujnika ,procesora czy programu?
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);...
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...
A co mówi nota katalogowa od producenta http://datasheets.maxim-ic.com/en/ds/DS1... ? :) Przy pasożytniczym i przy normalnym zasilaniu potrzebny jest rezystor. Po polsku masz tu: http://radzio.dxp.pl/ds18b20/ds18b20_pod... http://radzio.dxp.pl/ds18b20/ + http://mikrokontrolery.net/avr_kursy.htm lekcja nr 10 Tu masz w C http://mikrokontrolery.net/avr_c_10.htm....
Szybciej zdążyłem napisać samodzielny i działający program niż uzyskałem jakąkolwiek pomoc. Dziękuję serdecznie wszystkim forumowiczom ! :) Zamykam.
informującego o zmianie temperatury co 1 stopień w górę lub dół To są założenia więc co każdy stopień ma być krótki sygnał. Warunek If T >= 200 then spowoduje że przekroczenie 20 stopni spowoduje sygnał. Muszę chwilę pomyśleć. Trzeba badać także różnicę pomiędzy odczytem poprzednim a następnym. Sprawdź to: (zmień procesor, konfigurację LCD, portów,...
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...
Aby kod łatwo było analizować używaj znaczniki SYNTAX: [syntax=c] tu wklej Twój kod [/syntax] Plik : HD44780.c Plik : HD44780.h Dodano po 25 Ja połączyłem je w ten sposób ale pewnie źle bo wystąpiły błędy w kompilacji. Proszę o pokazanie mi sposób połączenia tych dwóch plików w prawidłowy sposób. Pierwsze uwagi: - te dwa pliki to tylko...
6x ds18b20; Ale Kolega nie będzie używał overdrive
Witam. Zaczolem ostatnio zabawe z czujnikiem temperatury DS18B20 podlaczonym do Atmega8. Wszystko gra ale chcialbym sie dowiedziec w jaki sposob mozna zmienic ustawienie dokladkosci pomiaru bo odczyt temperatury przy ustawieniach fabryczne jest zdziebko przydlugi. Czy takie nowe ustawienie czujnika trzeba zapisywac za kazdym razem jak uruchomie uklad...
Oto mój program wykorzystujący LCD w trybie 4-bitowym, śmiga jak ... Jest tam obsługa LCD i 1wire, procedurki LCD łatwo wyłowić :) // ****************************************... // Project: Obsluga układu DS18B20 // Author: Zbigniew Chrobot // Module description: pomiar temperatury z DS18B20 kwarc 4MHz // wyswietlanie na...
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_...
Widzę, oczami wyobraźni, że masz poważny błąd w 16tej linii kodu...
Co to znaczy wyświetla jedną linię?? Opisz dokładnie albo zrób zdjęcie. Ekran startowy się pokazuje, czyli "Witaj ..." a w drugiej lini "Temometr.." itd. Gdzie staje program? Co dokładnie pokazuje LCD od momentu włączenia do końca? Prawdopodobnie masz coś na magistrali 1W zwarte albo któryś czujnik poleciał lub port w procesorze. Mogłeś zmienić tylko...
Liczyłem impulsy z Timera0. Częstotliwośc kwarcu dzielę przez 1024 co daje mi 18kHz taktujących Timer0. Przed wejściem w petlę odczytującą 7 czujników ustawiam w timerze wartość zero i zeruję zmienną odpowiedzialną za liczenie przepełnień Timera0 w przerwaniu. Zmienna licząca ilość przepełnień wyświetla się jako 1 a liczba impulsów w Timerze0 jako 226.
Ma to duże znaczenie bo jeśli takie nodemcu z ds18b20 ma chodzić non stop to trzeba brać pod uwagę ilość cykli odczytu termometru ds18b20 która jest limitowana i po której termometr zwyczajnie przestaje działać. Dobrze, że moje DS18B20 o tym nie wiedzą, bo już dawno przestały by działać. :) Od 2018 roku co 10 sekund. Po prostu trafiłeś na złe sztuki,...
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.
Witam, jako że nie znalazłem gotowego rozwiązania na sensowne wysterowanie mojego ahu boxa (Type: U-Match Version: 1.02) postanowiłem spróbować samemu coś stworzyć . Na bazie płytki KINCONY A6 v1.3, oraz posiłkując się AI stworzyłem kod który mam nadzieje jak najbardziej optymalnie wykorzysta moc sprężarki, co powinno się przełożyć na koszty ogrzewania....
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)...
Do zmiany stanu na porcie "D" służy "PORTD". A "DDRD" zmienia czy to ma być wejście albo wyjście. laki_17 masz rację tylko w przypadku linii 1wire jest akurat dobrze ponieważ wpisując na początku programu zero do rejestru PORTD i ustawiając port jako wyjście ściągamy linię 1 wire do zera. Ustawiając go jako wejście (port w stanie wysokiej impedancji)...
Chodzi mi o interpretację recovery time że może trwaćdowolniedługo a DS18B20 tak jakby nie zapomo wysłaniu kolejnych danych po inicjacji przez mastera? Dobrze rozumiesz, oby te czekanie nie odbywało się przy niskim stanie 1w .
Z reguły to w XMEGA są 4-8 USARTy, z wyjątkiem rodziny E5.
Witam, dzięki za odpowiedź, teraz nie mam jak sprawdzić ponieważ wyjechałem na święta ale jak tylko wrócę to napiszę co u mnie odczytuje oraz sprawdzę twój projekt. Jeszcze porównam twój gpio.h z oryginalnym. P.S. mam prośbę mógłbyś u siebie odpalić ten mój projekt. Zobaczymy czy u ciebie ruszy. Konfigurację masz w katalogu driver/target_config.h. Pozdrawiam
tak, istnieje 4k7 :)
W datasheet-cie DS-a jest napisane co oznacza gdy wysyła ci temperaturę 85 stopni... Jest to jak najbardziej uzasadnione, ponieważ pierw odczytujesz wartość rejestru temperatury a dopiero po tym rozpoczynasz konwersję, zawsze pierwszy wynik będzie błędny... Nie przeklejaj bezmyślnie kodu od innych. Pozdrawiam, GSM
a nie lepiej podłączyć wszystkie czujniki do jednej szyny? Wydaje mi się, że tak jest łatwiej i mniej będzie problemów.
http://obrazki.elektroda.pl/2453165300_1... Witam Przeszukując internet natrafiłem na ciekawą bibliotekę JavaFTD2XX-0.2.6.jar autorstwa Węgra, pana Peter Kocsis ze strony http://kenai.com/projects/javaftd2xx/pag... Pan Kocsis według mnie bardzo świetnie przetłumaczył bibliotekę ftd2xx.dll firmy FtdiChip na język Java przez co umożliwił...
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...
Ja na Twoim miejscu posprawdzałbym czasy opóźnień jakie masz poustawiane. Ja w swoim projekcie (m.in. 8 DS18B20 na jednej magistrali) miałem inne czasy opóźnień i wszystko działało. W tym może być problem braku odczytu z czujnika.
A nie masz błedów w montażu ? Czasem sie zdarza coś zewrzec. I pamietaj aby dać 750ms czasu dsowi na konversję oraz lepiej nie używać niektórych timerów itp. razem z programem obsługi tego ds'a.
Płytkę trzeba by prześledzić na spokojne lecz widzę, że kolega chce wykonać płytkę dwustronną a więc przydały by się przelotki jeszcze:) Jeśli chodzi o napięcie 5.6V zostało ono uzyskane przez autora dzięki zastosowaniu diody w masie stabilizatora. Kiedyś wykonywałem ten zegar i DS18B20 został podłączony na 3 przewodach. Rezystor 4k7 musi być obowiązkowo...
ds18b20 błędy odczytu ds18b20 błąd odczytu częstotliwość odczytu
oporność głośnik odpalanie styków renault megane bagażnik
prostownik kukla prostownik kukla
Skutki pracy bojlera 120L bez wody Electrolux Intuition 63020X Dishwasher ESF/ESI Models: Specs, Faults, Manuals, Parts