UK Vintage Radio Repair and Restoration Powered By Google Custom Search Vintage Radio and TV Service Data

Go Back   UK Vintage Radio Repair and Restoration Discussion Forum > Specific Vintage Equipment > Vintage Amateur and Military Radio

Notices

Vintage Amateur and Military Radio Amateur/military receivers and transmitters, morse, and any other related vintage comms equipment.

Reply
 
Thread Tools
Old 23rd Aug 2022, 8:25 pm   #1
SiriusHardware
Dekatron
 
Join Date: Aug 2011
Location: Newcastle, Tyne and Wear, UK.
Posts: 9,179
Default Controlling the HF-150

A recent HF-150 keypad interface repair thread started by Steve G4WCS veered off into a conversation about how to computer control the receiver by sending signals to it via the keypad input connector. At the same time, another forum member appeared with another faulty HF-150 so I have started this thread to continue on with the discussion about controlling these receivers.

Jez provided some extremely valuable scope shots of some typical frequency-change code sent by an original Lowe IF-150 interface and I find that I can decode them by eye now.

Key to understanding these is the keycode table from the HF150 'Technical Supplement' - I've come across this before because I used the info to get my homebrew HF-150 keypad going, but it turns out that the same 5-bit codes are used to represent the same characters in the data bursts from the IF-150 computer interface as well. See the table, image #1.

The first thing you may well ask is why not just send 00000 for "0", 00001 for "1", 00010 for "2", and so on? I think this goes back to the fact that the first version of the HF150 keypad used an off the shelf remote control transmitter chip which had this character table baked into its hardware. Having been forced to accommodate that code table for communications from the keypad the decision was obviously made to keep the same code -> character table for the IF-150's communications with the HF-150 as well.

Image #2 is one which jez posted in the other thread, it shows the first (white) and second (yellow) data bursts of six to change the frequency to 5489KHz.

We see that the format of every data burst is the same, there are three 'header' pulses whose leading edges are separated by time T2, then there is a fixed interval T3 between the leading edge of the third header pulse and the leading edge of the first of the six data pulses. I say six, but these six pulses altogether only represent 5 bits, because it is the interval between their leading edges which determines the bit values. T4 (Longer) signifies a binary '1', T5 (shorter) signifies a binary '0'. Because of this, the overall length of a data burst varies with the data value being transmitted. A data burst with the value '00000' will be the shortest, a data burst with the value '11111' will be the longest.

We then have another interval of T3 between the leading edge of the last data pulse and the leading edge of the final pulse.

If I decode the whole of the six-burst packet which jez posted as pairs (1+2, 1+3, 1+4, 1+5, 1+6) the transmitted characters come out as "05489#", "#" being 'enter'. I haven't confirmed it yet but it looks as though the first five characters are the frequency to enter including any necessary leading zeros, terminated with the sixth character, 'Enter'. I have yet to look at the 8-character frequency setting message which can be used to set the frequency with a finer degree of resolution.

Before I go any further I would appreciate it if jez would be so kind as to measure the following time intervals as accurately as possible - not urgent, jez, but it would be great if you would be able to do this some time.

T1 (The width of a single pulse, from leading edge to trailing edge)

T2 (The interval between the leading edge of one header pulse and the leading edge of the next header pulse)

T3 (The interval between the leading edge of the last header pulse and the leading edge of the first data pulse). I believe the interval between the leading edge of the sixth data pulse and the leading edge of the final pulse is also T3.

T4 (The interval between the leading edges of the pulses defining a logic '1')

T5 (The interval between the leading edges of the pulses defining a logic '0')

T6 (not shown on the image). The interval between the leading edge of the final pulse in one data burst and the leading edge of the first header pulse in the next data burst.
Attached Thumbnails
Click image for larger version

Name:	HF150_Keycodes.jpg
Views:	34
Size:	51.0 KB
ID:	263510   Click image for larger version

Name:	5489KHz_Bursts_1_and_2.jpg
Views:	51
Size:	52.9 KB
ID:	263511  
SiriusHardware is offline   Reply With Quote
Old 24th Aug 2022, 9:28 am   #2
jez_145
Pentode
 
Join Date: Oct 2013
Location: Southport, Merseyside, UK.
Posts: 113
Default Re: Controlling the HF-150

and the results are.........


T1 (The width of a single pulse, from leading edge to trailing edge) (0.305 mS)

T2 (The interval between the leading edge of one header pulse and the leading edge of
the next header pulse) (3.040 mS)

T3 (The interval between the leading edge of the last header pulse and the leading edge
of the first data pulse). I believe the interval between the leading edge of the sixth data
pulse and the leading edge of the final pulse is also T3. (6.080 mS)

T4 (The interval between the leading edges of the pulses defining a logic '1') (3.020 mS)

T5 (The interval between the leading edges of the pulses defining a logic '0') (2.040 mS)

T6 The interval between the leading edge of the final pulse in
one data burst and the leading edge of the first header pulse in the next data burst.
(40.00 mS)


Also attached zip containing above summary and scope cursor screen shots for each measurement.

Good work Sirius !

I'm thinking of applications for this already. Deluxe scanning keypad anyone ?

Jez
Attached Files
File Type: zip IF-150_Timings.zip (646.6 KB, 6 views)
jez_145 is offline   Reply With Quote
Old 24th Aug 2022, 10:14 am   #3
SiriusHardware
Dekatron
 
Join Date: Aug 2011
Location: Newcastle, Tyne and Wear, UK.
Posts: 9,179
Default Re: Controlling the HF-150

Very quick work, thanks jez. I had a suspicion that T2 and T4 were probably the same and they are really close, so I suspect that the same timing is used for both.

I looked at your original capture of a complete 8-burst packet (FRQ_17.PNG) for a fine tuned frequency but unfortunately some of the pulses are blobbed together in the image and can't be 'read' in the way that I read the more detailed one in my previous post.

If you get a chance could you recapture the last four of the eight bursts for the same 'long' frequency in sufficiently high resolution to be 'read' so we can see exactly how the fine tune information is sent. The info in the keypad table appears to say that the fine frequency data is an 8-bit value, which is strange when all of the other packets are 5-bit.
SiriusHardware is offline   Reply With Quote
Old 24th Aug 2022, 11:23 am   #4
jez_145
Pentode
 
Join Date: Oct 2013
Location: Southport, Merseyside, UK.
Posts: 113
Default Re: Controlling the HF-150

No prob.

For completeness I've attached screenshots for all 8 of the data bursts for the FRQ 28734.324 example so you can animate your way through them.

Yes, it's strange that they used an alternative strategy for the "high resolution" frequency entry. Kind of blows my original idea of dividing the user entered frequency (with or without a decimal point) by 8Hz (the minimum resolution of the HF-150's tuning) and just outputting a tuning offset number.

Are you ok with the other examples for mode change and memory management - whilst I've got the test rig set up ?

Jez
Attached Files
File Type: zip FRQ_HI_RES.zip (340.6 KB, 6 views)
jez_145 is offline   Reply With Quote
Old 24th Aug 2022, 11:40 am   #5
SiriusHardware
Dekatron
 
Join Date: Aug 2011
Location: Newcastle, Tyne and Wear, UK.
Posts: 9,179
Default Re: Controlling the HF-150

You've already gone above and beyond the call of duty today, thanks for all your time and patience... will look at the captures in your last post when I have time later (at work just now).

I think the ones for mode change and recall from memory are quite straightfoward as both of those are also supported by the keypad, or at least the V2 version of the keypad. I should be able to get the mode-select facility (hold down CANCEL while pressing a numeric key) working on my homebrew PIC based HF-150 keypad at some point as well.
SiriusHardware is offline   Reply With Quote
Old 24th Aug 2022, 12:26 pm   #6
SiriusHardware
Dekatron
 
Join Date: Aug 2011
Location: Newcastle, Tyne and Wear, UK.
Posts: 9,179
Default Re: Controlling the HF-150

All right, I couldn't resist having a look... so the first six bursts are a standard 5-digit + 'enter' frequency change, and then the 7th burst is 11111 ('Set fine tune') and the 8th burst has a non standard nine data bit delimiting pulses representing 8 bits in the intervals between them. Thanks for anticipating that I would want to know the interval between the 6th and 7th bursts, incidentally.

The 8-bit 'fine set' value which somehow represents the post-decimal '.324' portion of the long frequency 28734.324 is 01010010 which translates to 52 hex or 82 decimal.

Bearing in mind that the actual tuning resolution is in steps of 8Hz, so any frequency entered is converted to the nearest 8Hz step, I find that:-

(82 decimal x 4) = 328, which is one of the nearest 8Hz steps to .324. It could also have been rounded down to 320, but was rounded up to 328 instead.

Of course I could just be choosing the formula which conveniently gives me the answer I want, so the next step would be to capture several more eighth bursts with just the post-decimal portion of the frequency changed to other values. If the same multiply-the-fine-value-by 4 dodge works for other post decimal values then you won't have been far off the mark when you anticipated that something like this sort of calculation might be used, but only for defining the sub-1KHz portion of the frequency.
SiriusHardware is offline   Reply With Quote
Old 24th Aug 2022, 2:26 pm   #7
jez_145
Pentode
 
Join Date: Oct 2013
Location: Southport, Merseyside, UK.
Posts: 113
Default Re: Controlling the HF-150

Quote:
Originally Posted by SiriusHardware View Post
All right, I couldn't resist having a look...
I knew that would happen - I could see it coming !

Ok, I'm taking requests for post-decimal seventh and eighth bit bursts (I really must get out more).

Anything in particular ?

.1
.12
.123
.234
.345



Jez
jez_145 is offline   Reply With Quote
Old 24th Aug 2022, 2:44 pm   #8
SiriusHardware
Dekatron
 
Join Date: Aug 2011
Location: Newcastle, Tyne and Wear, UK.
Posts: 9,179
Default Re: Controlling the HF-150

Four or five semi random values between .001 and .999 would be good, and maybe at least one of them an exact multiple of 8 and two others which are +1 and -1 from an exact multiple of 8, any others to be random, within the from-to range specified.

How about offsets of....
.192
.623
.833
.053
.986
SiriusHardware is offline   Reply With Quote
Old 24th Aug 2022, 6:33 pm   #9
jez_145
Pentode
 
Join Date: Oct 2013
Location: Southport, Merseyside, UK.
Posts: 113
Default Re: Controlling the HF-150

Ok, results attached with a couple of extra examples.

Observations

1) Burst 7 appears to be constant as in "the next burst is going to be the fractional part".

2) A mantissa <= .003 results in a standard, integer frequency, six burst. An eight burst is only output when the mantissa >= 0.004

Jez
Attached Files
File Type: zip FRQ_8_BURST_Data.zip (321.7 KB, 13 views)
jez_145 is offline   Reply With Quote
Old 24th Aug 2022, 8:54 pm   #10
SiriusHardware
Dekatron
 
Join Date: Aug 2011
Location: Newcastle, Tyne and Wear, UK.
Posts: 9,179
Default Re: Controlling the HF-150

Thanks Jez -

See if you (or anyone else) can reconcile these burst-8 data values with their associated frequency offsets.

Code:
Scope 		Fraction of KHz 	Burst-8		As Hex	As Decimal
Capture					Data value
Image 					in binary

8B_01.png	FRQ 0.192<c/r>		00110001 	31	49
8B_02.png	FRQ 0.623<c/r> 		10011111 	9F 	159
8B_03.png	FRQ 0.833<c/r> 		11010101 	D5 	213
8B_04.png	FRQ 0.053<c/r> 		00001101 	0D 	13
8B_05.png	FRQ 0.986<c/r> 		11111100 	FC 	252
8B_06.png	FRQ 0.123<c/r> 		00011111 	1F 	31
8B_07.png	FRQ 0.345<c/r> 		01011000 	58 	88
8B_08.png	FRQ 0.678<c/r> 		10101101 	AD 	173
8B_09.png	FRQ 0.910<c/r> 		11101000 	E8 	232
It is possible I may have misread the binary values of one or two of these from the scope captures, although I went through them twice.
SiriusHardware is offline   Reply With Quote
Old 24th Aug 2022, 9:20 pm   #11
John KC0G
Pentode
 
Join Date: Mar 2009
Location: Minneapolis, Minnesota, USA.
Posts: 234
Default Re: Controlling the HF-150

Hello Jez and Sirius

You are doing some very good work here. I am the owner of the LoweHFReceivers group at groups.io. We have archives of the two previous Yahoo groups, but I do not remember any discussion on the serial interfaces at this level of detail.

I can explain 7 of the 8 bits in the 8th burst. First of all, the Lowe HF-150 does not tune in 8 (= 1000 / 125) Hz steps, but in 1000 / 128 = 7.8125 Hz steps. The decimal value = INT(last three digits * 0.128). Going down the list
0.192 24.57
0.623 79.74
0.833 106.62
0.053 6.78
0.986 126.20
0.123 15.74
0.345 44.16
0.678 86.78
0.910 116.48
If you look at the first seven digits reading left to right, you will see that they are the binary values of the above decimals.

That leaves the right hand or 8th binary digit. It does not look like a parity bit. It does seem to match whether the decimal value after the decimal point is greater than (= 1) or less than (= 0) 0.5

HTH and 73

John KC0G / M0KCY

Edited the decimal values to add the values after the decimal point. Changed interpretation of the 8th binary digit.

Last edited by John KC0G; 24th Aug 2022 at 9:42 pm. Reason: content change
John KC0G is offline   Reply With Quote
Old 24th Aug 2022, 9:20 pm   #12
SiriusHardware
Dekatron
 
Join Date: Aug 2011
Location: Newcastle, Tyne and Wear, UK.
Posts: 9,179
Default Re: Controlling the HF-150

Same table again, but with the addition of the nearest 8Hz step to the fraction of a KHz entered. What we need to do is work out how the decimal number in the 'As Decimal' number column represents the frequency offset in the 'nearest 8Hz step' column.

Code:
Fraction of KHz 	Burst-8		As Hex	As Decimal 	Nearest 8Hz step
			Data value
			in binary

FRQ 0.192<c/r>		00110001 	31	49		192			
FRQ 0.623<c/r> 		10011111 	9F 	159		624
FRQ 0.833<c/r> 		11010101 	D5 	213		832
FRQ 0.053<c/r> 		00001101 	0D 	13		056
FRQ 0.986<c/r> 		11111100 	FC 	252		984
FRQ 0.123<c/r> 		00011111 	1F 	31		120		
FRQ 0.345<c/r> 		01011000 	58 	88		344		
FRQ 0.678<c/r> 		10101101 	AD 	173		176
FRQ 0.910<c/r> 		11101000 	E8 	232		912
Edit: just caught John's post - reading it now.
SiriusHardware is offline   Reply With Quote
Old 24th Aug 2022, 9:42 pm   #13
SiriusHardware
Dekatron
 
Join Date: Aug 2011
Location: Newcastle, Tyne and Wear, UK.
Posts: 9,179
Default Re: Controlling the HF-150

That information about the increments being 7.8125 is rather critical John, thanks. I don't know where I got 8Hz from. I've just caught your further edits to post #11 so I am still playing catch-up.
SiriusHardware is offline   Reply With Quote
Old 24th Aug 2022, 9:47 pm   #14
John KC0G
Pentode
 
Join Date: Mar 2009
Location: Minneapolis, Minnesota, USA.
Posts: 234
Default Re: Controlling the HF-150

Sorry. We are trading posts here. I just edited my post of 4.20pm. It might provide an explanation.

The 8Hz step is a good first order approximation in a discussion of tuning rates. We need more accuracy here.
John KC0G is offline   Reply With Quote
Old 24th Aug 2022, 10:35 pm   #15
SiriusHardware
Dekatron
 
Join Date: Aug 2011
Location: Newcastle, Tyne and Wear, UK.
Posts: 9,179
Default Re: Controlling the HF-150

Well, armed with the new info regarding the step size I have now generated a new table.

In column one, all possible 7-bit values of bits 7-1 of the eighth burst, as decimal.

In column two, the frequency offset generated by multiplying the value in the first column by 7.8125 Hz.

In the third column are the occasional offset values requested by jez when he was capturing that info for us.

Along with those in the fourth column is the difference in Hz between the requested frequency and the selected frequency - always less than 7.8125Hz, and for the frequencies tried at least, always on the low side of the requested frequency.

Code:
Bits	Times by	Frequency	Difference 
7-1	7.8125Hz	Offset (Hz)	(Hz) between
of			requested	requested
eighth			Through		Offset and
burst			IF-150		Actual offset
as
decimal	


0	0
1 	7.8125
2 	15.625
3 	23.4375
4 	31.25
5 	39.0625
6 	46.875		053		-6.125
7 	54.6875
8 	62.5
9 	70.3125
10 	78.125
11 	85.9375
12 	93.75
13 	101.5625
14 	109.375
15 	117.1875	123		-5.8125
16 	125.0
17 	132.8125
18 	140.625
19 	148.4375
20 	156.25
21 	164.0625
22 	171.875
23 	179.6875
24 	187.5		192		-4.5	
25 	195.3125
26 	203.125
27 	210.9375
28 	218.75
29 	226.5625
30 	234.375
31 	242.1875
32 	250.0
33 	257.8125
34 	265.625
35 	273.4375
36 	281.25
37 	289.0625
38 	296.875
39 	304.6875
40 	312.5
41 	320.3125
42 	328.125
43 	335.9375
44 	343.75		345		-1.25
45 	351.5625
46 	359.375
47 	367.1875
48 	375.0
49 	382.8125
50 	390.625
51 	398.4375
52 	406.25
53 	414.0625
54 	421.875
55 	429.6875
56 	437.5
57 	445.3125
58 	453.125
59 	460.9375
60 	468.75
61 	476.5625
62 	484.375
63 	492.1875
64 	500.0
65 	507.8125
66 	515.625
67 	523.4375
68 	531.25
69 	539.0625
70 	546.875
71 	554.6875
72 	562.5
73 	570.3125
74 	578.125
75 	585.9375
76 	593.75
77 	601.5625
78 	609.375
79 	617.1875	623		-5.8125
80 	625.0
81 	632.8125
82 	640.625
83 	648.4375
84 	656.25
85 	664.0625
86 	671.875		678		-6.125	
87 	679.6875
88 	687.5
89 	695.3125
90 	703.125
91 	710.9375
92 	718.75
93 	726.5625
94 	734.375
95 	742.1875
96 	750.0
97 	757.8125
98 	765.625
99 	773.4375
100 	781.25
101 	789.0625
102 	796.875
103 	804.6875
104 	812.5
105 	820.3125
106 	828.125
107 	835.9375
108 	843.75
109 	851.5625
110 	859.375
111 	867.1875
112 	875.0
113 	882.8125
114 	890.625
115 	898.4375
116 	906.25		910		-3.75
117 	914.0625
118 	921.875
119 	929.6875
120 	937.5
121 	945.3125
122 	953.125
123 	960.9375
124 	968.75
125 	976.5625
126 	984.375		986		-1.625
127 	992.1875

Last edited by SiriusHardware; 24th Aug 2022 at 10:40 pm.
SiriusHardware is offline   Reply With Quote
Old 24th Aug 2022, 10:35 pm   #16
frsimen
Hexode
 
Join Date: Jan 2011
Location: Croydon, London, UK.
Posts: 474
Default Re: Controlling the HF-150

The main HF150 synthesiser tunes in 1kHz steps, with the interpolation oscillator filling in the gaps.

Looking at the numbers, it appears to use 8 bits, giving 256 steps. 1kHz divided by 256 is 3.90625Hz. Multiplying that by your decimal result gives good agreement with the fraction of kHz.

E.g 213x3.90625=832Hz

Paula
frsimen is offline   Reply With Quote
Old 24th Aug 2022, 10:45 pm   #17
SiriusHardware
Dekatron
 
Join Date: Aug 2011
Location: Newcastle, Tyne and Wear, UK.
Posts: 9,179
Default Re: Controlling the HF-150

I'll try generating another table (tomorrow) based on that concept. If it works, it gets rid of that troublesome right hand bit that we don't know what to do with.

Great to have such a keen team working on this problem.
SiriusHardware is offline   Reply With Quote
Old 25th Aug 2022, 2:05 am   #18
John KC0G
Pentode
 
Join Date: Mar 2009
Location: Minneapolis, Minnesota, USA.
Posts: 234
Default Re: Controlling the HF-150

On page 7 of the HF-150 Technical Manual it states that the HET frequency (ie the interpolation frequency) can be controlled in 128 steps across its 1 kHz range, each step being nominally 7.8 Hz. My comment is that this will be set in the firmware, and is independent of the encoder pulses per revolution. The encoder ppr sets the tuning rate, not the tuning resolution.

Looking at SiriusHardware's numbers, and following on from my earlier edited post it seems that:
the decimal number = INT(last three digits * 0.256) with a range of 0 to 255
and:
the control number = INT(decimal number / 2), with a range of 0 to 127
If this is correct, the sent number uses 8 binary digits, but only the 7 most significant digits are used as the HET control.

Please, if Jez were up to doing more tests, these numbers might help:
0.039 kHz, decimal number = 9.984, sent number = 0000/1001
0.961 kHz, decimal number = 246.016, sent number = 1111/0110

Thanks and 73

John KC0G / M0KCY
John KC0G is offline   Reply With Quote
Old 25th Aug 2022, 7:09 am   #19
jez_145
Pentode
 
Join Date: Oct 2013
Location: Southport, Merseyside, UK.
Posts: 113
Default Re: Controlling the HF-150

Quote:
Originally Posted by John KC0G View Post
Hello Jez and Sirius
Hello 2U2 John KC0G (and now also Paula) !


It's now the morning. I had a quick look at this thread before I went to bed last night to see the comment from John about the 7.8125 Hz tuning steps -- W H A A A T ! This was news to me. I'd always taken the minimum tuning step size to be a nice, round 8Hz (I knew that the rate increased depending on mode and spin rate etc).

I went to bed, but not before taking a look at the HF-150 user manual and, in particular, the Circuit Description on page 27 which has a paragraph stating:-

"Receiver tuning is achieved by varying the frequency of both the local oscillator and the IF conversion (heterodyne) oscillator. The local oscillator covers 45.030MHz to 74.999MHz in 1kHz steps, and fine tuning is provided by the heterodyne oscillator covering 44.544MHz to 44.545MHz in 128 steps...."

Bingo! Light bulb moment

(44.545MHz - 44.544MHz) / 128 = 7.8125 Hz

I see it now !

This also explains the six versus eight bit burst strategy. If the user enters a frequency in full kHz, this will be applied to the local oscillator (and the hetrodyne osc just zeroed presumably?) But, if a fractional frequency is entered, the integer part (6 burst) will be applied to the local osc, and the fractional part (burst 8) will be applied to the hetrodyne osc.

Since realising that, I noticed John's and Paula's later comments - great stuff - we're all thinking on the same lines. Last night I was thinking maybe they just used a lookup table or something to resolve the fractional part but, now, probably not.

John, I'll try the 0.039 and 0.961 FRQ commands later this morning. Going to have some breakfast and get the shopping in first !

Cheers,

Jez
jez_145 is offline   Reply With Quote
Old 25th Aug 2022, 9:55 am   #20
jez_145
Pentode
 
Join Date: Oct 2013
Location: Southport, Merseyside, UK.
Posts: 113
Default Re: Controlling the HF-150

Ok, I've attached the final (burst 8 only) output for the 0.039 and 0.961 frequencies requested by John. I've also included scope shots for 0.997, 0.998 and 0.999 so that we can see what happens at the end of the fractional range.

enjoy ! (as they say)
Attached Files
File Type: zip FRQ_BURST_END_RANGE.zip (166.0 KB, 8 views)
jez_145 is offline   Reply With Quote
Reply

Thread Tools



All times are GMT. The time now is 7:51 am.


All information and advice on this forum is subject to the WARNING AND DISCLAIMER located at https://www.vintage-radio.net/rules.html.
Failure to heed this warning may result in death or serious injury to yourself and/or others.


Powered by vBulletin®
Copyright ©2000 - 2022, vBulletin Solutions, Inc.
Copyright ©2002 - 2021, Paul Stenning.