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.
Ale za to otrzyma wynik bez przecinka :)
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
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...
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.
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?...
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...
Pozbądź się operacji na przecinku nie bardzo rozumiem
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.
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.
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.
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.
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ść.
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.
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:-)
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.
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!!!
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
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
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...
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
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...
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ą...
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ć
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...
Witam. Ostatnio popełniłem kod w języku C żeby uruchomić popularny czujnik DS18B20. Przepisałem z zrozumieniem na tyle ile potrafiłem kod znaleziony w sieci, został trochę zmodyfikowany. Dodałem wyświetlanie temperatury z zmiennej po przecinku na LCD. Przedstawiam kod: [syntax=c] #define F_CPU 8000000UL #include <HD44780.h> #include <HD44780.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.
Ł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...
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,...
Witam, jestem początkujący więc proszę nie krzyczcie na mnie. Chciałem zrobić termometr na atmega16, z temperaturą wyświetlaną na 3 7-segmentowych wyświetlaczach LED (trzeci to 1 liczba po przecinku). Z głębin internetu udało mi się wyłuskać coś takiego: main.c [syntax=text]#include <stdio.h> #include <avr/io.h> #include <util/delay.h>...
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 ten fragment odczytuje czujnik i pod zmienną T1 umieszcza wartość tempreatury (z pełną rozdzielczością...
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,...
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ę...
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...
typ float chyba powinien być.. Te czujniki zapisują dane z przecinkiem ze wzgledu na ich dokladnosć do 0,1 albo 0,5 st c.
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...
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ć.
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...
Witam wszystkich. Może ktoś pomoże znaleźć mi błąd w kodzie . Otóż zlutowałem układ do pomiaru temperatur , ciśnienia, oraz wilgotności , zaprogramowałem na Atmedze 16 oraz wyświetlam wyniki na LCD 2x16. Po podłączeniu zasilania układ nie zawsze rusza, widać czarny ekran, kilkukrotne podłączenie i odłączenie zasilania, sprawia ze układ rusza i pokazuje...
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.
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...
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
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...
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 !!!
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 :)
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?...
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.
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.
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...
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...
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
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 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 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...
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 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...
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...
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)...
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...
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.
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).
(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...
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...
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.
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...
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...
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...
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...
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...
...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...
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);...
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...
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...
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...
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...
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 "." ?
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)...
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.
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...
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...
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! 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...
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...
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...
Witam Mam taki kod: $regfile = "m328pdef.dat" $crystal = 14745600 $baud = 9600 ' predkość transmisji $hwstack = 128 ' rozmiar stosu sprzętowego $swstack = 128 ' rozmiar stosu programowego $framesize = 128 ' rozmiar ramki Do Locate 3 , 1 Lcd Ss1 ; Chr(0) ; " " Locate 3 , 10 Lcd Ss2 ; Chr(0) ; " " Locate 4...
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...
Tak Granat:) , dane odczytujemy z ramu kości. :) To fakt zumek . Rozdzielczość i dokładność to dwie różne rzeczy. Sam czujnik DS18B20 ma dokładność ±0,5°C, a przy próbkowaniu 12 bitów daje rozdzielczość 0,0625°C. W niektórych zastosowaniach warto jest z tego skorzystać, tymbardziej że układ daje taką możliwość bo przy dalszej obróbce wyniku też...
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
Witam Zachęcony sukcesami z płytką EVB 4.3 zaprojektowałem i zamówiłem swoją - na początek z AtMega8 w DIP. Do tego pamięć 24C32 oraz układ do RS485. Wszystkie układy mają kondensatory 100 nF ( stabilizator 7805 również + jeden elektrolit ). Całość ze złączem pod wyświetlacz 2*24 ( właściwe 4*12 ) Reset przez rezystor 10 K do +5V AtMega8L ( na 8 MHz...
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...
[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...
Odkąd to DS18B20 pozwala na prezentowanie wyniku z rozdzielczością 0,01°C?? 0,0625 raczej... Ujmując to dziesiętnie otrzymamy 0,1°C Po co Ci odczyt do 2 miejsca po przecinku skoro sterowanie grzałką masz włącz/wyłącz? Nie ma to najmniejszego sensu. Zrobiłem podobny sterownik. Grzałkę załączałem triakiem podłączonym pod PWM z µC. Sterowanie wygląda...
Dzięki za program, udało mi się odczytać 2 bajty. Niestety nie posiadam wyświetlacza alfanumerycznego i korzystam z 4 wyświetlaczy sterowanych multipleksowo, więc mam problem z rozszyfrowaniem znaczenia bitów. Z moich obserwacji pierwszy bajt ma duży wpływ na temperaturę, ale nie pokazuje on chyba prawidłowej temperatury w kodzie dzisiętnym... Na drugim...
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ć...
wyświetlanie przecinku excel przecinku bascom przecinku
solar wężownica router zakłóca bluetooth cewka pompa
wistron matryca rozdzielnia elektryczna
Zawór AquaStop do zmywarki Siemens SF24M230 – numery części, kompatybilność, montaż Nissan Qashqai J11 – podłączenie przewodów czarny, niebieski, biały do żaluzji chłodnicy