I seem to find myself updating each and every rotator I own to have a digital readout plus a few other cool features, my latest one is converting my Hy-Gain (CDE) HAM-IV.
The original HAM-IV is analogue meter based, and rather annoyingly for me in the northern hemisphere the display is configured for South Stop, which means you are forever turning it through north to beam at various countries in Europe (from the UK) such as Poland and Spain if there is a good E’s opening which can be over 270 degrees instead of less than 90. The HAM-IV unfortunately has a thermal cut-out in the primary transformer which is overzealous and cuts in after too much moving but more on this below.
HAM-IV M1BXF Modification Overview
One of my original ones was to a Yaesu G-400 / KR-400 azimuth rotator where I just had to bring the features over to the Hy-Gain HAM-IV, which includes;
- Large 20×4 LCD backlit LCD which can show the heading on the 4 columns
- PC control using GS-232 protocol
- Pre-set for a ‘go to’ heading
- Inbuilt calibration routine
One feature which was not in my original design, but I had to implement for the HAM-IV was support for a brake.
Here are the 2 completed HAM IV controllers.
The thermal cut-out in the primary transformer is a little too overzealous and cuts off after a rotation or 2, very annoying in an E’s opening and you are moving the antenna to maximise your QSO rate, especially as the E’s are starting or ending. You then have to wait for a minute or 2 for it to reset. This is even less fun in a contest situation!
I had thought about removing the thermal switch, which is seen in the left photo above, as it is easy to remove from the transformer (above right) but this would risk the primary transformer overheating and failing/shorting, never a good situation. I suppose the best option would be to upgrade it to a torrid design or similar, but that’s for another time.
For now having the rotator feedback circuit configured from North Stop means there is less degrees of rotation required to beam at all the countries in Europe. The rotator housing itself requires no mechanical modifications, it’s only the position feedback which needs updating, which could be as simple as a new analogue meter scale.
The Original Unit
The rotator controller before modification is quite robust, other than the south stop and thermal cutout (which I’ll keep) it’s a good rotator controller but after using controllers which have pre-set controls, that is the ability to select a heading and look away and let the controller goto that heading is very useful. Like most rotators the feedback pot is wired such that it’s not easy to retrofit a controller, it’s possible but not easy.
This is what one of the controllers looked like before modification.
Other than fitting the PICAXE microcontroller and components into the box the cosmetic changes were to remove the meter and fit a 20×4 backlit LCD in it’s place. The LCD was a few millimetres slightly wider than the meter so a little filing was needed to make it fit.
Some holes drilled to secure it in place, the LCD also left a gap below it which I filled with a piece of plastic and 3 LEDs to indicate if the brake is off (middle Green LED) and which direction it is moving in.
Like many of my other projects I simplify the LCD control by using a Wulfen K107 LCD controller, the main reason is this also provides easy serial input for what to show on the LCD including a method of producing digits 4 rows high.
The Wulfden board requires no additional components, only some links, if bought as a kit (micro + pcb) and no special features of it is needed, i.e. you only use it for the serial to LCD interface.
It connects to the back of the LCD and requires +5v (red wire), 0v (black wire) and Serial In (white wire).
At the heart of the controller is a PICAXE-20X2. Here are the 2, the left was made first, he right after. If you remove my use of Molex connections on the control board itself you can see how few components are actually needed.
Additional to the control board there is a relay board and a Power Regulator Board.
in total the circuit uses 11x resistors, 3x transistors, 3x relays, 1x bridge rectifier, 1x LM317HV, 1x 7805, 1x PICAXE chip and a few smoothing caps. 2 of those resistors are for the debug interface so could be removed. 3 are use as pull-ups for the switches which could be internal as the PICAXE chip supports internal pull-ups (which I’ve just not used) so the final component could could be much less! and all this functionality for so little.
The relays are 12v types and take on the role the switches once did before connecting them to the PICAXE chip.
Power Regulator Board
The diagram in the Original Schematic section above shows there are 2 transformers in the housing, one is the Power Transformer and the other is for the Meter. The meter one is 26v AC which after regulating is 36.7v DC. The PICAXE needs 5v and I decided to use an LM317HV to drop the 36.7v to 12v then an LM7805 to drop the 12v to 5v. This gives me power for the relays and PICAXE.
Some headline feastures are;
- RAW Mode
- GS-232 support
One of the most useful feature of my rotator controller is the pre-set. This allows the user to ‘dial’ the heading then look away and carry on operating knowing the antenna is moving the the desired position. On the HAM IV this re-uses the CALIBRATION position on the front panel.
I was slightly lazy with the pre-set in that I read the value in ADC10 then divide it by 2, such that 360 degrees is actually ADC10 = 720, this halves any error and variance. Now ADC10 has a maximum value of 1024 so my lazy fix is to put another variable resistor inline with the front panel one, in the +5v line, and adjust the 2nd pot so that with the first pot at the 360 degree position the ADC10 value is 720. Without this I would need to do a calculation to convert an ADC10 1024 value to 360 degrees. This is 1024/2.844 and 2.844 requires a few lines of code and variables in a PICAXE, using a second pot to calibrate the first for 360 degrees is the lazy fix to this.
ReadADC10 B.1,GotoPreset 'Read the preset position from the front panel GotoPreset = GotoPreset / 2 If GotoPreset > 360 then GotoPreset = 360 End If
Additionally we need to stop any false instances where the pre-set doesn’t actually move but the ADC10 value indicates we have. An ADC10 value of 1024 over 5v means each change of 0.0048v is the difference between 2 ADC10 values, as we divide by 2 there is a chance the pre-set pot position ends up on a odd number and flick between 2 degree values, that is if the ADC10 is 701 then this could be converted to 350 or 351. This change could trigger the code to start tracking to the pre-set value which would not be desirable.
The 2 methods we use to get round this are;
- We generate upper and lower threshold values for the pre-set which are 2 degrees lower or higher than the actual pre-set heading
- If the Pre-set on the next read is lower or higher than this 4 degree threshold range then we treat it as a human input
If Azu_Track = 2 then GotoDIR = GotoPreset Else 'This else give a 4 deg range the preset has changed DirPresetL = GotoPresetOld - 2 'by before we trigger the goto code and set Azu_Track = 2 DirPresetH = GotoPresetOld + 2 If DirPresetL > 400 then : DirPresetL = 0 :Endif 'If the Pre-set is 000deg don't go below it If DirPresetH > 360 then : DirPresetH = 360:Endif 'If the Pre-set is 360deg don't go above it Endif If GotoPreset < DirPresetL or GotoPreset > DirPresetH then 'The PRESET has moved outside the 4 deg range …code…
We average the heading over 64 ADC reads, this was chosen as the maximum ADC10 value is 1024 so if we ever end up with the maximum ADC10 value 64 reads would equal (64 * 1024) 65536, which is a word or 16 bits, in general use we don’t reach this maximum value but I’m not sure what everyone's implementation would be.
ReadADC10 B.2,DirCurrent For DirCount = 1 to 64 ReadADC10 B.2,DirCurrent DirCurrent = DirCurrent - MINOffset DirAverage = DirAverage + DirCurrent Next DirCount
The MINOffset in the code above is the ADC10 value when the rotator is facing 000 degrees. This is needed as the ADC10 value is reference to 000 degrees and not that of the ADC10 = 0.
Where the heading is above 360 or ends up below 000 degrees, which can happen when converting the ADC10 value to a heading, then we change the degree sign to a ‘+’ or a ‘-‘ to show but we limit the heading to a maximum of 360 or a minimum of 000 degrees.
'The Ham IV only does 360 degrees so add some code if the converted ADC10 reads ‘more than 360 or less than 000 then correct and change the sign to show it Select Case DirCurrent Case 0 to 360 DegSign = "o" 'We are in the normal range of heading Case 361 to 400 DegSign = "+" 'We are above 360 DirCurrent = 360 Case 401 to 600 DegSign = "-" 'We are below 000 DirCurrent = 000 EndSelect
Updates as I get time