Klub SP2PUT

Akademicki Klub Krótkofalowców przy UTP w Bydgoszczy

28-Paź-2014

Sterownik rotoraUniversal rotator controller

Projekt łatwego w wykonaniu uniwersalnego sterownika do dowolnego rotora azumytu z silnikiem DC i impulsatorem. agxrotor1

Coming soon…

Inspiracją dla tego projektu były „przeboje” Sławka SP2ST z rotorem RAK i sterownikiem do niego Rot1Prog – po prostu nie chciał działać, a jak już działał, to nie chciał komunikować się z komputerem. Zamast walczyć z elektroniką sterownika stwierdziłem, że szybciej zrobię własny sterownik, nad którym będę miał pełną kontrolę i wiedzę jak działa.

Głównym zadaniem sterownika rotora jest śledzenie położenia anteny, ustawianie jej na odpowiedni azymut i ew. ochrona przed „ukręceniem” kabli od obrotu o więcej niż 360 stopni, jeżeli sam rotor nie ma ograniczników. Do śledzenia położenia anteny rotory mają wbudowane impulsatory (które np. zwierają dwa przewody ze sobą kilkaset razy na pełny obrót), albo potencjometry – położenie wału jest wtedy napięciem analogowym. Rotor z impulsatorem wymaga ciągłego liczenia impulsów i pamiętania ich po wyłączeniu zasilania.

Patrząc na elektronikę Rot1Prog wiedziałem, że chcę zrobić coś dużo prostszego, zarazem o trochę większych możliwościach (LCD, USB) i przede wszystkim na nowocześniejszych częściach. Mózgiem mojego sterownika jest nieśmiertelna ATmega8. Do obsługi impulsatorów służy transoptor, który generuje przerwanie mikrokontrolerowi. Położenie i ustawienia anteny są pokazywane na małym wyświetlaczu LCD. Elementem wykonawczym jest mostek H zrobiony z dwóch przekaźników RM-85. Zasilanie jest rozdzielone na silnik i elektronikę. Dla silnika jest przewidziany prosty zasilacz niestabilizowany: mostek KBU + kondensatory + przekaźniki. Elektronikę zasila mały mostek prostowniczy i stabilizator 7805. W tym konkretnym egzemplarzu zastosowałem osobne transformatory dla silnika i elektroniki, ale można by też zasilać wszystko z jednego transformatora. Mikrokontroler komunikuje się z komputerem przez UART i USB (układ FT232).

Przy zapamiętywaniu położenia na podstawie zliczonych impulsów istotna jest trwałość pamięci. Zapis położenia co jakiś czas do EEPROMU jest pewnym rozwiązaniem (np. wraz z wear-leveling, żeby nie zużyć jednej komórki pamięci za szybko), ale ja postawiłem na siłowe i sprawdzone rozwiązanie – RAM podtrzymywany bateryjnie. Dzisiaj rzadko się spotyka takie kości pamięci, ale popularny zegarek DS1307 poza rejestrami liczącymi czas ma także kilkadziesiąt bajtów pamięci ogólnego przeznaczenia. Układ jest w stanie pamiętać dane co najmniej 10 lat na jednej baterii zegarkowej i nie ma ograniczeń ilości cykli mazania/zapisu, więc zapisuję w pamięci każdy odebrany impuls z rotora.
schematic

Na płytce drukowanej znajdują się w większości elementy w dużych obudowach przewlekanych, jedynym wyjątkiem są małe kondensatory i rezystory SMD. Jestem zwolennikiem miniaturyzacji i montażu SMD (mniej otworów i nóg do obcinania), ale w tym wypadku lepiej mieć coś łatwego w serwisowaniu.

Miałem problem ze sklejaniem (spawaniem) się przekaźników. Początkowo używałem transformatora, który dawał 28VAC (41V po wyprostowaniu) – rotor kręcił się naprawdę sprawnie, ale po kilku-kilkunastu cyklach pracy przekaźniki przestały reagować. Po zdrowym uderzeniu wszystkim w stół znowu działały jeden-dwa razy i sytuacja się powtarzała. Myślałem, że to problem zbyt tanich chińskich przekaźników, ale na RM-85 z Relpolu działo się to samo. Ostatecznie zamontowałem trafo 12VAC i problem się nie powtórzył.

Najlepszym rozwiązaniem byłby oczywiście mostek H bez elementów mechanicznych, ale tanie scalaki (np. L298) obsługują za małe prądy, jest cała masa gotowych modułów na duże prądy, ale niskie napięcia, natomiast moduły, które wytrzymałyby 50VDC i 5A są za drogie (ok. 250zł, czyli więcej niż cały mój sterownik). Problemem przy budowie mostka z tranzystorów jest wysterowanie górnej pary tranzystorów – bramki muszą mieć napięcie wyższe niż napięcie zasilania całego układu (producenci stosują specjalne drivery z pompami ładunkowymi). Docelowo chciałbym zrobić mostek H, który od strony góry będzie miał przekaźnik do zmiany kierunku, a w części dolnej będzie miał MOSFETy – dzięki tranzystorom będę mógł zatrzymywać silnik i unikać iskrzenia przekaźnika w trakcie pracy.
pcb
Tak wygląda pierwszy wykonany egzemplarz. Przewody są trochę splątane, ale okablowanie jest bardzo proste. Przewody 230V prowadzą z gniazda AC do przełącznika na przednim panelu i transformatorów, niskonapięciowe przewody z transformatorów do złącz na płytce drukowanej, a cienkie żółte przewody do przycisków na przednim panelu. LCD jest połączony taśmą z płytką. Gniazda silnika, impulsatora i USB przechodzą przez tylny panel.
agxrotor1

Firmware

Firmware jest w stanie obsłużyć dowolny rotor z impulsatorem – uczy się ilości impulsów i położeń. W obecnej wersji ma tylko jedno ograniczenie – zliczanie musi zacząć się od azymutu zero stopni, czyli trzeba obrócić rotor na maszcie tak, żeby miał skrajny lewy (tzn. skrajny przy obrocie przeciwnie do ruchu wskazówek zegara) ogranicznik na azymucie zero. Może zliczać obrót do 999 stopni.

Uczenie rotora nie jest trudne:

  1. Trzeba włączyć sterownik trzymając przycisk „DOWN”
  2. Przyciskami prawo/lewo trzeba ustawić skrajny, lewy azymut 0 stopni (patrząc przez okno) – sterownik pracuje wtedy bez zabezpieczeń
  3. Zatwierdzić przyciskiem „DOWN”
  4. Przyciskami prawo/lewo trzeba ustawić skrajny, prawy azymut (tzn. najdalszy zgodnie z ruchem wskazówek zegara)
  5. Zatwierdzić przyciskiem „DOWN”
  6. Trzeba wpisać oba azymuty (skrajny lewy powinien być 000), kursor przemieszcza się przyciskami prawo/lewo, cyfrę zwiększa się przyciskiem „UP” (zawija przy 9), przycisk „DOWN” zatwierdza azymuty.
  7. Koniec 🙂

Oprogramowanie zlicza impulsy i odpowiednio oblicza azymut. W trybie normalnej pracy sterownik zlicza impulsy i ma zabezpieczenia przed:

  • przekroczeniem skrajnego lewego / prawego położenia (czyli rotor może nie mieć ograniczników mechanicznych)
  • brakiem impulsu – zatrzymuje silnik po 500ms

Przycisk góra/dół umożliwia bezpośrednie kręcenie anteną (oczywiście zabezpieczenia cały czas działają), przyciski prawo/lewo ustawiają żądany azymut i rotor automatycznie zatrzymuje się po jego osiągnięciu.

Od strony komputera sterownik obsługuje protokół GS-232B (wspierany przez praktycznie każdy program) i polecenia: stop, prawo, lewo, ustaw azymut i odczyt azymutu. Kąty powyżej 360 stopni trzeba podawać wprost (tzn. żeby ustawić np. 15 stopni przez północ to trzeba ustawić azymut 375 i taki też będzie zwracany przez rotor).

Wymiana oprogramowania

Ostatnim elementem firmware jest bootlaoder, który umożliwia wymianę oprogramowania przez złącze USB i darmowy program Burn-O-Mat – nie trzeba się znać na programowaniu mikrokontrolerów, żeby zrobić update. Bootloader uruchamia się, jeżeli przy włączaniu zasilania trzyma się przycisk „UP”. Od strony komputera obsługuje protokół AVR109 9600bps.
agxrotor2

Sterownik świetnie sprawdza się u Sławka SP2ST, gdzie pracuje z rotorem RAK i HamRadioDeluxe. Koszt wykonania całości, wraz z profesjonalną płytką drukowaną nie przekroczył 200zł 🙂

> Schemat, PCB, firmware, binarki – AGX_rotor_1.0 <

Artur SP2AGX

agxrotor3

Opublikowano w dziale: SP2AGX DIY

Komentuj

Musisz być zalogowany aby komentować.