Problem: We needed to point a pair of narrow beam directional antennas at each other, one on the ground and one in an aircraft, to maintain a 10Gb radio link.
Solution: Use a pair of NetBurner MOD54415 System-on-Modules to track and control the antenna steering platforms.
With the ground station at a fixed known location, the airborne and ground NetBurners are able to roughly figure out how to point to the other using the reported aircraft GPS location which is broadcast over an omni-directional low bandwidth TCP/IP link. The GPS data is used for initial antenna steering and acquisition. Specialized hardware is included in each radio that computes the direction vector of the incoming RF signal. This received RF direction vector is used to optimize the antenna pointing.
The omni-directional low bandwidth TCP/IP link is used only when the ground and aircraft need to get gross positional data about the aircraft to establish or reestablish the high bandwidth directional link. Once the directional antennas are pointing at each other they will track and maintain a link and the omni-directional low bandwidth link is disabled.
When presented with updated tracking information, each NetBurner computes a new antenna pointing vector. Any difference or error between the current pointing vector and the newly desired one is fed into a P-I-D control loop. The PID (or proportional-integral-derivative) loop filter performs 3 operations on the error. The P-term scales it, the I-term integrates or smooths it and the D-term determines the sensitivity to changes or derivative. The 3 constants are applied to the error data, E, for each steering axis:
In our case, a pointing vector consists of two axes (roll/pitch in the air and pan/tilt on the ground). The resulting commanded vector is then sent to the motor controller. In our implementation, the motor controller consists of some math in the main task and two timer-based interrupts in the NetBurner.
We have two stepper motors to steer our platform, one per axis. These motors are instrumented with shaft encoders to provide position feedback of their current pointing vector. Each motor is powered by an external motor driver that is controlled by the MOD54415 via 2 GPIO (General Purpose Input Output) pins; one a level for direction and the other a pulse to move one step.
Three system timers are created. The first operating at 25 Hz (40 ms) is the system synchronization tick. The other two control the motion axes via interrupts as mentioned above. On each 40 ms sync tick the NetBurner computes the desired pointing vector from the most recent tracking data. After computing the pointing error and applying the PID filter, the required number of motor steps to move per axis is determined. The number of motor steps to move equals the number of GPIO pulses to be sent to the motors during the next 40 ms interval. The NetBurner then configures the two motion axes timers to evenly spread interrupts (and their resulting pulses) out over the following 40 ms interval. This creates a pipeline where the next set of pulses is computed while the previous is sent to the motors.
In addition to performing all of these tasks, the NetBurner is also burdened with serving up status and control panel web pages, data logging and periodic UDP reporting. Take a look at the high level diagram below to see how things came together.
Outcome: We were impressed with how well the MOD54415 performed all of these real time tasks.
For many networked consumer products, a Raspberry Pi is a popular option. However for timing critical or harsh environments such as ours the NetBurner module is a better choice. NetBurner supports all standard Internet protocols and features running on top of a real-time preemptive operating system - unlike the non-deterministic Pi. Add to this an industrial temperature rating which was important in this airborne application.
Our NetBurner-based aircraft platform control system soared through chilling temperatures while performing motion and tracking control high over the rain soaked forests of northern Washington State. Testing was done with a twin engine Cessna. This project integrated several 3rd party modules and featured the NetBurner MOD54415 embedded ethernet core module.
About OBE: OBE Systems, Inc. is a small engineering design firm that has been around since 1991. Our emphasis is Embedded Systems design and we have developed products for the medical, consumer, industrial, telecom, and aerospace marketplaces. As NetBurner Approved Consultants and experienced Raspberry Pi developers, we can help architect the right solution for your IoT or networked device.
- Mark Oberman Principal Engineer OBE Systems, Inc.
- Call: 858 720-9449
- Web: www.obesystems.com