Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Zdalne sterowanie - gotowe moduły na 433Mhz

07 Wrz 2012 16:30 3477 11
  • Poziom 18  
    Witam, Przymierzam się do stworzenia prostego samochodziku zdalnie sterowanego za pomocą gotowych modułów (odbiornik i nadajnik). Chodzi mi o sterowanie 4 silniczkami. Czy takie coś jak z aukcji numer 2550576201 zdało by egzamin? Jeżeli tak to jak to obsłużyć?
  • Poziom 36  
    Musiałbyś mieć coś, co pozwoliło by Ci sterować 4 sinikami za pomocą jednego kanału - tzw. multipleksacja.

    Dodano po 2 [minuty]:

    Niektóre z kostek miały możliwość sterowania niezależnymi kanałami, na przykład HX2272:

    http://www.yggenyk.dk/wiki/HX2272_Remote_decoder_circuit

    Dodano po 1 [minuty]:

    No oczywiście jeśli znasz się na programowaniu jakichkolwiek mikroprocesorów, to już masz sprawę jasną, sam bez problemu zrobisz taki układ.
  • Poziom 18  
    Hmm nie za bardzo rozumiem. A nie dało by się zrobić tak:
    Procesor A - procesor do którego podłączony jest nadajnik
    Procesor B - procesor do którego podłączony jest odbiornik.

    I, jeżeli na pinie na przykład PA0 procesora A pojawi się jedynka, to wystaw na pinie PB0 procesora B jedynkę(i tym samym załączając silniczek numer 1) ??
    A jeżeli na pinie PA1 procesora A pojawi się jedynka to wystaw na pinie PB1 procesora B jedynkę(załączając tym samym silniczek numer 2) ?

    Jak się w ogóle obsługuję takie moduły co podałem?
  • Poziom 36  
    Co byś nie robił, musisz zrobić tak, by do nadajnika dochodził tylko jeden sygnał, niosący informację o czterech sygnałach - wysyłanie szeregowe. Oczywiście, widzę, że masz możliwość pracy z procesorkami, więc sprawa jest bardzo ułatwiona. Możesz wysłać ciąg 10000000 reprezentujący załączenie na przykład PA0, albo 01000000 reprezentujący PA1 i tak dalej - ważne jest, by te dane poszły na wyjście szeregowo, i z tej formy w odbiorniku dało się je zdekodować na równoległe.
    Twoim problemem będzie co innego - każdy odbiornik, poza sygnałem z nadajnika, odbiera także szumy, sygnały z innych nadajników, itp. Musisz umieć odebrać spośród tych szumów interesujący Cie sygnał - tutaj pojawia się tzw. suma kontrolna CRC. Dlatego też łatwiej byłoby wykorzystać gotowy komplet modulator / demodulator, który zresztą może być wysterowany także przez mikroprocesor.

    Dodano po 4 [minuty]:

    Spróbuj sobie przeanalizować datasheet modulatora MC145026 i komplementarnego demodulatora MC145028. W każdym pilocie (o niskim skomplikowaniu) dane są wysyłane poprzez jeden kanał, różne są natomiast komendy wysłane przez tego pilota.

    Dodano po 4 [minuty]:

    Twój moduł nadawczy wykorzystuje modulację ASK:
    http://pl.wikipedia.org/wiki/ASK

    Dodano po 1 [minuty]:

    Przepraszam, źle podałem - nazwy MC145026 i MC145028 to kolejno enkoder i dekoder, a nie modulator i demodulator!

    Dodano po 5 [minuty]:

    Niech ktoś to jakoś wytłumaczy, bo ja się dziś do niczego nie nadaję. Autora przepraszam za zagmatwanie i proszę, by się nie zniechęcał ;-)
  • Poziom 39  
    Zestaw który chcesz kupić to tylko moduł odbiornika / nadajnika pracującego na częstotliwości 433MHz aby zapewnić prawidłową transmisję danych wymagane jest aby wysyłane dane były kodowane lub wysłana paczka danych miała sumę kontrolą . Dzięki temu zapewniasz prawidłową komunikacją a właściwie prawidłowy odbiór wysłanych danych a co za tym idzie prawidłowe wykonywanie danych rozkazów wysłanych z nadajnika . Sposób w jaki to rozwiążesz jest dowolny można sprzętowo ( zaproponowane układy ) lub programowo przez własny algorytm kodowania lub obliczanie sum kontrolnych . Aby wszystko było jasne bez kodowania czy sum kontrolnych transmisja będzie działać ale odbiornik będzie odbierał wszystkie śmieci jakie są w eterze powodując spadek czułości i niewłaściwe wykonywanie wysłanych rozkazów . Sama idea sterowania jest dowolna najprościej to wysyłać 8bitową ramkę danych przypisując po dwa bity na silnik np 00 stop , 01 w prawo , 10 w lewo , 11 hamowanie to dla jednego silnika analogicznie pozostałe bity i silniki , wszystko zależy od umiejętności programistycznych . Proste testy możesz wykonać korzystając z sprzętowej możliwości układu UART danego procesora , następnie stworzyć łącze bezprzewodowe pomiędzy układami wykorzystując moduły radiowe .
  • Poziom 18  
    Hmm...ale nie rozumiem jak połączyć nadajnik z procesorem i z MC145026. Czy chodzi o takie połączenie:
    Atmega32 PA0...PA7 - MC145026 A1...A8 i z pinu Dout na nadajnik ??

    I co dalej?
    bogdan_p Chodzi Ci o to aby podać na przykład na PORTA sekwencje 00011011 tak? A jak to później w odbiorniku podzielić na te cztery dwu-bitowe sekwencje ??
  • Poziom 39  
    bercik11palcow napisał:
    Chodzi Ci o to aby podać na przykład na PORTA sekwencje 00011011 tak? A jak to później w odbiorniku podzielić na te cztery dwu-bitowe sekwencje ??

    Nie na żaden port tylko na jeden pin w postaci szeregowej np w Bascomie takim poleceniem dla UART jest Print , można wysłać to w dowolnej formie hex , bin , ciąg cyfrowo/literowy . W odbiorniku po odebraniu polecenia porównujesz go z warunkami , jeżeli wysyłasz dane w postaci bin to odebrane 8bitowe daną np "rozkaz" traktujesz jako słowo 8bitowe czyli rozkaz.0 , rozkaz.1 rozkaz.2 itp chyba nie ma teraz problemu aby z tego wyodrębnić dane dla jednego silnika . Można również sprawdzać całe słowo w postaci hex , bin lub wysyłać i sprawdzać w postaci dziesiętnej jak komu wygodnej , również można jeszcze inaczej wysyłać ciąg literowo / cyfrowy np P1 - wprawo silnik1 , L2 w lewo silnik2 , S1 / S2 silniki 1 / 2 stop itp . Jeżeli piszesz w Bascomie odsyłam do mojego tematu o sterowaniu przez RS232 zobacz sobie przykłady programowe jak to można zrealizować .
    Co do kodowania sprzętowego to w koderze ustalasz adres który musi być zgodny z adresem dekodera tylko w takiej sytuacji oba układy " dogadają się " w koderze / dekoderze masz 4bitową szynę danych przez którą prowadzisz transmisję danych oczywiście możesz korzystać z 4bitów jak i z jednego na Elektrodzie jest kilka tematów o tych układach zobacz je sobie zrozumiesz na czym to polega .
  • Poziom 18  
    bogdan_p napisał:
    to odebrane 8bitowe daną np "rozkaz" traktujesz jako słowo 8bitowe czyli rozkaz.0 , rozkaz.1 rozkaz.2


    nie za bardzo to rozumiem

    Dodano po 3 [minuty]:

    bogdan_p napisał:
    Można również sprawdzać całe słowo w postaci hex , bin lub wysyłać i sprawdzać w postaci dziesiętnej jak komu wygodnej , również można jeszcze inaczej wysyłać ciąg literowo / cyfrowy


    Czy mógłbyś to wytłumaczyć trochę bardziej łopatologicznie? :)
  • Poziom 36  
    Do Szanownego Założyciela tematu i przyszłych Czytających:
    Nie wpędzajcie siebie i innych w kłopoty przez bezmyślne stosowanie urządzeń na nieodpowiednią częstotliwość np. 433MHz ("bo tanio i łatwo kupić" itp. tłumaczenia).
    https://www.elektroda.pl/rtvforum/topic2168895.html tam linki.

    Szukajcie urządzeń, modułów na 868MHz, ew. na 27MHz, 40.68MHz

    PS: na 27MHz i 40.68MHz są gotowe modele zdalnie sterowane - także bardzo tanie

    PS2: Gdzie jest powiedziane że model ma być sterowany cyfrowo ? Analogowe układy RC były, są i będą stosowane, literatura na ten temat jest bogata - nie wszystko ma być "z klawiatury".
  • Poziom 39  
    bercik11palcow napisał:
    nie za bardzo to rozumiem

    Ja nie rozumiem jak chcesz napisać program zdalnego sterowania nie znając podstaw .
    Wysyłasz szeregowo daną która jest 8bitowa przy jej wysłaniu i analizie po odebraniu traktujesz ją dokładnie tak jak 8bitowy port z tą różnicą że ma ona swoją symboliczną nazwę " rozkaz " przykład dla 3 poleceń 3 mikrowyłaczniki (P1- 3)
    nadawanie :
    IF P1=0 THEN rozkaz = b00000000 > stop
    IF P2=0 THEN rozkaz = b00000001 > prawo
    IF P3=0 THEN rozkaz = b00000010 > lewo
    Odbiór
    IF rozkaz = b00000000 THEN > skok do programu stop <
    IF rozkaz = b00000001 THEN > skok do programu prawo <
    IF rozkaz = b00000010 THEN > skok do programu lewo <

    w tym przypadku wysyłasz i sprawdzasz całą daną o nazwie rozkaz , analogicznie będzie to w formie hex czy dziesiętnej dla pojedynczego bitu ( jeden rozkaz )
    nad
    IF P2 = 0 THEN rozkaz.1 = 1
    odb
    IF rozkaz.1 = 1 THEN > skok do programu prawo <
    to cała filozofia , dla danych literowo / cyfrowych po odebraniu danej można ją sprawdzać na identycznej zasadzie lub rozdzielić poddając analizie po kolei jest składniki . Po raz kolejny odsyłam do tematu o sterowaniu przez RS232 i dokładnej analizie programów , bo jeżeli tego nie rozumiesz to na razie daj sobie spokój aż pogłębisz swoją wiedzę .
  • Poziom 36  
    kondensator napisał:

    PS2: Gdzie jest powiedziane że model ma być sterowany cyfrowo ? Analogowe układy RC były, są i będą stosowane, literatura na ten temat jest bogata - nie wszystko ma być "z klawiatury".


    Rozumiem w pełni Twoją niechęć do wciskania wszędzie układów cyfrowych, ale sam Autor zasugerował operacje na jedynkach i zerach w procesorze, co sam automatyczne zrozumiałem jako chęć do zrealizowania transmisji cyfrowej przez autora.