Alternatywa dla DS18B20

Obok jest wątek o problemach z tymi układami. Czy jest jakaś cyfrowa alternatywa dla nivh, co miałaby prosty interfejs, najlepiej jednoprzewodowy? Używając 1wire na słabych mcu, jest problem w zmieszczeniem się w slotach czasowych gdy akurat w trakcie komunikacji 1wire przychodzi przerwanie z innego peryferium...

Reply to
Marek
Loading thread data ...

Marek pisze:

Przerwanie można zablokować, rozwiązaniem byłby interfejs sprzętowy, a te już raczej wielożyłowe. A problemem z czujnikami temperatury 1-wire jest niedostateczne ich zabezpieczenie przed wpływem warunków pogodowych.

Reply to
AlexY

Co masz na myśli, konkretnie? I dlaczego czujniki z innym interface miałyby być łatwiejsze do zabezpieczenia?

Reply to
Pszemol

Wiedziałem, że ktoś zaraz coś takiego napisze. Nie po to są przerwania, żeby je blokować, dla mnie jest to niedopuszczalne pójście na łatwiznę, świadczące o bezradności programisty albo sprzętu.

Jedno nie detrminuje drugiego. Zdaje się, są jakieś egzotyczne mcu ze sprzętowym 1wire.

A wystarczyłoby aby okna transmisyjne w 1wire były w ms a nie us. O ile w trybie pasożytniczym jest zrozumiałe użycie us, to w trybie z normalnym zasilaniem okna mogłyby być dłuższe. Czy naprawdę wszyscy muszą mieć odczytaną temp. poniżej 1ms? Szczególnie to jest nonsens, gdy i tak trzeba czekać na konwersję w liczoną w ms (tak wiem, 1wire to nie tylko termometry).

Reply to
Marek

A jakiej rady się spodziewałeś skoro nie przewidziałeś sprzętowego generowania bitów? Jak przerwań nie jest za dużo i są w miarę przewidywalne (np. od timera) to możesz jeszcze próbować synchronizować wysyłanie bitów z przerwaniem tak żeby mieć pewność, że przerwanie nie wlezie w środek bitu.

Ten egzotyczny sprzęt nazywa się UART.

formatting link

Reply to
Zbych

Napisałem propozycję, dłuższe okno. Ale może niepotrzebnie upieram się przy cyfrowym. Może są tanie i proste analogi V=f(T)?

Wiedziałem, ze ktoś to zaproponuje ;). Uart potrzebny mi jest do czegoś innego. To ma być propozycja do małych mcu, gdzie z reguły jest tylko jeden uart.

Reply to
Marek

W dniu 2014-12-09 00:12, Marek pisze:

no czy lepszym to nie wiem, ale alternatywą może być tmp102, też cyfrowy. i całe mnóstwo analogów

Reply to
Jawi

Mierzysz tylko temperaturę czy coś jeszcze? Bo obecnie z większości cyfrowych barometrów, akceleratorów/gyro można też odczytywać temperaturę.

LM35 i podobne.

Pozdrawiam

Marek

Reply to
Marek Wodzinski

Ale to do dallasa napisz, żeby ci zrobił krzem z wolniejszą transmisją.

Oczywiście że są, np. LM35 itp.

Impuls możesz generować czymkolwiek np. timerem, spi itd.

Spojrzałem jeszcze na czasy w 1wire. Impulsy są od 1us do max 60us. Przerwania blokujesz tylko na czas trwania stanu niskiego, bo odległość między bitami nie jest krytyczna. Masz taką aplikację, że opóźnienie przerwania o max. 60us zrobi ci różnicę?

Reply to
Zbych

odległość

Przy wysyłaniu owszem, ale przy odczycie nie wiem czy czujnik chce nadać 0 czy 1, stąd przerwania musiałyby być blokowane też w czasie odczytu.

Jeśli w trakcie komunikacji 1wire zdaży mi przerwanie mam bzdety na

1wire bo crc się nie zgadza. Na razie rozwiązałem to tak, że ignoruję taką błędna transmisję i korzystam z prawidłowej wartości odczytanej poprzednio. System kontroluje liczbę błędnych transmisji i jeśli zdarzają się pod rząd zbyt dużą ilość razy to sygnalizowany jest problem.
Reply to
Marek

Wiedziałem, ze ktoś to zaproponuje ;). Uart potrzebny mi jest do czegoś innego. To ma być propozycja do małych mcu, gdzie z reguły jest tylko jeden uart.

Jeśli w systemie masz przerwanie zegarowe np. co 1ms, to możesz tam obsługiwać 1-wire po jednym bicie na przerwanie. Impuls resetu też można załączać na określoną ilość taktów. Warunkiem jest to aby to przerwanie miało najwyższy priorytet. Metoda sprawdzona praktycznie.

Reply to
as

W dniu 2014-12-09 01:13, AlexY pisze:

Istnieją sprzętowe interfejsy 1-wire. Układy takie produkuje Dallas. Podłączasz to z jednej strony do I2C, z drugiej masz 1wire. Największą zaletą jest możliwość postawienia galwanicznej izolacji pomiędzy takim układem a MCU.

Reply to
Atlantis

Odczyt bitu możesz zrobić w połowie maksymalnej długości, czyli po 30us i tylko na tyle zablokować przerwania. Kolejne 30us do końca bitu możesz czekać już przy włączonych przerwaniach.

Reply to
Zbych

A co się stanie jeśli przerwanie zostanie odebrane te 60us później?

Reply to
AlexY

Masz dostępny konkretny standard którego nie zmienisz, nie walcz z tym, dostosuj się/swój projekt, albo zmień magistralę.

Po kawałku i za kilka dni będziemy wiedzieć wszystko co powinno znaleźć się w pierwszym poście.

Reply to
AlexY

Zostanie naruszony paradygmat, że przerwania mają być obsługiwane realtime a nie odkładane na później :).

Reply to
Marek

Pszemol pisze:

1-wire jest popularny wśród majsterkowiczów, tanie, względnie proste, dużo opisów, przykładów. Tacy ludzie najczęściej uczą się na swoich błędach np że termokurczka nie zabezpieczy wyprowadzeń przed wilgocią i temperaturą na zewnątrz.
Reply to
AlexY

Ale termokurczka z klejem całkiem sprawnie izoluje :)

Reply to
Marek

Dokładnie, jedną tak zabezpieczałem ze 4-5 lat temu. zacisnąłem na czujniku, zalałem epoksydem nóżki z przewodem i dogrzałem resztę na nóżkach. Jakoś działa do dzisiaj. Termo bez kleju było :) Podejrzewam, że epoksyd uszczelnił nóżki.

Reply to
Jawi

W dniu 2014-12-09 o 20:54, Jawi pisze:

Po co kombinować jak można psiknąć Plastikiem przez zaciśnięciem w termokurczliwce.

Reply to
Mario

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.