Ardustation 2 - 2.0.20 Adds Servo Setup, Compatibility with 3DR OSD, Optional Baro Altitude For Pointing

This release modifies the Antenna Test screen to allow better servo setup for other antenna platforms/servos. Schedules an additional Mavlink message to support the display of some parameters on the 3DR OSD. Adds servo reverse defines. Adds an option to use VFR Hud altitude (derived from baro alt) instead of GPS altitude for antenna pointing. 

I've also added a pdf which describes how to add configure Ardustation 2 for other antenna mounts/servos.

Available here:

YouTube video demonstrating the antenna test screen:

Please be sure to download the zip file to a empty folder and to  only use the library folder contained in the distribution. Do not merge this library folder with either the ACM or APM library folders. This software should be compiled with Arduino 1.0.3 or Arduino 1.0.1.  Do not use the earlier versions as indicated in the Ardustation wiki. 

Please let me know if you have any issues with this release.

Heino R. Pull

Views: 4102


Reply to This

Replies to This Discussion

Thanks Heino!!! I'm going to try it today or tomorrow and let you know how it goes.

Just installed 2.0.20. The antenna test is very helpful in getting the right end points. Takes all the guess work out. Tomorrow I will test it in flight.

I had to reverse my tilt servo by changing to 1 in the code. I guess it was wrong because in the antenna test, when i pressed the up button, it tilted down.

I'm glad it is working better.  I flew 3 flights tonight on my quad and using the VFR Hud altitude instead of GPS was a dramatic difference for the better on antenna pitch. The pitch was rock solid on my quad as I flew around my house which wasn't the case with the old GPS value altitude value. I think I distributed 2.0.20 with the VFR Hud altitude as a default so you might check which value you want when you test fly.

Just checked and you do have VFR as the default. Hope to try it today when the winds calm down :)

Only today did I get a chance to really try it and it's working MUCH better. Seems much more accurate, especially in altitude. One thing that I would like to change is when it starts up, it does a full 360° turn of the pan which always tangles my pan servo cable coming from the base that is fixed. I know I need a better mounting to make that more free but is there a way to disable the 360° when the software boots up?

I'm glad its working better. The issue of power up is a real problem with the Ardustation hardware.  Right now it will always rotate to the 1500 usec position where ever that is. I need to look at the low level servo library to see what configurability there is  but since you're using a multiturn servo, depending on where it is powered off, it will always have a potential to rotate quite a bit no matter where the initial PWM value is. I would suggest somehow marking the power up position and rotating it manually to that spot before powering on. There is a "servo speed" library in the software which can slow the the movement from one PWM to another PWM value, but this isn't in effect at power up. Another user who suggested using the servo speed lib had the same problem and had to make sure to always rotate his antenna to a "power up" position because the motion can be quite violent. I don't think there is much I can do in software, but I'll take a look.

Let me know if you do find a way to end the slamming, when it first starts the servo library. I think I'm the one your talking about. I tryed for weeks to have it slow on startup, but ended with a message on the display that it was going to move, and to point the tracker to a line I had on the tracker.




I looked at the servo library and by default it initializes a servo to output 1500 usec and the value is controlled here:

#define MIN_PULSE_WIDTH 544 // the shortest pulse sent to a servo
#define MAX_PULSE_WIDTH 2400 // the longest pulse sent to a servo
#define DEFAULT_PULSE_WIDTH 1500 // default pulse width when servo is attached
#define REFRESH_INTERVAL 20000 // minumim time to refresh servos in microseconds

So, at powerup, there is no PWM from the ATMega, and once the call to attach a servo is made, the servo will either stay still if it is at the 1500 usec position, or slew to its position for 1500 usec at the speed the servo is designed to rotate at (how fast the motor is in the servo). That is what causes the power up motion. It would be easy to change the behavior to startup at an arbitrary PWM value (such as the extremes of the servo), by changing the constant in the library. However, controlling the power on behavior of the software to slowly slew from an arbitrary position is basically impossible since the software doesn't know where the servo has been powered off previously.  There is no way to find the position of the servo at power-up and that is the key.  If there was a rotational sensor of some sort that gave the actual position of the servo, it would be possible to init the servo to rotate from its current position (read form the "position sensor") to the desired power up position. I wish I could think of a better way, but this really is a mechanical issue. I know that at least one person is experimenting with external antenna position sensors, but without that the best we can do is find the least harmful position to power up the servo which is determined by the constant.  

If you want to change this value it is in the following file (and path)



Does Ardustation Version 2.0.20 work on the Ardustation Mega sold by jDrones?  If so, where can I find an already compliled HEX file for the version?



Hi Todd,

No, its not. It would require some changes to work with the new hardware. 



I searched over the net and didn't find appropriate hardware for your software, except jdrones but this requires some changes in your code, as you wrote. Where can I buy some ardustation mega working with your code?

Or 3drobotics offers its ArduStation kit with ATMEGA2560 chips?

I can't see the description on their site, if is it ATMEGA2560 or Atmega328...

The Arudstation 2 code runs on the 3DRobotics Ardustation at this link:

The Ardustation has been around for at least 4 years and is definitely an old design with an ATMEGA 328. The confusion may be that there was original software for the Ardustation (Ardustation 1) that did not support Mavlink. The software was modified to work with Mavlink by Phillip Anthony Smith back in May 2011 and called ArdustationPS. I added code to this version to make it practical for antenna tracking and 2 others helped to create a version called Ardustation 2 which is the release that 2.0.20 is based on. 

Jdrones ArdustationMega is based on a design from Colin that was introduced at this link:

It is based on the ATMEGA 2560 and is much better hardware than the original Ardustation. Here is a link announcing the current version

I believe Colin has written the current version and is still working on it. I don't believe antenna tracking is in this software.  

I believe I'm the only one still working on the Ardustation 2 code - having added a few more features along the way. I have considered moving Ardustation 2 to the ASM, but I currently have no plans to do it due to a lack of time.


Reply to Discussion


© 2020   Created by Chris Anderson.   Powered by

Badges  |  Report an Issue  |  Terms of Service