Podzielam Twoją niechęć do umieszczania całego procesora na czujnik ...
RS-485 do ekonomicznej komunikacji czujnika / wyjścia
Mogę polecić co następuje, w jaki sposób teraz wykonuję tego rodzaju czujniki / urządzenia wyjściowe:
- Lokalny bardzo mały procesor podobny do Arduino na pozycję czujnika
- Sterownik RS-485
- Lokalny bardzo mały zasilacz impulsowy
- Zasilanie centralne
- Podłącz za pomocą kabla CAT-5 lub pary zasilania + danych
Oznacza to, że możesz zachować bardzo małą elektronikę dla każdego czujnika, co upraszcza wszystko (mniej szumów, mniej błędów). Oprogramowanie do komunikacji z czujnikiem jest dedykowane - bez przetwarzania wieloprocesowego lub przeplatania funkcji, ma cały procesor. Jeśli jest tylko jeden czujnik, umieszczam adapter RS-485 w komputerze odbiorczym; częściej mam urządzenie Atmega z RS-485 i Ethernetem i konwertuję do iz pakietów UDP. Wtedy serwer - lub serwery, które tak łatwo można uczynić nadmiarowymi - mogą wykonywać pracę w dogodnym dla siebie miejscu.
RS-485 jest tani, prosty i łatwy do debugowania, jeśli zastosujesz się do kilku prostych zasad. Działa na krótkich lub długich dystansach. Wybierasz prędkość i konfigurujesz prosty protokół (łatwy dla inżynierów oprogramowania), który będzie działał wiecznie. Często uruchamiam go przy 9600 lub nawet wolniej. Jeśli masz odpowiednie diody LED, możesz zrozumieć uszkodzenia bez użycia narzędzi. To wystarczająco proste. Dostałem zajęcia z „obliczeń fizycznych” w szkole artystycznej w Nowym Jorku, aby w ciągu jednego popołudnia uruchomić sieć, opartą na formacie bardzo podobnym do syslog (RFC 3164) oraz CRC-32.
DNie używaj radia. Trzymałem się z daleka od wszystkiego, co oparte na radiu, z wyjątkiem sytuacji, w których absolutnie niemożliwe jest prowadzenie przewodów. Po prostu nie wiadomo, kiedy pojawi się jakaś maszyna zakłócająca: zbyt często jest to coś w rodzaju krótkofalówki prasowej lub policyjnej podczas wielkiego otwarcia mojego wydarzenia.
Dnie używam ethernet Kiedyś używałem Ethernetu z POE, ale zmieniłem się po tym, jak musiałem pracować w wielu trudnych warunkach (na zewnątrz, pod wodą, w pobliżu dużych maszyn przemysłowych). Nie ma przełącznika do obsługi, nie ma napięć POE. I bez wyścigu zbrojeń 10BaseT, 100BaseT, 1000BaseT.
DNie używaj autobusów typu board Kiedyś miałem system (zbudowany przez innych), który był SPI na 2 metry: prawie działał, ale kiedy musieliśmy przenieść go na 3 metry ... nigdy nie działał. W końcu zastąpiłem go RS-485, jak opisano tutaj.
CAN jest świetny, ale rozwiązuje trudny problem, dlatego jest bardzo złożony. Interfejs szeregowy i RS-485 jest absolutnie wszechobecny, co pozwoli Ci zaoszczędzić czas w kółko.
Proste zasady
- Dwuprzewodowy półdupleks (nigdy czteroprzewodowy)
- Albo a) jeden nadrzędny (komputer) wiele podrzędnych (czujniki) lub b) jeden głośnik i prawdopodobnie wielu słuchaczy
- Jeśli jest więcej niż kilkunastu niewolników, pomyśl o a) kolizjach i b) ładowaniu autobusów
- Zasilanie z centrali
- Brak lokalnego połączenia po stronie czujnika
- Jeśli potrzebujesz, użyj izolatorów optycznych lub przekaźników
- Niezależnie od protokołu, musi mieć sumę kontrolną
- Używaj go jak UDP, a nie TCP
- Uruchom to tak wolno, jak tylko możesz
- Przy 9600 prawdopodobnie nigdy nie będziesz mieć żadnych problemów
- Ponad 20 metrów, zwróć uwagę na zakończenie
- Jeśli jesteś na zewnątrz, pod wodą lub w pobliżu dużej mocy, nadal dobrze, ale zrób więcej zadań domowych
- Jeśli potrzebujesz szybko (powiedzmy 1 Mbit / s), nadal dobrze, ale zrób więcej zadań domowych
- Jeśli potrzebujesz odosobnienia, nadal dobrze, ale odrób więcej zadań domowych
- Jeśli potrzebujesz setek węzłów, nadal dobrze, ale zrób więcej pracy domowej
Koszty
Koszty są niskie, poniżej 10,00 USD / szt. - większość zależy od obudowy i złączy. Poniżej znajdują się ceny z 10 rabatami od Digikey lub Ebay.
Do jednorazowej lub eksperymentalnej tablicy używam tablic z Chin:
- Konwertery TTL na RS-485 z serwisu Ebay (0,90 £)
- Arduino „Pro Micro” lub podobny (z przyciskiem resetowania!) (1,80 £)
W przypadku płyt dedykowanych wolę pojedyncze żetony:
- 75176-pinowy układ scalony 0,70 £ + gniazdo w przypadku miejsca
- ATTiny22 lub podobny 0,50-1,50 GBP
75176-pinout jest standardem dla sterowników RS-485, co oznacza, że możesz użyć egzotycznych sterowników, jeśli potrzebujesz (np. z wyższą ochroną ESD).
W obu przypadkach dla zasilania podaję 12VDC lub 24VDC wraz ze skrętką dla sygnału. Ponad CAT-5 działa dobrze lub kabel zasilający + danych. Na każdym urządzeniu jeden zasilacz Recom R-78E5.0-0,5 (1,99 GBP / szt.). Te urządzenia są świetne. Umieszczenie małego zasilacza obok każdej jednostki sprawiło, że wszystkie problemy z zasilaniem i hałasem zniknęły.
Przyszłościowe
Kolejną zaletą tego podejścia jest to, że umieszcza wszystkie ważne kwestie dotyczące kompatybilności w protokole na linii RS-485. Jeśli w przyszłości nie możesz uzyskać tego samego czujnika lub procesora, kup inny i utwórz ponownie. Jeśli używasz układów sterownika 75176-pinout, zawsze będziesz mógł uzyskać zamienniki.
A jeśli musisz połączyć się z czymś, co chcesz odizolować, łatwo jest uzyskać izolowany sterownik, taki jak ten z Digilent (choć znacznie droższy, około 17,00 GBP). Ale bez żadnego przeprojektowywania podstawowego systemu ani przekodowywania.
Referencje
Aby właściwie przeczytać o RS-485, zacznij od nich i postępuj zgodnie z odnośnikami.
- Texas Instruments Przewodnik projektowy RS-485 PDF
- Texas Instruments AN 1057 Dziesięć sposobów na kuloodporne interfejsy RS-485
PDF
- Bob Perrin, „The Art and Science of RS-485”, Circuit Cellar, lipiec 1999. PDF
Szczegóły
- „Dwużyłowy półdupleks” w rzeczywistości oznacza trzy przewody: skrętkę dla sygnału i masę, która często jest uziemieniem prądu stałego, jeśli systemy są zasilane z tej samej mocy.
- Zobaczysz ogromne spór o to, czy potrzebujesz tarczy, ale Perrin mówi, że nie, chyba że masz egzotyczne okoliczności
- W trybie półdupleksu wyjście sterownik jest włączany podczas transmisji.
- Na komputerze PC zazwyczaj włączasz sterownik z RTS wyjścia RS-232. Jądro Linuksa ma wywołanie ioctl (8) umożliwiające włączenie tego na liniach szeregowych
TIOCSRS485
doc
- W mikrokontrolerze używasz linii IO dla Driver-Enable
DE
. Zawsze możesz słuchać (podłączyć Receive-Enable / RE
do ziemi) lub częściej dołączyć do DE
i / RE
i jechać z tego samego pinu we / wy . Można sobie wyobrazić, że użyjesz pinu IO i napiszesz / RE
, ale nigdy go nie widziałem.
- Istnieje wiele różnych układów sterowników, ale wybierz jeden z pakietu 75176, ponieważ jest najbardziej powszechny
- Świetnym pomysłem jest użycie 8-pinowych pakietów DIL i gniazda dla sterownika, aby jak ktoś źle go podłączył, można wymienić przepalony sterownik; możesz także użyć bardziej niezawodnych chipów sterownika, jeśli chcesz, lub wersji o niskim EMI z niższymi prędkościami obrotu.