(1 głosujący) Zawarte fragmenty programów dotyczą czujników DS18S20 i DS18B20. Procedury obsługi tych układów nie różnia się od siebie w prostych zastosowaniach, poza sposobem obliczania temperatury na podstawie odczytanych wartości z rejestrów czujników. Język Bascom AVROdczyt 8 bajtów numeru seryjnego DS18S20 lub DS18B20 gdy na magistrali jest tylko jeden układ. Numer seryjny zostanie zapisany do zmiennej tablicowej Ds: Config 1wire = Pind.7 Dim Ds(8) As Byte 1wreset 1wwrite &H33 Ds(1) = 1wread(8): Uruchomienie konwersji temperatury przez wszystkie czujniki podłączone do magistrali 1-wire. Po wydaniu rozkazu konwersji należy odczekać pewien czas (max 750ms) przed przystąpieniem do odczytu temperatury: Config 1wire = Pind.7 1wreset 1wwrite &HCC 1wwrite &H44 Odczyt zawartości dwóch pierwszych rejestrów układu DS18x20, zawierających informację o wartości temperatury w przypadku gdy na magistrali jest tylko jeden czujnik. ... 1wreset 1wwrite &HCC 1wwrite &HBE Lsb = 1wread(): Msb = 1wread(): 1wreset Dla większej ilości czujników podłączonych do jednej magistrali odczytujemy dane z jednego układu wykorzystując jego numer seryjny odczytany wcześniej i zapisany do zmiennej tablicowej Ds(8 bajtów). ... 1wreset 1wwrite &H55 1wwrite Ds(1) , 8 1wwrite &HBE Lsb = 1wread(): Msb = 1wread(): 1wreset Po odczytaniu bajtów Msb i Lsb wykonujemy oblicznia temperatury. Dim Temp As Single ... If Msb = 0 Then Temp = Lsb / 2 Else Lsb = Not Lsb Lsb = Lsb +1 Temp = Lsb/2 Temp = Temp * (-1) End If Układ DS18B20: Dim Temp As Single Dim Tempa As Integer ... Tempa = Msb * 256 Tempa = Tempa + Lsb If Msb.7 = 0 Then Temp = Tempa / 16 Else Tempa = Not Tempa Tempa = Tempa +1 Temp = Tempa / 16 Temp = Temp * (-1) End If Poniżej przedstawiony jest cały prosty program testowy do obsługi dwóch czujników (DS18S20 i DS18B20) podłączonych na jednej magistrali. Całość została uruchomiona na Płytce Testowej opisanej w dziale projekty. Wskazania temperatury wyświetlane są na wyświetlaczu LCD '*********************************************** 'Konfiguracja AVR '*********************************************** $regfile = "m162def.dat" $crystal = 16000000 $baud = 2400 Config Porta = 255 Porta = 255 Config Portb = 255 Portb = 255 Config Portc = 255 Portc = 255 Config Portd = 255 Portd = 255 Config Porte = 255 Porte = 255 'Config Scl = Portd.6 'Config Sda = Portd.7 'I2cinit Config 1wire = Pind.7 Config Lcdpin = Pin , Db4 = Porta.5 , Db5 = Porta.4 , Db6 = Porta.3 , Db7 = Porta.2 , E = Porta.0 , Rs = Porta.1 Config Lcd = 20 * 2 Cls Cursor Off Noblink 'Config Int0 = Falling 'Enable Int0 : On Int0 Przerw_zewn 'Config Timer0 = Timer , Prescale = 64 'Enable Timer0 : On Timer0 Przerwanie1 'Config Timer1 = Timer , Prescale = 8 'Enable Timer1 : On Timer1 Przerwanie2 Enable Interrupts '/////////////////////////////////////////////// '*********************************************** 'Zmienne '*********************************************** Dim Lsb As Byte Dim Msb As Byte Dim Tempa As Single Dim Ds1(8) As Byte , Ds2(8) As Byte Dim Tekst1 As String * 10 Dim Tekst2 As String * 10 '/////////////////////////////////////////////// Lcd "test DS18B20" Wait 1 'Numery wpisane na sztywno Ds2(1) = 40 Ds2(2) = 55 Ds2(3) = 181 Ds2(4) = 1 Ds2(5) = 1 Ds2(6) = 0 Ds2(7) = 0 Ds2(8) = 207 Ds1(1) = 16 Ds1(2) = 171 Ds1(3) = 224 Ds1(4) = 167 Ds1(5) = 0 Ds1(6) = 8 Ds1(7) = 0 Ds1(8) = 220 Do 1wreset 1wwrite &HCC 1wwrite &H44 Waitms 250 Waitms 250 1wreset 1wwrite &H55 1wwrite Ds2(1) , 8 1wwrite &HBE Lsb = 1wread(): Msb = 1wread(): Tempa = Msb * 256 Tempa = Tempa + Lsb Tempa = Tempa / 16 Tekst1 = Fusing(tempa , "#.##") 1wreset 1wwrite &H55 1wwrite Ds1(1) , 8 1wwrite &HBE Lsb = 1wread(): Msb = 1wread(): Tempa = Lsb / 2 Tekst2 = Fusing(tempa , "#.#") Cls Lcd "DS18B20= " ; Tekst1 Lowerline Lcd "DS18S20= " ; Tekst2 Loop End
|
|||
Witam Siedzę nad tym dobrą
Witam
Siedzę nad tym dobrą godzinę i nie rozumiem po co są te obliczenia dla np.: DS18B20
Polecenie
Możesz mi napisać po co to robisz?
Re; DS18B20
Nie ma tu pomyłki, poniższy fragment wykonuje się gdy temperatura jest ujemna (odpowiednia wartość w starszym bajcie)
Pierwsze dwie linijki to klasyczna zamiana z kodu U2(Uzupełnień do dwóch) na kod binarny, kolejna linijka dzieli przez 16 aby uzyskac zapis w stopniach, potem zmiana znaku na ujemna wartość bo wiemy ze jest ujemna z wcześniejszych przesłanek a odczytujemy wartość bezwzględną
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Przepraszam jeśli się mylę
Przepraszam jeśli się mylę ale np temp. +25 to przy 9 bitach naprawdę jakby +50 dlatego dzielone przez 2 czyli binarnie 00110010 a polecenie not da wynik 11001101 czyli 205/2 czyli 102,5 stopnia czyli gdzie popełniam błąd, i jeszcze pytanie jak przełączyć 18B20 na 9bit.
Re: DS18B20
Niestety nie wiem jak przełaczyć DS'a w tryb 9 bitów bo nigdy nie było mi to potrzebne.... raczej napewno trzeba wpisać do rejestru odpowiednia wartość na podstawie karty katalogowej
Jeśli chodzi o te obliczenia to tak zaplątałeś że nie mogę zrozumieć o to Ci chodzi. Wartość policzyłem na podstawie karty katalogowej
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
DS1820
Mam taki zabytek, który wciąż nieźle działa ale wymaga peceta. Jak zrobić odczyt temperatury 0-99 C i przy użyciu at89c2051 wyświetlać wynik na dwóch wyświetlaczach LED (bez części dziesiętnych)?
Ewentualnie jakiś alarm przy spadku temperatury poniżej np. 40 C (piec CO).
Pozdrawiam
Re: Termometr
Program masz wyżej a w projektach mam gotowe dwa termometry z wyświetlaczem LED
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Chodziło mi o to że 00110010
Chodziło mi o to że 00110010 oznacza 50/2 czyli 25 stopni a polecenie not zamieni każdy bit w bajcie czyli da wartość 11001101 czyli 205/2 czyli 102,5 stopnia więc gdzie popełniam błąd???
Re: DS18S20
Nie zrozumiałem wcześniej co ci chodzi ale teraz już wiem..... Błąd jest tu że negujesz wartości temperatury gdy jest ona dodatnia. To przeliczenie z negacją działa jak liczba jest ujemna zapisana w kodzie U2, robiąc z liczby U2 liczbę dodatnią binarną.
Dla przykładu jeśli temperatura jest -25 stopni to ds18B20 ma wartości w dwóch bajtach 1111 1111 1100 1110, pierwszy bajt niesie informacje o znaku a drugi po negacji dodaniu 1 i podzieleniu przez 2 daje liczbę 25, a że jest to -25 to wiemy z pierwszego bajtu który zawiera same 1. Dla DS18B20 nie wszystkie bity starszego bajtu są 1 i sprawdzam tylko pierwszy bit bo inne kombinacje sa niedopuszczalne z punktu widzenia samego DS'a.
popatrz na tabelkę w karcie katalogowej
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Dziękuję bardzo teraz
Dziękuję bardzo teraz popatrzyłem do datasheet i już to zrozumiałem, ale jeszcze pytanko po co dodawać 1?
Re: U2
Bo taka jest definicja http://pl.wikipedia.org/wiki/Kod_uzupe%C5%82nie%C5%84_do_dw%C3%B3ch
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
DS18(S)20 - temperatura ujemna
A nie prościej byłoby:
Poza tym nawiązuję do mojego wcześniejszego postu: czy obsługa DS1820 (taki mam) i DS18S20 jest taka sama ?
Re: DS18S20
Ds18S20 to chyba to samo co DS1820.... do pdf-a popatrz na tabelkę z przeliczeniem temperatury.
Co do fragmentu przeliczającego temperatury to jest wiele sposobów żeby to zrobić....Raz wieki temu napisałem te linijki i teraz zawsze wklejam do swoich programów, nawet za bardzo nie zastanawiam się nad tym. Z tego co patrze to twój kod tez poprawnie konwertuje ujemne temperatury... tylko było by lepiej gdyby dać Lsb-256, wtedy wyjdzie z minusem (jak zmienna będzie integer)
Ps. kody źródłowe należy umieszczać w odpowiednim znaczniku, czasami poprawiam wpisy a czasami kasuje więc dostosuj się do regulaminu
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
zamiana ds1820 na 18b20
Witam Cię Mirley
Wiem że terminaż masz napięty, ale może mógłbyś pomóc??
mam gotowy soft do sterownika akwariowego w którym odczyt temp. jest z czujnika 1820 czy mogłbyś zerknąć jak zamienić go na 18b20 ponieważ takie czujniki mi przysłano. Czytałem trochę ale nic z tego nie rozumię coś się przelicza inaczej.
pozdrawiam
oto fragment kodu:
1wreset 1wwrite &hcc 1wwrite
To co podałem to bez liczb po przecinku, chyba że będzie to zmienna single, inaczej jesli nie chcesz miejsc po przecinku to word.
Ten kod co podałeś jest jakiś "niedziałający", nie ma prawa działać.
3 szt ds18b20 na różnych portach
Pytanie dla bardziej doświadczonych niż ja. Potrzebuję uruchomić trzy ds18b20 na różnych pinach. Jak powinna wyglądać konfiguracja tych pinów w komendzie config port. Piny mają być wejściami, wyjściami z podciąganiem czy bez, czyli reasumując jak skonfigurować te piny ? Oczywiście chodzi o bascom.
Re: 1-wire
Po pierwsze nigdy nie robiłem więcej niz jednego 1-wire bo wymyślono to po to aby była jedna taka magistrala. Jeśli zależy Ci na tym aby odpalić trzy magistrale niezależne to będziesz musiał za każdym razem konfigurować 1-wire za pomocą "Config 1wire = Pinx.y", tak mi się przynajmniej wydaje. Co do ustawienia typu wyprowadzenia to i tak polecenia config 1-wire ustawia sobie pin tak jak mu potrzeba. Możesz spróbować ustawić jako wejścia na początku a potem config 1-wire na jeden z pinów. Przed każdym wywołaniem innej magistarli będzie trzeba zrobić config 1-wire na inny pin. Popróbuj coś bo jak mówiłem takich rzeczy nigdy do niczego nie potrzebowałem
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
1-Wire
Dzięki za podpowiedź sprawdzę ten sposób. Wiem że założenia magistrali 1-Wire są trochę inne lecz ostatnio miałem taką sytuację że po awarii jednego z ds sterownik pieca co dostał szału i grzał aż się przygotował (wszystkie odczyty ds między 25 a 35 stopni C ). Chcę na przyszłość uniknąć takiej rzadkiej sytuacji a znalazłem w pomocy bascom wzmiankę że można do komend obsługi 1-Wire dodać nr pinu np. 1wreset port,pin lecz nie ma wzmianki czy i jak ten pin ustawić. Google również skąpi informacji. Jeszcze raz dzięki za odzew.
podaj mi maila to podeśle ci
podaj mi maila to podeśle ci kod od sterownika wykorzystującego 2 termometry DS18B20
obsługuje on 2 termometry niezaleznie podłączone do 2 odobnych wejść może ci się przyda.
Max
Byłoby super. Mail do mnie:
Byłoby super. Mail do mnie: . Z góry dzięki.
Re: Ds18B20
Wstawcie kod tutaj na strone.... klikając na wstawianie obrazka można pod przyciskiem "browse" wrzucać różne pliki, nie tylko foto
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
ds18b20
Kompletny kod jest dość długi. Postaram się wybrać te części które odpowiadają za obsługę magistral i wystawię na forum. Oczywiście jeżeli kolega beleco nie wystosuje sprzeciwu ;). Pzdr.
DS18b20
witam
jestem bardzo ciekawy jak wygląda obsługa ds na 2 portach
możesz to pokazać
nie moge sobie poradzic z
nie moge sobie poradzic z wklejeniem tego kodu na strone, chetnych prosze o adres to przesle emialem
Max
Re: Kod
Klikasz przycisk "BAS" w edytorze, i między znaczniki gb wklejasz kod jako zwykły tekst (bascom otwarty w edytorze tekstowym, np notatnik). Mail: elektronika_małpa_firlej.org
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
ds18b20
Witam. Mam pewien problem.
Witam.
Mam pewien problem. Otóż chciałem zrobić termometr, który temperaturę wysyłałby co 500ms przez uart do komputera. Kwarc 16mHz, 1-wire na PorcieC.5 AVRek to Amega8. Jednak zawsze w terminalu ukazuje się "4095.94" Czy mógłbym prosić o kod?Muj to przerobiona wersja tego od termometru uniwersalnego. Zmieniłem attiny2313 na m8def, 12000000 na 16000000 i dodałem wysyłanie wartości zmiennej w pętli głównej na RSa.
Dziękuję
Re: Ds18B20
Da na początek czytanie z Ds'a co najmniej co 1s-2s i zobacz efekty
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Re: Ds18B20
Jak wyglądała by procedura wyświetlenia numeru seryjnego jednego DS'a?
W jakiej postaci się to wyświetli bez jakiejkolwiek konwersji?
Czy wystarczyło by napisać:
Potrzebował bym wartość numeru takiego termometru jako jedna liczba z dowolnego zakresu.
Moja strona w powijakach
Re: Numer ds
Numer ds'a jest w postaci 8 bajtów.... nigdy nie zastanawiałem się czy ma to jakąś głębszą interpretację w postaci jednej wartości(napewno jest tam crc, kod układu i kod rodziny).... można by zamienić to na jednego long'a (4 bajty) albo jeśli potrzebujesz taki numer zapisać a potem za jego pomocą sterować odpowiednim DS to można zrobić tak jak napisałeś wyżej, albo zapisać w postaci w postaci tablicy
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Re: Numer ds
Numer ds'a potrzebny mi jest do czegoś innego mianowicie:
Powiedzmy że kilka osób ma jeden układ (konkretnie chodzi o sterownik do modelu o którym gdzieś pisałem). Do każdego sterownika dorzucę ds'a. Jeśli będę znał jego numer to napiszę na początku programu tak:
Moja strona w powijakach
Funcja Fusing - czy potrzebna?
A czy do reprezentacji temperatury potrzebna jest tu funkcja Fusing? Przecież DS daje liczbę binarną, nie można użyć makedec. Potrzebuję uzyskać liczbę mieszczącą się w zmiennej byte i odpowiadającą dokładnie temperaturze czyli jeśli jest temperatura powiedzmy 25st.C to chciałbym mieć taką liczbę. Da się tak?
Moja strona w powijakach
Re: Temperatura
fusing nie jest potrzebny to tylko jedna z propozycji.
Ds18B20 daje liczbę binarną pomnożoną przez 16 (w dwóch bajtach) możesz podzielić przez 16 i wpisac wynik do byte
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Re: Temperatura
Ja Cię kręcę. Dzięki Mireczku, gdzie to jest napisane? Nigdzie w nocie nie znlazłem. Wychodzi dokładnie tak jak chciałem. Super, stawiam browara.
Moja strona w powijakach
Odczyt temperatury z kilku czujników - nie bardzo rozumiem
Nie bardzo rozumiem zasadę odczytywania temperatury z kilku czujników. Mam podpięte 4 czujniki pod magistralę, ale jak mam odczytać z nich temperaturę?
Mam niby napisać tak?:
Jak mam zarejestrować numery tych czujników? Jakoś to dla mnie mało jasne. Co później? Można łopatologicznie?
Potrzebuję do jednej zmiennej zapisać te 2x8 bitów, podzielić to przez 16 by uzyskać liczbę dla zmiennej byte.
Moja strona w powijakach
Re: DS
Wyżej w opisie masz wszystko napisane.... jak odczytywać numery seryjne i jak odczytywać poszczególny czujnik..... napewno nie tak jak napisałeś.
Musisz wysłać na magistrale numer seryjny ds'a a potem robisz tak jakby był tylko jeden czujnik, poprostu odczytując dane. Po każdym resecie musisz zaadresować czujnik, chyba że chcesz wysłać rozkaz do wszystkich.
Popatrz na przykładowy program na końcu artykułu. Tam są numery wpisane na sztywno, ale możesz zrobić na początku if'a który np po zwarciu zworki odczyta numer seryjny jednego ds'a i zapisze go do eeprom, potem odczytasz numer drugiego ds'a i zapiszesz w innym miejscu w eeprom a na samm końcu podłączysz dwa czujniki naraz i będziesz adresował tymy zapisanymi numerami
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Mała prośba
Mireczku, czy możesz swój program główny w tym temacie uzupełnić o komentarze? Chętnie przeanalizował bym cały kod z dobrymi komentarzami. Nie mam czujnika DS pod ręką więc zrobił bym analizę że tak powiem, na sucho.
Moja strona w powijakach
Re; DS
Który dokładnie fragment kodu? Nie dam rady wszystkiego opisać
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Re: Który fragment kodu?
Opisz to i będę happy:
Moja strona w powijakach
Barometr
Witam wszystkich.
Ja z kolei mam taki problem. Termometry są już tak "przewałkowane" na wszystkie strony, że nie ma większego problemu. Ale apetyt rośnie w miarę jedzenia! Ostatnio wpadł mi w ręce czujnik ciśnienia DMP015A. Chciałbym go oczywiście wykorzystać. Czy ktoś mógłby mi podrzucić jakiś kod do jego obsługi? Może być coś podobnego, z modyfikacją jakoś bym sobie poradził (?).
Pozdrawiam.
SYMULATOR DS18B20
Witam, proszę o pomoc, sugestie porady w następującej kwestii : symulator DS18B20 najlepiej napisany w Bascom. O co chodzi: program ma symulować DS i wysyłać dane po 1-wire. załużmy, że mamy urządzenie, które potrafi komunikować się tylko z DS18B20 i nic więcej (softu urządzenia nie możemy zmienić). Chcemy do tego urządzenia przesyłać dane. Widzę to tak. Na zapytanie urządzenia symulator odpowiada kodem urządzenia DS18B20, na zapytanie o temp. wysyła dane przez nas wybrane. Wygląda to tak jakbyśmy to my ustalali temperaturę. Mam nadzieję, że jasno opisałem problem. Wszelkie pomysły i realizacje mile widziane. Pozdrawiam
Tak się zastanawiam...
Witam.
Mirku przecztałem ten bardzo przydatny mi artykuł i mam pewno pytanie dotyczące obsługi tych DS-ów.
Czy aby na pewno trzeba po każdej konwersji temperatury trzeba czekać te 750ms?
Mnie się wydaje że jest to niezbędne tylko wtedy gdy czujnik jest podpięty w trybie zasilania go przez linię DQ (dwa przewody). A jeśli podłączamy czujnik standardowo (trzy przewody) ten czas oczekiwania jest niepotrzebny.
Niekiedy ten czas konwersji strasznie przeszkadza np przy obsłudze multipleksowanego wyświetlacza led.
Re: DS
Zasilanie nie ma tu nic do rzeczy po wydaniu rozkazu konwersji trzeba odczekać czas aż czujnik zmierzy temperaturę... to chyba normalne. Temperatura nie jest mierzona w locie.
Nie rozumiem w jaki sposób czekanie 750ms przeszkadza w multipleksowaniu wyświetlacza? natomiast sama transmisja danych 1-Wire trochę przeszkadza i trzeba umiejętnie program napisać aby przerwania nigdy nie występowały w środku przesyłania bajtu po 1-wire bo wtedy będzie się źle wysyłać
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
No to nie wiem jakim cudem
No to nie wiem jakim cudem kilka moich urządzeń działa właśnie bez tego czasu konwersji.
Re: DS
Może nieświadomie odliczasz w przewrwaniu albo co którys odczyt z dsa jest dobry jak się akurat konwersja skończy albo obsługujesz wiele rzeczy w programie i siłą rzeczy robi się zwłoka. Trudno powiedzieć bez kodu programu
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Przejrzalem programy dwóch
Przejrzalem programy dwóch swoich urządzeń które działają już jakiś czas prawidłowo. No i tak jak pisałem nie ma w nich tych czasów oczekiwania na konwersję. Jest rozkaz dokonania konwersji i zaraz odczyt. Nieprawidłowości w odczycie też nie ma. W programach tych nie korzystam z przerwań.
Może to bascom bez wiedzy użytkownika załatwia to "za kulisami"?
Pamiętam jak kiedyś męczyłem obsługę 16-sto pozycyjnego wyświetlacza alfanumerycznego led i ds18b20 i właśnie wtedy odkryłem że ds działa bez tych opóźnień. Oczywiście tylko w trybie trzy-przewodowym.
Mirku jeśli możesz to sprawdź to u Siebie.
Witam wszystkich. Stare
Witam wszystkich. Stare zagadnienie ale chciałbym dodać coś od siebie. Czas konwersji jest niezbędny na zasilaniu pasożytniczym ( dwa przewody). Na zasilaniu aktywnym (trzy przewody) nie jest konieczny ( z praktyki), aczkolwiek wg dokumentacji powinien wynosić przynajmniej 200ms. Gdzieś w jakiejś publikacji wyczytane, sprawdzone w praktyce. Atmega16, bascom, instrukcja odczytu zaraz po instrukcji konwersji nie powoduje przekłamań w pomiarach. Może na dobry egzemplarz DS trafiłem, może firma Dallas "zabezpiecza" się tymi 200ms, lub długość magistrali ma wpływ na czas konwersji DS. W każdym razie w owej publikacji wyjaśniono to w ten sposób:
1. Ładowanie wewnętrznego kondensatora w DS
2. Instrukcja conwert (DS zasilany z wewnętrznego kondensatora)
3. Ponowne naładowanie wewnętrznego kondensatora
4. Odczyt z DS(DS zasilany z wewnętrznego kondensatora)
Przy zasilaniu pasożytniczym, bez zwłoki nie nastąpi ponowne naładowanie kondensatora w DS i braknie energii na wysłanie wartości temperatury, sama konwersja również przebiega wolniej ze względu na niewielką wydajność tego kondensatora.
Z praktyki, to by się zgadzało ;).
Pozdrawiam.
Temp = Temp * (-1) Bascom nie
Bascom nie przyjmuje takiej skladni. Dla uzyskania wartosci ujemnej mozna uzyc metody
Pozdrawiam
wartość ujemna
Dla wartości ujemnej np. -0,5 zostanie pobrane FFF8h czyli w DEC 255 i 248?
Re: DS
Tak dokładnie tak powinno być to odebrane.... Ja czesto odczytuje też
gdzie Hi jest zmienna integer.... po wypisaniu na LCD dostajemy liczbę ze znakiem i nie trzeba kombinować
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.