Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Zdalne sterowanie - gotowe moduły na 433Mhz

bercik11palcow 07 Sep 2012 16:30 3594 11
  • #1
    bercik11palcow
    Level 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ć?
    [28-30.06.2022, targi] PowerUP EXPO 2022 - zasilanie w elektronice. Zarejestruj się za darmo
  • #2
    Ture11
    Level 38  
    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.
  • #3
    bercik11palcow
    Level 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?
  • #4
    Ture11
    Level 38  
    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ł ;-)
  • #5
    bogdan_p
    Level 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 .
  • #6
    bercik11palcow
    Level 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 ??
  • #7
    bogdan_p
    Level 39  
    bercik11palcow wrote:
    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 .
  • #9
    bercik11palcow
    Level 18  
    bogdan_p wrote:
    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 wrote:
    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? :)
  • #10
    kondensator
    Level 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".
  • #11
    bogdan_p
    Level 39  
    bercik11palcow wrote:
    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ę .
  • #12
    Ture11
    Level 38  
    kondensator wrote:

    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.