Witajcie, chciałbym lekko odgrzać kotleta i poprosić o wskazanie błędu przy próbie wyliczenia temperatur ujemnych. Odczytuję czujnik DS18B20 w maleńkim ATTINY13 (zmienne float właściwie odpadają) i co około sekundę wysyłam wynik poprzez UART. Dla temperatur dodatnich - dzięki uprzejmości p. Podkalickiego i jego "odchudzonej" biblioteki DS18B20 działa...
Załączam sprawdzoną, działającą bibliotekę do 1-Wire. Opóźnienia są policzone dla kwarcu 16MHz. Skoro Ty wykorzystujesz kwarc 1MHz to wystarczy, że podzielisz przez 16 argumenty funkcji opóźniających. Jakbyś miał z tym problem to napisz. Gratis dorzucam też sprawdzoną i działającą funkcję do odczytu i konwersji temperatury z czujnika DS18B20. // odczytanie...
Patrząc na Twój kod zauważyłem że wykorzystujesz funkcję z biblioteki "delay.h". Tymi funkcjami nie uzyskasz dokładnych czasów potrzebnych do obsługi interfejsu 1-Wire po którym komunikuje się czujnik DS18B20. Udostępnię Ci swoją sprawdzoną w 100% bibliotekę do komunikacji po 1-Wire. W tej bibliotece wystarczy dobrać czasy opóźnień dla Twojego kwarcu...
co prawda w C, ale zasada ta sama: http://mikrokontrolery.blogspot.com/2011...
Trochę teorii w temacie: http://mikrokontrolery.blogspot.com/2011...
Przypadkiem nie jest tak że ogniwo Li-Ion w ujemnych temperaturach słabnie dość mocno ?
http://mikrokontrolery.blogspot.com/2011...
Prawdopodobnie dlatego że ten czujnik używa kodu U2. Tutaj więcej informacji. [url=http://mikrokontrolery.blogspot.com... EDIT: Napisz jeszcze co oznaczają zmienne (szczególnie scratchpad)
Błąd jest w konwersji dekoder pokazuje to co dostaje na port . W programie brak inicjalizacji stosu . Konwersję tego typu łatwiej wykonywać odejmując od wyniku konwersji wartość przetwornika stałą i inkrementując liczbę operacji odejmowania do chwili otrzymania wartości zerowej lub ujemnej . gdy pozostała wartość będzie mniejsza lub równa zero liczba...
http://mikrokontrolery.blogspot.com/2011...
Zacząłbym od tego: Otrzymujesz wartość zmiennej temperatura równą np. 1871819,25. Jak przemnożysz to przez 16 to okaże się, że wyrażenie (temp1 + (temp2*256)) zwraca wartość 29 949 108. Teoretycznie zmienne temp1 i temp2 nie powinny przyjmować wartości większych od 255, więc wartość maksymalna wyrażenia (temp1 + (temp2*256)) = (255 + (255*256)) = 65535....
No niezupełnie, dla ujemnych temperatur to nie zadziała, a dla dodatnich dość pokręcone. [syntax=c]int16_t temp = data[1] << 8 | data[0]; if (temp < 0) { znak = '-'; temp = -temp; } else znak = '+'; ulamek = (temp & 0xf) * 5 / 8; temp >>= 4;[/syntax]
Witam Mam taki program który wyświetla temperaturę potocznie zwany termometrem. Problem w tym ze nie wyświetla mi znaku minus przy ujemnych temperaturach. Po wsadzeniu do zamrażarki mija temperaturę 0 st C i idzie dalej niby w dół, ale bez minusa. Przeglądałem sporo źródeł na elektrodzie i w innych miejscach i nie mogę sobie z tym poradzić. Oto kod:...
ee no musiało pomóc, sprawdzałem u siebie i kod się zmniejszał o kilka kB pokaż jakim poleceniem ze wszystkimi flagami jakie używasz kompilujesz kod dla tych zmiennych równych 134 i 1: LS Byte: 10000110 MS Byte: 00000001 w MS Byte pięć najważniejszych bitów wskazuje na znak - zera to dodatnia, a jedynki to ujemna trzy najmłodsze bity z MS Byte i cztery...
informującego o zmianie temperatury co 1 stopień w górę lub dół To są założenia więc co każdy stopień ma być krótki sygnał. Warunek If T >= 200 then spowoduje że przekroczenie 20 stopni spowoduje sygnał. Muszę chwilę pomyśleć. Trzeba badać także różnicę pomiędzy odczytem poprzednim a następnym. Sprawdź to: (zmień procesor, konfigurację LCD, portów,...
Witaj Kolego, Nie wiem czego oczekujesz bo kod który zamieściłeś jak się domyślam nie jest twój, więc po co to sprawdzać, jak chcesz mogę Ci podesłać albo zamieścić coś napisane przez mnie procedury które obsługują wszystkie modele DS18x20 oraz konwersję U2 (ujemnych temperatur) oraz pracujące z ATM32 no i oczywiście konwersje do stringa oraz wartości...
Czy można przez konwersję BCD wyciągnąć znak (temperatura dodatnia/ ujemna) Wynik zczytywany jest do zmiennej Integer(nie Single, żeby od razu odciąć część ułamkową) dalej poprzez BCD uzyskuję liczbę dziesiątek i jedności. Wszystko działa tylko jeśli temperatura spadnie poniżej 0, zaczyna liczyć od końca. W jaki sposób można oddzielić znak "-" ze zmiennej...
A czy na małe zmiany temperatury reaguje (gdy chwycisz w palce?) Zawsze możesz spróbować zamienić funkcję konwersji "Read_Temp" z Twojego programu. Pozostawiając reszte bez zmian. U mnie działała (bez temperatur ujemnych). ...dobrze obsługujesz wyświetlanie floata?
Widzicie. Ja walczyłem z timerami, przerwaniami,DS'ami i wyświetlaczami, chyba wewszelkich możliwych kombinacjach. I stwierdzam, że bardzo trudno jest w Bascomie ustalić wybraną częstotliwość przemiatania z jednoczesnym odczytem czujnika. Nawet jeśli pozornie wszystko działa to przy ujemnych temperaturach czas konwersji jest na tyle długi, że nie da...
Nie to sprawdzałem. Wygląda to jakby procedury odczytu DS-a działały bo ta temperatura wyświetlana -0.1 o tym świadczy. DS jest zasilany z 3,3V i wyczytałem że przy takim zasilaniu rezystor podciągający linie DQ ma mieć około 2k i taki mam. Ale z rezystorem 4,7k też nie działało. Gdzie to wyczytałeś? Datasheet nic na ten temat nie mówi, poza "Can be...
Witam! Najogólniej mówiąc musisz te 4 bity podzielić przez 16, natomiast jeśli masz ujemną temperaturę to robisz to samo a następnie otrzymany wynik odejmujesz od 1.
A co to za cudaczne obliczenia :wink: ... unsigned char wynik1=0; unsigned char wynik2=0; wynik1=read1w(); wynik2=read1w(); reset1w(); float temp=0; if((wynik2)!=0){ //temp ujemna wynik1=~wynik1; temp=wynik1+1; //dlaczego /2 i gdzie się podział wynik2 ? temp=-temp/2; //??? } else{ //temp dodatnia...
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...
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...
(at)loprpol co oznaczają SB ## ## w Twoim excelu? na zdjęciu zaznaczono na czerwono przykład z Rejestrów zaczynających się na 241 https://obrazki.elektroda.pl/5521016800_... pytanie 2: jak odczytujesz ujemne temperatury dla np. Tao temperatura otoczenia. jeden byte 0-255 przy mnożniku nie ogarnie od -40 do +50 trzeba skleić bajty 22,...
Chciałbym wiedzieć, czy sterownik DS1820 obsługuje wiele czujników temperatury? Właśnie przeprowadziłem test z podłączonymi 2 czujnikami i mam temperaturę dla jednego, ale nie dla drugiego. Oto komunikat o błędzie po podłączeniu drugiego czujnika: Info:SENSOR:D S1820[0] - Rozpoczęcie konwersji Info:SENSOR:D S1820[0] - Temp=21.12 Info:SENSOR:D S1820[0]...
tzn nie jest to równe 63 ale ok -63.563. i jak bardziej grzeje tym temp maleje i jest ujemna Dodano po 3 ok ..już wszystko jasne...niepotrzebna konwersja z float do double dla dodatnich liczb....
Witam, trochę przegrzebałem fora dyskusyjne wczoraj i dziś w szukaniu wersji non-float i znalazłem to. // na początku kodu #define THERM_DECIMAL_STEPS_12BIT 625 //.0625 uint8_t temperature[2]; int8_t digit; uint16_t decimal; char buffer[14]; digit=Temperature.LSB>>4; digit|=(Temperature.MSB&0x7)... decimal=Temperature.LSB&0xf;...
Nie, przecież to jest garść drutów - skąd narzędzie ma wiedzieć jak ma zrobić dodawanie na garści sygnałów? No jakaś automatyka w syntezerze jest. Może to wydedukować jakoś :D Ale jak bity maja reprezentowac liczby? Jak kodujesz wartosc ujemna? Czy to jest format zmiennoprzecinkowy czy staloprzecinkowy? A moze IEE754? Zapoznaj sie z biblioteka numeric_std,...
Co trzeba rzerobic w programi zeby obsługiwało temperatury ujemne?? Sprawdź czy bity 11-15 (bity 3-7 starszego bajtu) są równe 1. Jeżeli tak, to oznacza liczbę ujemną. Dokonaj wtedy konwersji : zaneguj wszystkie bity (z obu rejestrów) i dodaj 1 (pamiętaj o ewentualnym przeniesieniu). Dalsza interpretacja liczby jest taka sama jak dla temperatur dodatnich,...
Taka sprawa: Zasilalem termometr "pasożytniczo", ale dosyc nieuważnie przejrzałem Data Sheet od niego i nie zauwazylem, ze nalezy zapodawac high pullup na szyne przez mosfet, podczas konwersji temperatury i operacji na eepromie :( O dziwo na poczatku ds konwertowal prawidlowo i poprawnie mierzyl temp. ujemne i dodatnie, jednak z czasem zaczely pojawiac...
Witam. Napisałem taki program lecz mieszkam w internacie i nie mam przy sobie fizycznie układu. Proszę kolegów o teoretyczne sprawdzenie programu, czy dobrze to zrozumiałem. Pozdrawiam [syntax=basic4gl] ' Termometr DS18B20 $regfile = "m8def.dat" $crystal = 8000000 Config Lcdpin = Pin , Rs = Portc.5 , E = Portc.4 , Db4 = Portc.3 , Db5 = Portc.2 , Db6...
Prosiłabym o wyrozumiałość i pomoc w nakierowaniu mnie na rozwiązanie problemu. Spróbuję nakierować :) Jeśli zapis ID do eeprom ma być jednorazowy, w kodzie programu deklarujesz (wcześniej innym programikiem i LCD odczytane) ID $eeprom Termometr2: 'nr seryjny termometru 1 Data 40 , 25 , 0 , 133 , 2 , 0 , 0 , 196 Termometr1: 'nr seryjny termometru...
Witam. Mam termometr na Atmedze8, program napisany przez kolegę Ducha. Chciałbym dodać funkcję zapisu do eepromu najniższej zarejestrowanej temperatury przez termometr, lecz nie jest to możliwe ponieważ ostateczny format temperatury zapisywany jest w zmiennej typu string. Program ma porównywać, czy aktualna temperatura jest mniejsza od zapisanej w eepromie,...
każdy LM35 ma współczynnik konwersji 10mV/'C. Co oznacza, że dla temperatur ujemnych napięcie wyjściowe powinno być ujemne. W nocie aplikacyjne jest stosowny schemat jak do tego doprowadzić. Bez stosownej polaryzacji czujnik działa od 2 stopni. Rysunek jest na drugiej stronie PDFa poniżej, na pierwszej stronie był gdy National był Nationalem a nie Texasem....
Witam. Projektuję sobie przetwornik do konwersji temperatury na napięcie. Zrobiłem coś takiego lecz wydaje mi się, że to będzie coś nie tak. W literaturze zenerki są w ujemnym sprzężeniu zwrotnym, lecz wtedy + wzmacniacza jest zwarty do masy. Nadmienię, że wyjście będzie podłączone do multipleksera 4067. W jaki sposób ograniczyć Uwyj?? Jak Ci pomóc...
https://obrazki.elektroda.pl/7717804000_... Witam wszystkich, Tym razem chciałbym zaprezentować termometr dwukanałowy zasilany z dwóch równolegle połączonych akumulatorów Li-Ion, zbudowany w oparciu o mikrokontroler ATTiny84 i dwa czujniki DS18B20 oraz pozostałe części "z szuflady". Termometr ten służy mi do pomiaru temperatury w pokoju...
A czy ktos wie, jaka może być przyczyna. Jeśli czujnik będąc na 5 cm przewodach i z rezystorem 4k7 pokazuje poprawnie temperatury ujemne. Ale już na 3 metrowym przewodzie i tym samym rezystorze pokazują się krzaczki. Rezystor zmieniałem na 2k2 i dalej te same krzaczki. Niewiem co jest grane, do konwersji i wyświetlenia używam tego: a = ((temp2...
U mnie dziala tak: 1wire_1 Alias P3.0 Dim T As Word Sub 1wire1 1wreset 1wire_1 ' reset magistrali 1wire 1wwrite &HCC 1wire_1 ' zaadresowanie DS'a - skip rom 1wwrite &H44 1wire_1 ' polecenie dokonania konwersji Wait 1 ' dajemy czas na konwersję (wystarczy 750ms) 1wreset 1wire_1 ' reset 1wwrite &HCC 1wire_1 ' adres 1wwrite &HBE 1wire_1...
Witaj, Temperatura rzędu 500C jest nie mozliwa do odczytania z DS18x20. Czujnik może co nawyżej wskazać 125C. Niestety procedury których użwasz do przeliczenia odczytanych danych na temperaturę są błędnie napisane. U uśrednianiu wyniku to tu raczej nie ma mowy bo DS18X20 jest czujnikiem cyfrowym z własnym kontrolerem któy już sam sobie uśrednia wynik...
Hah jaka prosta sprawa, popełniłem zwykły błąd, który przy dodatnich temperaturach nie dawał o sobie znać - oczywiście konieczna jest konwersja na DI oraz REAL, co wskazywał też jazda_gazda. Teraz wszystko działa, dziękuję bardzo za cierpliwość, jeszcze raz przekonałem się o fachowości uzytkowników tego forum :) Pomroczność jasna nie zna granic jak...
Witajcie, jak przekonwertować poprawnie wartość z czujnika temperatury ds18b20 w postaci dwóch liczb typu uint8_t, które odpowiadają części całkowitej i ułamkowej, do postaci jednej zmiennej typu int16_t? zakres liczby ułamkowej to 0-9, zakres liczby całkowitej jest 8-bitowy. Wartości ujemnych nie ma.
Problem rozwiązany. W datasheet zalecany jest rezystor podciągający ok. 5k. Jednak dalej, jest informacja, że podczas niektórych operacji (m.in. przy konwersji temperatury) zapotrzebowanie na prąd, może wynieść 1,5 mA. 5V/5kohm = 1mA max. Zmiana rezystora na 3,3k rozwiązało problem. Szkoda tylko że maxim jest mało konsekwentny w swojej dokumentacji...
O kurde zapomniałem :D Jeszcze raz przepraszam. Używam ATTINY 2313 a jako czujnik DS1820 A tu program: Config 1wire = Portd.5 : Dim Odczyt(2) As Byte , A As Byte , Dim T As Integer , Tmin As Integer , Tmax As Integer Deflcdchar 1 , 4 , 14 , 21 , 4 , 4 , 4 , 4 , 32 Deflcdchar 2 , 4 , 4 , 4 , 4 , 21 , 14 , 4 , 32 Do 1wreset : 1wwrite &HCC : 1wwrite...
1wreset 'reset 1wwrite &HCC 'jedna kostka, więc wykorzystujemy rozkaz SKIP ROM 1wwrite &H44 'dokonaj konwersji Waitms 750 'przeczekaj czas konwersji 1wreset 'reset 1wwrite &HCC 'rozkaz adresowy SKIP ROM 1wwrite &HBE 'rozkaz funkcyjny - polecenie odczytu DS18x20 Odczyt(1) = 1wread(2) 'odczytaj dwa pierwsze bajty T = Odczyt(2)...
(...) odczytu temperatury. Jaki zaproponowałbyś kod (AVR GCC), aby nie trzeba było używać delay'a (może pooling lub maszynę stanu) ? Przy okazji przedstaw optymalną (bez zmiennoprzecinkowych liczb) konwersję danych ze scratpad'a na stopnie (może być złożeniem liczb całkowitych jako stopnie i części ułamkowe). Do obsługi termometrów DS18B20 bez blokowania...
Witam Muszę stworzyć układ w którym bedę używał 8 czujników DS18B20 , i każdy musi pracować na osobnym pinie. Nie mogę podpiąć wszystkich na jednej linii i odpytywać ich po ich ID. Kiedyś robiłem sterownik w którym odczyty robiłem w ten sposób: Sub Odcz_temp1 Config 1wire = Portb.0 1wreset 1wwrite &HCC 'opuszczenie zapisu numeru ID 1wwrite &H44 'start...
Dzięki za podpowiedż - Dla Jonego 15 Właśnie się z tym uporałem i wygląda to tak Działa i sprawdzone Na tyle się ociepliło, że musiałem płytkę z prockiem zapakować do zamrażarki i przeżyło Sub Read18b20 1wreset 1wwrite &HCC 1wwrite &H44 'dokonaj konwersji - zmierz temperaturę Waitms 750 1wreset 1wwrite &HCC 1wwrite &HBE 'polecenie odczytu DS18b20 Odczyt(1)...
Witam, Jako autor oryginalnego opracowania wtrącę swoje trzy grosze (Autor postu poinformował mnie mailowo o tym wpisie). Przede wszystkim jestem zaskoczony, że ktoś odgrzebał tego mojego starocia jeszcze z czasów licealnych:) Co ciekawe jakiś czas temu znalazłem oryginalny prototyp tego wynalazku w starym pudle ale niestety puściło jakieś lutowanie...
Z tego co widziałem, to funkcja z pliku ds18b20 zwraca temperaturę jako int16_t czyli ze znakiem. Nie wiem jak to przekonwertować ani co dostanę po konwersji (jak znam życie to wynik będzie odniesiony do 1024 i jeśli 22 stopnie w przypadku int16 będzie częścią 512 bitów tak po zmianie typu na uint16 będzie częścią z 1024) Co do wartości bezwzględnej...
konwersja liczba ujemny konwersja temperatura temperatura ujemny
trafo zamienić pilot zabawka intel reakcji
elm327 interfejs schemat usterka komunikacja magistrala
Awaria okablowania czujnika położenia wału w Iveco Astra Cursor 13 Modulator nie reguluje przepływu ciepłej wody - diagnostyka i rozwiązania