The OH3AA antenna rotator controller firmware provides a general-purpose text-based network protocol for controlling an azimuth antenna rotator. The rotator position is determined using an absolute magnetic shaft encoder, which is a very accurate and durable sensor.
- Board: Arduino Due (32-bit)
- Network shield: WIZnet W5100 Ethernet shield
The WIZnet W5100 Ethernet shield does not receive required signal in its RESET pin when Arduino Due is powered on, so it is necessary to reset W5100 shield manually. However, W5100 RESET pins are connected to the Arduino Due RESET pins both via the standard Arduino RESET pin and the extended SPI RESET pin. To avoid making Arduino Due reset at the same time, these two pins need to be disconnected.
- Bend W5100 RESET pin so that it is not connected to Arduino Due RESET pin
- Bend Arduino Due extended SPI RESET pin so that it is not connected to W5100
- Connect a jumper wire from pin 30 to W5100 RESET pin
- Rotator position input: PWM sensing via TC0 and channel 0 = pin 2
- Sensor: US Digital MA3 - Miniature Absolute Magnetic Shaft Encoder
- MA3 output needs 5V <-> 3.3V voltage level conversion for Arduino Due
- Sensor: US Digital MA3 - Miniature Absolute Magnetic Shaft Encoder
Connect all pins via opto-isolators and relays to protect Arduino.
- CW/CCW direction control: GPIO outputs, pins 24 and 25
- Azimuth < 0 or > 360 signals: GPIO inputs, pins 26 and 27
- Minimum/maximum azimuth signals: GPIO inputs, pins 28 and 29
- Speed control (optional): Analog voltage from 0.55V to 2.75V (100 steps) via DAC1 = pin 67
platformio run
platformio run --target upload
- PwmDataReader: Implement scale correctly according to MA3 sensor spec: 1 µs = 0 deg, 1023 µs = 359.65 deg
- PwmDataReader: Implement averaging over N values to reduce noise
- Possible filtering of interrupts from threshold/limit inputs
Analog output control and voltage levels on Arduino Due: