http://obrazki.elektroda.pl/9385220000_1... Na początku chciałbym zaznaczyć, że projekt został zrealizowany dzięki koledze Markowi Szymczakowi. Układ składa się mikrokontrolera ATMEGA8 wraz z podłączonym do niego wyświetlaczem graficznym o rozdzielczości 128x64 piksele i sterownikiem KS0108B (HD61202/3). Jako czujnik temperatury został...
Witam ponownie. Ze względu na częstą potrzebę wykonywania pomiarów temperatury w dość długich procesach postanowiłem ulżyć sobie i stworzyć coś co zrobi to za mnie. Efektem moich przemyśleń jest urządzenie oparte o mikrokontroler Atmega8 i czujnik temperatury DS18b20. Dodatkowo urządzenie wyposażone jest w wyświetlacz, na którym można odczytywać mierzoną...
W Notepad++5.6.2
Spróbuj tak: /* zmienna globalna */ static uint8_t regulacja_temperatury = 1; if(bit_is_clear(PRZYCISKI_PIN_PO... { MOC3041_1_ON; MOC3041_2_ON; MOC3041_3_ON; regulacja_temperatury = 1; } else if(bit_is_clear(PRZYCISKI_PIN_PO... { MOC3041_1_OFF; MOC3041_2_OFF; MOC3041_3_OFF;...
problem tkwi w tym, że program masz do obsługi układu DS1820, a podpięty masz DS18 B 20 (różnią się one rozdzielczością i sposobem zapisu temperatury w rejestrach). W internecie znajdziesz masę programów pod BASCOM i nie tylko obsługujących ten termometr.
Zajrzyj do dokumentacji LM, tam jest pokazane, jak należy go podpiąć, żeby mierzył ujemne temperatury.
Witam Gdyby dalej były problemy z uruchomieniem transmisji to mogę podesłać kod źródłowy do takiego urządzenia, bo sam coś takiego zrobiłem z tym że wynik podawany jest na 3 wyświetlacze LED. Transmisję zrealizowałem bardzo podobnie tylko za pomocą bascomowego polecenia Inkey(), odbierane są zawsze dwa bajty i na podstawie ich zawartości określane jest...
80 stopni to jeszcze w miarę znośna temperatura pracy dla mosfeta, aczkolwiek, tak jak koledzy wyżej wspomnieli, przydałby się tutaj radiator.
Polecam lm75 - ma 3 bitowy adres (8 układów na jednej magistrali), programowane parametry: rozdzielczość, alarm przekroczenia parametru, histereza. Niska cena. Oczywiście trzeba się liczyć z parametrami elektrycznymi I2C.
Oznacza to, że nie jest to takie proste, jak się wydaje :) Korzystając z dzielnika musisz wybrać pomiędzy dobrą liniowością a wysoką dynamiką (rozdzielczością) - przy okazji rezystancja dzielnika w całym zakresie pracy musi być dużo mniejsza, niż rezystancja wejściowa przetwornika A/C. Sugeruję wykonanie kilku wykresów funkcji Vout(T) dla różnych wartości...
Tutaj masz gotowy przykład bez użycia float-ów (oszczędność pamięci): http://mikrokontrolery.blogspot.com/2011...
Jeżeli wymieniłeś baterię i przez jakiś czas działało prawidłowo, to wskazanie będzie na baterię. Problemy z kwarcem też mogą wystąpić przy takich temperaturach (-20*C), ale wtedy układ nie traciłby danych z pamięci tylko notowałbyś opóźnienia. W skrajnych przypadkach, bardzo niska temperatura i duże drgania (duży prąd, co nie dotyczy PCFa) kwarc pęka....
wiem wiem, że tak to się robi mam to napisane w programie dokładniej ten fragment jest za to odpowiedzialny: ................. Tyle, że czujnik ds18b20 nie podaje temperatury tak po prostu do procesora np.: 20 stopni Celsjusza tylko trzeba to troszkę przekonwertować za co odpowiedzialna jest ta część programu: fajnie miło i przyjemnie jeśli temperatury...
Rozważ takie rozwiązanie, ale dobrze byłoby podłączyć jeszcze jeden pin do mikrokontrolera żeby rozpoznawał czy mamy zasilanie i od tego uzależnił co ma robić program. Po co ma odpytywać czujniki na baterii. Na dodatek po wznowieniu zasilania musiałbyś użyć komendy Initlcd http://obrazki.elektroda.pl/4984761000_1... W FuseBitach nie...
Witaj na naszym forum. Prosiłbym o podanie jakiegoś interesującego linku dla początkujących. Proszę bardzo: http://mikrokontrolery.blogspot.com/p/sp...
proponuje sprawdzenie samych L298 bez żadnego uC , połącz wejścia i sygnał Enable przez rezystory 4,7kΩ do masy bez żadnego obciążenia ( silnik , diody ) stopień mocy nie powinien pobierać praktycznie żadnego prądu układ powinien być zimny , jedynie część logiki ( + 5V ) powinna pobierać prąd , jeżeli w takiej konfiguracji układ nadal się grzeje...
Bierzesz pod uwagę elementy SMD? Jeśli nie, to pomyśl o tym. Kto dziś robi na przewlekańcach.. Prąd w motorze masz prawie za darmo :) więc pomyśl nad 3 małymi wyświetlaczami LED (7 seg). Czytelność lepsza a i miejsce możesz zaoszczędzić. W multimetrach też masz termoparę, i nikt nie utrzymuje drugiego końca termopary w stałej temperaturze tylko przyjęta...
1. Makro "bit_is_set" jest zdefiniowane w pliku nagłówkowym sfr_defs.h. Sprawdza ono czy dany bit w rejestrze mikrokontrolera jest ustawiony. Nie koniecznie musi to być pin (nóżka). Polecam wpisanie w goolach "avr bit_is_set" - w pierwszym czy drugim linku znajdziesz kod tego makra i dokładny opis wspomnianego pliku nagłówkowego. 2. Literówka. Powinno...
Zegarek oprócz funkcji wyświetlania czasu ma pokazywać temperaturę i mieć możliwość sterowania z pilota (RC5). Normalnie (by default) Bascom używa Timer0 dla RC5. Jeżeli Timer0 masz zajęty do inego celu, więc potrzebujesz skonfigurować Timer2 dla RC5. e marcus
Gdybym opisał program wszystko stałoby się oczywiste :D Użycie IF ELSE bez END IF zawsze warte jest omówienia bo potem nikt nie może się doliczyć END IF :D Chodzi o to że jeśli tylko jedna instrukcja jest od jakiegoś warunku zależna to można ją zapisać w jednej linii. Jeśli z powodu jakiegoś warunku musza juz być zmienione dwie zmienne lub wykonać się...
Kod jest mi nie potrzebny - zasada jest taka - masz określone formaty danych i tak np. temperatura składa się z 3 cyfr i kropki, znak stopni jest stały, podobnie jak reszta napisów. I teraz masz stare odczyty, powiedzmy tak: ___DOM____POLE__ __21.5_C__12.2_C Potem dajesz locate, w tym przypadku (1,2) i wyświetlasz nową temperaturę, która przy okazji...
...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...
no tak by Duch ;) sam przyznasz że u niego też jest "String as 6" i nadpisuje dane. Tobie udało sie to odkryć bo byłes dociekliwy i testowałeś dokładnie w temperaturach ujemych. Nie mówiac o tym jak zasilał DSy niezgodnie z aplikacją fabryczną. Masz racje jeśli chcesz by układ działał stabilnie to trzeba robić zgodnie ze sztuką. To że duchowi i innym...
F_CPU=8000000 ustawione w Properties projektu A fuse bity w uc masz ustawione na 8MHz. Jeżeli nic nie ustawiłeś to uc domyślnie pracuje z częstotliwością około 1MHz.
Nie za bardzo: - AGND masz połączone z masą przez kondensator, ma byc bezpośrednio - AREF ma być połączone przez kondensator do masy - AVCC ma być połączone przez dławik do VCC - RESET - wywal wszystko co masz na tym pinie, obecnie masz go na stałe zwarty do Vcc, co uniemożliwia programowanie - GND stabilizatora jest niepodłączone - jeśli jako Vref...
W funkcji pomiart1() nie czekasz na koniec pomiaru. Dlaczego?
Opis magistrali 1Wire masz w helpie. Poniżej kod na obsługę dallasa DS18B20. Config 1wire = P1.0 'konfiguracja magistrali 1wire Config Lcd = 16 * 1a 'konfiguracja wyswietlacza Deflcdchar 1 , 4 , 10 , 4 , 32 , 32 , 32 , 32 , 32 'znak stopnia Dim T1 As Single Dim T2 As Single Dim B1 As Byte , B2 As Byte , R As Byte Dim Tmp As String * 6 Dim Znak As String...
Spróbuj zmienić kolejność na taką: '--------konwersja temp dla wszystkich dsow 1wreset 1wwrite &HCC 1wwrite &H44 Wait 1 1wreset 1wwrite &H55 2 1wverify Dsid1(1) 'wysyłamy adres pierwszego czujnika 1wwrite &HBE I1 = 1wread(2) '--------------------------------- 1wreset 1wwrite &H55 1wverify Dsid2(1) 'wysylam adres drugiego czujnika...
Na temat fuse bitów był osobny temat wałkowany i to dobrze ale narazie ich nie ruszaj bo "uwalisz" procka. DS-y są "wyczulone" na czas w którym następuje konwersja i jesli bedzie nieodpowiedni(wg noty 750ms) to DS moze wariowac i w ogole nie mierzyc(nie zdarzy wykonac konwersji). Jesli chodzi o ADC to w zasadzie różnica jest taka ze przy standardowym...
Pomyśl nad zastosowaniem rejestru przesuwnego. Np 74HC595. Można te układy łączyć. Potrzebne będą trzy linie procesora. Jedna do ustawienia wprowadzanego bitu druga to zegar rejestru przesuwnego a trzecia służy do przeniesienia danych z rejestru na wyjścia. Układ ma 8-io bitowe wyjście czyli do podwójnego wyświetlacza będą potrzebne dwie takie kostki....
Poniżej przykład. Zwróć uwagę, że w tym przykładzie komenda konwersji temperatury występuje na końcu, a nie na początku. Odczytana temperatura będzie zatem tą która została konwertowana po poprzednim odczycie. To oczywiście nie ma znaczenia dla tego jak adresować czujniki. Powodzenia ! PL Config 1wire = Portd.6 Dim Adresy(16) As Byte Dim T1 As Byte...
Witam mam program który wyświetla temperaturę oto on void temperatura(void) { ow_reset(); ow_write_byte(0xCC); ow_write_byte(0x44); _delay_ms(100); // czas pomiaru ow_reset(); ow_write_byte(0xCC); ow_write_byte(0xBE); lsb = ow_read_byte(); msb = ow_read_byte(); ow_reset();...
Pt100-pt1000
Co prawda w temacie kolega umieścił wątek o termometrze wykorzystującym jako czujnik LM35, ale może "malutka sugestia": Brałeś pod uwagę scalony cyfrowy czujnik typu np DS18B20 ? Ja np w aucie zbudowałem termometr (na ATMEGA8) przy użyciu dwóch czujników DS18B20 (temperatura silnika i w kabinie) oraz DHT22 (zamiennik to AM2302) w nawiewie, który oprócz...
Witam ... całe zamieszanie z numeracją stron wynika z tego w moim archiwum mam starszą wersję noty katalogowej ATmega8 i wspomniane informacje są na str 289. W dostępnej na stronie Atmela dokumentacji: http://www.atmel.com/dyn/resources/prod_... jest to na stronie 292, jest tam dokładnie pokazane które oznaczenia odpowiadają obudową...
Atytmetyka 8-io i 16-sto bitowa: http://www.atmel.com/dyn/resources/prod_... i kody źródłowego do tego http://www.atmel.com/dyn/resources/prod_... Dodano po 41 i jeszcze to: http://www.atmel.com/dyn/resources/prod_...
Po pierwsze to kup nowego DS a tego wyrzuć- bo gdzieś go schowasz, zapomnisz że zepsuty- a za jakiś czas będziesz się znowu użerał. Ale zanim go wyrzucisz zmień us na ms na końcu programu. Zresztą powinno być 900ms a nie 200.
Press ciekawy pomysł, pomyśle nad tym. Ja posiadam taki za 20 zł i taki za 56zł(UNI-T M890G) i oba szaleją. Zmieniłem kabel łączący czujnik z mikrokontrolerem i zapomniałem zamontować opornik 3,9k, aby w razie zwarcia nie spalić stabilizatora. I po kopnięciu mikrokontroler pokazuje błąd (zmienna ERR), gdy silnik wytraci obroty to pokazuje wyższe temperatury...
a 8MHz masz?:> Sprawdź PCB Rezystor 4.7kΩ masz na linii danych? Może podaj konkretnie co pokazuje sie na lcd. "Przyczepiliście się" :D do sprzętu , a żaden z Was nie zajrzał do kodu ;) A błąd ukrył się sprytnie , w deklaracji zmiennej T1 , która powinna być typu Integer , a jest ... :?: Piotrek
A nie masz na górze ekranu opcji "Szukaj"? Jeśli moduły znajdują się obok siebie (wspólna kaseta, obudowa itp..) można je połączyć przez I2C lub SPI (nie ISP :!: ). Można też połączyć razem linie UART wszystkich procesorów w jednym punkcie (nadajniki i odbiorniki) tworząc minisieć. W przypadku większych odległości (kilka metrów i więcej) najlepiej zastosować...
Wynik temperatury jaki uzyskał jest efektem odczytania samych jedynek z magistrali 1wire, czyli czujnik nie odpowiedział.
jack63 to wcale nie jest liniowa charakterystyka! Oczywiście, tylko ta nieliniowość jest niewielka. Dla 200oC wynosi mniej niż 6oC. Czyli 3% ,jeśli dobrze policzyłem :D. Przetwornik ADC jest 10 bitowy z dokładnością do 2 LSB czyli 0,4%. Można przeprowadzić ew. linearyzację po ADC programowo. (at)PiotrPitucha próbujesz "wymusić" stosowanie rozwiązań...
Podłączyłeś równolegle dwa uzwojenia wtórne transformatora, a tak sie nie powinno robić. Jak już to daj dwa mostki prostownicze i połącz dopiero wyprostowane napięcia. Do tego masz jakiś kondensator równolegle do uzwojeń wtórnych. Po co? Kondensatory C17 i C18 jak już chcesz łączyć równolegle do przycisków, to szeregowo przez rezystory np. 100...330R....
Temat ten był już wałkowany n razy Zerknij do datasheet'a DS'a Wydaje mi się że czas po odebraniu bitu jest zbyt krótki, z tego co pamiętam to tam min 75 us powinno być Tu masz kawałek działającego kodu, przerób sobie pod swoje komendy #define ONEWIRE_PIN PB2 #define ONEWIRE_PORT PINB #define ONEWIRE_DDR DDRB static uint8_t onewire_reset() {...
No nic dziwnego, w ustaw_czas robisz call do wys_czas który wbrew obiegowej opinii wyświetla temperaturę;] i... ustawia kursor kilka spacji za *C :) a potem sobie reta do ustaw_czas gdzie już jak widać LCD "Ustaw czas" :) Ot i tajemnica;] Pozdro ;] Dodano po 1 PS lowerline sux, ja bym używał locateów na twoim miejscu ;-) Poza tym funkcje są fajnejsze...
ee no musiało pomóc, sprawdzałem u siebie i kod się zmniejszał o kilka kB pokaż jakim poleceniem ze wszystkimi flagami jakie używasz kompilujesz kod dla tych zmiennych równych 134 i 1: LS Byte: 10000110 MS Byte: 00000001 w MS Byte pięć najważniejszych bitów wskazuje na znak - zera to dodatnia, a jedynki to ujemna trzy najmłodsze bity z MS Byte i cztery...
Kwarcu nie potrzebujesz. Na wewnętrzynym oscylatorze możesz zrobić to spokojnie. Nie masz złącza ISP - no chyba że masz zewnętrzny programator do którego będziesz wkładał procesor. Jeśli nie to zdecydowanie dorysuj to złącze. Czy LCD będzie bez podświetlania? Kup lepiej taki z podświetleniem i go podłącz - 15 i 16 noga LCD. Może warto kupić 2x16 - koszt...
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);//...
W TCNT2 jest aktualna wartość timera2.
Masz podciąganie linii danych?
Witam. Problem z histerezą polega na tym że histerezę ustalasz w liniach wykonywanych tylko raz po starcie procka, dlatego ona zawsze będzie wynosić 0+5 (zmienna przechowująca temperaturę zmierzoną po starcie programu będzie 0). zmienną histerezy musisz umieścić w pętli aby byłą aktualizowana cały czas wraz ze zmianą temperatury. Pozdrawiam
W karcie katalogowej LM35 masz pokazane, jak mierzyć ujemne temperatury.
Deflcdchar 1 , 14 , 17 , 17 , 14 , 32 , 32 , 32 , 32 ' definicja znaki stopnia Config 1wire = Portd.5 ' konfiguracja portu PD.5 jako wejcia magistrali 1-wire Dim Odczyt(2) As Byte , A As Byte , Licznik As Byte , T As Integer , T1 As Single , Napis As String * 5 'Deklaracja wszystkich zmiennych potrzebnych do pracy programu Do 1wreset 'reset...
http://tomeko.net/termometr.php -> projekty testowe dla ATmega8 i PIC18F2550. Przewód ma u mnie około metra - taka sama zwykła płaska taśma, kondensator przy czujniku. Nie zauważyłem by był wrażliwy na dotykanie. W main.h zdefiniowane jest F_CPU warunkujące opóźnienia w bibliotece delay i ustalające baudrate dla RS232. Jeżeli będzie wyższe niż rzeczywiste,...
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...
No bez jaj. Tak samo jak zrobiłeś sterowanie pinem w zależności od temperatury.
Czym jest spowodowany fakt iż nie dostarczając napięcia do dsa " pracując w konfiguracji dwóch linii danych z podciągnięciem i masa " na pc czujnik działa ok a po podłączeniu do up nie można odczytać danych? Komunikacja jest poprawna ponieważ jest możliwe odczytanie id dsa. Ogólnie tym, że połączenie w trybie dwuprzewodowym (pasożytniczym) wymaga bardziej...
Pokaż cały program. Masz podłączone w trybie parasite, musisz więc ustawiać stan wysoki na linii danych podczas konwersji temperatury.
Witam Chcialem na wstepie powiedziec ze jestem poczatkujacy w temacie mikrokontrolerow , jednak udalo mi sie juz zbudowac prosciutku komputerek pokladowy ktory na LCD wyswietla aktualna predkosc i obroty oraz liczacy dystans i czas jazdy. Mam jednak problem jak rozwiazac pomiar temperatury z czujnika , jezeli dobrze rozumiem to do wejscia przetwornika...
przed linia Lcd Chr(2) ; "=" ; Napis ; " " ; Chr(1) ; "C" 'wynik dopisz : locate 1,1 pozdrawiam
Źle się wyraziłem, pisałem oczywiście o przyłożeniu 2,5V na jedno z wejść pomiarowych :D Jeszcze mam pytanie: Rozdzielczość = 2,56 / 1024 = 0,0025 = 2,5mV Jak można użyć tego parametru przy pomiarze temperatury?
Dzielnik tak, wartości - raczej nie. Zasymuluj sobie ten układ np. w http://www.falstad.com/circuit/ lub dokonaj obliczeń. Zauważ, że źródło prądowe 3mA w przypadku 100°C będzie miało do pokonania dwa połączone równolegle rezystory zwierające do GND: - pierwszy to KTY-81 o wartości 3392Ω - drugi to rezystor wypadkowy z dzielnika, czyli 5,4kΩ...
Ten kod jest w jakiejś książce? Pytam z ciekawości bo widzę go już któryś raz. Wynik -0,1 pokazuje się zawsze gdy nie pasują prędkości zadeklarowane w kodzie z prędkością mikrokontrolera. Pomaga zmiana FuseBitów na 8MHz w Mega8 i w kodzie :) Równocześnie, tak żeby się zgadzało i tu i tu. Najpierw sprawdź, potem komentuj :D
Ustawiasz napięcie odniesienia na Vcc, ale ... w funkcji pomiaru z powrotem ustawiasz napięcie odniesienia z pinu AREF, czyli zewnętrzne, bo nadpisujesz wartość ADMUX. Wzór OK. [syntax=c]return ADCW;[/syntax] zmień na [syntax=c]return ADC;[/syntax] Przykłady ADC: http://mikrokontrolery.blogspot.com/2011...
Czy możliwe jest ze czujnik DS18B20 zawyża o parę stopni temperaturę?
Dzieki za info
KowalD ja nie piszę o przypaleniu, lecz o przepięciach indukujących się od transfromatorowej lutownicy ! zauwazylem bylem... a ja pisze o temperaturze :)...
Oprócz obowiązkowego RC, a zwłaszcza kondensatora na wejściu ADC, ja bym jeszcze dorobił filtr dolnoprzepustowy w oprogramowaniu. Regulacja czegokolwiek na podstawie pojedynczego, nieuśrednionego pomiaru jest dość ryzykowna.
Witam ! Dodaję gotowy działający program do pomiaru temperatury. ATmega8 fabryczne fuse bity ( nic nie zmieniaj ). Program sprawdziłem z liniami które wtym programie są zaremowane, ze względu na łatwiejszą konfigurację na mojej płycie. $regfile "m8def.dat" Config Lcdpin = Pin , Db4 = Portd.1 , Db5 = Portd.2 , Db6 = Portd.3 , Db7 = Portd.4...
Czy to może być wina częstotliwości kwarcu ? Mam inny bardziej bardziej rozbudowany układ ( PCF8563, PCF8574, karta SD, pomiar z PF8591, pomiar 3 x DS18B20 ) tylko na Atmega328 i kwarcu powyżej 10 MHz i tam działa wyświetlanie OK, bez żadnych przeskoków.
Koszt elementów możesz sobie policzyć. Procesor np. Atmega8, czujnik temperatury i wilgotności, wyświetlacze 7-seg. LED, zasilanie to pewnie jakaś przetwornica 230V/5V, jakaś drobnica-rezystory, diody, kondensatory, przyciski, produkcja PCB- laminat, trawienie, wiercenie, estetyczna obudowa, złącza, okablowanie, włącznik, bezpiecznik itd...
Nie czytałem całego wątku. Masz tam warunek > 28, więc warunek zadziała dopiero gdy cel będzie większy niż 28 czyli = 29, jeżeli chcesz żeby było od 28 musisz tam dać większe bądź równe 28. Jak chcesz mieć większe o dziesięć to temperatura = cel + 10;
A z jaką częstotliwością odczytujesz dane z ADC? Może za wolno?. Jeszcze ten równoległy kondensator, on zachowuje się jak filtr dolnoprzepustowy.
Schemat jest ideowy zaczerpnięty z projektu cugi253, do którego podałem link na początku tematu. Co do LED, jedna dioda sygnalizuje prace urządzenia, druga natomiast sygnalizuje alarm przekroczenia danej temperatury.
Po ustawieniu fuse bitów tak żeby uwzględnić $crystal=4000000 program w dalszym ciągu nie reaguje na nic. Mógłbyś napisać program do odczytu temperatury z DS18B20 i wyświetleniu jej na LCD tak żebym mógł sobie sprawdzić moje czujniki temperatury
DS18B20 to bardzo fajny czujnik i można nim w prosty sposób mierzyć temperaturę z rozdzielczością 0.1 st. C Polecam.
Co do wyłączenie światła po 30 sek. Dodaj dodatkową zmienną bit która będzie ustawiana np: na 1 po wyłączenia światła przez timer po 30 sekundach a dzięki niej nie będzie ponownie włączane światło przez wciąż otwarte drzwi (stan niski na wejściu uC). Dopiero zamkniecie drzwi ( stan wysoki na wejściu uC) spowoduje zmianę tej zmiennej na 0 dim 30SEK as...
Nie bardzo rozumiem co napisałeś, strasznie poplątałeś. Napisał bym tak: Jeśli rozruch pieca jest uruchomiony i temperatura jest mniejsza od zadanej to licz czas. Jeśli rozruch pieca jest uruchomiony i temperatura zadana jest osiągnięta to przerwij liczenie , wyzeruj zegar i przejdż do normalnej pracy. Jeśli piec się przegrzeje to zatrzymaj normalną...
Choćby LMV321. Niewiele lepszy od LM358, ale poza tym ma chociaż wyjście typu Rail-to-Rail. EDIT. Wykonałem pomiary czujników SYH-1 oraz HCH-1000. Wstawię jak się filmiki dodadzą do serwera. Jeszcze tylko prośba do albertb : przedstaw jakieś argumenty a tym że czujnik SYH-1 jest pojemnościowy. Albo nie wiem, że jest tego samego typu co HCH-1000, albo...
Koncowa temperatura jest przechowywane.
Dołącz i edytuj plik config.h z folderu, w którym są źródła tego przykładu. W tym pliku jest zdefiniowany port i pin. Ustaw odpowiednio dla Twojego układu.
To nie jest jeszcze to co oczekuje, mianowicie: Są 3 tryby pracy: -Wyświetlanie temperatury (główny) - Po jednym naciśnięciu przycisku przechodzi do wyświetlania temp max i min i czeka na kolejne instrukcje - a jeżeli ten sam przycisk jest naciśnięty dłużej (np. 3sekundy) to przechodzi do resetowania wartości max i min i wraca do wyświetlania temperatury.
Witam, od razu się przyznam, że dopiero raczkuje tworząc własne programy dla mikrokontrolerów, dlatego pytam: jak obsłużyć termoparę (J) przez Amtega8 (wiem, że ma wbudowany przetwornik ADC), chodzi mi o jakiś prosty przykład, na którym mógłbym się wzorować-uczyć, może być w C jak i w Bascomie. Chcę by program po prostu odczytywał temp. z termopary...
Mała sugestia odnośnie pomiaru i wahania odczytów. Nie tak dawno robiłem odczyt z czujnika temperatury (termistora 5%), irytowała mnie strasznie szalejąca wartość pomiaru. W pierwszej chwili zrobiłem na szybko uśrednianie na podstawie zwykłej średniej arytmetycznej postaci: wynik = (N_0+N_1+...N_n)/n, ale nie dało mi to zadowalającego efektu. Aby w...
Witam! W jak najprostszy i w miarę tani sposób pomierzyc te trzy wielkości i podłączyć je do Atmegi8? Szczególnie chodzi o dwie pierwsze. Pozdrawiam
Użyłbym: PT100 - może być i PT1000 Wzmacniacz pomiarowy - INA333 jest chyba dobry. MSP430 z driverem LCD Szkiełko LCD 3.5 cyfry. Bateria CR3032. Na jednej baterii pochodziło by to pewnie ze 5 lat. Nie bierze tego jako wyrocznie bo nie mam ułożonego schematu w głowie. To tylko części które cisną mi się do głowy jak słyszę "bateryjny miernik temperatury".
A może masz czujnik DS18B20, upewnij się że jest to DS1820. Ale dziwne, najpierw termometr działał poprawnie a później przestał. Zastanawia mnie jeszcze to że (jak piszesz) czujnik reaguje na zmiany temperatury bo zmienia się zmienna T1, a nie da się odczytać temperatury. Ciekawe w czym jest problem.
Zamiat: temperatura = Temp_min daj: temperatura == Temp_min a jeszcze lepiej: temperatura < Temp_min .
Witam próbuje obsługi 1-Wire na przykładzie termometra cyfrowego DS18B20, niestety odczytana temperatura nijak ma się do tego co powinno być, mianowisie dostaje same "1", Pliki biblioteki 1-Wire [syntax=c] #ifndef OWI_H_ #define OWI_H_ // Ustawienie pinu który bedzie pinem OWI #define DDR_OWI DDRD #define PORT_OWI PORTD #define PIN_OWI PIND #define...
Wszystko dobrze, tylko źle masz policzone ułamki. Część całkowita to po prostu twoja pliczba tempC1. Część ułamkowa to tempC1*100 modulo 100. Oczywiście jeśli chcesz mieć dwa miejsca po przecinku.
Opanuj pierw te czujniki, jest pelno kodow przykladowych na forum. Nastepnie opanuj wyswietlacz, uzyj szukaj tez jest pelno tematow. Pozniej wystarczy, ze to do tego "dodasz". Polecam jeszcze helpa i ksiazke Dodano po 13 Skad masz ten kod?
wgraj drugi program i podziel temperaturę przez 2 :) (temperatura >> 1) chyba powinno dobrze działać ;) 53 / 2 = 26.5 czyli twoje 26 w pokoju :) a w pierwszym pomnóż przez 8 ;) 3,3 * 8 = 26.4 Założę się ze będzie działać poprawnie
Znalazłem coś takiego i działa świetnie ale mam parę pytań #include <avr/io.h> #include <util/delay.h> #define F_CPU 8000000UL // 8 MHz #define LCD PORTD #define E 3 #define RS 1 #define SET_E LCD |= _BV(E) #define CLR_E LCD &= ~_BV(E) #define SET_RS LCD |= _BV(RS) #define CLR_RS LCD &= ~_BV(RS) void...
Dobrze nawet zrozumiales z tym znakiem. ale jesli temperatura jest ujemna to negujesz calosc i odejmujesz 1 zeby miec poprawna temperature (potem dzielisz na 16). i tyle filozofii.. a swoją drogą nie masz zamrazalnika? wez kostke lodu i sprawdz.... ;]
Czy ten wyświetlacz: http://sklep.avt.pl/p/pl/483143/wyswietl... zadziała jako wyświetlacz temperatury sterowany atmega8 i czujnikiem DS18b20?
Nie poradziłem sobie. Zrobiłem sobie termometr na LM35.
już chyba wiem jak policzyć temperaturę :) temperatura jest na 11 bitach (12 to znak) przykład: 2000 - 125 stopni 8 - x stopni x=(8*125)/2000=0,5 stopnia i to sie zgadza z tabelka :D czyli muszę teraz tylko połączyć MSB z LSB w 16bitow przesunąć w lewo o 4bity sprawdzić najstarszy bit znaku, a pozostałe 11 bitów pomnożyć przez 0,0625 i mam temperaturę...
Ładnie wykonane mimo iż również uważam że tyle znaków po przecinku jest zbędne. Oczywiście wola autora jak sobie temperaturę chce prezentować. Jeżeli kolega nie lubi wolnego miejsca na wyświetlaczu może dodać np. słupkowy wykres zmian temperatury.
Termostat zrobiony raczej po to, żeby sprawdzić czy to ma prawo działać. Z drugiiej strony moznaby po skalibrowaniu jednego układu poprostu przepisac tablice z EEPROM i sprawdzic czy na innym procku bedeiz dzialać?. Podejrzewaz ze na wiekszosci bedą podobne wyniki a przy założonej dokładności moze to dzialac.
Czegoś nie rozumiem - miałeś błąd w czytaniu temperatury, poprawiłeś odczyt i jest to samo?
miernik temperatura atmega8 atmega8 czujnik temperatura atmega8 temperatura napięcie
bosch chłodziarka panel licznik energia zdalny uszkodzenia przedwzmacniacza
logitech kabel układy zasilające
Przewód głośnikowy a instalacja 12V - czy to bezpieczne? Napięcie wsteczne dwóch diod 1000V połączonych szeregowo