Further tests and head scratching.
?
Since I replaced the Arduino and mounted it on female headers I decided to do more tests to try to answer some of the leads and questions in the thread.
?
I used some 20cm (8 inch) female-male connectors and connected the Arduino remotely from the Radiuno so that I had access to the 12Mhz crystal next to the CH340G chip underneath the Arduino board.
?
The radio has been re-calibrated and shows a difference of less than 10Hz on a 10M beacon and on an 80m CW training transmission from our WIA here in Sydney, so I suspect it is pretty accurate in frequency.?
?
I then re-did a BFO adjustment both on the factory side (low side) of the 12Mhz filter and on the other side. By observing the audio spectrum I adjusted the BFO so that the passband was as close as I could tell 500Hz to 2400Hz.
?
I then in each case moved the first and 2nd VFO to shift the alignment of the two crystal filters and noted the change in signal strength between the factory default and the peak.
?
Results:
?
1. Factory side of BFO adjustment results in a BFO frequency of 11,996.6Khz while the opposite side of the pass band results in a BFO of 11,999.5Khz. So as expected there is a difference of around 3KHz between a low side and high side BFO. And the centre of the filter appears to be at around 11,998Khz which I suspect is pretty normal. Please comment if you think it is not.
?
2. The tuning clicks and tones within the pass band have definitely disappeared as mentioned in a previous post.
?
3. The tones outside of the passband are still there for some values of the BFO and shift by 550Hz for each change of 100Hz of the BFO. Note that the receiver is usable as the tone free BFO values result in a passband that is more or less 500-2400Hz.
?
4. Going with the BFO on the high side of the filter produces similar results. I just noted that the passband seems less steep on the low audio frequencies when in this configuration. Of course in that case LSB becomes USB and vice-versa.
?
5. Now the part I can't understand: while listening to a fixed signal (the CW training transmission on 80M) AND positioning the BFO frequency so that strong tones would be heard and seen on the spectrum at 13,379Hz, I touched the three crystals in turn: the 16Mhz Arduino one, the 12Mhz CH340G one, and the 25Mhz VFO one.?
?
The first two did not produce any difference in Rx signal or tones. Touching the 25Mhz one produced a shift in the received signal audio frequency BUT NOT in the tones frequency.?
?
This does not make sense to me as if the si5351a clock was to shift, any beat of harmonics should produce a shift in frequency.
?
And yet if I adjust either the BFO frequency OR the 1st and 2nd oscillators frequencies I get a shift in tones frequency.
?
So if the tones were geneated after the filter or in the audio circuit I can't see how they would shift in frequency when I change some oscillators frequencies. And if they were generated before the 12Mhz filter they should shift and the 25Mhz crystal shifts!
?
Any idea why that is?
?
6. I used the code below to shift the alignment of the first xtal filter and the 12Mhz xtal filter. I noted improvements in signal level (I assume the Rx amplification chain is more or less linear) of 3 to 6dB. So less that the 8dB I reported before but still not negligible.
?
The peak seems with a first and second VFO about 2 to 3Khz above their default values.
?
The shift is reset to zero each time the Arduino is reset and is not saved in EEPROM at present.
?
It would be interesting to see if some other units show the same changes in signal strength.
I noted that some shifts would produce tones and these tones would shift in frequency too, and by 4,000Hz for each change of 1,000Hz of first and second VFO frequencies. (as opposed to 550Hz for each 100Hz of the BFO).
?
I made the following changes in the ubitx_20 file:
?
A. I inserted the following after the line "unsigned long frequency, ritRxFrequency, ritTxFrequency;? //frequency is the current frequency on the dial"
?
//VK2ETA test spur, change first IF and Second IF to shift the first IF but keep the rig Rx frequency the same
unsigned long firstIfShift = 0;
?
?
B. The setFrequency method became:
?
void setFrequency(unsigned long f){
? uint64_t osc_f;
?
? setTXFilters(f);
?
? if (isUSB){
//VK2ETA first IF shift
//? ? si5351bx_setfreq(2, SECOND_OSC_USB - usbCarrier + f);
//? ? si5351bx_setfreq(1, SECOND_OSC_USB);
? ? si5351bx_setfreq(2, SECOND_OSC_USB + firstIfShift - usbCarrier + f);
? ? si5351bx_setfreq(1, SECOND_OSC_USB + firstIfShift);
? }
? else{
//? ? si5351bx_setfreq(2, SECOND_OSC_LSB + usbCarrier + f);
//? ? si5351bx_setfreq(1, SECOND_OSC_LSB);
? ? si5351bx_setfreq(2, SECOND_OSC_LSB + firstIfShift + usbCarrier + f);
? ? si5351bx_setfreq(1, SECOND_OSC_LSB + firstIfShift );
? }
??
? frequency = f;
}
?
?
C. The doRIT method became:
?
void doRIT(){
? unsigned long newFreq;
?
? int knob = enc_read();
? unsigned long old_freq = frequency;
//VK2ETA first IfShift
? unsigned long old_shift = firstIfShift;
??
?
? if (knob < 0)
//? ? frequency -= 10l;
? firstIfShift -= 1001;
? else if (knob > 0)
//? ? frequency += 100;
? firstIfShift += 1000;
?
//? if (old_freq != frequency){
? if (old_shift != firstIfShift){
? ? setFrequency(frequency);
? ? updateDisplay();
? }
}?
?
To use it: select a preferably fixed tone signal like a broadcast station. Press the encoder and select RIT ON. Turn the dial and note the change in signal strength. Sorry I don't have a display of the 2nd VFO frequency at present. Each step is a shift of 1000Hz in VFO frequency.
?
?
All the best,
?
73, John (VK2ETA)
?