DS18B20 i komputer

Jan 22, 2009 12 Replies

znany i standardowy motyw, DS18B20 + podłączanie przez DS9097E. Testowałem to na jednym komputerze chodziło gadko wyniki ładnie zapisywały sie do MySQL (program LogTemp). Przeniosłem teraz to wszystko na inny komputer i zaczęło dziać się źle a mianowicie czasem temperatura wskazuje 127*C, komputer łapie muła przy zapisywaniu do MySQL, czasem temperatury sie różnią o kilka stopni od linii trendu, i to tylko takie "szpilki".



Pracuje to teraz na Celeronie 400MHz, 256MB RAM, zamiast dysku karta CF. Zużycie mocy obliczeniowej nie sięga nigdy 100%. Kto jest w tym wypadku winny takiego stanu rzeczy? karta CF? czy może procesor że wskazuje jakieś nieprawidłowe pomiary? Ten sam DS9097E na innych komputerach sobie radzi idealnie.



Mogę CPU wymienić na PIII 500MHz jeśli to pomoże.


DS9097 to zwykly pasywny adapter, bazuje na pewnych parametrach portu RS232, m.in. wydajnosci pradowej. A ze porty we wspolczesnych PCtach sa rozne to i zachowuje sie to roznie. Zrob porzadny adapter to problemy znikna. Zreszta niedawno byl tu podobny watek.

T.M.F. pisze:

Porządny czyli jaki?

We współczesnym PC wszystko ok, w archaicznym padaka.

To zalezy jak trafisz. Podlacz mu jakies dodatkowe zasilanie, albo kup konwerter scalony USB-1-wire lub RS232-1-wire. To jeden scalak, proste do zmajstrowania, kosztuje ciut wiecej niz pare rezystorow i zenerek, ale bedzie dzialac. Nie wykluczam tez, ze soft jest trefny. Masz zrodla?

Przyj±³bym nastêpuj±ce kroki w diagnozie:

1) Pod³±czenie oscyloskopu do szyny danych poka¿e problem. Master musi wys³aæ krótk± szpilkê do DS18B20, a ten odpowiada. a) trzeba zobaczyæ czy PC z tym DS9097E wysy³a RESET i szpilki o poprawnej d³ugo¶ci. Musi byæ tak jak w karcie katalogowej DS18B20 050102 na stronie16
formatting link
Czy poziomy napiêæ s± odpowiednie? c) Czy Windows nie buforuje danych wysy³anych i odbieranych przez RS232. Mo¿na wy³±czyæ FIFO w ustawieniach portu COM 2) Przyjrzeæ siê programowi je¶li parametry napiêciowe s± w zakresie tolerancji. W szczególno¶ci dobrze by by³o wiedzieæ, czy Master czyta w odpowiednim momencie dan±. Przypuszczam, ¿e je¶li u¿yto RS232 do odczytu, to mo¿e byæ problem z zsynchronizacj± nadawania i odbierania. Tak czy inaczej oscyloskop. 3) Te piny w tej przej¶ciówce to tragedia. Ten typ z³±cza by³ przeznaczony do analogowej transmisji telefonicznej, a nie do transmisji sygna³ów cyfrowych. Nale¿y odgi±æ i przeczy¶ciæ. Nie widzê sensu wymiany procesora. Raczej: a) korekta programu b) pod³±czenie DS18B20 do portu Centronics, je¶li siê nie da do COM. c) dodanie normalnego interfejsu w miejsce tego DS9097E. "The serial port must support a data transmission rate of 115.2kbps in order to create the 1-WireR time slots correctly. _Nearly_ all PCs support the required data rate and are fully compatible with the DS9097." Proszê zwróciæ uwagê na s³owo _Nearly_. W t³umaczeniu oznacza to: Rzadko który PC spe³ni te parametry, a jak nawet spe³ni to spêdzisz 3 dni na konfiguracji :-)

Ten DS9097E to wydaje mi siê do¶æ prymitywny. I jeszcze taki opis z karty. "When powering up, the DS2480B performs a master reset cycle and enters the Command Mode, which is one of the two static states. The device now expects to receive one 1-Wire reset command on the TXD line sent by the host at a data rate of

9600bps (see Communication Commands section for details). This command byte is required solely for calibration of the baud rate timing generator the DS2480B and is not translated into any activity on the 1-Wire bus. After this first command byte the device is ready to receive and execute any command as described later in this document. NOTE: Baud rate calibration is valid only for the VDD operating voltage at which calibration is performed. Post-calibration changes in VDD by more than 5% may cause calibration error to exceed  5%. The DS2480B requires a 1-Wire reset command sent by the host at a data rate of 9600bps for calibration. Data rates of 115200bps or higher during calibration may put the DS2480 in an undefined state, requiring a power-down reset to restore normal operation." Czytaj±c to mam wra¿enie, ¿e MAXIM chce ludzi wpêdziæ k³opoty. Wygl±da mi na to, ¿e ten uk³ad jest MOCNO zale¿ny od protoko³u RS232 i buforowania danych. Wydaje mi siê, ¿e najlepiej by by³o zamieniæ go na 8-pinowy uControler. np. PIC z rezonatorem kwarcowym i wysy³aæ normalnym RS-em zebrane dane do PC. Nawet gdzie¶ mam program do PICa, który wysy³a dane do PC. Jak bêd± chêtni to udostêpniê.

DS2480B i DS9097 to dwie zupelnie rozne rzeczy. Co do opisu to nie ma problemu, bo Dallas daje swoje biblioteki wiec programiste interesuje tylko wywolanie gotowych funkcji. Ja sobie napisalem 1-wire na AVR w C i C++, ale problem w tym zastosowaniu jest taki, ze na RS232 nie masz zasilania. Sensowniej byloby cos wrzucic na USB, czyli z wykorzystaniem FTDI, w trybie synchronicznym bit-bang byloby to proste do zrobienia. Tyle, ze cena juz nam sie robi porownywalna z gotowym scalakiem 1-wire-USB.

Acha. Ja zasugerowa³em siê odpowiednikiem, który proponuje Dallas DS9097U-S09

Recommended Upgrades for New Designs Part Number Replacement Explanation DS9097 DS9097U-009 Similar part, will be recognized by most software drivers. DS9097 DS9097U-S09 DS9097# DS9097U-S09 DS9097E# DS9097U-S09 DS9097E DS9097U-S09 DS9097E DS9097U-E25

Czyli sam dallas proponuje wymianê tego Passive na hardware.

Tyle, ¿e nie daje jeszcze skonfigurowanego komputera PC :-) Pisz± tylko _Nearly_ all PC.

To mo¿e lepiej od razu na Ethernet PoEthernet

formatting link
Przy czym w tej sytuacji- korzystaj±c z tej idei- mo¿e to byæ tak¿e RS232, a napiêcie wzi±¶æ z klawiatury PS/2. A klawiaturê pod³±czyæ USB. Lub z portu myszki, a myszkê na USB.

Sylwester Łazar pisze:

Czyli jak zrezygnuję z Parasite Mode i pod VDD podłącze stosowne zasilanie 5V to nie będzie kłopotu? Bo w tej chwili każde większe obciążenie procesora poza LogTemp powoduje niedokładne pomiary. Nawet jak proces ma tryb realtime.

Teoretycznie mógłbym korygować te błędy ale tu istotna jest niewielka różnica wiec korekcja spowoduje problemy.

Ja nie zrozumia³em pytania. Generalnie, aby zdiagnozowaæ i ew. naprawiæ problemy w Pana konfiguracji nale¿y pod³±czyæ oscyloskop do DS18B20. Bez tego ani rusz :-( My tu z koleg± rozmawiali¶my jak tu zrobiæ to bardziej profesjonalnie: a) pod³±czaj±c DS18B20 do mikrokontrolera, który wysy³a temperaturê do PC np. z prêdko¶ci± 9600 bodów b) napisaniu lub zmianê programu tak, aby ³atwo sobie t± temperaturê odczytaæ na prawie ka¿dym PC. Przy czym to nasze prawie oznacza jakby wszystkie PC które maj± port RS232, a nie jak DALLAS pisze: "jak bêdzie dzia³aæ to fajnie". Wymieniali¶my tylko pogl±dy pt. "Z której elektrowni skorzystaæ i którym z³±czem?" W domy¶le zak³adam, ¿e mikrokontroler zmie¶ci siê we wtyczce- podobnie jak Dallas.

I teraz nale¿y sobie zadaæ pytanie, czy czas ju¿ zrobiæ to dobrze :-)

Dokładnie.

atmega8 + ds1820. uC ma 1wire i rs-a (maxa 232 jeszcze trzeba). I zmieści się we wtyczce :-)

Program do napisania w 3 minuty.

Nawet mogę przesłać hex-a na uC z czymś takim.

m.

Marcin Łukasik pisze:

Do zrobienia konwertera 1Wire<->RS232 wystarczy dużo prostszy uC. Ot choćby 8-nóżkowy ATtiny25, którego USI można użyć jako jednokierunkowy UART (half duplex).

Zgadzam się. Ja po prostu zawsze wspominam o atmega8, bo zawsze go mam pod ręką :-)

A i różnica w cenie niewielka, więc cóż za różnica :)

m.

Marcin Łukasik pisze:

Prostsza płytka / łatwiej przylutować itd.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required