Chciałbym móc połączyć szeregowo wiele urządzeń za pomocą tylko przewodów zasilających, a następnie wstrzyknąć sygnał komunikacyjny przez linie energetyczne, aby przekształcić go w sieć półdupleksową.
Czy są jakieś powszechne metody osiągnięcia tego? Im prościej, tym lepiej i byłoby wspaniale, gdyby używał UART na mikrokontrolerze.
Edycja: W rzeczywistości pracuję nad dwoma projektami, które, jak sądzę, mogłyby na tym skorzystać - jeden to sieć czujników o niskiej mocy. Drugi to projekt oświetlenia LED. W obu przypadkach celem jest uproszczenie okablowania, ale jeśli rozwiązanie jest zbyt złożone, prawdopodobnie bardziej sensowne jest użycie trzech przewodów (pwr, gnd, comms).
communication
uart
power-line-communication
Peter Gibson
źródło
źródło
Odpowiedzi:
Czy sprawdziłeś protokół Dallas 1-Wire ? Jest to naprawdę niska prędkość i jeśli twoje urządzenie pobiera stosunkowo niewielki prąd, możesz uciec od użycia pasożytniczej energii i zasilić urządzenie liniami danych.
źródło
Zasadniczo musisz popchnąć sygnały prądu przemiennego na linię zasilania prądem stałym i oddzielić je ponownie. Jest to powszechne w domach z antenami telewizyjnymi - wzmacniacz mocy jest umieszczony w pobliżu anteny, a prąd stały jest popychany w górę przewodu antenowego, podczas gdy sygnały telewizyjne docierają do przewodu antenowego.
Nie podajesz wystarczających szczegółów dla przykładowego obwodu, ale oto podstawy:
Źródło zasilania powinno mieć szeregowy cewkę idącą na wyjście, aby blokować sygnały wysokiej częstotliwości zasilające zasilacz i powodujące problemy z regulacją.
Pobór mocy każdego urządzenia powinien być podobnie zabezpieczony cewką indukcyjną, aby odfiltrować sygnały prądu przemiennego. Podanie tego do diody i kondensatora sprawi, że sygnały prądu przemiennego nie zagrozą mocy modułu.
Przed cewką przymocujesz również kondensator. Prawdopodobnie będzie to niska wartość, więc większość sygnałów prądu przemiennego na linii przechodzi przez kondensator, ale żaden prąd stały nie przejdzie.
Wyjście tego kondensatora MOGĄ być użyteczne bezpośrednio do mikrokontrolera (z mocowaniem diodowym), jeśli masz umiejętności wdrażania niezbędnego oprogramowania do odczytu okaleczonych danych poza linią. Podobnie można wysyłać impulsy bezpośrednio do kondensatora za pomocą styku we / wy.
Sprawdź, jak to wygląda na lunecie - fala prostokątna wchodząca do kondensatora będzie wyglądać jak rozkładający się skok na linii zasilającej. Kiedy pojawi się kolejny kondensator w sieci, będzie dalej zmieniany - tylko skok na linii.
Odczyt tych skoków może być trudny, a odfiltrowanie szumów może być trudne, więc jeśli biegniesz długimi liniami, masz głośny zasilacz lub biegniesz w pobliżu innych źródeł hałasu, musisz wdrożyć znaczące przetwarzanie sygnału. Zwykle ma to postać AM (ASK - kluczowanie z przesunięciem amplitudy) lub FM (FSK - kluczowanie z przesunięciem częstotliwości) na linii z krajalnikami danych, komparatorami, generatorami tonów i detektorami itp. Lub równoważnym przetwarzaniem w oprogramowaniu.
To może wydawać się dużo pracy, ale zacznij od prostego detektora impulsów na końcu odbiorczym i wysyłaj fale kwadratowe podczas transmisji. Użyj oscyloskopu, aby zrozumieć, co się dzieje, a jeśli okaże się, że potrzebujesz bardziej złożonego rozwiązania, ponownie zapytaj o wykrywanie ASK lub FSK.
Detektor impulsów może być prostym przerwaniem programowym na styku wejściowym zmiany lub 555 skonfigurowanym jako nosze impulsowe.
źródło
Zbudowałem coś takiego dla systemu kontrolera pociągu (oczywiście model pociągu).
Był to jednokierunkowy protokół niskiej prędkości (jeden podmiot wysyła dane, wszystkie pozostałe są tylko odbiornikami), a transmisja odbywała się po prostu poprzez odwrócenie biegunowości szyny.
Na każdym „kliencie” był prosty obwód zrobiony ze zdjęciem (16C54 lata temu!), Prostownikiem i kilkoma mikroprzełącznikami do ustawienia adresu.
Nie mam już kodów źródłowych, ale system był naprawdę łatwy i działał bezbłędnie przez lata, umożliwiając łatwe sterowanie każdą lokomotywą, barierą przeładunkową, semaforem itp. Z głównego panelu sterowania bez dodatkowych przewodów.
źródło
Poleciłbym potraktować to jako sygnał, że dodajesz i usuwasz DC Offset. Można użyć kondensatorów do blokowania prądu stałego, umieszczając je szeregowo w obwodzie.
Poza tym trudno jest powiedzieć, co trzeba zrobić, ponieważ będzie to zależeć od aplikacji. Może być konieczne użycie opampa do oddzielenia kondensatora sprzęgającego od tego, co odbiera sygnał. Jeśli napięcie przesunięcia prądu stałego jest duże w porównaniu z napięciem sygnału, może nie być nawet konieczne wykonanie na nim żadnego warunku zasilania w celu usunięcia tętnienia, wszystko zależy jednak od zastosowania.
Mam parę głośników, które używają tej samej techniki do zapalania diody LED zasilania na drugim głośniku. Jeśli odpowiednio zwiększę głośność, zauważę, że dioda LED staje się jaśniejsza. W tej konkretnej aplikacji będą musieli martwić się o rodzaj tworzonego filtra RC.
źródło
Wiem, że to dość stary wątek, ale oto moje 2 pensy warte ...
Jeszcze nic nie działało, ale chciałem zrobić coś podobnego za pomocą Arduino + VirtualWire (ustawiony na naprawdę niską prędkość transmisji). Jak mówi Adam Davis powyżej, przesyłasz / odbierasz dane z linii 12V za pomocą kondensatora o niskiej wartości. Oznacza to, że zasadniczo dostajesz 0 V z niewielkimi skokami, które VirtualWire może (prawdopodobnie) zdekodować. Dobrą wiadomością dotyczącą tej metody jest to, że teoretycznie każde urządzenie na linii 12 V może rozmawiać i każde może odbierać. Pracowałem nad tym ze zwykłym kawałkiem drutu między dwoma urządzeniami na płycie chleba, ale nie jestem pewien, czy będzie działać na odległość, czy na rzeczywistej linii zasilania.
Jeśli transmisja odbywa się zawsze z tego samego miejsca, być może użycie czegoś takiego jak metoda Hornby'ego może być lepsza - tj. niech nadajnik przełączy linię zasilania między + 12V a -12V, aby wytworzyć sygnał. Każdy odbiornik ma prostownik na swoim podłączeniu do linii zasilającej, więc zawsze otrzymuje zasilanie + 12V. Można prawdopodobnie po prostu pulsować + 12V i każde urządzenie używa dużego kondensatora, aby wygładzić nierówności. Każda z tych metod jest prawdopodobnie bardziej niezawodna, ponieważ sygnał na linii zasilającej będzie znacznie silniejszy, a zatem łatwiejszy do odkodowania (nadal korzystałbym z VirtualWire, aby to zrobić, ale UART też mógłby działać).
W przypadku projektu oświetlenia LED istnieje duża szansa, że będziesz musiał przesunąć kilka wzmacniaczy w dół linii 12 V. To sprawia, że przełączanie jest nieco trudniejsze, więc możesz być lepiej z metodą RF-over-kondensatorową. Jednak wysokość otrzymywanych szczytów znacznie się zmniejszy wraz z wyższym prądem, więc może być konieczne wzmocnienie sygnału zapisywanego na linii (np. Użyj tranzystora wysokiej częstotliwości lub dwóch, aby „wzmocnić” sygnał TTL do 12V przed przepychając go przez kondensator do linii 12 V).
Tak czy inaczej, coś takiego jak VirtualWire prawie zawsze będzie działać lepiej niż UART (i prawdopodobnie I2C itp.). Powodem jest to, że wykorzystuje pętlę synchronizacji fazy do „synchronizacji” transmisji i odbioru, co oznacza wyższy stosunek sygnału do szumu i mniej błędów. To powinno sprawić, że będzie trochę bardziej wybaczający mniej niż idealny sprzęt ;-)
źródło
Jest wiele pytań, które mógłbym zadać przed udzieleniem porady. Myślę, że pierwszą rzeczą, którą powinniśmy zrozumieć, jest twój cel tutaj? Niski koszt budowy, długie przebiegi komunikacji, oszczędzając w ten sposób okablowanie, dowód koncepcji lub coś innego. Wszyscy mieliby różne zalecenia. Na przykład, jeśli nie martwisz się kosztami, możesz wybrać rozwiązanie Zigbee lub jeśli jest to długa seria, to stwarza problemy z większością transmisji jednoprzewodowych, a teraz musisz spojrzeć na inne opcje. Myślę, że najbardziej martwi mnie twoje pytanie, że mówisz „im prościej, tym lepiej”. To, o co prosisz, jest możliwe w niektórych sytuacjach, ale odważę się powiedzieć, że nie będzie to proste. Głównie z powodu rzeczywistych problemów, które napotkasz, takich jak utrata sygnału, szumy i zarządzanie prądem.
Powodzenia.
źródło
Czy na pewno jakieś rozwiązanie USB nie jest wykonalne? Dostępnych jest około 2-2,5 W.
Oto kilka innych pomysłów -
Power over ethernet (POE) integruje sygnały zasilania i Ethernet. Istnieje wiele półprzewodników i przetwornic DC / DC przeznaczonych do tych urządzeń. Jest to prawdopodobnie najlepsza opcja, ponieważ są do tego gotowe części.
Wierzę, że niektóre firmy zajmujące się automatyką domową integrują sygnały zasilania i komunikacji AC. Może niektóre z nich można dostosować.
Ludzie audio mają „fantomowe” zasilanie mikrofonów. 48VDC plus audio przez kabel mikrofonowy.
źródło
Protokół X-10 robi dokładnie to.
Również niektóre z powyższych sugestii nie są bezpieczne lub na pewno nie mogą być stosowane w zatwierdzonych urządzeniach (znak UL / CE).
źródło
Jest tam dedykowany półprzewodnik, który dostaje bajt UART i przesyła go przez linię energetyczną z prędkością do 115,2 Kb / s. To urządzenie zostało zaprojektowane z myślą o motoryzacji, więc jest odporne na hałas. Zobacz http://yamar.com/product/sig60/
źródło
Sprawdź to:
I wątek, w którym wziąłem tę informację (to samo pytanie, co ty).
źródło
Odbywa się to w systemach telefonicznych. Jak wiesz w telefonie, mamy zasilanie i ton wybierania oraz głos w systemie dwuprzewodowym. Możesz wysyłać swoje polecenia za pośrednictwem linii elektroenergetycznej poprzez generowanie tonu (takiego jak wybieranie tonowe w zwykłym telefonie), układy scalone (Ic) są powszechnie używane i dlatego są bardzo tanie.
Zrobiłem taki projekt dotyczący sterowania zaworami wodnymi w dużym zakładzie w Iranie (do 99 zaworów). Mogę dodać schemat blokowy mojego obwodu dekodera kodera, jeśli uważasz, że może być przydatny.
źródło