Keyboard Shortcuts
Likes
Search
Birdie at 7.199
Search for "birdie", been discussed here ad infinitum these last few months. We have a low side VFO at 4.8mhz mostly because the older analog VFO wouldn't have been stable at 19.2mhz. ?Moving the VFO to 19.2mhz is just a Raduino sketch change, plus somehow moving the BFO a few khz to flip back to LSB operation.. ?The filter skirt nearest the carrier is sharper with the 4.8mhz VFO though. |
Did you already try increasing the VFO drive level to 4,6,8 mA?
toggle quoted message
Show quoted text
In arduino_v1.07 you can use the settings menu, option 3. In my case that birdie almost completely disappeared at 4mA, but you can try different levels and see if it makes any difference. 73, Allard PE1NWL On Tue, April 25, 2017 03:46, David Fannin wrote:
Finished a BitX40. |
Allard, I can not thank you enough for your work on v 1.07. Drive levels of 2 mA and 8 mA have,for my ears ,eliminated the 7.199 birdie. v 1.07 has also eliminated the frequency instability which was causing FMing, and the tuning system is very comfortable. Tonight I have worked South Africa,Crete,Scotland,and France with an inverted V and 5 watts from Rhode Island. I am enjoying my BitX40 thanks in large part to you. Thanks again, Willy W1LY? |
¿ªÔÆÌåÓýThanks again Allard.I wired up a pushbutton, then reduced my drive to 2 mA and the birdie disappeared. Tuning is steady and all is working well.? 73s John VK2VOL
|
Thanks for reporting Dave,
toggle quoted message
Show quoted text
Yes, it appears there is some variability between the BITX40 sets. Mine performs best at 4mA, yours may need another value. I suggest to use v1.08 as it allows you to easily change the VFO drive level via the Function Button. Tune in to the birdie, switch between different drive level settings and hear the result intantaneously. 73, Allard PE1NWL On Fri, April 28, 2017 21:18, David Fannin wrote:
Allard, |
Ok, so I tried the following si5351 drive levels (using 1.06 ): 2mA : ?loud @ 7.199 4mA: loud @ 7.199 6mA: loud @ 7.199 8mA: very soft @ 7.199 I've left it at the 8mA level for now. ?Thanks, Allard for the software and help.? I'm not planning on increasing the software version yet, as I don't need many of the features and would like things minimalist for now. ?I modified 1.06 to change the frequency display from "A:07.1990 LSB" to " 7.199.000 LSB", as I wanted a more readable frequency display, and I don't need VFO A/B or multiple bands. ?I also added a line to display my call sign on setup. ?I also hardcoded the calibration setting, and commented out the calibration and EEPROM code. ? The code is fine, I just chose to keep things simple for my radio. I did notice one item after reviewing the code (1.06). ? There were a lot of uses of delay() functions in the main loop (and in the doTuning() function) . ?This will create a issue later on as you add more functions to the code, as the code will be hanging on a delay, rather than processing other items. ? ?The usual solution is to use update variables, and avoid using delays. ?Here's an example: existing: void loop() { using update variables: unsigned long doTuningLastUpdate = 0 ;#define DOTUNINGTIMER ?(50UL)? void loop(){ } The advantage is that the main loop runs continuously, while maintaining the ability to run ?doTuning only ?every 50ms, without using delay() functions. As you add more "simultaneous" features, you'll see the clear benefit.? thanks, ? Dave KK6DF |
Thanks David,
toggle quoted message
Show quoted text
for your suggestion about avoiding the delay(). I'll try to include it in the next version. Also good to hear that you managed to (almost) eliminate the birdie with 8mA drive level. 73, Allard PE1NWL On Sat, April 29, 2017 19:53, David Fannin wrote:
Ok, so I tried the following si5351 drive levels (using 1.06 ): |
Jack Purdum
All: Anyone who is using interrupts might also want to avoid delay() as it is a blocking function. That is, if an interrupt event occurs during a delay() call, that interrupt cannot be serviced until the period used in delay() finishes. The millis() function is non-blocking, so you can build your own delay() function (e.g., myDelay()) if you want to. I don't think this is an issue with Allard's code because it does not use an ISR routines. Jack, W8TEE From: Allard PE1NWL <pe1nwl@...> To: [email protected] Sent: Saturday, April 29, 2017 2:10 PM Subject: Re: [BITX20] Birdie at 7.199 Thanks David, for your suggestion about avoiding the delay(). I'll try to include it in the next version. Also good to hear that you managed to (almost) eliminate the birdie with 8mA drive level. 73, Allard PE1NWL On Sat, April 29, 2017 19:53, David Fannin wrote: > Ok, so I tried the following si5351 drive levels (using 1.06 ): > > 2mA : ??loud @ 7.199 > > 4mA: loud @ 7.199 > > 6mA: loud @ 7.199 > > 8mA: very soft @ 7.199 > > I've left it at the 8mA level for now. ??Thanks, Allard for the software > and help.?? > > I'm not planning on increasing the software version yet, as I don't need > many of the features and would like things minimalist for now. ??I > modified 1.06 to change the frequency display from " A:07.1990 LSB " to " > 7.199.000 LSB ", as I wanted a more readable frequency display, and I > don't need VFO A/B or multiple bands. ??I also added a line to display my > call sign on setup. ??I also hardcoded the calibration setting, and > commented out the calibration and EEPROM code. ?? The code is fine, I just > chose to keep things simple for my radio. > > I did notice one item after reviewing the code (1.06). ?? There were a lot > of uses of delay() functions in the main loop (and in the doTuning() > function) . ??This will create a issue later on as you add more functions > to the code, as the code will be hanging on a delay, rather than > processing other items. ?? ??The usual solution is to use update > variables, and avoid using delays. ??Here's an example: > > existing: > > void loop() { > doTx(); > doTuning(); > delay(50); > }?? > > using update variables: > > unsigned long doTuningLastUpdate = 0 ; #define DOTUNINGTIMER ??(50UL)?? > > void loop(){ > checkTX(); > if ( ( millis() - doTuningLastUpdate ) > DOTUNINGTIMER ) { > ?? ?? doTuningLastUpdate = millis() ; > ?? ?? doTuning();?? > ?? }?? > > } > > The advantage is that the main loop runs continuously, while maintaining > the ability to run ??doTuning only ??every 50ms, without using delay() > functions. As you add more "simultaneous" features, you'll see the clear > benefit.?? > > thanks, > ?? > > Dave KK6DF > |
I'm using a AD9850 for the VFO but I also had a very loud birdie at 7.199. I build a LPF yesterday and placed it between the VFO and the board. It completely eliminated the birdie (coax feed in and out). It added some attenuation and knocked back the audio slightly but still loud enough. The plots for the filter show I'm down 2.5 db at 5.0 mhz. I have a 2n222 boost amplifier on the VFO and I believe I can afford the loss. I'm sure my simple LPF isn't optimal but it does point to a potential fix.
|