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...
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...
Nie wiem czy chcesz się nauczyć czy potrzebujesz program. Na początek te uwagi: 1. Nie wiem co tam robi dyrektywa $eeprom. Jest niepotrzebna w tym kodzie 2. Zmienna Ds jest zwiększana w przerwaniu niezależnie od tego czy jesteś w Menu czy nie. Tak więc po powrocie z Menu już na pewno nie zdążysz załapać się na warunek If Ds = 2 i wyzerować jej wartość....
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
A skąd wytrzasnąłeś takie dziwadło :?: 1 Wreset Ma być bez spacji 1wreset Piotrek
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...
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
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.
Mniej wiecej tak to mozna zrobic ;) Listing do AVR-a pozmieniaj nazwy portów '################# wyswietlanie temperatury ######################### Multiplex: Dim Mux As Byte Dim 100stopni As Integer Dim 10stopni As Integer Dim 1stopni As Integer Dim Dstopni As Integer Config Porta = &B11111111 Config Portc = &B11111111 T2 = Abs(t1) Porta = &B11111111...
ja zrobil bym cs takeigo: Dim X As Byte set p2 jazda: if p2.6 = 0 then set X if p2.4 = 0 then reset X if x = 1 then wyświetlana = first if x = 0 then wyświetlana = second odczytaj z ds`a first odczytaj z ds`a second lcd wyświetlana goto jazda: Mam nadzieje ze pomoże to co zmieniłem zaznaczyłem. Sprawdz. jak i napisz jaki bedze rezultat
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...
Zajrzyj też [url=http://www.elektroda.pl/rtvforum/to... Tu była podobna dyskusja na ten temat. Pozdrawiam
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...
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.
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...
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...
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 .
generator wewnętrzny jest bardzo niestabilny, mocno zależy od temperatury. Daj kwarca albo skoryguj wewnętrzny oscylator rejestrem OSCAL.
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
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.
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
Mozliwe. Dodales rezystor? Jeszcze masz taka zmienna err w bascomie, poczytaj troche o niej.
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.
przed linia Lcd Chr(2) ; "=" ; Napis ; " " ; Chr(1) ; "C" 'wynik dopisz : locate 1,1 pozdrawiam
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.
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...
dzieki wielkie za pomoc
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.
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ą :|
stosując odpowiednią funkcję a na serio - nawet nie napisałeś w jakim języku programujesz.
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)=...
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...
...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...
Prawidłowe wywołanie procedury musi być PRZED end,a nie po. [syntax=basic4gl] If Menu = 3 Then Menu = 0 call wyswietl_temperature End If [/syntax] Proponuję zrobić "po mojemu" czyli declare sub i sub wywoływany call'em.
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ę...
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 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...
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...
A może podejść do problemu inaczej, np. dodać locate 1,1 na początku i dajmy na to co 20 pętli robić Cls? (at)poniżej - po prostu to wskazuje nie tyle na zwalony czujnik co na to, że w pewnym momencie LCD dostaje nie to co trzeba lub nie tak szybko/wolno jak trzeba i zaczyna się sypać to co jest na wyświetlaczu.
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...
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...
Dziwne wartości wyświetla. -2950.2 Reset T.15 Lub T = T + 32767 T = T * -1 Ta sam wynik -2950.2 Locate 4 , 1 LCD T ; " " If T.15 = 0 Then 'Ciepło + temperatury Locate 1 , 1 Lcd "T:" ; T ; "," ; Ti ; "C " End If If T.15 = 1 Then 'Zimno - temperatury T = T + 32767 T = T * -1 Locate 1 , 1 'Lcd "T:"...
Poprawione sa przyciski ale mrugania temperatura nie ma
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...
Jak wgrasz .hex'a do uC to sie przekonasz, a wtedy jesli nie bedzie dzialac to zadaj pytanie "dlaczego nie dziala?" zamiast "czy to dziala?". A odnosnie tego co juz masz to piszac wyswietlajac dane na LCD w ten sposob: {...} Lcd " T1 'c" Cls If T1 > T2 Then Deflcdchar Print , 4 , 14 , 21 , 4 , 4 , 4 , 4 , 4 ' replace ? with number...
O tak: If temp < -1 then zaswiec else zgas end if A jeszcze lepiej: If temp < -1 then zaswiec else if temp > -1 then zgas end if end if Tylko najpierw musisz mieć dobrze odczytaną temperaturę w zmiennej temp - znajdziesz tu masę przykładów, bo temat wraca co tydzień.
Jak wpiszesz do wartości bajt liczbę 380 ??? Jak dodasz dwie wartości to też w obrębie bajtu czyli suma mniejsza od 255 ;) musisz sobie zmienić deklaracje na zmienne 16 bitowe
Juz to widzialem wczesniej, bardziej chodzi mi o realizacje programowa w assemblerze - bascom. Temperatury maja byc stabelaryzowane. Calosc realizowana na plytce ewaluacyjnej aTmega
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 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...
Z tego co przeczytałem w pdf to wystarczy [syntax=basic4gl]Temp=Lsb; if Msb<>0 Then Temp=Temp*-1 end if Temp=Temp/2;[/syntax] W msb jest tylko 0 lub 255.
Z tego co pamiętam to różnice były między innymi przy dokładności pomiaru dla różnych napięć zasilania (5V a 3.3V). Więcej nie pamiętam. Możesz sprawdzić w nocie katalogowej?
recznie to w kodzie poprawilem i z ropzedu zle wpisalem, to jest poprawnie :) moj blad gdyby to bylo zle to nic by nie dzialalo
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...
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...
to w tej linijce należy ją usunąc i dzielic przez 10
Muszę napisać program do pomiaru temp za pomocą termoistora i kondensatora. Jednak nie moge uzyc "getrc". Czym mogę go zastąpić? Moze mi ktoś napisac jak powinna wyglądać taka procedurka?
Witam! Rozumiem że spora część starszych forumowiczów jest podirytowany gdy nie znający prawa ohma pytają się jak podłączyć diodę,ale skromne "&H33" wiele by mi pomogło :crazyeyes: Oto poprawny kodu dołu. Mam pytanie jeszcze odnośnie czekania przy odczytywaniu temperatury nie da sie tego jakoś obejść? $regfile = "ATtiny2313.dat" $crystal =...
Nie bardzo mam teraz ochotę zgłębiać kod ponownie, ale pamiętam że w Twojej wersji Timer odmierzał czas 20s i kiedy nadszedł czas to w przerwaniu mierzył temperaturę Dallasem DS18B20 i w dodatku pisał od razu po wyświetlaczu :D Dlatego jedną ze zmian było to, że Timer tylko ustawia flagę by dokonać pomiaru i go wyświetlić. Tak więc dopóki nie jesteś...
Witam, Mam pewien problem z napisaniem programu wykonujący wykres temperatury w czasie. Probowalem używać funkcji PSET, w pętli ale nie uzyskiwałem efektów. Czy ktoś może zrobił coś podobnego??
Czy przypadkiem zmienna I nie zwraca ci temperatury ujemnej gdy ona występuje? Znak jest zawarty w drugim bajcie => patrz datasheet.
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
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)...
Podlaczylem na trzech przewodach i zadnych zauwazalnych zmian nie widac. zalaczam listing programu
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...
Witam Temat może i wałkowany kilka krotnie, ale siedze nad tym jeż 3 dni i nie mogę odczytać temp z DS1820 i wyświetlić na LCD 16x2, na AT89S52 wszystko działa mi elegancko czujniki sprawne, napisze drugi program pod Atmege, wykrywa mi czujnik, i wyswietla komunikat jak odepne, ale ciagle mam 0 stopni, może ktoś ma na 100% sprawdzony program, moze jakieś...
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...
Ponieważ diabeł tkwi w szczegółach, po zaglądnięciu na początek i koniec Twojego kodu wskażę Ci co tam napisałeś, bo być może coś umknęło Twojej uwadze: problem polega na tym ze temperature odczytuję dobrze natomiast wilgotność wskazuje 3 % i co pewien czas wskoczy wartość 30-35%. i co ja mam sobie myśleć? Więc zadam pytanie czy to jest Twoja praca?...
Konfiguracja?
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?
Sorki wszystkich,ze nie na temat.Czy może mi ktoś doradzić,jak sobie poradzić z wyświetlaczem z lispolu?Chciałem zmontować termometr i za diabła nie może ruszyć,górna linijka świeci i nic po za tym.Jestem ciemny w pisaniu programu,więc korzystam z gotowców.Atmega dobrze zaprogramowana-tak twierdzi bascom.Da się to zrobić,tylko trzeba wiedzieć jak,ja...
Witam ! Program który przedstawiłeś działa, tak pokazuje temperaturę w Poznaniu za oknem: http://obrazki.elektroda.pl/9998290700_1... Pozdrawiam. Stefan ps. szkoda że nie pokazałeś swojego projektu ( zdjęcie )
Kolega Zumek ma rację :) To samo chciałem poradzić - tą spację na końcu. Z drugiej strony pierwsza propozycja jest lepsza - można to zrobić tak, że znak st. i C zostają na wyświetlaczu, a zmienia się tylko wartość. np. IF temp>100 THEN LOCATE 1,8 LCD temp END IF IF temp<100 THEN LOCATE 1,8: LCD " ";temp END IF [color=#] wcześniej musisz tylko...
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...
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
Temat do zamknięcia , nie potrafię sobie poradzić z obliczeniami wyników temperatury i ciśnienia.
A co to znaczy ze wyswietla temperature nie liniowo ?
Krzywa grzewcza w najprostszej postaci to prosta "ax+b" - dobierz doświadczalnie współczynniki "a" i "b" - x to będzie temperatura zewnętrzna.
Witam, zdecydowałem się ponownie poruszyć temat najpopularniejszego chyba układu na elektrodzie - przeczytałem chyba wszystkie posty i wydaje mi się, że zastosowałem się do porad dla innych pytających - a jednak: układ teoretycznie dobrze mierzy temperaturę, jest to DS1820 na 3 przewodach +, - i sygnał przez 4,7k do + do 90S2313, kwarc 4MHz. W pokoju...
Ale wyświetla temperaturę?
czytałem wolniej i efekt ten sam:(
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.
Witam. Chciałbym przedstawić inkubator własnej konstrukcji do wylęgu jaj . Został on odwzorowany na konstrukcji jednego z forumowiczów, lecz w większej wersji i została wykorzystana do tego celu stara lodówka. Do utrzymywania temperatury w inkubatorze został zaprojektowany termostat na Atmedze8 wraz w wyświetlaczem. Do tego został napisany prosty program...
Codziennie w tym dziale ktos zadaje pytanie dotyczace termometru na DS18B20. Moze jak Dallas przestalby wysylac darmowe probki to moze w koncu te pytania by sie skonczyly :D Poszukaj na forum bo takich zrodel i to w dodatku w Bascom'ie jest tyle, ze jakbys je wszystkie wydrukowal to spokojnie mozesz sobie nimi pokoj wytapetowac :D Ponawiam pytanie Balu:...
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
[syntax=vbnet][/syntax]Witam; Małe pytanko odnośnie wyświetlania wyników - dokładniej chodzi o temperaturę ujemną [syntax=vbnet]1wreset 1wwrite &HCC 1wwrite &H44 Waitms 750 1wreset 1wwrite &H55 1wverify Dsid1(1) If Err = 0 Then 1wwrite &HBE T = 1wread(2) T = T * 10 T = T / 16 S = Str(t) S = Format(s , " 0.0") Lcdgoxy 1 , 3 Lcdstr S , 2 , 0 Lcdupdate[/syntax]...
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ę,...
Sprawdź opcje BASCOMA (Options-> Compiler-> Communication), bo może masz domyślnie inną częstotliwość kwarcu ustawioną niż w zapisie programu i dlatego po kompilacji nie chce działać...
Może trzeba by było zdefiniować prędkość zegara w programie bascom :?:
usunąłem jedno zero dalej lipa
trochę późno ale co tam , tu masz link z przykładami obsługi lm76 : http://www.qsl.net/pa3ckr/bascom%20and%2...
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.
Ź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?
Tu masz projekt takiego urządzenia. http://www.portalnaukowy.edu.pl/index.ph...
Do wartości 255? Skąd taka temperatura?
użyj do obsługi odczytu temperatury z DS timer0 ;) dzieki czemu nie bedziesz musiał zatrzymywać całego programu
Witam! Czy ma ktoś może procedurkę umożliwiającą pomiar temperatur ujemnych, dla DS1820 w Bascom-ie? Jak to jest, że w dokumentacji pisze, że rozdzielczość tego układu wynosi 0,5`C a za pomocą procedurki często spotykanej np. w Bascom mierzymy tą temperaturę z dokładnością 0,1`C ? Czy da się zmierzyć temperaturę w zakresie -30 +40 z dokładnością 0,1`C?...
temperatury bascom bascom pomiar temperatury regulator temperatury bascom
honda civic temperatura silnik komputer naczep wiena mostek
sterownik movera sterownik movera
Długie uruchamianie dekodera - przyczyny i rozwiązania Kontrolki na obrotomierzu Renault Mascott 3.0