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,...
...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...
[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...
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 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
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,...
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 :)
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.
Jeżeli chcesz aby kropka w moim sposobie była wyświetlana w tym miejscu tylko dla temperatury to przecież możesz to zrobić tak: PORT_WYS = ~cyfra(cyfra2); if(wyswietlanie_temperatury)PORT... &= ~(1<<2); // przecinek gdzie wyswietlanie_temperatury byłoby zmienną ustawianą na czas wyświetlenia temperatury. Nic prostszego.
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?
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
Zabralem sie za termometr ds18b20. Wczesniej korzystalem z niego, wartosc temperatury wyswietlalem na LCD'ku i wszystko dzialalo. Teraz powrocilem do ukladu z ta roznica ze wart. temperatury wyrzucam szeregowo na kompa. Problem polega na tym ze w hyper terminalu wyswietla mi caly czas jedna wartosc (88). Kiedy wyciagam, w czasie pracy, procka uklad,...
Witam Z racji wolnego dnia postanowiłem jeszcze dokładniej poznać budowę DS18B20 (czasem trzeba sobie co nieco przypomnieć). Odpalam program który zawsze działał i tu niespodzianka... DS działa prawnie do 32 stopni a jeśli temperatura przekroczy ten próg bez względu na to co jest wyświetla 85 stopni aż temperatura nie zjedzie poniżej tego progu. Problem...
Witam właśnie uruchamiam urządzenie z powyższym układem. U mnie w domu temperatura powietrza jest ustawiona około 20*C, na biurku pod lampą i blisko komputera może być oczywiście cieplej. Mam kilka sztuk tego układu, dwa z "nowej" serii i jeden "antyk". Żaden z nich nie był nigdy lutowany. Wszystkie 3 sztuki pokazują temperaturę od około 27*C do prawie...
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...
Witam wszystkich Elektrodowiczów! Otóż muszę użyć układu DS18B20 do pomiaru temperatury. Sięgnąłem po niego, gdyż kiedyś go używałem i działało wszystko OK ;) - jednak nie tym razem :/. Chcę wykonać po prostu zwykłą pojedynczą konwersję temperatury i odczytać ją ze ScratchPada. Wykonuję: 1. Wysyłam Presence Pulse do DS18B20. 2. Otrzymuję "1". (zapala...
Witam Wiem, ze o DS1820 było juz bardzo duzo watkow ale niestesty nie znalazlem w nich odpowiedzi na moj problem. Zbudowalem sterownik wiatrakow do obudowy PC w którym jako czujniki mam wlasnie DS18B20. Czujnikow w ukladzie jest szesc, problem polega na tym ze 3 z nich dzialaja super i wskazuja temp a trzy kolejne pokazuja ciagle 85*C, zupelnie tego...
Kupiłem ostatnio na giełdzie RTV w Krakowie 3 szt DS 18B20 i mam big problem - albo gościu sprzedaje jakieś odrzuty( w budynku giełdy na Balickiej) ,albo ten termometr jest gówno warty !. Dwa z nich w miare dokładnie pokazują dodatnią temperature -ale trzeci kłamie w góre. Natomiast jak je razem zamroże to każdy pokazuje inną temperature.Różnica to...
Wita! Mam problem z termometrem dziwnie wskazuje w pokoju mam 29 stop. ?? i mu nie wierze bo jest max 24 patrzylem na zwyklym termometrze, czytam czytam i kazdy cos wspomina o rozdzielczosci dla serii b moj programik ... config 1wire=portb.0 declare sub odczyt_temp dim temperatura(2) as byte do call odczyt_temp cls lcd "temp:"...
Zastanawiam się, co tak właściwie oznacza katalogowa informacja na temat dokładności pomiaru czujnika DS18b20. Dla ustalenia uwagi załóżmy, że karta katalogowa mówi o dokładności +/-0,5 stopnia. Z drugiej strony sam czujnik zwraca wynik z rozdzielczością 1/16 stopnia. Pytanie jaka jest charakterystyka tej niedokładności i jak to się przenosi na oczekiwaną...
operuj na zmiennych typu uint8_t (osobno część całkowita, osobno dziesiętna), wówczas nie będziesz musiał marnować kodu na float i jego konwersję, co jest " trochę nieoptymalne". poszukaj w sieci bibliotek Petera Danneggera - będzie szybciej. poszperaj w postach na forum, było już chyba wszystko na temat tego czujnika. Wydaje mi się że unit8_t nie...
Witam. Pytam się "starszych" kolegów o radę, a dokładnie o mój sposób rozwiązania problemu, czy ma sens. Sytuacja: używam czujników temperatury opartych na DS18b20 - bardzo solidnie wykonanych, z przewodami w osłonie silikonowej, gilza z pastą przewodzącą, mechanicznie zaciskana w sześciokąt na połączeniu z kablem o średnicy fi5,5 mm, dodatkowo zabezpieczona...
Witam ! Zrobilem sterownik do pieca CO. Jako czujniki temperatury wykorzystalem DS18B20. Wszystko dziala, tylko, ze po pewnym czysie odczyt z czujnikow jest rony 0 C. Po wyjeciu wtyczki czujnika sterownik wyswitla 255 C i to jest normalne. Po jej ponownym wlozeniu pokazuje jakas temperature, ale nie rzeczywista i spada on po jednym stopniu co odczyt....
Witam Kupiłem sobie DS18B20 wodoodporny z metrowym przewodem. Podłączyłem go do '51, Vcc, Masa i dane przez rezystor 4,7koma do plusa. Termometr zaczyna działać dopiero jak się go podgrzeje powyżej 30 stopni Celcjusza. Po ostygnięciu poniżej tej temperatury znów nie działa. Testowałem z drugim identycznym termometrem, ale ten drugi zaczyna działać powyżej...
Witam. Zachodzę w głowę co może być przyczyną dziwnego zachowania czujników. Układ działa w trybie 1-wire, 2 przewody. Opornik pomiędzy linią informacyjną a 5V to 4.7kOhm. http://obrazki.elektroda.pl/8348646300_1... Ma to wyglądać jak na obrazku. Jeśli podłącze 4 czujniki do 2 'huba' wszystko działa i podaje prawidłową temp. Wystarczy...
Hi. Sklecilem sobie w ramach testow i zabaw termometr z DS18B20, i ogolnie mierzy w porzadku poza dziwnymi zachowaniami.. 1. Wskazuje 23,5 stopnia. (co jest mozliwe). przykladam do radiatorka... kolejno wskazuje: 8, 9,12,16,20,32,38 st... Odejmuje od radiatorka wskazuje kolejno : 38,37, 32,14,12,11,11,10,10,9,9,9,8,8,8, 23.8 Ktos wie skad sie to moze...
Witam, zastanawiam się nad następującym zagadnieniem - czujnikiem temperatury DS18B20 w obudowie TO92. Co może u niego odpowiadać za generację sygnału na magistrali 1-wire? Czy w tej maleńkiej obudowie istnieje jakiś mikrokontroler? Jeśli to nie mikrokontroler - prosiłbym o wskazanie jaka część elektroniczna się zajmuje przetworzeniem odczytu z czujnika...
Co może być przyczyną, epizodycznego wyrzucania wartości zerowych przez ten czujnik temperatury?
Witam! Popełniłem sterownik do pompy pieca C.O., jednak mam problem; wygląda na to, że po pewnym czasie zawiesza się czujnik temperatury (DS18B20) i wskazuje jedną, nieprawdziwą wartość... DS działa w trybie parasite, rezystor podciągający 4,7k, Vcc do masy. Poniżej kod programu. [syntax=c_mac]/* * main.c * * Created on: 27-09-2014 * Author: BrT */...
Wiem ze bylo juz mase postow na forum o ds18b20, przeczytalem chyba wszystkie i nawet zarzekalem sie ze nie napisze kolejnego, ale po kilku dniach walki rece mi opadaja. Chce zczytac temp. atmega8 z tego ukladu. Zczytuje ladnie ale tylko do 23,9 stopni jezeli bardziej ogrzeje czujnik wyswietlacz wskazuje mi temperature -7, -6 cos kolo tego. Oto moj...
Potrzebowałem szybko wykonać tani przenośny zestaw do pomiaru temperatury na odległość ok. 30 m. Kupiłem gotowy moduł tablicowy do DS18B20 i oczywiście sam DS18B20 na kablu 1 m. Po podłączeniu DSa do modułu wszystko działa OK. Natomiast podłączenie poprzez kabel 30 m nie działa (na wyświetlaczu jest 0.00 czyli jakbym nic nie połączył). Do przedłużenia...
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...
NIe mam przed sobą pdf'a DS18B20 ale z tego co pamiętam wyglądało to tak: odczytujesz dwa bajty z czujnika LSB i MSB. Z pierwszego bierzesz 4 starsze bity (czyli 4 młodsze pomijasz), przesuwasz o 4 miejsca w prawo i dodajesz do całości drugi bit. Nie wiem jak to będzie wyglądać w BASCOMIE ale powinieneś dać sobie radę. W tych wszystkich obliczeniach...
Tego fragmentu zdania , nie jestem w stanie pojąć I tu się nie dziwię. Za co przepraszam i postaram się wyjaśnić co miałem na myśli W Czasie przeszukiwania forum znalazłem taki kod konwersji T = Makeint(odczyt(1) , Odczyt(2)) 'zrób z dwóch bajtów jednego integer'a Tspr = T 'teraz sprawdzam jaki jest wynik 'interesuje nas tylko...
Jeszcze się zastanawiam, czy nie lepiej będzie zamiast Lsb i Msb odczytanej temperatury pobierać obliczoną wartość przed przecinkiem i po przecinku ? Tzn. wynik pomiaru temperatury będzie przesyłany przez RFM12 - chyba prościej będzie mieć gotowe, czyli wysyłam: Dodano po 4 Jednak coś nie tak jest. Zrobiłem to tak: Dodano po 2 Nie rozumiem. Po dwóch...
Ok. [syntax=c]#include <OneWire.h> #include <DS18B20.h> #include <AltSoftSerial.h> #define ONEWIRE_PIN 5 float currentTemp; // AltGSM always uses these pins: // // Board Transmit Receive PWM Unusable // ----- -------- ------- ------------ // Arduino Uno 9 8 10 // Arduino Leonardo 5 13 (none) // Arduino Mega 46 48 44, 45 byte address[8]...
Jak sprawdzić czujniki ds18b20 czy prawidłowo wskazują temperaturę bo słyszałem że są niektóre fabryczne ,,felerne,, .Umnie wszystkie 5 zawyżają o 2stC , a może jest błąd w kodzie. dziękuje $regfile = "M16def.dat" $crystal = 8000000 '****** KONFIGURACJA PORTÓW ********* Config Porta = Output 'wysw ABCDEFG Config Portc = Output 'zasilanie W4,W3, W2,...
Witam Na wstępie przyznaję sie do laizmu, proszę o wyrozumiałość. Mam problem z przerobieniem programu obsługującego 1 czujnik i jedną grzałkę, na wersję z odczytem z czterech czujników sterujących pracą czterech grzałek, każdy czujnik ma swoją grzałkę. [syntax=cpp]//==========================... // Termoregulator ogrzewania podłogowego...
Witam mam problem z programem do trawiarki mianowicie znalazłem na necie program do sterowania trawiarką chciałem do tego dopisać wybór menu żeby było jeszcze był drugi tryb sterowania trawiarką. Wgrałem program do uC i działało poprawnie potem chciałem wgrać ten sam program bez żadnych zmian na inna ATmege8 i okazuje się że teraz program działa trochę...
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.
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.
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...
Cześć, napisałem właśnie funkcje do obsługi protokołu 1-wire i chciałbym wykorzystać je w prostym termometrze cyfrowym. Myślałem o zrealizowaniu tego w ten sposób, że w pętli while byłyby dwa bloki kodu. Jeden odpowiedzialny za odczyt temperatury z DS18B20, rozłożenie zmiennej z temperaturą na poszczególne cyfry, sprawdzenie czy temp. ujemna i na którym...
Decigrades = Decigrades * 10 Ta linia jest dobra. Mnożysz *10 ponieważ wykonujesz obliczenia na INTEGER i aby zaoszczędzić kodu i pamięci a nie na SINGLE. Aby zamiast, np. 211 wyswietlic 21,1 trzeba zastosować jakiś chytry myk. Można na wiele sposobów. Najlepszy jest chyba taki (w zmiennej T mamy 211 i chcemy wyświetlić na pozycji, np. 2,7): 1. Ustawiamy...
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...
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...
wejscia sa standardowo podciagniete do VCC przez wewnętrzny rezystor procesora komenda "set portx.x" a konfiguracja portów wyglada tak [syntax=basic4gl]Config Portd = &B11011101 Portd = &B00100000 Config Portb = &B00000111 Portb = &B00111110 [/syntax] sorrki komenda set byla za pierwszym razem teraz zmieniłem ale jeszcze nie sprawdzilem...
Witam, proszę o rozpracowanie budowy popularnego urządzenia: termometr cyfrowy electronic in/out thermo . Zasilanie 1,5V ( LR44 GPA76 L1154 etc.), zakres -20 +70 st.C , wyświetlacz LCD 3,5 cyfry . http://obrazki.elektroda.pl/9496334300_1... Wersja estetyczniejsza: http://www.elektroda.pl/rtvforum/topic15... http://www.elektroda.pl/rtvforum/topic24...
Witam Ja mam w ten sposób: Function Pomiar_temp_zew(i As Byte)as Integer 'Funkcja zwraca wartosc temperatury zewnetrznej z czujnika DS18B20 'znajdujacego sie na magistrali 1-Wire Id_urz_1wire(1) = 1wsearchfirst() 'odczytaj ID pierwszego urzadzenie 1wire For I = 1 To 8 'wpisz do tablicy ID 8 bajtów Print Hex(id_urz_1wire(i));...
Witam Używam Attiny2313 do pomiaru dwóch temperatur z DS18B20. Wynik ( Integer ) przesyłam bez żadnej obróbki przez UART przewodem 40 cm do Atmega328. Atmega rozbija odebrane dane i jest obróbka Kod Attiny2313 $regfile = "attiny2313.dat" $crystal = 8000000 $baud = 4800 '********************* Konfiguracja magistrali 1-Wire Config 1wire = Portd.5...
Witam kolegów serdecznie tuż przed świętami. Piszę program realizujący pomiar temperatury i zapisujący uzyskane dane do pliku zlokalizowanego na karcie SD. Powoli wtrącam timery zamiast wait(). Mam w sumie trzy problemy. 1) Formatuje uzyskane dane przez zapisem do pliku. Niestety nie wiem jak w stringu zamienić kropkę na przecinek i dopiero taki format...
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)...
Jeżeli używasz liczb zmiennopozycyjnych, to problem drgań przycisków masz automatycznie z głowy. Zastosowanie tutaj zmiennego przecink to chory pomysł - te operacje zajmują większość czasu procesora i większość pamięci Flash. Mopesz np. trzymać temperaturę jako liczbę całkowitą w dziesiątych częściach stopnia.
Witam Mam Atmega32A + PCF8563 + PCF8574 + RFM12 + DS18B20 +DHT11. Port danych LCD to Port.A, ControlPort to Port.C. I2C standardowo na Portc.0 Portc.1. Niestety jest problem z obsługą I2C, tzn. zegar PCF8563 nie działa w ogóle ( na LCD puste pole ) , a klawiatura na PCF8574 - tylko jeden klawisz i to nie ten, który jest przypisany w kodzie ( działa...
2. Jak wygląda wyświetlanie temp z DS1820 (nie B), przy użyciu wzoru: TEMP=TEMP_Read-0,25+(Count_Per_C-Count_R... Wynik w postaci ZSDJ,X ale lubi oszukiwać :(
W przerwaniu timera wyświetla się pojedynczą cyfrę, a w następnym - następną itd. Jedna operacja zmiennopozycyjna na AVR zajmuje mniej-więcej tyle czasu, co 1000 operacji na liczbach całkowitych, a w przypadku DS18B20 wystarczy najpierw zamienić liczbę na postać znak+wartość bezwzględna, potem wyciąć najmniej znaczące cztery bity (to co zostanie - to...
Wytrawiarka po roku działa nadal wzorowo. Odkąd przeniosłem czujnik tempertury z wewnątrz do zewnątrz (przyklejony na termoglucie do szyby) to skończyły się problemy z jego przetrawianiem. Co prawda pokazuje on temperaturę ok 4-5 stopni niższą, niż termometr analogowy wewnątrz, ale można to uwzględnić przy ustawianiu maksymalnej temperatury. Nie wylewam...
Ja to robię zwykle tak, że do oddzielnej zmiennej najzwyklejszego typu uint8_t wczytuję stopnie C a do drugiej zmiennej też uint8_t dziesiętne części stopnia. Wtedy porównuję to już bardzo prosto: st_C = stopnie_C_przed_przecinkiem; dz_stC = wartosc_po_przecinku; temp = (st_C * 10) + dz_stC; [syntax=c] if( (temp > 225 ) wlacz_wiatrak; if( temp <...
na wstępie dziękuję za zainteresowanie i pozytywne opinie ... Szkło klejone silikonem bezbarwnym? będzie to trzymało Jak należy? ... hmmm no zapewniał mnie szklarz , że będzie OK (że najlepszym silikonem jaki mają to robią) bo ja sam tego nie robiłem więc nie wiem. Tak czy inaczej w całym tym projekcie samo to szklane naczynie to sprawa wtórna, zawsze...
dzielenie przecinek wyświetlać przecinek przecinek kropka
epson service mastercook kuchenka simson kabel
Szarpanie w rowerze SACHS A301 na wolnych obrotach Schemat gniazda zdalnego sterowania spawarki Merkle TIG