Poprawiłem - nie sprawdzałem. Dim Odczyt(2) As Byte dim T As Integer dim T1 As Single dim T2 As Single Dim Temp As Long Do Ds18b20 Print Temp Wait 1 Loop End Sub Ds18b20 1wreset 1wwrite &HCC 1wwrite &H44 Waitms 750 1wreset 1wwrite &HCC 1wwrite &HBE Odczyt(1) = 1wread(2) T = Odczyt(2) Shift T , Left , 8 T = T + Odczyt(1)...
Z tego co przeczytałem wynika, że odczyt temperatury z DS18B20 najdokładniej dziesiętne można wyświetlić tak: ZSDJ,XXXX Z- znak S,D,J- wiadomo XXXX - liczba po przecinku, która zawsze jest iloczynem liczby 2^(-4)=1/16=0,0625 i liczby od 0-15 (0000b-1111b) Gdyby wynik wyświetlać tylko do drugiego msca po "," (ZSDJ,XX), to nigdy nie wyświetliło by np...
Opornik jest potrzebny. Jeśli chcesz wiedzieć dlaczego to zobacz: https://datasheets.maximintegrated.com/e... Strona 7, 10 i dalej.
Porty L i G należą do rozszerzonych. Przeczytaj rozdział w Helpie Bascoma - Config 1Wire. Skonfiguruj dowolny pin jako 1Wire i dopisz po przecinku - Extended. Powinno się coś zmienić ;)
Wynik po przecinku skacze, bo DS18B20 mierzy temperaturę z rozdzielczością do 1/16 st. C. Tak więc nie ma najmniejszego sensu wyświetlać temperaturę z dokładnością do 2 miejsc po przecinku.
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,...
Ale za to otrzyma wynik bez przecinka :)
Według informacji o bibliotece "dallastemperature", funkcja do zmiany rozdzielczości wygląda tak: // set resolution of all devices to 9, 10, 11, or 12 bits // if new resolution is out of range, it is constrained. void DallasTemperature::setResolution... newResolution); Więc w Twoim przypadku inicjalizacja biblioteki i czujnika powinna...
Dzielenie przez 16 to to samo co przesuwanie bajtu w prawo o 4. Czyli jest to wywalenie jakby 4 najmłodszych bitów, czyli odczyt temp będzie z dokładnością do 0,5 stopnia. Zajrzyj do notki. 5 najstarszych bitów to znak czy dodatnia czy ujemna, a 4 najmłodsze oznaczają miejsca po przecinku. Rozumiem ze zmiana z systemu binarnego na dziesiętny jest znana?...
Trzymaj. Soft do 18b20 z obsluga lcd 2*20 na hd44780. temp ujemne, dodatnie, wyswietla z rozdzielczoscia do 1 miejsca po przecinku. pozdr ------------ dopisalem: to oczywiste za jak piszesz posta to masz problem, wiec po co to podkreslac w temacie ;) pozdrawiam.
to prawda przesada ale ds18b20 niby z tyloma miejscami po przecinku działa. Jutro przetestuje ten kod i dam znać do czego doszedłem. Dzięki
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
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...
Chciałbym żeby był pomiar do tych -10 ale chyba go sobie narazie odpuszcze. Ale dosyć dziwna jest ta sytuacja, tak jakby T nie było takie jak ma być :] , jedynie przecinek wychodzi ok :)
Pozbądź się operacji na przecinku nie bardzo rozumiem
Krejzol_3000 - aby zapalić kropkę musisz dodatkowo dla danej pozycji wyzerować lub ustawić (w zależności od sposobu sterowania A/K) linię odpowiadającą za kropkę;) PORT_WYS = ~cyfra(cyfra2); PORT_WYS &= ~(1<<2);// przecinek
Przede wszystkim zrezygnuj z float, które w tym przypadku jest kompletnie zbędne. Zamiast tego pomyśl - np. 1.9 to to samo co 19, wystarczy tylko przesunąć przecinek. Analogicznie można sobie przekonwertować część ułamkową temperatury.
Wklejam tutaj podprogram w którym czytam dane z termometru a potem je przetwarzam: Sub Termo Disable Interrupts 1wreset 1wwrite &HCC 1wwrite &HBE Odczyt(1) = 1wread(2) T = Makeint(odczyt(1) , Odczyt(2)) If T < 0 Then Set Minus Else Reset Minus End If T = Abs(t) T = T * 10 : T = T / 16 Przecinek...
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
...Nadal mam problem z minusem, zastosowalem funkcje Abs i nie ma juz tego "automatycznego minusa" ale wszystko dziala dopuki stosuje Ttt = Abs(ttt) tylko do wskazan z jednego czujnika. gdy zrobie to samo dla drugiego mimo, ze stosuje dwie nazwy (Ttt1 i Ttt2) to ta funkcja przestaje dzialac i mimo ujemnych temp minus sie nie wyswietla. Co jest nie...
Wiem że to nie najlepsze rozwiązanie, ale nie ogarniam tej histerezy. Na biurku zachowuje się identycznie. Zresztą każdy tak się będzie zachowywał. Przynajmniej DS18b20. Tyle że to są skoki po przecinku. Ale to wystarczy do "szarpania" sterowaniem.
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...
Masz dużo racji. Prawdopodobnie to co napisałeś zadziała. Następnym krokiem ( pomnożyłeś przesuwając w lewo 4 razy przez 16) będzie podzielenie przez 16 i rzutowanie na zmienną single. Otrzymasz temperaturę dodatnią lub ujemną z dokładnością bodajże 4 miejsc po przecinku.
W załączniku kod źródłowy wsadu dla wyświetlaczy 2x16, 3 czujniki, z wyświetlaniem temp. do jednego miejsca po przecinku. Dolna linijka (trzeci czujnik) bez problemu wyświetla dwucyfrowe ujemne temperatury.
Ja pisze też w Basicu lecz na PIC'i i robie to tak: 1. Czytam wartość z czujnika 2. Podstawiam pod zmienną FLOAT 3. Zmienną mnoże przez 0.0625 4. Wyświetlam z dokładnością do jednego miejsca po przecinku i chodzi dobrze.
Witam Nie za szybko żądasz odczytu z DS18B20? Poczekaj na konwersje. Formatowanie z dwoma miejscami po przecinku, ma tylko walor poglądowy. Dokładność pomiaru to 0,5st C, raczej odczytuj z jednym miejscem. A dla estetyki dodaj 0 do wyświetlanej wartość.
No kapnąłem się z tym tds :D No nic wielkie dzięki!!!!, jak ktoś ma pomysł jak po przecinku do tego wyświetlić to proszę o pomoc!!!
Mam czujniki o symbolu ds18b20,pewnie różnią się od Twoich,nie wiem tylko gdzie i co zmienić żeby było poprawne wyświetlanie dziesiątek części stopnia po przecinku. Ale pewnie jak tylko znajdziesz troszkę czasu to mi pomożesz:-)
Bo jest funkcja blokującą, w kodzie pewnie ma "while" i jak to bywa przy 1wire. Przy dużej dokładności DS18B20 blokuje chyba z 10s dlatego jest mało zwolenników tych czujników
Przejrzałem jeszcze raz przykłady i wykombinowałem coś takiego: [syntax=c] float tempco = sensors.getTempC(insideThermometer); [/syntax] Zadziałało. Teraz mam problem jak z wyniku pomiaru wyrzucić wartości po przecinku.
bo nie jest on dostosowany do liczb ułamkowych można go łatwo zmodyfikować napisze ci go tylko podaj jaka dokładność jest tzn. ile liczb po przecinku
Ja dokładnie tak zrobiłem, wyświetlam same 8-ki i po chwili pierwszy odczyt wskakuje. Jeszcze nie mam pomysłu jak rozwiązać problem przecinka w temperaturze np 23,4. Nie wiem czy dobrze myślę, najprościej dostawić mnożenie x10 i wyświetlać jako 234 a przecinek po prostu włączać w odpowiednim momencie, nic innego nie przyszło mi do głowy.
Poza tym warto się zastanowić czy konieczne jest korzystanie z typów float do tak prostych celów??? Przecież w 100% można się obejść bez nich robiąc proste działania na liczbach całkowitych. W zależności od tego ile masz miejsc po przecinku w temperaturze to przez tyle pomnożyć liczby składowe w tym działaniu. Np jeśli będą dwa miejsca po przecinku...
http://obrazki.elektroda.net/32_12641679... Dodano po 3 Czytałem te tematy, potrzebuje programu na wyświetlacz 7-segmentowy: pierwszy znak to minus (albo pusto), drugi to liczba dziesiątek, trzeci to liczba jedności, a czwarty to liczba dziesiętna po przecinku.
to mój pierwszy projekt z wykorzystaniem ds18b20 i bardzo możliwe że kiepsko napisany. I rzeczywiście minus pojawia się po przecinku, spróbuję to poprawić
Zamiast powtarzać "if" daj "Select case" Zamiast stringów daj byte potem mnóż razy 100 zniknie ci przecinek. Korzystaj z funkcji Fusing. Podaj w którym miejscu przeszkadza Ci byte to spróbuję Ci pomóc.
Wypróbowałem obie funkcje i niby obie działają. Ale dlaczego po zastosowaniu wynik nadal zawiera miejsce po przecinku np. 20.0 , 21.0 Dodam ze chodzi mi o to żeby odrzucić część ułamkową z wyniku pomiaru termometrem ds18b20 tak aby była tylko część całkowita. Czy to że do wyniku dodawane jest zero po przecinku może być wynikiem tego że moją zmienną...
Dziękuje za pomoc, rzeczywiście wzór którego używałem był błedny. Do konwersji na string używam funckji itoa(); Zastanawiam się czy da się jakoś wyświetlić przecinek z infromacji które przesyła ten układ czy trzeba kombinować z dzieleniem przez 10 i ręcznym wstawianiem znaku "." ?
w skrócie to tak powinna wyglądać procedura odczytu temperatury z tego termometru i to napewno działa :D 1wreset 1wwrite &HCC 1wwrite &HBE Odczyt(1) = 1wread(2) T = Makeint(odczyt(1) , Odczyt(2)) Tspr = T T = Abs(t) T = T * 10 : T = T / 16 Przecinek = T Mod 10 T = T / 10 1wreset 1wwrite &HCC 1wwrite &H44
Wewnątrz firmy to możesz sobie testy zrobić do rozbicia o kant ... Nic nie warte. Chyba, że macie komorę, to zwracam szacun. Mamy komorę. leonow32 W pełni się zgadzam. Zamieszczam wyjaśnienie odnośnie obsługi czujników 1wire DS18B20, ktoś mnie o to zapytał na PW. jest wersja z 1-wire. Zamiast wejścia 8 podpina się czujniki. DS18B20 jest obsługiwany...
Łopatologicznie to by było tak... Masz zmienną o nazwie np. LICZBA=123 i chcesz z niej wyodrębnić setki, dziesiątki i jedności... Musisz stworzyć nowe zmienne typu całkowitego, np. SETKI=LICZBA/100 --> (123/100 = 1,23 zmienna typu całkowitego utnie te 23 po przecinku i zostanie 1 --> SETKI=1) DZIESIĄTKI=(LICZBA/10)-(SETKI*10) --> (123/10=12 --> 12-1*10=2...
typ float chyba powinien być.. Te czujniki zapisują dane z przecinkiem ze wzgledu na ich dokladnosć do 0,1 albo 0,5 st c.
Zmniejszenie wartości rezystora ani wstawienie kondensatora (470uF) między masą, a zasilaniem nic nie wniosło. Cały czas termometr podłączony na przewodzie daje wskazania z niepełnymi wartościami po przecinku. CRC jeszcze sprawdzę ale muszę zmodyfikować program i zapakować do uC.
[syntax=c]float temp = 0; temp = (float)(pad[0]+(pad[1]*256))/16; dtostrf(temp,1,1,buf);[/syntax] Dodam, że to kosztuje cię trochę KB kodu, sporo pamięci i sporo cykli, gdy wystarczy użyć, albo notyfikacji stałoprzecinkowej (fixed point) // nota bene u mnie mimo --fixed-point-enable najzwyczajniej NIE DZIAŁA (kompilator pluje się o nierozpoznany typ...
Witam, dzięki panowie za podpowiedzi. Ja kombinowałem z podzieleniem odczytu. Do odczytu dodawałem 130, wynik dodawałem do stringa , z tego "wyciągałem"(string.substring();) dwa stringi , czyli na wartość przed przecinkiem i po . A po stronie odbiornika łączyłem i konwertowałem ponownie do float. Dlatego było moje pytanie o jakiś prostszy sposób.
linia 110 jest Gosub Przecinek a nie masz podprogramu przecinek: return i mamy 120% czyli o 20% przekroczoną wielkość procka Możemy próbować optymalizować kod lub większego procka max 2K kodu (ostro trzeba będzie wyciąć) czy ten układ attiny musi być czy możesz użyć innego?
Więc pytanie zasadnicze. Jak zaokrąglić otrzymany wynik zmiennoprzecinkowy w bascomie AVR? Wykorzystywanie liczb zmiennoprzecinkowych do odczytu temperatury z DS18B20 jest lekko mówiąc mało rozsądne, zwłaszcza że "po przecinku" może być tylko 16 różnych wartości. Takie rzeczy to się zaokrągla na etapie pisania programu, który potem operuje wyłącznie...
Hejka, Układ DS18B20 jest konfigurowalny, a domyślnie odczyt temperatury jest chyba z rozdizelczością do 4 miejsc po przecinku (patrz dokumentacja nie pamiętam już). Ja swój układ konfiguruję np z dokładnością do jednego miejsca po przecinku z rozdzielczością 0.5 stopnia: 1wreset 'wybieram id układu 1wwrite &H4e 1wwrite 255 1wwrite 255 1wwrite &B00011111...
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 [C], L-bity wyniku po przecinku (L*0,0625 [C]). Wyniki sa zapisane w kodzie U2.
To będzie termometr do basenu(mierzenie temperatury wewnątrz i zewnątrz). Czyli tak jak pisałem - nie ma sensu robić pomiarów częściej niż co 30 sekund, bo to nic nie da. Temperaturę będziesz mierzyć co najwyżej do 1 miejsca po przecinku, bo jakie ma znaczenie 1/100 stopnia w tym przypadku :) Spokojnie zrobisz to bez USART, choć oczywiście można się...
Witam ! DS18B20 jest fabrycznie ustawiony na rozdzielczość 0,0625 stopnia co wymaga czasu pomiaru min 750 ms, Zaś w programie jest 500 ms. Próbowałem u siebie DS18b20 na atmega 16, kwarc 16MHz. Korzystałem z przykładu z książki pana M.W. Niestety pokazywał błędną temp gdyż to jest przykład na DS1820. Więc napisałem sobie wszystko w asemblerze i działa...
Znany i lubiany DS18B20 Dokładność: +/- 0,5 °C w zakresie -10 °C do 85 °C Zachodzi więc pytanie po kiego grzyba ten termometr odsyła wartość temperatury do 4 miejsca po przecinku? Zawsze mnie to zastanawialo... Np +25.0625 +/- 0,5 °C - co to ma być? To jakby na budowie zmierzyć długość domu 12348,67 +/- 10cm. A kiedy super precyzyjne liczby mają sens?...
Czy moze ktos ma juz gotową procedure do odczytu temperatury z termometru DS18B20 w bascomie ? Ano proszę bardzo: Dim Bd(9) As Byte Dim Temp As Word Config 1wire = P1.0 Config Lcd = 16 * 2 Do 1wreset 1wwrite &HCC 'skip rom 1wwrite &H44 'convert T Wait 1 1wreset 1wwrite &HCC 'skip rom 1wwrite &HBE 'odczyt pamieci podrecznej Bd(1) = 1wread(9) 1wreset...
Już rozumiem. :arrow: Bolek Czy Ty masz układy DS18S20 czy DS18B20 bo w obu inaczej się liczy temperature. W 18S20 trzeba dzielić a w 18B20 wystarczy odczytać.
To jaką w oryginale dokładność ma DS że po zaokrągleniu nadal zostają 2 miejsca po przecinku? Wg producenta: ±0.5°C Accuracy from-10°C to +85°C i tylko 4 bity na cześć ułamkową to daje tylko 16 możliwych wartości.
Przypuszczam że jest to wynik przeliczenia wartości z jego rejestrów. Przejdz na DS18b20 i będziesz mił z głowy przeliczenia. W tym termometrze wynik możesz mieć z dokładnością 12bit bez jakichkolwiek przeliczeń tylko odczytujesz rejestry z dallasa. Powodzenia !!!
Witam Chciałbym przy użyciu dwóch przycisków ( nawet jednego, bo pewnie tak się da ) zmieniać czujnik DS18B20, a właściwie wskazania które pokazuje. Mam dwa układy DS18B20 i przy założeniu ( teoretycznym ), że mam mało miejsca na wyświetlanie, więc dobrze by było mieć możliwość zmiany ( na przemian jednym przyciskiem lub dwoma - pierwszy-drugi ). Samo...
nie wiem co te obliczenia mają zrobić, ale nie może po prostu zftormatować sposobu wyświetlania w samym sprintf np.: [syntax=c]sprintf(bufor, "%.1f", temp); [/syntax] albo zrób to na stałym przecinku np: [syntax=c]int a, b, c; c = temp * 10; a = c / 10; b = c % 10; sprintf("%d,%d\n", a, b);[/syntax]
Witam!!! Kolega nie doczytał poprzedniego postu lub go nie zrozumiał - DS18S20 ma 9-cio bitowe przetwarzanie temperatury i tylko ostatni bit jest w ujemnej potędze, więc po przecinku możesz mieć 0 lub 5 i więcej z niego nie wyciśniesz. DS18B20 ma przetwarzanie 12 bitowe (zakres temperatur taki sam co ds18s20), ale ma aż cztery bity w ujemnej potędze...
Właśnie nie chcę używać zmiennych zmiennoprzecinkowych, najwiekszy problem mam z zachowaniem się częsci po przecinku, nie wiem jak to zrobić żeby płynnie się zmieniało, tym bardziej że częśc całkowita w 3 sytuacjach jest 0 - dla np 0.3 , dla samego 0 i dla -0.3, i w tym trzecim przypadku musi byc -0 : |
witam. config.h dołączony, port i pin ds'a również, zasilanie z osobnego przewodu. Tak się zastanawiam czy nie trzeba przypadkiem ustawić zegaru procka tak jak jest w pliku config na 8MHz przez fuse bity? Słuszna uwaga demeus, zapomniałem jakże prostego i zarazem ważnego słowa DZIĘKUJĘ. Więc dzięki wielkie za swój wkład jaki poświęcacie. Dodano po...
Funkcja nie "daje" wskaźników tylko przyjmuje (elementy w nawiasie przy nazwie funkcji oznaczają parametry przekazywane DO funkcji). W tym przypadku po prostu wskazujesz funkcji gdzie chciałbyś aby ona zapisała wynik pomiaru. Po jej wywołaniu masz już wynik (o ile istnieje dany czujnik i działa) w zmiennych subzero, cel, cel_frac_bits. I już możesz...
Skoro kod kol. Michał93b działa, to może wystartuj od niego. Co prawda pomysł na użycie zmiennego przecinka w celu wyświetlenia temperatury z dokładnością 4 miejsc po przecinku jest dla mnie podwójnie dziwny, ale jakoś to podobno działa (tylko nie wiadomo, po co i dlaczego musi być w związku z tym 500 razy wolniej).
Dziękuję za opinie. Racja, schemat powinien być łatwo dostępny, zatem go dodaję. Nie jestem studentem elektroniki ani tym podobnych, to nie jest praca dyplomowa, to jest moje hobby. :) Owszem płytka jest za duża, wszystko (czego finalnie używam) zmieściłoby się na płytce rozmiarami dopasowanej do tej z LCD. Wiem widać "bebechy", ale jak się coś zrobi...
DHT11 nie podaje wartości po przecinku tj. rozdzielczość odczytu jest 1C lub 1%. Niektóre biblioteki same wykrywają typ czujnika innym trzeba podać, może w tym problem? Najlepiej podejrzeć kod i sprawdzić jak definiowany jest typ czujnika i jaki typ danych jest zwracany.
Witam Odkurze ten temat, bo mam w związku z nim jedno pytanie dotyczące kodu, który podał hunterhouse ... Da się jakoś ten wynik co wychodzi zaokrąglić/przekonwertować do jednego/dwóch miejsc po przecinku :?: Za podpowiedzi z góry dziękuje :D P.S. Ten programik pokazuje ujemne temperatury, czy trzeba go dopiero jakoś zmodyfikować :?:
witam problem raczej standardowy bym powiedział :) zakładam, że wolisz wersję skróconą bez wykładu a dlaczego tak itd :D 1wreset 1wwrite &HCC 1wwrite &HBE Odczyt(1) = 1wread(2) T = Makeint(odczyt(1) , Odczyt(2)) Tspr = T T = Abs(t) T = T * 10 : T = T / 16 Przecinek = T Mod 10 T = T / 10 1wreset...
napisz tak: Pomiar_odczyt = Not Pomiar_odczyt 'pomiar_odczyt If Pomiar_odczyt = 1 Then 1wreset 'reset magistrali 1wwrite &HCC 'jeden układ slave 1wwrite &H44 'dokonaj pomiaru Else If Err = 0 Then 1wreset 1wwrite &HCC 1wwrite &HBE 'odczytaj dane z kostki DS18B20 Tempa = 1wread(2) 'tu: dwa pierwsze bajty Tempa = Tempa * 10 'jedno miejsce po przecinku...
A więc snnaap- po usunięciu instrukcji wymienionej przez Ciebie, wynik jest pokazany bez przecinka, czyli np 23,1st wyświetla jako 231. Po zejściu poniżej 10stopni (czyli wyświetlanego jako 100), termometr pracuje nadal prawidłowo i schodzi liniowo coraz niżej. Jednakże im bardziej 'brakuje' cyfer, czyli np jak wynik schodzi poniżej '100', w miejsce...
(at)ElektrodaBot Nasunęły mi się jeszcze dwie kwestie podczas naszej rozmowy: 1) W listingu ISO week użyłeś linii dayOfYear += 28 + (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)); zabiegu, który ja od dawna stosuję eliminując, gdzie możliwe instrukcje warunkowe. Jestem przekonany, że procesorom i uC łatwiej się liczy niż skacze po adresach...
tutaj [syntax=arduino]float temperature = static_cast<float>(static_cast<... * 10.)) / 10.;[/syntax] masz odczyt temperatury od razu zaokrąglonej do jednego miejsca po przecinku do zmiennej temperature. Presentation wykonuje się raz na początku, potem...
jakby ktoś jednak kiedyś przerabiał tą książkę i miałby biblioteki z nazwami takimi jak w książce to mile widziane. Na razie walczę z tymi co mam i próbuje je jakoś dopasować... Ale co dopasować? Przecież jak napisał kolega wyżej, do każdej książki dołączona jest płyta DVD, na której masz wszystko czego ci potrzeba ;) A biblioteki z książki są bardzo...
Wielkie dzięki kolego, druga część odpowiedzi jest jasna i klarowna. Ponieważ nie bardzo rozumiem pierwszą to o jakie okienko chodzi bo jakby co nigdy czegoś takiego nie szukałem... Pozdrawiam Kolego SEBA_X rozumię, że z wartości 21,7 wyciągnę HIGH = 21, a LOW = 7...?. Więc do porównania potrzebowałbym, albo poskładać ją w całość łącznie z przecinkiem...
Dzięki zumek -- ale tyle czasu nikt nie odpowiadał, że zagoglowałem się na śmierć prawie i w końcu znalazłem już teraz super jak dla mnie rozwiązanie.... nie dość, że działa sprawnie i szybko wyszukiwanie urządzeń na magistrali - to jeszcze zawsze ładnie sprawdzana jest crc8 - a do tego co ciekawe automatycznie rozpoznawanie czujników DS1820, DS18S20...
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...
Witam, Napisałem program termostatu i mam niekiedy problem z odczytem temperatury. Wartość temperatury wyświetlana jest dobrze ale co pewien czasz wskakuje mi wartość 85. Jak można tą sytuacje wyeliminować ?. Drugie pytanie- jak zwiększyć precyzje wskazywania (liczba po przecinku). W chwili obecnej wskazywana jest tylko liczba całkowita. Układ DS18B20...
Witam chciałbym zaprezentować mały układzik pomiaru temp. z dwóch czujników Ds18b20 po sieci WiFI. Od dawna chciałem zbudować termometr elektroniczny dla domu który będzie mierzył temperaturę zewnętrzną i wewnętrzną , nawet parę takich zrobiłem niestety zawsze brakowało mi determinacji aby dokończyć obudowę i projekty lądowały w..... (no wiecie na strychu...
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...
DS18B20 i magistrala 1-Wire. Najprościej. Do tego kawałek kodu w Bascomie i zadziała. Dlaczego koniecznie musisz to zrobić na 8051, przecież to już staroć Jak nie masz nic do powiedzenia to się nie odzywaj. Czasami ktoś musi coś zrobić bo mu to jest potrzebne, a nie dlatego, że w EP napisali, że to proste z kawałkiem kodu w BASCOMie. Co do '51 i starocia...
witam mam nastepujacy problem w bascom moze banalny ale nie moge go przesskoczyc:(brak logicznego myslenia) chodzi o pomiar temperatury na ds 18b20 przed wyswietleniem temperatury formatuje liczbe za pomoca polecenia: Str_temp = Fusing(temp , "#.&") wiec z liczby np: 22.6255 zostaje mi 22.6 i moge to wyswietlic jest ok tylko liczba jest zapisana jako...
ale, w poprzedniej bibliotece wykorzystywałem 9bitowe przetwarzanie, bo potrzebuję stopni bez przecinka, a przy tej opcji można próbkować co 100ms. Opieram się na artykule z akademii Nettigo. W obecnej bibliotece nie wiem jak ustawić taką rozdzielczość, nie mniej błąd jest taki sam na starej i nowej bibliotece. Właściwie to ten czujnik mogę odpytywać...
No racja, nie powiedziałem wszystkiego... 1) Zakres mierzonych temperatur to -20°C do +125°C. zatem prawie pełny zakres pomiarowy dla tego czujnika, 2) Dokładność pomiaru - 1, najdalej 2 miejsca po przecinku będą wystarczające, 3) Chciałem zapewnić odświeżanie wartości temperatury co 0.5s, 1s i np 4s, DS18B20, znam, całkiem przyjemne, ale szczerze powiem...
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...
Oczywiście, że się da. DS18B20 przy pomiarze z rozdzielczoscią 12-bit potrzebuje o ile dobrze pamiętam ok. 750ms, czyli da się zrobić powiedzmy pomiar na sekundę... pytanie czy jest sens? Skoro zmienność temperatury otoczenia to max. parę stopni na godzinę. Dzięki rzadkim odczytom, użytkownika nie denerwują szybkie zmiany wyświetlanej temperatury na...
Witam wszystkich! Nie znalazłem tego na forum, poprawcie mnie jeśli się mylę. W ramach pracy magisterskiej buduję sterownik zarządzający komorą chłodniczą. Mam już obsługę czujników ds18b20, problem polega na tym że temperaturę mam w dwóch zmiennych: cel - liczba całkowita (np 25) oraz cel_frac - to co jest po przecinku Porównywanie takiej temperatury...
Witam! Przerobiłem płytkę do wyświetlaczy łuki_mar44 'a, pod wyświetlacze 0,52 cala oraz lekko dłubnąłem też płytkę sterującą. Na obu płytkach dołożyłem jednego goldpina, bo potrzebowałem masy do fotorezystora. Dlatego proszę was o sprawdzenie czy to ma prawo działać. Szczególnie mi chodzi o diody przecinka i fotorezystor, bo przeniosłem go na płytkę...
Witam Temat troszke starawy ale sie podpinam:) Tez kombinuję z roździelczością 0.1'C i troche mi nie wychodzi:) Dziwnie mi dziesiate czesci stopni wskazuje podaje ciąg: np. 23.1;23.2;23.3;23.4;23.5;23.6;23.8;23.12... itd dziwne bo nie ma liczby 0,7,9 tylko jakies 12 i 25 a do 6 idzie ok-dziwne to co po przecinku obliczam wzorem: dziesiatki=temp(7)-temp(6)...
Na mojej płycie ewaluacyjnej STM32F103ZET6 mam fluktuacje na drugim miejscu po przecinku, czyli tragedia. Potrzebuję mierzyć kilka temperatur, między innymi z termopary - tam gdzie się dało zastosowałem DS18B20, a do termopary kupiłem MAX6675 i po kłopocie. Jeśli chodzi o podążanie czujnika za oświetleniem to dawno temu na studiach przerabiałem taki...
Napisałem funkcję zamieniającą dobule na char void USART_wyslanie(char znak) { //Sprawdzanie czy bufor jest pusty while(!(UCSRA & (1<<UDRE))){&... UDR = znak; //while(! (UCSRA & (1<<TXC)) ){} } void Double_To_String(double liczba, int precyzja,...
Witam! Mam pytanie czy kiedy odczytuję część przecinkową temperatury to mając np. 0011 to oznacza że jest to 0,0625 + 0,125 ? Czy może działa to tak że taki stan jest niedopuszczalny i czujnik może przyjmować jedynie takie części po przecinku jak 0,0625 LUB 0,125 LUB 0,25 LUB 0,5 Drugie pytanie: Jak jest dla wartości ujemnych bo z tego co czytam to...
Ja moje menu pisałem na ArduinoMega, może tam poszukaj przykładu najprostszego z możliwych. Jak zrozumiesz jak działa to sobie rozbudujesz do swojej wielkości. Błędem jest czasami i droga przez mękę jeśli od razu chcemy dużą rzecz bez zrozumienia do czego służy każdy przecinek, zmienna. Małe łatwiej zrozumieć. Uruchom male, zrozumiesz to przerobisz...
Witam jakiś czas temu kupiłem na Allegro wyświetlacz VFD od kasy fiskalnej model Fujitsu VF60. Postanowiłem zrobić na nim termometr jednopunktowy z czujnikiem DS18B20, po rozkręceniu wyświetlacza okazało się że jest to wyświetlacz z interfejsem UART i pojawił się problem. W sieci jest sporo projektów termometrów ale wszystkie opierają się na tradycyjnym...
http://obrazki.elektroda.pl/8261296900_1... http://obrazki.elektroda.pl/3509895200_1... Opisany poniżej "nietypowy mówiący termometr" dla większości osób może się wydać zupełnie niepotrzebnym, zbędnym gadżetem. Jednak dla osób starszych, słabowidzących itd. może okazać się pomocny. Typowe, tanie termometry, nie zawsze...
Witam. Ja kiedyś napisałem program który zawierał odczyt z ds18b20. 'tablica temperatury po przecinku Tabtemp(1) = 0 Tabtemp(2) = 1 Tabtemp(3) = 1 Tabtemp(4) = 2 Tabtemp(5) = 3 Tabtemp(6) = 3 Tabtemp(7) = 4 Tabtemp(8) = 4 Tabtemp(9) = 5 Tabtemp(10) = 6 Tabtemp(11)...
BearBeer - prawdopodobnie tak MAT_91: zamień: itoa(ds.tds/2,buf,10);//temper. całkowita write_text(buf); write_text(".\0"); itoa(abs((ds.tds*10/16)%... //części dziesiętne na: itoa((ds.nds[1] << 4) | (ds.nds[0] >> 4),buf,10); write_text(buf);...
Na czym opiera się ta "super dokładność"? Poza rozdzielczością wynosząca 4 cyfry po przecinku, nie ma ani słowa o dokładności. 5 bitów? Co to w ogóle znaczy? Słowo użyte bez sensu... Po wnętrzu nie widać jakiegoś mega dokładnego toru analogowego, więc obstawiam, że dokładność nie jest duża i opiera się na wewnętrznym ADC uC ST (pewnie STM8), ciekawe...
Wszystko masz w dokumentacji układu http://www.iele.polsl.pl/elenota/Maxim/2... Wystarczy przeczytać dokładnie. ... 1wreset 'reset magistrali 1wwrite &HCC 'komenda opuszczenia adresu (bo jest jeden DS18B20) 1wwrite &H44 'komenda rozpoczęcia konwersji Waitms 750 *czeka aż ds18b20 przetwozy temp -tu dobrze 1wreset 'reset magistrali 1wwrite...
Gdyby ktoś z forumowiczów był zainteresowany jeszcze kiedyś dobrym programem czujnika SHT11 to wstawiam. Pomiary mam co niecałą sekundę i w normalny dzień pokazuje wilgotność około 45-50%, do tego temperaturę mierzyłem również SHT11 i czujnikiem DS18B20, wyniki takie same. Odczyt OK ;) [syntax=c]GLCD_WriteStringXY("Pomiary:",... ShtReset(); _delay_ms(25);...
Program wygląda dużo lepiej. I = 1wread(2) pobiera dwa bajty w których znajduje się temperatura. Polecam zajrzeć do karty katalogowej DS18B20 str.4. W I znajdzie się liczba 16 bitowa, gdzie pierwsze 4 bity to znak, następne 8 bitów to część przed przecinkiem, a cztery ostatnie to to co po przecinku. Liczby ujemne są w kodzie U2. S = I / 16 Powyższe...
Witam. Drodzy koledzy, od pewnego czasu borykam się z dość banalnym problemem, mianowicie potrzebuje zrobić termometr z wykorzystaniem czujnika DS18B20, i pięcioma wyświetlaczami LED (3cyfry i znak"°" oraz "C"). Układ zaprojektowałem, schemat w załączniku, płytkę wykonałem, niby wszystko OK, lecz pojawia się poważny problem- Program. Wiele razy robiłem...
dzielenie przecinek wyświetlać przecinek przecinek monitor
philips ustawić godzina gorący przewód video pełny ekran
pętla prądowa skymaster 32sh1000
Adaptacja bojlera z wężownicą do ogrzewania balii ogrodowej Panasonic SC-AKX320 – komunikat REMOTE 1, pilot nie działa, synchronizacja kodu