Van egy öreg RCA 10W707 antennaforgatóm, amelynek analóg vezérlőegységét egy K3NG Arduino-vezérlőre cseréltem, így az antennát a PC-ről, a hamlib rotctld-jén keresztül tudom forgatni. A motor meghajtása relékkel működött, a pozíciópotméter kiolvasása is működött — de amint a motor elindult, az azimutkijelzés vadul ugrálni kezdett, nagyjából ±20°-ot.

Íme, hogyan jártam a végére, és hogyan javítottam meg két ellenállással és két kondenzátorral. Spoiler: a javítás működik — demóvideó.

Az elrendezés

A forgatóegység a toronynál ül, és 35 m ötvezetékes árnyékolt kábel köti össze a vezérlődobozzal. Két vezeték hajtja meg a 20 V-os, kondenzátoros segédfázisú váltakozó áramú motor két tekercsét, egy vezetéken osztozik az AC közös pont és az 1 kΩ-os pozíciópotméter csúszkája, kettő pedig a potméter pályájának két végére megy, amelyek 5 V-ot és GND-t kapnak. Az Arduino a csúszkát olvassa egy RC-szűrőn át az A0 lábon — ez azért működhet, mert a motor tápjának szekundere a csúszka potenciálján lebeg, nincs a földhöz kötve. (Helyesbítés: a bejegyzés korábbi változata földelt csúszkát és pályavégről vett kiolvasást írt le — az tévedés volt.)

A hiba gyökere

Arra gyanakodtam, hogy a motoráram a közös vezetéket 50 Hz-es feszültséggenerátorrá változtatja — a potméter csúszkája ugyanazon a vezetéken osztozik a motor visszaáramával, így az IR-esés közvetlenül a pozíciójelre rakódik. A mérések ezt igazolták:

  • Motortekercs-áramok: az eredeti vezérlővel kb. 1–1 A, az újjal 1,5 A / 0,86 A (24 V-os szekunder, 50 Hz). A két tekercs árama ~90°-os fázisban van egymáshoz képest, így a közös vezetéken a vektoros összegük folyik, ≈1,7 A.
  • A kábelerek ellenállása (35 m): motorvezetékek 0,5 / 0,3 Ω, potmétervezetékek 1,3 / 1,2 Ω, a közös pedig ≈0–0,2 Ω — a kábel árnyékolását ugyanis párhuzamosan rákötöttem a közösre, ami, mint kiderült, sokat számít.
  • A döntő bizonyíték, közvetlenül megmérve: 0,31 V AC a forgatóegység felőli közös és a vezérlődoboz DC− pontja között, járó motornál.

Ez a 0,31 V szinte 1:1-ben rárakódik a potméterjelre, mert az ADC az Arduino saját földjéhez képest mér. Az eredeti „szűrőm” csak rontott a helyzeten: egy 10 nanofarados kondenzátor a csúszka felőli oldalon, utána soros 1,2 kΩ az A0-ra — ≈13 kHz-es vágás, RF-zavarok ellen jó, 50 Hz-en viszont teljesen átlátszó, ráadásul a kondenzátor az ellenállás rossz oldalán ült. A teljes 0,31 V (±0,44 V-os csúcsokkal) elért az A0-ig. A csúszka a teljes elfordulás alatt ≈0,7–4,5 V között jár — ≈3,8 V jut a 360°-ra —, így ez ±29° effektív remegés, ±40°-os csúcsokkal. A mechanizmus, a nagyságrend és a tünet mind egybevágott.

A kulcsgondolat

A zavar egy nulla középértékű, 50 Hz-es szinusz a valódi jelen, és a szűrő előtt semmi sem vág le vagy egyenirányít a jelúton (az ADC védődiódái a szűrő mögött ülnek, ahol a brumm már csak millivoltos). A passzív RC-aluláteresztő lineáris, így a kimenete az átlagra áll be — ami éppen a zavarmentes pozíciófeszültség. Nem kell hídkapcsolás, nem kell differenciálerősítő: az erős 50 Hz-es elnyomás önmagában pontos kiolvasást ad, még forgás közben is.

A javítás: kétfokozatú RC-szűrő

A kétfokozatú RC-aluláteresztő kapcsolási rajza: a potméter jele egy 1,2 kΩ-os ellenálláson át egy 220 µF-os, földre kötött kondenzátorra jut, majd egy 10 kΩ-os ellenálláson és egy 10 µF-os, földre kötött kondenzátoron át az A0 lábra.
A kétfokozatú RC-aluláteresztő a potméter és az A0 között.
Szűrő Vágás 50 Hz-elnyomás Maradék remegés Késleltetés
Régi — 1,2 kΩ + 10 nF ≈13 kHz nincs ±29° ≈0
Egy fokozat — 1,2 kΩ + 220 µF ≈0,6 Hz ≈80× ±0,4° 0,26 s
Kétfokozatú — + 10 kΩ + 10 µF ≈0,5 Hz ≈2500× ±0,02° ≈0,35 s

Már egyetlen fokozat is használható lett volna, de a második mindössze egy ellenállásba és egy kondenzátorba kerül, és nagy tartalékot hagy arra az esetre, ha az árnyékolás kötése egyszer elkorrodálna a szabadban. A 0,3 s késleltetés a forgási sebességnél kb. 2°-nak felel meg, amit a K3NG szervo-holtsávja elnyel. Az utolsó kondenzátor közvetlenül az A0 lábnál ül.

Megépítettem, és a kiolvasott érték már járó motor mellett is kőstabil:

Egy furcsaságra érdemes figyelni: bekapcsoláskor van egy ~2 másodperces beállási tranziens, amíg a kondenzátorok feltöltődnek; ezalatt a kijelzett irány a teljes CCW-től kúszik fel a valódi pozícióig. Ez elkerülhetetlen — bármely RC-szűrőnél a beállási idő az 50 Hz-es elnyomással skálázódik — és ártalmatlan, mert a K3NG bekapcsoláskor magától sosem forgat. Csak ne higgyünk a kijelzőnek az első két másodpercben.

Bónuszmegfigyelések a mérési menetből

Megérte mindent végigmérni a multiméterrel, a zajjavításon túl is:

  • A potméter végállásai a pálya ~10–15%-át kihasználatlanul hagyják mindkét végén (a szakaszok 106↔896 Ω és 152↔942 Ω között járnak). Ártalmatlan: a K3NG a tényleges végpontokra kalibrál.
  • A tekercsáramok aszimmetriája (1,5 vs. 0,86 A) várható: ugyanaz a tekercs egyik irányban közvetlenül a hálózatról, a másikban a 120 µF-os üzemi kondenzátoron keresztül kap táplálást. A kondenzátort 60 Hz-re méretezték; az 50 Hz-es megfelelője ≈144 µF lenne, így egy plusz 25–30 µF-os motorkondenzátor párhuzamos bekötése kiegyenlítené a fázisokat — nem kötelező, a motor így is jól jár.
  • A motor ≈41 VA-t vesz fel a transzformátorból — egy nagyságrenddel többet, mint az első, „kis ventilátormotoros” becslésem. A transzformátornak ≥40 VA-snak kell lennie (vagy 18 V-os szekunderrel, ami ~25%-kal csökkenti az áramot és ~45%-kal a motor melegedését), a hálózati biztosítéknak pedig 315–400 mA-es lomhának az eredetileg tervezett 125 mA-es gyors helyett.

A tanulság, mint mindig: előbb mérj, aztán tervezz. Minden egyes méréssorozat megváltoztatott egy számot, amelyet addig magabiztosan becsültem.