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...
A skąd wytrzasnąłeś takie dziwadło :?: 1 Wreset Ma być bez spacji 1wreset Piotrek
Jak zwykle czasu nie ma, ale nie mogłem się powstrzymać. Nakręciłem pierwszy klip - ahahahaha :D No musiałem się pobawić edytorem. Efekt to półtora minuty magii :D Ahahaha miałem kupę zabawy z tym :D Przy okazji możesz zobaczyć jak się używa wbudowanego symulatora by zadawać wartości ADC ;) Twój pomniejszony kodzik też poniżej, tylko używając poza symulatorem...
Zajrzyj do dokumentacji LM, tam jest pokazane, jak należy go podpiąć, żeby mierzył ujemne temperatury.
Problem jest w sprzęcie a nie w programie. W układzie brakuje kondensatorów ceramicznych 100nF na pinach zasilających uC, LCD, czujnika, wejściu ADC. Nie widzę też filtru na AVCC oraz jakiegokolwiek tantala/elektrolita na zasilaniu. Popraw zasilanie a zamiast analogowego czujnika użyj cyfrowego np DS18B20 na 1Wire.
Jeśli chodzi o ID to chyba najprościej będzie zrobić funkcje i z głównego programu przekazywać do niej ID czujnika, natomiast funkcja będzie zwracać np bit 1/0 OK/ERROR. Podobnie chyba można zrobić z odczytem temperatury.
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...
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
No to spróbuj tego: $regfile = "m16def.dat" $crystal = 4000000 $hwstack = 32 $swstack = 32 $framesize = 32 config 1wire= portb.7 Do 1wreset if err=0 then print "PP_ok" ' czy LCD "PP_OK" - co tam masz else print "PP_err" ' j/w endif waitms 500 Loop Napisz o wyniku doświadczenia :D Piotrek
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ę...
Program do czujnika temp ds18b20 ktory mierzy z dokladnoscia dwoch miejsc po przecinku. Sprawdzony ale tak jak juz koledzy mowili wyniki po przecinku bardzo czesto skacza Deflcdchar 0 , 7 , 5 , 7 , 32 , 32 , 32 , 32 , 32 Config Pind.7 = Output Config Pind.4 = Output Config Pind.5 = Output Config Pina.6 = Output Config Pina.7 = Output Set Portb.0 Set...
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...
Podlaczylem na trzech przewodach i zadnych zauwazalnych zmian nie widac. zalaczam listing programu
Bity mają BASE = 0 Bity się liczy od 0 czyli jak ich jest szesnaście to największy to 15. Nie śpij. Zrób sobie kawę albo przewietrz głowę :D Widziałeś kiedyś PORTB.8 w AVR? :D Jest osiem pinów a najstarszy to 7 bo pierwszy to 0.
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
temperatury zostaja zmienione na lcd ale tylko raz, znaczy się gdy temperatura zmieni się to nie ma zmian na wyświetlaczu. temperatura na lcd zmienia się "live" tylko wtedy gdy trzymam przycisk cały czas. Program działa dokładnie tak jak go napisałeś, w momencie kiedy naciskasz przycisk wartość odczytana jest przepisywana do zmiennej która jest wyświetlana...
Miałem trzy diody i tak jak przewiduje kod jeśli napiecie było poniżej 250mV to jedna z diod świeciła dużo słabiej. Powyżej 300mV słabiej świeci inna dioda. Sprawdź empirycznie ;) Co do diody RGB tam gdzie pisze Set wpisz w kodzie Reset a tam gdzie pisze Reset wpisz Set i powinno się obyć bez wymiany diody ;) Chyba coś takiego ;) [syntax=vbnet] If Reference...
Masz tutaj program odbierajacy dane z rc5 w przerwaniu int0: 'Program umożliwiający odbior danych w standardzie rc5 z użyciem przerwania int0 'dzieki czemu odbior danych nie zakłóca działania programu głównego $regfile = "m32def.dat" 'atmega32 $crystal = 8000000 'kwarc 8MHz Config Lcdbus = 4 Config Lcd = 16 * 2 'wyswietlacz 2x16 znakow Config...
Szukałem na forum i nie znalazłem żadnych informacji na ten temat. Może złe hasło wpisywałem. Proszę o pomoc. Tu jest to , o czym myślałem. http://www.elektroda.pl/rtvforum/viewtop... Piotrek
Witam, migają na przemian - i prawidłowo :wink: Zwróć uwagę, że przed wyświetleniem i czasu, i temperatury czyścisz ekran ( Cls ). :roll: Pozdrawiam, GSM
W skrócie: TYMCZAS=TEMPERATURA TYMCZAS=TYMCZAS + 30 TYMCZAS=TYMCZAS * 1.85 PWM=TYMCZAS Najpierw pozbywasz się wartości ujemnej, a następnie mnożysz przez współczynnik będący wynikiem działania MAX PWM / MAX TEMP , czyli około 1,8 .
...Czy w bascomie można zadeklarować tablicę dwu wymiarową Nie :!: Dla czego przy odczycie danych muszę ponownie resetować magistralę i podawać numer seryjny układu... Bo tak są skonstruowane - patrz tabelki w PDF-ku :) Czy jest możliwe najpierw wysłanie do wszystkich czujników polecenia mierzenia temperatury ... Jasne ;) '... 1wreset If Err=0 Then...
Problem może być ... sprzętowy. Otóż Tiny2313 fabrycznie ma ustawiony zegar na 8MHz i preskaler zegara na podział przez 8 czyli pracuje na 1MHz. Jeśli nie manipulowałeś z Tinką to nie będzie zgodna rzeczywista częstotliwość taktowania uC z zadeklarowaną w programie. Magistrala 1Wire jest bardzo wrażliwa na czas poszczególnych impulsów i nie zniesie...
co prawda w C, ale zasada ta sama: http://mikrokontrolery.blogspot.com/2011...
Mozliwe. Dodales rezystor? Jeszcze masz taka zmienna err w bascomie, poczytaj troche o niej.
Hej! Twój problem polega na specyficznej konstrukcji magistrali 1Wire i tego że wszystkie czujniki są podłączone za pomocą jednej lini i w momencie gdy chcesz pobrać dane z jednego to zgłaszają ci się wszystkie na raz lub ten który jest szybszy. Miałem podobny problem gdy w układzie miałem podłączony czujnik temperatury oraz pastylkę dallasa i efekt...
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 też [url=http://www.elektroda.pl/rtvforum/to... Tu była podobna dyskusja na ten temat. Pozdrawiam
Natomiast jeżeli dam jakąkolwiek prędkość wyższą niż 9600 to na terminalu pojawiają się od razu krzaki. No dobrze ale czy jeśli dasz konkretnie 38400 to też masz krzaki ??? Nie powinno ich być, a jeśli procek pracuje w temperaturze pokojowej to temperatura nie będzie miała żadnego znaczenia. Za to może się okazać, że warto podregulować wewn. oscylator...
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...
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...
Ale wyświetla temperaturę?
Do wartości 255? Skąd taka temperatura?
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...
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...
No to mamy winowajcę. Robienie czegokolwiek długotrwałego w przerwaniu to chory pomysł, ale problem polega na tym, że procedury obsługi LCD nie blokują przerwań na czas wykonywania operacji na LCD - dołóż blokowanie i odblokowanie przerwań na prymitywach LCD i zadziała (jako proteza). żeby zadziałało dobrze - przenieś obsługę 1Wire do pętli głównej.
to wiem tylko ta właściwa temperatura przy rozdzielczości 12 bitów dla np 20 stopni powinna zwrócić 01h 04h a zwraca 00h 28h.
mnie sie udalo uruchomic ten program, chociaz z bascomem mam do czynienia od jakichs 2 godzin to znalazlem blad :) twoja wersja If Temperatura(2) > 0 Then 'jeśli zmienna Temperatura(2)> 0, to temperatura ujemna przeliczenie temperatury 'ujemnej Temperatura(1) = 256 - Temperatura(1) End If 'koniec warunku Temperatura(1)...
Ten oscylator jest niedokładny - zwykle stosuje się do tego celu oscylatory o niższej częstotliwości a najlepiej dedykowane układy z kompensacją temperatury, np. DS3231.
Witam, zauważyłem te post i choć jest bardzo stary, liczę że ktoś odpowie, mianowicie, czy pomiar temperatury z kodu powyżej dotyczy czujników ds18b20 podłączonych w trybie parasite, czy nie?? Pozdrawiam.
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
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...
witam ja bezproblemowo doczytalem V i T z ds2438 zrob tak 1wwrite H&B8 1wwrite H&00 przynajmniej ja tak mam jesli nie bedzie dzialc to daj znac
16 (liczba nie cyfra) ponieważ temperatura odczytywana jest z dokładnością do 4 cyfr po przecinku, dlatego odczytaną wartość trzeba podzielić przez 16 (przesunąć o 4) Bd(1) = 1wread(9) tu do Bd jest wpisanych 9 bajtów ( liczba bajtów w nawiasie) odczytanych przez 1wread(9) z czego 2 pierwsze to temperatura
przed linia Lcd Chr(2) ; "=" ; Napis ; " " ; Chr(1) ; "C" 'wynik dopisz : locate 1,1 pozdrawiam
Witam, co z tego, że wywołujesz polecenie konwersji co 1 sek. skoro zaraz po wysłaniu polecenia konwersji (H44), żądasz odczytu (HBE). DSxxxx potrzebuje czasu właśnie na konwersję i tego powinno się przestrzegać. Myślę że zasilanie DS`ów jak i podłączenie zrobiłeś bezbłędnie :?: Najprościej w Twoim kodzie, to zamień miejscami - najpierw odczyt (HBE)...
Przepełnienie zmiennej jak kolega kamyczek słusznie zauważył. Częsta przypadłość młodych doświadczeniem programistów nie mających jeszcze zakodowane jaki jest rozmiar zmiennej (i w jakim przedziale zmienna może przyjmować wartości). Nie sprawdzałem co prawda, ale mam pewne obawy czy kod będzie poprawnie reagować też na wartości ujemne temperatury.
Kolego marek19951 Opisz jak ma działać to Twoje menu i jak widzisz ustawianie temperatury .
Witam , czy można zrobić automatyczne tzn.po 5s gdy nie był naciśnięty żaden z przycisków wyjście z ustawień menu do wyświetlania temperatury ?
witam nie bawiłem się jeszcze 1921 ale obsługa jest standardowa tylko przy odczycie temperatury musisz dać opóźnienie na konwersje temperatury jakieś 750ms. DS1994 ma wiele funkcji i własny eeprom po za tym można zrobić całkiem dobry system kontroli dostępu zabezpieczenia wszystko zależy od pomysłowości. pamiętaj jedno jak piszesz cokolwiek do 1-wire...
Mógłby to kolega zapisać w C :-) nie bardzo rozumiem jak to zapisać po tej komendzie ONE_WIRE_SendByte(0x44)... Po prostu należy odczytywać 1-bit i sprawdzać czy jest = 1. np. send_byte(0xCC); send_byte(0x44); //_delay_ms(800); while( !(read() ) _delay_ms(10); //... Możesz jeszcze obwarować pętlę...
Miga, bo dzięki tej linijce: T1 = T1 + Hist Twoja zmienna T1 zawsze będzie różna od T2... Tak w ogóle, to nie musisz za każdym razem dawać CLS, tylko wyświetlasz raz statyczne treści, a w pętli jedynie samą wartość temperatury.
A w jaki sposób sprawdzić przyczyny resetowania sie układu? Popatrz na skrót fragmentu Twojego kodu: [syntax=basic4gl] Mainn: '... Gosub Temp '... Temp: '... Gosub Mainn '... [/syntax] Jeśli rozumiesz w czym tkwi błąd, to OK, ale jeśli nie, to ... jeszcze sporo nauki przed Tobą :|
Przetestuj ten. Tak go poopisywałem, że aż mi się nie podoba :D [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 8000000 $hwstack = 40 $swstack = 16 $framesize = 32 '# wyświetlacz Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Cls '# timer ' 8000000Hz(8MHz)/256(Prescaler)=...
Macie racje - teraz juz dziala, ale dalej mam problemy z przecinkiem (wartosc jest 10x wieksza) Edit: z tym tez sobie poradzilem - zostala jeszcze kwestia ujemnych temperatur :)
Krzywa grzewcza w najprostszej postaci to prosta "ax+b" - dobierz doświadczalnie współczynniki "a" i "b" - x to będzie temperatura zewnętrzna.
Zastanów się też jak działa konstrukcja do..loop. Pozdrawiam.
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
Po prawdzie to wpisywałem 01111000. Nie mam tego jak sprawdzić teraz, ale czy może być taka sytuacja ze rs232 wysyła do komputera temperaturę t1 24.5 i ta temperatura jakoś wpada do rejestru UDR i gdy ją wyświetlam komenda LCD <ta zmienna> to pokazuje w kodzie ASCII właśnie tą temperaturę. ?
Wiem, że jest kilka podobnych tematów, które niby wskazują że problemy wynikają z różnic pomiędzy DS1820 a DS18B20, czy ewentualnie błędnej konfiguracji, ale u mnie wydaje się, że w programie jest wszystko ok, a mimo to, moim zdaniem temperatura jest zawyżana o kilka stopni (pomiar w temperaturze pokojowej) pokazuje około 24-26 st C, gdy tymczasem temperatura...
Ale problem pojawił się podczas uruchamiania urządzenia w niskiej temperaturze - po prostu podczas konfigurowania wyjść następuje nieprzewidziane "resetowanie wzajemne" - co ciekawe w temperaturze pokojowej problemu nie było, właśnie z powodu innego czasu uruchamiania. Pokaż schemat i napisz co oznacza według Ciebie "niska temperatura".
chodzi o to, że gdy temperatura nagle zaczyna wzrastać powiedzmy o 3, 4 st. na sekundę to na wykresie nie wykonuje mi się żaden punkt
Witam. Nie bardzo mam koncepcję jak najszybciej wyznaczyć minimum i maksimum mając takie zmienne (BASCOM): Temperatura as Byte (przechowuje wartość mierzonej temperatury) Znak_temp as Bit (przechowuje znak mierzonej temperatury, "0" jeśli "+" i "1" jeśli "-") przy czym maksimum i minimum może mieć zarówno znak "+" jak i znak "-", więc zmienne przechowujące...
wprowadzasz zmienną temperatura2 as single wyswietlanie: if temparatura<>temperatura2 then temperatura2=temperatura LCD .... end if return
Może mi ktoś powiedzieć jak napisać w Bascomie obsługę LM35 dla temperatur ujemnych. Myslę tu o schemacie z diodami od strony masy taki jak producent podaje w opisie. Ale jak mam zrobić to w AVR to już nie wiem. dzięki.
Jest rok 2015 teraz robi się to tak: DS18B20 moze być zasilany z linii transmisji bądź trzecim pinem. Jeśli masz podłaczone 5V na stałe podczas pracy programu czyli do DS`a idą trzy przewody to DS może dla Ciebie przygotować temperature i poczekać spokojnie aż ją odczytasz. Czyli każesz mu przygotować temperaturę i wracasz po nią za sekundę. Kiedy wracasz...
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...
Poprawione sa przyciski ale mrugania temperatura nie ma
Witam Chciałbym wydzielić tylko to co znajduje się po przecinku odczytanej temperatury na przykład w Tempp. Czyli ładuje wartość odczytaną z ds1820 do Tempp potem: Shift Tempp , left , 8 if Tempp >= 10000000 then Tempp = to co jest po przecinku tak?
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.... ;]
Witam. Po wgraniu kodu do obsługi czujnika DS18S20 (Bascom), temperatura wyświetla się kilka jako jedności i kilka miejsc po przecinku (dziele przez 16). Jak zmniejszyć wyświetlaną temp do 1 miejsca po przecinku?
...kwarc jest zewnętrzny 4Mhz, wiec wszystko gra... To po raz N-ty na tym forum , zapytam: A fusebity skonfigurowałeś/przestawiłeś/zmieniłeś/r... :?: Piotrek
Ten program jest taki, że nie wiadomo od czego zacząć poprawiać. Najlepiej byłoby go napisać od nowa :D Niemniej poprawiłem to co ewidentnie musiało być poprawione. Tak na marginesie to nie wiem co za magik wymyślił te ponowne włączanie przerwań w obsłudze przerwania po to tylko by odebrać kod RC5 w przerwaniu. Ludzie to małpują i kłopoty gotowe. Sprawdź...
Temat do zamknięcia , nie potrafię sobie poradzić z obliczeniami wyników temperatury i ciśnienia.
Jaca Dziękuje pięknie teraz wszystko działa jak należy. Zaraz wystawie czujnik za okno i zobaczę co się stanie przy ujemnych temperaturach. 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?
u mnie dallasik (1822) śmiga, tylko ... mam mały problemik z temperaturami ujemnymi. na temperatury dodatnie wydaje sie działać prawidłowo. Sprawa wyglada tak. mamy np -20.2 st. i temperatura spada dalej czyli -20.3 , -20.4 ...-20.8 , -20.9 , -20.0 , -21.0 , -21.1... i co tu zrobić?, co moze być przyczyną?, co sugerujecie?. program jest napisany w asm...
Z tym "else" to nie tak do końca - próg wyłączania powinien być niżej, niż próg załączania, inaczej, gdy temperatura będzie się wahała w okolicach tych 20 stopni, wskazania będą np. 19,9-20.1, zmieniające się co kilka sekund - i wiatrak oszaleje... czyli coś a'la: if (temp > 20) wlacz(); else if (temp < 19) wylacz();...
Zasady pracy jednego i drugiego znam. Tyle że nie mam pomysłu jak tą wiedzę wykorzystać:) Przykładowo dla 100C termopara da mi pewne napięcie, przejdzie ono przez wzmacniacz i da na procesorze 20 ( przykład) , zaś przy 200C będzie to już 84, a przy 300C 168. Nie wiem z jakiego wzoru procesor wyliczy sobie dla każdego napięcia termopary temperaturę ;)
Odp jest prosta: multipleksowanie + timer.
Zobacz tutaj If Flaga_przygotowanie_odczytu = 1 Then Incr Liczniczek_przygotowanie_odczytu [...] -----Breakpoint;)------- Flaga_przygotowanie_odczytu = 0 End If No i tak, powiedzmy że w miejscu które pokazałem program siedzi 2 sekundy. Przerwań było od groma, a Tobie zmienna tylko raz się podniosła. Dlatego takie rozwiązanie jest złe. Musisz...
No widzisz, zawsze tak robię, nawet przy skomplikowanych projektach. Na płytce jest wiele innych rzeczy, m.in RTC i zasilanie do niego. Te 2 elementy po lewej stronie uC to są przyciski do ustawiania godziny. I nie mam zwyczaju osobnego nazywania każdego elementu, także na płytce jest "lekki" chaos... :| (at)tronics: docelowo ma tam być wyświetlana...
Witam zaraz spróbuje czy sposób Kolegi Mazomen coś pomoże. Kolego arktkik1 dlaczego nie możesz zrozumieć co to wyświetlacz 14 segmentowy np. taki: http://obrazki.elektroda.net/45_12692721... Sprawdziłem. Program dobry dla 4 wyświetlaczy ale nie dla 14. Wszystko miga, jak skrócę obsługę do 4 wyświetlaczy to działa dobrze. Dalej jestem w kropce. Ciekawe...
tak, podział przez 8 jest włączony, więc zmieniłem linijkę z taktowaniem na 1000000 i teraz co chwilę zmienia się część ułamkowa z 0 na -1 co jest tym bardziej dziwne że nie ma tu temperatur ujemnych
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.
przy założeniu 8 bitowego PWM, OCRx zmieniać się będzie od 126 - 255, czyli przyjmie wartości 126 + (od 0 do 129). Temperatura zmienia się w zakresie Tl-Th, więc: (uint8_t)(129 / (Th-Tl)) będzie skokiem PWM dla 1 stopnia powyżej Tl jeśli Tl<temperatura<Th OCRx = 126 + ( (Temperatura - Tl ) * (uint8_t)(129 / (Th-Tl)) ) mimo, że nie Bascom, myślę,...
Witam. Jakiś czas temu zrobiłem koledze sterownik w zasadzie wentylatora do pieca. Sterownik w sumie działa według założeń ale czasami dostaje szajby. Do tej pory nie znalazłem przyczyny. Skłaniam się bardziej ku temu że jest to jakiś problem z programem. Problem jest taki że czasami po jakimś czasie wartości temperatur odczytywanych z czujników DS18B20...
Witam! chciałem dokonać pomiaru temepratury przez czas pomiar czasu rozładowania kondensatora. W układzie pomiarowym do pinu Atmega podpinam PT500 i do niego szregowo kondensator 100nF do masy. W efekcioe zastosowania GetRc na wyświetlaczu bardzo mocno skacze mi wartość czasu np. 848, 1356, 3623, 849, .... Próbowałem zmienić kondenastor na większy 470nf...
Tu masz projekt takiego urządzenia. http://www.portalnaukowy.edu.pl/index.ph...
to w tej linijce należy ją usunąc i dzielic przez 10
Witam Temperatura i wilgotność, wyświetla tylko wartość całkowitą. A jak z czytać przynajmniej jedno miejsce po przecinku ?
Tak na partyzanta możesz sobie ze 2-3 razy odczytać temperaturę z DS zaraz przed pętlą główną. Unikniesz wtedy tych 85 stopni.
użyj do obsługi odczytu temperatury z DS timer0 ;) dzieki czemu nie bedziesz musiał zatrzymywać całego programu
Najbardziej newralgicznym czasowo punktem jest obsługa INT0- i od tego trzeba zacząć. Odczyt temperatury trwa 3.3ms a wysłanie żądania odczytu 2.5ms. Oczekiwanie na przetworzenie 750ms- ale nic nie stoi na przeszkodzie żeby odczytywać co np. 5s- temperatura nie zmienia się tak szybko. Obsługa wyświetlacza też jest wolna- spróbuj z biblioteką: $lib "Lcd4busy.lib"...
Witam W ramach dalszego eksperymentowania z AVR i Bascom popełniłem połączenie odczytu z DS18B20 z sterowaniem wyjściem uC ( przez tranzystor FET ) + dodatkową atrakcję - buzer, który sygnalizuje wł/wył tranzystora/wyjścia. Chciałem dodać możliwość zmiany temp max i min, przez proste menu. Menu zrobiłem w oparciu inny mój kod obsługujący ustawianie...
Nie wiem na ile dokłdny będzie to pomiar, ale najprościej w takiej sytuacji mierzyć stałą czasową układu trmistor PT100 oraz kondenstor, który jest rozładowywany przez równoległe dołączony tranzystor. Wszystkim steruje procek. Kłopot tylko taki, że przeliczenie stałej czasowej na temperaturę nie jest liniowe, zresztą jak charakterystyka PT100 w szerokim...
To jest tylko wycinek programu całość programu pochodzi z książki Autor: Marcin Wiązania " Programowanie mikrokontrolerów AVR w Bascom" Ja zmieniłem przeliczenie temperatury z DS1820 na DS18B20 Dim T As Byte Dim TLsb as Byte Dim TMsb as Byte Odczytałem dwa bajty TLsb = odczyt(1) TMsb = odczyt(2) Dodałem do swojego programu T=TMsb + TLsb I podzieliłem...
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.
Jak sprawić aby program wyświetlał max i min wartości temperatury zanotowane podczas pracy programu? W bascomie są polecenia min i max ale trzeba im "zapełnić tablicę" aby miały z czego określić min i max wartość. Nie bardzo umiem się za to zabrać w przypadku ds-a. Kombinowałem żeby podczas jednego cyklu przypisać wartość a do b i po resecie ds-a porównać...
Witam. Może spróbuj tak po wywołaniu przerwania ( u Ciebie co sekunda) Odczytaj termometr DS. A następnie wydaj rozkaz pomiaru temperatury. W następnym przerwaniu odczytasz go o tak w kółko.
bascom temperatura bascom pomiar temperatura bascom regulator temperatura
wskazania obrotomierza zmywarka amica silnik z18xe wymiana silnika
stabilizator lm7812 polar cz340
WELO 400: Zmiana kolejności zamykania skrzydeł Brak reakcji reala gazu w maszynie myjącej - przyczyny i diagnoza