napisze to troche asemblerowym ( nie wiem czy dobrze napisalem) jezykiem: a wiec np: dla temperatury -25 stopni ( cos tam po przecinku ) odczytujesz taka wartość: 1111 1110 0110 1111 - ostnie 4 bity to wartość po przecinku nie bierzemy jej po uwage zostaje 1111 1110 0110 teraz zaneguj wszystkie bity; powstanie ci taki potwór 0000 0001 1001 a to jest...
średnia = suma wartości z pomiarów/24
DS1820 mógłby posłużyć za dodatkowy czujnik by odczytać temp dla danej rezystancji tylko zastanawiam się gdzie go umieścić by różnica temperatur nie przekraczała max. 0.5 stopnia ponieważ taki margines jest dopuszczalny. Jak wiadomo seryjny czujnik temp. jest w małym o biegu który przelatuje przez pome i korpus silnika a tam ne ma z bardzo gdzie umieści...
mam jeszcze jedno pytanie do kolegi? Przeanalizowałem juz cały program i wszystko rozumiem tylko zastanawia mnie co jest ukryte pod deklaracją #BUFOR_NA_TEMPERATURE?CZy to jest komórka pamięci? Bardzo proszę o pomoc. Dokładnie tak jak pisze, jest to obszar RAM-u gdzie zostaje wczytana temperatura, kilka innych bajtów (już teraz nie pamietam jakich)...
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. $regfile = "2313def.dat" $crystal = 16000000 Config 1wire = Portb.0 Dim T As Integer , Stt As String * 6 Cls Do 1wreset 1wwrite &HCC 1wwrite &H44 Waitms 800 1wreset 1wwrite &HCC 1wwrite...
Mógłbym dać rybę ale dzięki wędce, dam Ci coś więcej. Zaglądnij do noty katalogowej, jest tam wartość dla ujemnej temp.: -10.125 1111 1111 0101 1110 FF5Eh Dodaj za hardcodowaną linię z temp. z dokumentacji, [syntax=c] temperatura = sensors.getTempCByIndex(0);//*100; temperatura = 0xFF5E; //<------ -10.125 Serial.println(temperatura); [/syntax] a...
Czujnik Dallas DS18B20 jest czujnikiem z magistralą 1-Wire, komunikuje się z procesorem jednym przewodem, a możliwe jest podłączenie dużej ich ilości równolegle. Użytkownika powinno interesować, jak adresować ten czujnik, jak odczytać jego ID i dane o temperaturze. Do czujnika ds18b20 da się wpisać chyba tylko poziomy alarmów, więc raczej nie ma mowy...
Odczytaj_ds: 1wreset If Err = 0 Then 1wwrite &HCC 1wwrite &HBE Ds_1 = 1wread() Ds_2 = 1wread() Status_temp = 1 If Ds_2 >= 248 Then 'wartość ujemna Ds_1 = 255 - Ds_1 Ds_2 = 255 - Ds_2 Status_temp = 0 End If T1 = Ds_1 / 16 T2 = Ds_2 * 16 T1 = T1 + T2 T1 = T1 + 0.05 'T1 wartość temperatury xx.xx T1 = T1 * 10 'wartość całkowita...
...Mam program do obsługi tego czujnika, lecz działa on jedynie dla temperatur dodatnich a chciałbym także aby mierzone były temperatury ujemne.... Wywal ten "wzór" na śmietnik i zakonotuj sobie w pamięci , że DS18B20 zwraca temperaturę w postaci signed int . Ta informacja powinna Ci wystarczyc , by obliczyć i wyświetlić ją w prawidłowej postaci. Piotrek
Dzięki działa, a jak dodać obliczenie różnicy temperatur (delta) pomiędzy T1 a T2 ?
Przy transmisji 1-wire też mogą wystąpić błędy, po to sie sprawdza CRC żeby wykluczyć ich występowanie. W przypadku 1-wire bardzo istotne jest dobre dobranie czasów wiec błędy mogą wystąpić. A tak poza CRC to ile dajesz DS-owi na obliczenie temperatury? Jaką rozdzielczość ustawiłeś w DS18B20 ? Standardowo jest 12 bitów nie tak jak w DS18S20, DS1820...
Otrzymane 2 bajty łączę w liczbę 16 bitową. Mnożę ją przez 10 i dzielę przez 16 (tj. przesuwam o 4 bity w prawo). Mam w wyniku temperaturę 10x większą niż w rzeczywistości. Ewentualne obliczenia i ustawienia wewnątrz programu robię na liczbach 10x większych. Dla procesora to żadna różnica. Wyświetlaniem zaś zajmuje się za każdym razem ten sam podprogram,...
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)...
A czy na małe zmiany temperatury reaguje (gdy chwycisz w palce?) Zawsze możesz spróbować zamienić funkcję konwersji "Read_Temp" z Twojego programu. Pozostawiając reszte bez zmian. U mnie działała (bez temperatur ujemnych). ...dobrze obsługujesz wyświetlanie floata?
Witam Mam problem ze skompilowaniem w Bascom 8051 procedur do DS18B20 B1 = B1 / 16 ,obliczenia wyłącznie... B2 = B2 * 16 , dla temperatur dodatnich. Być może dla Ciebie , przecinek i średnik to to samo - dla Bascome nie ;) Piotrek
I1 = 1wread(2) tu pobierasz tylko 2 bajty (wartość temperatury), a powinieneś pobierać wszystkie 9 http://www.datasheetcatalog.org/datashee... Strona 6 Figure 7 tak wygląda Scratchpad tego termometru. z pierwszych 8miu bajtów liczysz CRC8 i porównujesz bajtem 9tym (CRC8 obliczone przez termometr), muszą się zgadzać. Pozdrawiam,...
Witam nie czekasz na obliczenie temperatury powinno być waitms 750 . Wstaw waitms 750 w miejsce gdzie masz 'przeczekaj czas konwersji
mam programik pod amege32 i 2x ds18b20 ale jeden z czujnikow chcialbym, zeby pokazywal o 2 st. nizsza temp. co zmienic w kodzie?? Zrób tak. Zadeklaruj dowolną zmienną typu INTEGER np. Ttt (musi być zadeklarowano PO Sc ) i oblicz jak poniżej: 'Twoja tablica Dim Sc(9) As Byte Dim Ttt As Integer At Sc Overlay 'to dopisz ... 1wverify Dsid1(1)...
...Jak będzie miał na przykład 2 termometry ds1820, to nie rozpozna... Chyba nie zrozumiałeś pytania ;) jimmi chce odróżnić DS1820 od DS18B20 , by wiedzieć w jaki sposób obliczyć temperaturę.Ja podałem mu tylko , sposób na to - to wszystko.Natomiast lokalizacja konkretnego termometru w sieci , to już inna bajka :) Piotrek
Kolego Electix :D Ja (dla odmiany) przyczepie się do Twojego kodu: Temperaturę obliczasz jak poniżej ... Rd(1) = 1wread(2) Rdp = Rd(2) Shift Rdp , Left , 8 Rdp = Rdp + Rd(1) T = Rdp / 16 ... i niepotrzebnie wyręczasz kompilator.A na samą myśl o SINGLE, dostaję drgawek ;) Podaję 2 najprostsze sposoby , na obliczenie całkowitej...
Elo! Jeśli ja mogę coś zasugerować to fragment kodu: Odczyt(1) = 1wread(2) T = Makeint(odczyt(1) , Odczyt(2)) można zastąpić takim: T=1wread(2) Oczywiście wcześniej deklarujemy zmienną T jako typ INTEGER i tu stwierdzenie: po co wyręczać kompilator, zmienna INTEGER z natury jest ładowana w kolejności LSB...
I tu też by dobrze chodziło, ale działania na zmiennych rzeczywistych (w Bascomie - Single) zajmują bardzo dużo miejsca a prawie zawsze można te obliczenia dokonać na zmiennych całkowitych (np. tak jak w tym przykładzie).
Niestety nie - T1 zmienia się wraz z temperaturą ale nie jest to temperatura podana w sposób jawny. Ja w swoim układzie stosuję do tego celu po prostu DS18B20. Wracając do obliczeń, możesz zmniejszyć błąd wyniku do znacznie poniżej 1hPa modyfikując je tak: [syntax=c]dUP=100*((int32_t)D1-(int32_t)... dT=(int32_t)T1-(int32_t)T0; // jeśli T1 nigdy nie...
U mnie w domu mam moduł na esp-01 który mierzy temperaturę w 16 punktach za pomocą DS18b20. Poprzez UDP wysyła pomiary do modułu YUNSHAN który jest głównym termostatem. Termostat dokonuje obliczeń i włącza piec (poprzez styk zwierny) oraz wysyła informacje do kilku kolejnych modułów odpowiedzialnych za otwarcie siłowników na kaloryferach w domu. Innymi...
...jednak wskazuje głupie wartości... Bo masz ... "głupie" obliczenia :-P '... If Temp(2) > 0 Then Temp(1) = 256 - temp(1); End If Temp(1) = Temp(1) / 2 '... Jak obliczyć ją właściwie :?: Użyj lokalnej wyszukiwarki - rozwiązań jest sporo :)
włożyłem tyle pracy nie wycofam się teraz poprostu w atmedze zmierzysz wilgotnosc w sth jest przykład w bascom i wyslesz wilgotnosc jako temperature lub nawet jedno i drugie w jednej paczce danych bo ds18b20 ma dwa bajty wolne dla użytkownika - a własciwie 4 bo 2 są wykorzystywane do przechowywania zmiennych służących do obliczenia temperatury ds1820...
W takim razie jednak to nie wina obliczeń. Masz może tylko 1 egzemplarz tego termometru cyfrowego? Warto by sprawdzić, czy to czasem nie wina samego DSa.
Dzieki za odpowiedź. Użyłem przeliczania temperatury z twojego kodu int calk = (lsb & 0b11110000)/16 + (msb & 0b00000111)*16; I teraz wygląda to dobrze. Ile powinien wskazywać wyświetlacz gdy czujnik trzymany jest w ręce? U mnie pokazuje 34. Czy dalej gubi bit? Druga sprawa to jeszcze taktowanie. Ja używałem takiej dyrektywy #define...
A rodzaj zmiennej ma znaczenie w tym przypadku? Bo kombinuje i z byte i integer. Zdecydowanie ma , a także znak liczby.Jeżeli spodziewasz sie pomiaru temperatur ujemnych, to całe Twoje obliczenia temperatury i podzielenia je na "cyfry" , biorą w łeb :| Radzę poeksperymentować w symulatorze - można nieźle się z(a)dziwić :)
Temperaturę z DS biblioteka Arduino daje w float, ale to nic trudnego zapisać ją nawet w int16_t mnożąc x100 , po prostu będą to c oC, np. 125.12oC=12512 c oC, a -46.12oC= -4612 c oC (centy stopnie C, analogicznie jak mm, cm i dm dla jednostki długości metr), przy okazji przyspiesza to obliczenia, przechowywanie, porównania. Może też być int32_t jak...
Akurat też buduje termometr na ds18b20 tylko że w Bascomie, ja też miałem problem z ujemną temperatura. Co do ujemnej temperatury trzeba do obliczeń zamienić ujemną liczbę na dodatnią bo ds podaje np . dla 0 stopni zwraca wartość 0 co mnoży się dalej * 0,0625 daje 0 ale dalej dla ujemnych daje wartość -1 , -2 , -3 itd. Trzeba otrzymany wynik zamienić...
A co to za cudaczne obliczenia :wink: ... unsigned char wynik1=0; unsigned char wynik2=0; wynik1=read1w(); wynik2=read1w(); reset1w(); float temp=0; if((wynik2)!=0){ //temp ujemna wynik1=~wynik1; temp=wynik1+1; //dlaczego /2 i gdzie się podział wynik2 ? temp=-temp/2; //??? } else{ //temp dodatnia...
Chwilowo straciłem ten kod postaram się go znaleźć ale opierałem się na projektach z internetu. No bez jaj. Na 99% nic nie masz tylko czekasz na gotowca. Ale dobra, zlituję się na święta :D Pomijając całą beznadziejność kodu do multipleksowania wyświetlacza, takie coś powinno działać: $regfile = "ATTiny2313.dat" $crystal = 8000000 Dim Jednosci...
Szukałem DS18B22 i nie znallazłem. Jest DS1822. Jeśli chodziło o DS18B20 i DS1820 to nie są one wymienne. Trzeba w programie zmienić sposób obliczania temperatury. W uproszczeniu dla DS1820 odczyt dzieli się przez 2, a w przypadku DS18B20 przez 16. Związane jest to z różną rozdzielczością termometrów DS. Zaznaczyłem, że w uproszczeniu, bo dla DS1820...
Odczytany wynik z DS1820 dzieli się standardowo przez 2 a z DS18B20 przez 16 (co wynika z poprzedniego postu). Nie trzeba wtedy zmieniać rozdzielczości DS18B20. Jeżeli w programie występują jakieś dziwne obliczenia należy je pominąć. (Z DS1820 można osiągnąć lepszą dokładność np. do 0,1'C lecz potrzebne są te właśnie obliczenia - wynika to z noty katalogowej)....
Tu masz sprawdzoną procedurę odczytu temperatury... No nie całkiem sprawdzoną :( Przy temperaturach ujemnych , zawyża wynik o 1 stopień :( Dla B1=&H90 i B2=&HFC wyświetla -54 a powinien -55.Skoryguj obliczenia dla ujemnych :) Piotrek
Co należy wpisać chcąc używać wersji bez floatów? To zależy jakie robisz obliczenia. Pokaż odpowiednią część programu. Po komunikatach z kompilacji widzę, że dot. DS18B20, to zapewne szukasz tego: http://mikrokontrolery.blogspot.com/2011...
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...
Chcę zbudować miernik ciepła na mikrokontrolerze jak w temacie i potrzebuję mierzyć temperaturę w dwóch punktach. Tu pojawia sie moja prośba o program w Bascomie, który zajmie jak najmniej objętości i co 1s będzie umieszczał w dwóch zmiennych zmierzone wartości temperatur z czujników DS18B20 w °C. Mikrokontroler w dalszej części programu użyje tych...
No niestety BASCOM tak ma. Zdaje mi się że takie obliczenia kiedyś działały (operacje na integer a zwracanie wyniku do Byte). Widocznie od którejś nowej wersji już nie działają. No to będziesz musiał zrobić tak: [syntax=basic4gl]Dim Stopnie As Integer 'Stopnie musi być typu Integer Do Ds_i1 = 305 '************ Obliczenia temperatury Stopnie = Ds_i1...
Teraz muszę wykonać polecenie: "Tak jak pisałem wcześniej, domyślnie funkcje printf i sprintf nie obsługują liczb zmiennopozycyjnych. Zatem trzeba też w menu "Makefile->printf() options" zaznaczyć opcję "floating point"." ??? Do tak prostych obliczeń nie potrzeba używać liczb zmiennoprzecinkowych: http://mikrokontrolery.blogspot.com/2011...
Zgaduję, że kompilator nie analizuje częstotliwości kwarcu przy konwersji poleceń 1wire bo w tym wypadku kompilacja polega na podstawieniu gotowych procedur w asm. Polecenia te działają dla szerokiego zakresu częstotliwości bo transmisja 1wire ma wystarczającą tolerancję. Różnica w uzyskanych wartościach temperatury może wynikać z faktu odrzucania częsci...
Dzięki. Zastanawiam się nad sensem podłączenia termistora NTC 10k. Chciałem mierzyć temperaturę w zakresie od 0-130 C. Przy 0 stopni termistor ma 32,5 KOm a przy 130 stopniach ma 297 Om i nie wiem jak to 'przekonwertować' na napięcie które zmierzy uPC. Może jest jakieś gotowe rozwiązanie. Chodzi o to,że dokładność pomiarowa będzie niedostateczna, chyba...
Testowałem na 12V przy 5A jeszcze bez wentylatorów. Rezystor miał 105stopni Celcjusza, radiator ponad 90. Nie chciałem ryzykować więcej. Gdy miałem już wentylatory, zrobiłem test na 9A i 5V. Radiator był ciepły, nie mierzyłem temperatury. Dokładniejsze testy przeprowadzę gdy będzie działał uC i odczyt z kilku DS18B20. Wszystkie testy trwały po kilka...
Nie winikajac w obliczenia wsadz to: [syntax=c] c = temp; c+=0.5; a=c; c-=a-0.5; c=c*10+0.5; b=c;[/syntax] po tym: [syntax=c]while (1) { temp=ds18b20_gettemp();[/syntax]
Spróbuj tak: ;dziesiatki stopni dodatn: movb,#Ah divab push b ; W rej. B masz juz jednosci, a nie wiem co zmienia LCD_CONT push acc mova,#10000110b calllcd_cont popacc add a,#"0" ; Do obliczonej wartosci "dziesiatek" dodaj kod ASCII znaku "0" calllcd_data ;stopnie mova,#10000111b ; To byc moze nie jest potrzebne (LOCATE)...
A ja zadam inne pytanie. Skoro czujniki działają, nie sprawiają większych problemów, a funkcji zaawansowanych i tak nikt nie używa - to w czym problem? Maxim widząc ogromny popyt mógłby obniżyć ceny wówczas rynek podróbek sam by zniknął bo nie opłacałoby się ich podrabiać. A tak mamy dostęp do dobrze działających "zamienników". Profesjonalny projekt...
Troszkę szukałem no i dalej jestem nemo. Jak zrobić tą kontrolę dla 9 bajtów danych z czujnika temperatury DS18b20 Pierwsze 8 bajtów są danymi (mniej lub bardziej znaczącymi) a ostatni bajt to właśnie CRC. Gdy mam już te 8 bajtów to jak policzyć dla nich CRC i sprawdzić z tym 9bajtem? Znalazłem wzór X^8 + x^5 + x^4 + 1 - ale nie wiem jak go wykorzystać...
Łap. Cały tydzień programuję poważniejsze sprawy i taki programik to dla mnie dosłownie rozrywka :D Bierzesz Tiny85 i programujesz Hexem lub Binem do wyboru. Podłączasz do niego DS18B20 i linijkę na MAX7219 i gotowe... żonka zadowolona. Program ma nawet wyjście diagnostyczne i wypluwa temperaturę na UART 9600bps (to żeby sprawdzić poprawnośc Dallasa)....
Witam, mm sobie zegar i termometr. W programie na samym początku jest odwołanie do dwóch podprogramów: pomiar temp, oraz obliczenie godziny, a następnie powrót z tych podprogramów i wyświetlenie wszystkiego za jednym zamachem. Ale ponieważ pomiar temperatury jest na ds18b20 więc potrzebuje 750ms na pomiar, a to wpływa na wyświetlanie sekund na zegarze...
A ja mam takie pytanie: Czy ktoś może wie jaka jest zależność zawyżania temperatury czujnika jeśli jest on na zewnątrz i w słońcu? A jak nie to może dałoby się jakoś zmierzyć energię słoneczną na np. fotorezystorze mieszczonym obok czujnika i obliczyć o jaką wartość jest pomiar zawyżony ?
http://obrazki.elektroda.pl/1661316800_1... Witam ponownie Tym razem chciałbym zaprezentować projekt lżejszego kalibru - zegarek wskazówkowy i termometr zbudowany na AT91SAM7S64. Wykonałem ten projekt, bo chciałem trochę pouczyć się programowej obsługi wyświetlacza graficznego z Nokii 3310, programowej obsługi enkodera inkrementalnego...
OK - skoro 18b20 ma przetwornik 12 bit to dlaczego wszystkie znane mi z elektrody procedury odczytu nie umożliwiają odczytu co 0.1°C tylko co 0.5°C ?? A może mój 18B20 (który teraz podłączyłem zamiast 18S20) ma źle ustawiony bit konfiguracyjny ? Na 9 bitowe przetwarzanie, bo jak wyświetlam sobie wartość Integer zrobioną z bit(1) i bit(2) to zmienia...
Można wyświetlać temperaturę w podmenu "wybór_Ds" ale trzeba zmienić cały program. Chyba nie jest tak trudno zapisać sobie cztery ID czujników i wiedzieć później który gdzie przypisać. Najlepiej osobno podłączać każdy czujnik i na naklejce na kablu przy czujniki zapisać jego ID. Wiedząc gdzie jakie jest ID czujnika można już mu w podmenu przypisać odpowiednią...
Witam Skleciłem ostatnio taki właśnie termometr z tym że z jednym czujnikiem. Mam pytanie. Dlaczego wyświetla mi temperaturę ok160 - 166 st. C?? Z moich obliczeń wynika że gdy odejmę 100 to otrzymam prawidłowy wynik tyle że w Fahrenheitach a w specyfikacji pisze że jest on w st. Celcjusza. Ktoś miał taki problem??
No i jest ! Oprogramowanie w wersji V2. Potrafi obsluzyc 4 lub 6 wyświetlaczy, czyli dodatkowo sekundnik, oraz ma pomiar temperatury na DS18S20 , DS18B20 lub DS1822. Program został dość mocno zmieniony, wiec zmienił się tez sposób ustawiania parametrów. Wersja na 4 cyfry pracuje z oryginalnym hardware, przy czym można dodatkowo podłączyć czujnik temperatury....
Ds18B20 jest jednym z najdokładniejszych termometrów Dallasa, mozna wyciagnąc rozdzielczość +/- 0,1 stopnia. Wynik jest zapisaywany w dwóch bajtach. Hi--> SSSSSHHH, Lo->HHHHHLLL, gdzie S-znak, H-bity czesci całkowitej pomiaru temperatury w stopniach Witam wszystkich! Właśnie próbuję przeliczyć dane z dwóch pierszych bajtów układu DS18B20, i zupełnie...
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...
Witam Mam taki kod: $regfile = "m328pdef.dat" $crystal = 14745600 $baud = 9600 ' predkość transmisji $hwstack = 128 ' rozmiar stosu sprzętowego $swstack = 128 ' rozmiar stosu programowego $framesize = 128 ' rozmiar ramki Do Locate 3 , 1 Lcd Ss1 ; Chr(0) ; " " Locate 3 , 10 Lcd Ss2 ; Chr(0) ; " " Locate 4...
Nie aż tak „karkołomne” :-) Procedurka dla DS18s20 w Bascomie, chociaż w asemblerze ;-) '***************************************... !oblicz_temp_DS: Oblicz_temp_ds: 'obliczenie temperatury z rozdzielczoscia 0,1 st.C x100h(256) mov a,{crc8} Jnz obl_temp_end 'odczyt i zaokroglenie...
Witaj Znowu najlepiej zacząć od datasheeta, tam wszystko jest. Zobacz przykłądy. Tak więc 1. jest równoważne temu, że odczytałeś 9 bajtów - temperaturę, CRC i jeszcze parę rzeczy. Obrabiasz je wg przepisu z DS i otrzymujesz temperaturę i możesz sprawdzasz poprawność. W zależności od wyniku dalej. Jeśli korzystasz z gotowych funkcji, które nie dają takiej...
Obecnie wyświetlam temperaturę w formacie 0.0000 i to mi odpowiada. Chciałem sie jedynie dowiedzieć, czy można jakoś uprościć komunikację 1wire, czy robię jakies błędy w obliczaniu "ułamków". O ujemne nie pytam, bo mnie pewnie moderator do kosza wywali :) Postaram się nauczyć we własnym zakresie. Dodano po 1 Arktik1, tak na marginesie: Ten kod nawet...
Chciałbym przedstawić jeden z możliwych sposobów wykonania cyfrowego regulatora PID Przestawiony regulator nie ma konkretnego zastosowania , to do czego zostanie wykorzystany zależy od czytelnika. Opis regulatora kieruję do osób które zaczynają przygodę z automatyką i układami regulacji. Spróbowałem wyjaśnić jak działa cyfrowy regulator PID, czemu ich...
Witam. Chciałbym odczytać temperaturę z czujnika DS18B20 przez długie i krótkie migania diodą. Np gdy mamy temperaturę 25 stopni to dioda sygnalizowała by dziesiątki za pomocą dwóch długich piknięć a jedności poprzez 5 krótkich. Dopiero zaczynam zabawę z Bascomem i kompletnie nie wiem jak się za to zabrać. Poniżej wklejam fragment kodu z odczytem temperatury....
Poprawiłem algorytm przeliczania wartości z ADC na temperaturę, i zdałem sobie sprawę, że wcześniej zupełnie źle do tego podszedłem. Do tej pory mogłem mieć zbliżone wyniki w temperaturze 100 stopni Celsjusza, a wyżej i niżej temperatura ostro się rozjeżdżała z wynikami. Obecnie w kodzie umieściłem tablicę zawierającą 77 wartości napięcia, z tabeli...
[syntax=basic4gl] $regfile = "m8def.dat" 'deklaracja procesora $crystal = 8000000 'deklaracja czestotliwosci taktowania Config Lcd = 16 * 2 'typ wyswietlacza i konfiguracja pinow Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0 Deflcdchar 0 , 7 , 5 , 7 , 32 , 32 , 32 , 32 , 32 'definicja...
https://obrazki.elektroda.pl/9826733000_... Wśród projektów dla początkujących elektroników' wszelkiej maści termometry i termostaty były swego czasu bardzo popularne. Łatwo się je teraz realizuje z użyciem mikrokontrolerów, a proste termostaty do wentylatorów przydają się na przykład do budowy wzmacniaczy audio i zasilaczy warsztatowych...
No to rzeczywiście w ds1820 jest troche inna organizacja bitów. Temperatura zapisana jest na dwóch pierwszych bajtach. Przy czym msb jest w calosci przeznaczony na znak. Czyli jak wszystkie bity są równe 1 to jest temp ujemna a jak 0 to dodatnia. Rozdzielczość teperatury wynosi 0.5 stopnia, przez pewne obliczenia można dostać rozdzielczosc 0.1 stopnia...
Witam. Pytam się "starszych" kolegów o radę, a dokładnie o mój sposób rozwiązania problemu, czy ma sens. Sytuacja: używam czujników temperatury opartych na DS18b20 - bardzo solidnie wykonanych, z przewodami w osłonie silikonowej, gilza z pastą przewodzącą, mechanicznie zaciskana w sześciokąt na połączeniu z kablem o średnicy fi5,5 mm, dodatkowo zabezpieczona...
Do obliczenia prędkości obrotowej i rozróżnienia kierunku to wystarczy mi wyjście A i B, a wyjście C mogę zostawić nieużywane? W ogóle to po co mi 3 wejścia w enkoderze skoro do rozpoznania kierunku wystarczy mi wejście A i B? No zapomniałem dodać, że na Atmedzę ma działać jeszcze: - komunikacja po rs232 z PC - czujnik temperatury DS18B20 (1-Wire) -...
Tzn. mam tablicę 24 bajty ( na razie do testów). I teraz podaje adres początkowy z tablicy, od którego zaczyna się ID układu DS18B20. Podprogram ma załadować ID, odczytać, sprawdzić CRC i w odpowiedzi podać mi LSB, MSB, status czujnika, histereze ( poprzednią muszę mu jakoś podać ) i wynik w postaci zmiennej typu string. Wzorowałem się na czymś takim:...
Jeżeli podłączasz na dwóch przewodach DSa to rezystor zmniejsz do 3,3k. Nie chcę mi się pisać więc podaję kod (bascom/asm) '***************************************... !read_temp_1w: Read_temp_1w: 'odczyt rejestrow z ds1820 'Stop Timer0 jnb {fl_pomiar},read_temp_1w_end clr {fl_pomiar} 1wreset...
Witam Mam świadomość co do ułomności DS18B20, mówię o ograniczonym zakresie temperatur a to już wygląda sensownie, chyba że fabryczne charakterystyki kłamią. PT100 występuje w klasach A, B, C, żeby było śmieszniej to dla najlepszej klasy określane są odchyłki dla pożądanych temperatur na poziomie 0,15-0,19° czyli nawet wzory i tablice nie wyzwolą nas...
a w jaki sposób masz zamiar umieścić DS18B20 aby "czuł" temperaturę silnika? http://obrazki.elektroda.pl/1452388000_1... Mam cylinder chłodzony cieczą, i od góry się wkręca termostat który powyżej 100stopni się załącza i zapala kontrolkę w liczniku. Wywaliłem środek z termostatu i dałem tam ds18b20 na sondzie. Wow, nie wiedziałem że...
Witam Oto kod czy ktoś mógłby rzucić okiem gdzie jest błąd? Ogólnie wyświetla przez cały czas 85 stopni. Tak wygląda sama konwersja w czujniku: void LCD_18b20_multidrop(/*unsigned char posx, unsigned char posy,*/ unsigned char *adrr) { unsigned char i,tablica[4]; signed char alarm; int temp; ow_reset(); ow_byte_wr(0xCC);...
W temperaturze pokojowej około 20-22st. C. atmega czasem pokaże ponad 300st, lub poniżej -40. Popatrz uważnie na swój code. Komunikację z DS masz w dwóch bardzo krótkich sesjach: 1- żądanie konversji temperatury, i druga. 2. odczyt tej temperatury po konversji. Wydawałoby się że to jest znikomy ułamek czasu nie wiele znaczący(?), lecz jest warunek...
Witam Próbuje przerobić kod obsługujący kilka DS18B20 na jednej linii i drugi obsługujący kilka DS18B20 na kilku liniach. Niestety jak na razie efekt jest taki, że działa tylko pierwsza linia, czyli dwa DS18B20. Jeśli chodzi o konfiguracje, to celowo nie ma Config 1wire = Porta.1 gdyż wpisanie tego portu, jako 1WIRE powoduje wyświetlanie 0.0 dla pierwszego...
Witam, zbudowałem sobie prosty termometr cyfrowy oparty na Atinny2313, czujniku DS18B20 i 4 lampach nixie. Wyjscia PB0-PB7 i PD3-PD6 obsługują lampy (poprzez 74141) PD0 to znak "-".Syg DQ (podciagnięty przez rezystor 4,7k do Vcc)z DS18B20 podłączony do PA0. Układ generalnie prosty tak że nie mam nawet schematu. Problem w tym że nie działa poprawnie....
Zamieść najpierw cały kod i układ w jakim mikrokontroler pracuje. Dodano po 2 Zaznacz co to znaczy, że wynik jest błędny, bo takie równanie można na nieskończoność sposobów rozwiązać. Podaj jakiś przykład. Może Ty źle obliczyłeś? I jaki jest ten błędny wynik. Można się domyślać , że "Byte_0" ma rozmiar bajtu, po "0.0625" można się domyślać , że chodzi...
Jak najszybciej scalić LSB i MSB w nadajniku ? Potrzebuję oprócz LSB i MSB (typu Byte ) w nadajniku - temperatury jako zmienną typu Integer do obliczeń histerezy. Mam coś takiego: [syntax=basic4gl] 1wreset 1wwrite &H55 1wverify Dsid4(1) Ds4_brak = Err 1wwrite &HBE Lsb4 = 1wread() Msb4 = 1wread() Ds_i4 = 1wread(2) D25 = Lsb4 D26 = Msb4 D23 = Ds4_brak...
Witam ponownie Zrobiłem to przez Timer0. Jednak problem z aktualizacją wyświetlania dalej występuje. Jeszcze drugi problem to start, przez okres zdefiniowany zmienną Licznik ( teraz równą 300 ) nic się nie wyświetla - dopiero po czasie = 300. Próbowałem również z Enable/Disable Interrupts na czas pomiaru, ale nie było żadnego efektu. Mam takie pytanie...
Witam Wiadomo, że trzeba przygotować dane dla wyświetlacza i zmusić DSa do odczytu. Z DSem jest tak, że układ potrzebuje niecałej sekundy (0.7-0.8s), żeby przetworzyć temperaturę na postać cyfrową. Jednak sam odczyt z układu trwa znacznie krócej. W związku z tym proponuję w obsłudze przerwania wyświetlaczy (na początku) wysłać komendę do DSa aby zaczął...
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. ................ Tylko, że wstawienie tego w Case nie ma chyba sensu, bo w momencie wyboru z Case, dane jeszcze nie są obliczone. Pierwsza uwaga to nie dajesz wymaganego czasu...
Witam Wykorzystałem kod Kolegi Duch do pokazywania kierunków zmian temperatury - tzw. "strzałki" W przyszłości, proszę używać tagów SYNTAX - poprawiłem.
Tu masz prosty programik, który kiedyś pisałem. Przedstawia obsługę zarówno wersji B jak i S. [syntax=basic4gl] $regfile = "m8def.dat" 'deklaracja procesora $crystal = 8000000 'deklaracja czestotliwosci taktowania Config Lcd = 16 * 2 'typ wyswietlacza i konfiguracja pinow Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5...
A gdyby TAK: (od razu mówię że tego nie próbowałem) ... ale może ktoś z Was? Ta sekwencja: 'Odczyt danych z przyrządu podlączonego do 1WIRE Sub Odczyt_temp 1wreset 'inicjacja magistrali 1WIRE If Err = 1 Then 'W Przypadku Braku czujnika coś tam wyświetl End If 1wwrite &HCC 'żądanie zgloszenia się ukladu podlączonego do linii 1WIRE 1wwrite &H44 'Convert...
https://obrazki.elektroda.pl/1992652000_... Rys.1. Sprzęt domowego browarnika w trakcie budowy. W ostatnich latach moda na domowe warzenie piwa eksplodowała: coraz więcej osób eksperymentuje z piwowarstwem domowym, które może zacząć się od rozrywki, ale potrafi przerodzić się w prawdziwą pasję. W rzeczywistości proces warzenia piwa...
Wszystkim czujnikom chcę wydać komendę konwersji a następnie po 10 sekundach chcę odczytać wszystkie 15szt, wydać polecenie konwersji odczyt po 10s i tak w kółko. Jednak moja ATMega ma wiele innych rzeczy do roboty w głównej pętli i nie chcę aby odczyty temperatur zajmowały jej sekundę czy dwie z tych 10s. Obecnie na 15szt LM35 i wewnętrznym ADC uzyskałem...
Czy dobrze mi się wydaje że w takim przypadku mogę element podłączyć bezpośrednio do maliny? Czujnik to DS18B20. Ten Dallas działa po interfejsie 1-wire. W internecie jest sporo na temat podłączenia i obsługi z poziomu malinki. np. https://forbot.pl/blog/kurs-raspberry-pi... Przy dwóch i więcej czujnikach możesz je...
Witam Tez się właśnie zajmuje odczytem temperatury na Lm35. Działa, chociaż nie stosuje dławików. Jako napięcie referencyjne wybrałem wewnętrzne napięcie odniesienia 2,56V. Nawet przy najwyższej temperaturze dopuszczalnej napięcie wyjściowe czujnika nie osiąga 5V (150*0.010V= 1,5V), dlatego też 5-cio woltowe napięcie odniesienia nie ma sensu. Przy niższym...
http://obrazki.elektroda.pl/4675155100_1... Jest to mój pierwszy projekt opisywany tutaj, pomysł zrealizowany w jeden wolny wieczór, mam nadzieję, że komuś się przyda;) Około rok temu na allegro kupiłem tani zasilacz (max 30V, 5A), ale przeszkadzał mi w nim bardzo głośny wiatraczek, który oczywiście przy pełnym obciążeniu jest niezbędny....
Ładowarek dla akumulatorów samochodowych istnieje mnóstwo, ale w większości są to zwykłe prostowniki z nieskomplikowaną automatyką i wyświetlaczem. Nie każdy pozwala ocenić pojemność akumulatora i zaplanować jego ewentualną wymianę na nowy. Opisana poniżej konstrukcja daje taką szansę oraz ma inne przydatne funkcje. Teraz możliwe jest dokładne określenie...
Witam Używam Attiny2313 do pomiaru dwóch temperatur z DS18B20. Wynik ( Integer ) przesyłam bez żadnej obróbki przez UART przewodem 40 cm do Atmega328. Atmega rozbija odebrane dane i jest obróbka Kod Attiny2313 $regfile = "attiny2313.dat" $crystal = 8000000 $baud = 4800 '********************* Konfiguracja magistrali 1-Wire Config 1wire = Portd.5...
Usunąłem Wait 1 przy konwersji z DS18B20, działa, bez problemu ( na trzech przewodach ), tylko wyniki są opóźnione - tzn. wyświetlany wynik nie jest z aktualnego pomiaru, tylko z poprzedniego. Dodałem jeszcze dwa czujniki DS18B20. Ich zapis razem z godziną i datą na karcie jest jak najbardziej w porządku, tylko wyświetlanie trochę szwankuje - tzn. czasem...
Witam. Złożyłem sobie termometr na tym sławnym czujniku. Wszytko chodziłoby ok, gdyby nie to, że powyżej temperatury 34 stopnie wszystko zaczyna wariować. Zaczyna pokazywać na zmianę dobrą temperaturę i podwojoną -zmienia się co kilka sekund i nie zawsze w tym samym odstępie czasowym. Czujnik jest podłączony w ten sposób: http://obrazki.elektroda.pl/1761690900_1...
AVE... Nie musisz umieszczać dodatkowej pętli while(1) w pętli głównej, bo wszystko w pętli głównej będzie wykonywane ciągle. Ustaw przerwanie dla ADC i w pętli obsługi przerwania wartość odczytuj. W ten sposób mikrokontroler może robić inne, interesujące rzeczy czekając na pomiar. Mikrokontrolery z reguły są dużo szybsze od ADC. Co do MPLABX i XC8...
Poniżej krótki przejrzysty program do termometru. 1wwrite &H44 zmusza DS'a do wykonania pomiaru 1wwrite &HBE zmusza DS'a do "wyplucia" zmierzonej temperatury 1wwrite &HCC zmusza DS'a do zgłoszenia się bez podania adresu układu. Jest to uproszczenie kiedy mamy na magistrali jeden układ. Zmieniając podprogram możemy wysyłać adresy DS'ow. Do Gosub Wlacz_konwersje...
Witam Zachęcony sukcesami z płytką EVB 4.3 zaprojektowałem i zamówiłem swoją - na początek z AtMega8 w DIP. Do tego pamięć 24C32 oraz układ do RS485. Wszystkie układy mają kondensatory 100 nF ( stabilizator 7805 również + jeden elektrolit ). Całość ze złączem pod wyświetlacz 2*24 ( właściwe 4*12 ) Reset przez rezystor 10 K do +5V AtMega8L ( na 8 MHz...
...Tu masz przykład kodu trochę bardziej zaawansowanego, A w którym to miejscu, ten kod jest tak bardzo zaawansowany :?: Tu, gdzie zmienna I2 jest dzielną :?: W jakiż to cudowny sposób, może tu wystąpić dzielenie przez zero :?: WOBI Zastanów się trochę, przed pokazaniem kolejnego zaawansowanego kodu :D
Na początek witam wszystkich. Potrzebuje pomocy w rozwiązaniu mojego problemu odnoście cyfrowych czujników temperatury oraz czujników wilgoci. Osobno fajnie chodzą, problem pojawia się w chwili kiedy chciał bym żeby działały w jednym programie. Poniżej mój program [syntax=c]#include <Timers.h> Timers timer(2); #include <OneWire.h> #define...
temperatura obliczenie ds18b20 obliczenie temperatury ds18b20 temperatura
czujniki leuze warsztat pomysły bezpiecznik awaryjnych
zasilacz anody tytanowej anoda magnezowa
Zasilacz do orbitreka KH 707 - gdzie kupić? Vestel 17MB97 Blinking 6 Times: Troubleshooting Guide