Keyboard Shortcuts
Likes
- BITX20
- Messages
Search
Re: DDS VFO.
Jack Purdum
Just make sure the vendor tells you the DDS chip that it's using and the name of the library that is used with the microcontroller you are using. Jack, W8TEE From: philip yates <phil@...> To: [email protected] Sent: Friday, April 21, 2017 12:31 PM Subject: [BITX20] DDS VFO. Anyone tried one of these? Has connections for S meter, and TX status. Not sure how you drive the S meter tho. Like the idea of having the voltage displayed as well. Just need a circuit, and see if its within my capabilities. Code has got me flustered for now. Phil-G7BZD
|
Re: Antenna Tuner for BITX40 similar to Elecraft KX2?
The Elecraft T1 automatic tuner is really nice. I recently built one from a kit and used it with my Xiegu X1M Platinum. The tuner is pocket-sized, runs on a 9V battery, is rated for up to 20 watts (though it has been tested at "backpacker amp" level by Elecraft for brief periods and held up), and tunes up really quickly. Rich KC8MWG On Friday, April 21, 2017 1:30 PM, Daniel Acevedo <dan.ace86@...> wrote: I just wanted to know if there is anything out there in a small form factor. I like the idea of an antenna tuner, either manual or automatic, that can fit inside a small enclosure similar to the boxes we have seen here in the forums.
|
W3NQN output bandpass filters?
I just now skimmed over the QST May and June 1998 band pass filter articles by W3NQN. I only understood a little of Ed's design but am struggling to learn more. Copies of the 2017 ARRL Handbook and EMRFD (scanned reprint) will soon be on my desk. I am still thinking in terms of broad function blocks. Do y'all think a set of Ed's filters between amplifier and antenna feedline would take care of the spurs / harmonics / mean nasty things from a uBitX or a Minima?
|
Re: Synthesizer on Mega 2560 + 3.2 TFT LCD + Si5351
It is a very good VFO with almost all facilities? On Fri, Apr 21, 2017 at 9:46 PM, Juan Carlos Berberena Glez <cubanqrp@...> wrote:
|
Re: Synthesizer on Mega 2560 + 3.2 TFT LCD + Si5351
Hi Jack Thank you for you comment. This is a really niece project but it is out of my goal because it is out of the regular budget I use to duplicate any affordable and easy to implement device for my friends in Cuba. Maybe I will try to do it in a future for fun but at this time the 1602A LCD display have to be our Trojan horse with the Arduino Nano. Please if you have some information I can review in relation with the synthesizer using Si5351A, please let me know I will appreciate a lot. Have a Good Weekend 73's Jc ¡°If you have a penny and I have a penny and we exchange pennies, you still have one cent and I still have one cent.? But if you have an idea and I have an idea and we exchange ideas, you now have two ideas and I now have two ideas.¡±? Mr. Juan Carlos Berberena Gonzalez, BSc. WJ6C exCO6BG? ? -----------please check it out----------- 2017-04-21 11:42 GMT-04:00 Jack Purdum via Groups.Io <econjack@...>:
|
Re: Synthesizer on Mega 2560 + 3.2 TFT LCD + Si5351
Jack Purdum
Very nice, JuanCarlos! You must have a ton of work in fabricating your PCB. I'm making a similar TFT display using the Mega Pro Mini (see board) to keep the footprint smaller, but using an encoder for the menuing system instead of push buttons. I'm also trying to bring out all of the I/O pins to make hacking it a bit easier. Keep us posted!! Jack, W8TEE From: JuanCarlos Berberena Gonzalez <juancarlos@...> To: [email protected] Sent: Friday, April 21, 2017 11:15 AM Subject: [BITX20] Synthesizer on Mega 2560 + 3.2 TFT LCD + Si5351 Hi Guys Please take a look and enjoy it https://drive.google.com/drive/u/0/folders/0B9iIbUL3INnEcHcwcWhaeTBiWE0 Qrv's 73's? Jc
|
Re: Proper carrier oscillator frequency
I suspect the primary confusion Dave is having is that the passband of the filter is not at exactly 12mhz as suggested by that wiki entry. ?There should be a note at the bottom stating that the filter uses the series resonant frequency of the crystals, which occurs a few khz lower in frequency than the parallel resonant frequency used by the BFO: ? ?? ? ?Inspection of the Bitx40 schematic will make it obvious that the signal must pass through each of the four crystals, and will be strongest at the series resonant frequency. ?Whereas in the BFO, the crystal shorts out any oscillation at the base of Q10 when at series resonance, it is the high impedance parallel resonance point of the crystal where Q10 will choose to oscillate. ?So the BFO is a couple khz higher than the center of the filter passband, the BFO is adjusted slightly down in frequency from 12mhz by C102. ?The frequency marked on the crystal case is typically the parallel resonant frequency. I could be wrong as I haven't yet butted heads with physical reality, sweeping my filter passband and measuring BFO frequencies. Jerry, KE7ER On Thu, Apr 20, 2017 at 11:29 pm, Noel wrote:
? |
Re: bitx40 VFO
Jack Purdum
Billy: I know that no one sits there spinning their tuning encoder 24/7, stopping every 2.1 seconds along the way. But if someone did do that, the EEPROM may become suspect after 139 days. I would suggest the following small changes: #define EPAUSE ? ?60000L ? ?// Place after the #include preprocessor directives... // then in loop() ? ? ? if(timepassed +?EPAUSE < millis()){ ?// If I hang around for more than a minute... This would make it pretty easy for someone to change the I'm-just-tuning-around delay to some other value that better-suits their tuning preferences. Sometimes I paused for several seconds listening to a transmission before moving on. Most of the time, I would not need to preserve that particular frequency in EEPROM as I do a hunt-and-pounce type of movement. Jack, W8TEE From: Billy Shepherd <billy.shepherd@...> To: [email protected] Sent: Tuesday, April 4, 2017 12:36 PM Subject: Re: [BITX20] bitx40 VFO Also, here is the code that worked or my Arduino Mega
/* Main code by Richard Visokey AD7C - www.ad7c.com Revision 2.0 - November 6th, 2013 */ // Include the library code #include <LiquidCrystal.h> #include <rotary.h> #include <EEPROM.h> //Setup some items #define W_CLK 8?? // Pin 8 - connect to AD9850 module word load clock pin (CLK) #define FQ_UD 9?? // Pin 9 - connect to freq update pin (FQ) #define DATA 10?? // Pin 10 - connect to serial data load pin (DATA) #define RESET 11? // Pin 11 - connect to reset pin (RST) #define pulseHigh(pin) {digitalWrite(pin, HIGH); digitalWrite(pin, LOW); } Rotary r = Rotary(2,3); // sets the pins the rotary encoder uses.? Must be interrupt pins. LiquidCrystal lcd(12, 13, 7, 6, 5, 4); // I used an odd pin combination because I need pin 2 and 3 for the interrupts. int_fast32_t rx=7200000; // Starting frequency of VFO int_fast32_t rx2=1; // variable to hold the updated frequency int_fast32_t increment = 10; // starting VFO update increment in HZ. int buttonstate = 0; String hertz = "10 Hz"; int? hertzPosition = 5; byte ones,tens,hundreds,thousands,tenthousands,hundredthousands,millions ;? //Placeholders String freq; // string to hold the frequency int_fast32_t timepassed = millis(); // int to hold the arduino miilis since startup int memstatus = 1;? // value to notify if memory is current or old. 0=old, 1=current. int ForceFreq = 1;? // Change this to 0 after you upload and run a working sketch to activate the EEPROM memory.? YOU MUST PUT THIS BACK TO 0 AND UPLOAD THE SKETCH AGAIN AFTER STARTING FREQUENCY IS SET! void setup() { ? pinMode(A0,INPUT); // Connect to a button that goes to GND on push ? digitalWrite(A0,HIGH); ? lcd.begin(16, 2); ? attachInterrupt(0,MyIsr,CHANGE); attachInterrupt(1,MyIsr,CHANGE); ? ? pinMode(FQ_UD, OUTPUT); ? pinMode(W_CLK, OUTPUT); ? pinMode(DATA, OUTPUT); ? pinMode(RESET, OUTPUT); ? pulseHigh(RESET); ? pulseHigh(W_CLK); ? pulseHigh(FQ_UD);? // this pulse enables serial mode on the AD9850 - Datasheet page 12. ? lcd.setCursor(hertzPosition,1);??? ? lcd.print(hertz); ?? // Load the stored frequency? ? if (ForceFreq == 0) { ??? freq = String(EEPROM.read(0))+String(EEPROM.read(1))+String(EEPROM.read(2))+String(EEPROM.read(3))+String(EEPROM.read(4))+String(EEPROM.read(5))+String(EEPROM.read(6)); ??? rx = freq.toInt();? ? } } void loop() { ? if (rx != rx2){??? ??????? showFreq(); ??????? sendFrequency(rx); ??????? rx2 = rx; ????? } ????? ? buttonstate = digitalRead(A0); ? if(buttonstate == LOW) { ??????? setincrement();??????? ??? }; ? // Write the frequency to memory if not stored and 2 seconds have passed since the last frequency change. ??? if(memstatus == 0){?? ????? if(timepassed+2000 < millis()){ ??????? storeMEM(); ??????? } ????? }?? } void MyIsr(void) { ? unsigned char result = r.process(); ? if (result) {??? ??? if (result == DIR_CW){rx=rx+increment;} ??? else {rx=rx-increment;};?????? ????? if (rx >=30000000){rx=rx2;}; // UPPER VFO LIMIT ????? if (rx <=1000000){rx=rx2;}; // LOWER VFO LIMIT ? } } // frequency calc from datasheet page 8 = <sys clock> * <frequency tuning word>/2^32 void sendFrequency(double frequency) {? ? int32_t freq = frequency * 4294967295/125000000;? // note 125 MHz clock on 9850.? You can make 'slight' tuning variations here by adjusting the clock frequency. ? for (int b=0; b<4; b++, freq>>=8) { ??? tfr_byte(freq & 0xFF); ? } ? tfr_byte(0x000);?? // Final control byte, all 0 for 9850 chip ? pulseHigh(FQ_UD);? // Done!? Should see output } // transfers a byte, a bit at a time, LSB first to the 9850 via serial DATA line void tfr_byte(byte data) { ? for (int i=0; i<8; i++, data>>=1) { ??? digitalWrite(DATA, data & 0x01); ??? pulseHigh(W_CLK);?? //after each bit sent, CLK is pulsed high ? } } void setincrement(){ ? if(increment == 10){increment = 50; hertz = "50 Hz"; hertzPosition=5;} ? else if (increment == 50){increment = 100;? hertz = "100 Hz"; hertzPosition=4;} ? else if (increment == 100){increment = 500; hertz="500 Hz"; hertzPosition=4;} ? else if (increment == 500){increment = 1000; hertz="1 Khz"; hertzPosition=6;} ? else if (increment == 1000){increment = 2500; hertz="2.5 Khz"; hertzPosition=4;} ? else if (increment == 2500){increment = 5000; hertz="5 Khz"; hertzPosition=6;} ? else if (increment == 5000){increment = 10000; hertz="10 Khz"; hertzPosition=5;} ? else if (increment == 10000){increment = 100000; hertz="100 Khz"; hertzPosition=4;} ? else if (increment == 100000){increment = 1000000; hertz="1 Mhz"; hertzPosition=6;}? ? else{increment = 10; hertz = "10 Hz"; hertzPosition=5;};? ?? lcd.setCursor(0,1); ?? lcd.print("??????????????? "); ?? lcd.setCursor(hertzPosition,1); ?? lcd.print(hertz); ?? delay(250); // Adjust this delay to speed up/slow down the button menu scroll speed. }; void showFreq(){ ??? millions = int(rx/1000000); ??? hundredthousands = ((rx/100000)%10); ??? tenthousands = ((rx/10000)%10); ??? thousands = ((rx/1000)%10); ??? hundreds = ((rx/100)%10); ??? tens = ((rx/10)%10); ??? ones = ((rx/1)%10); ??? lcd.setCursor(0,0); ??? lcd.print("??????????????? "); ?? if (millions > 9){lcd.setCursor(1,0);} ?? else{lcd.setCursor(2,0);} ??? lcd.print(millions); ??? lcd.print("."); ??? lcd.print(hundredthousands); ??? lcd.print(tenthousands); ??? lcd.print(thousands); ??? lcd.print("."); ??? lcd.print(hundreds); ??? lcd.print(tens); ??? lcd.print(ones); ??? lcd.print(" Mhz? "); ??? timepassed = millis(); ??? memstatus = 0; // Trigger memory write }; void storeMEM(){ ? //Write each frequency section to a EPROM slot.? Yes, it's cheating but it works! ?? EEPROM.write(0,millions); ?? EEPROM.write(1,hundredthousands); ?? EEPROM.write(2,tenthousands); ?? EEPROM.write(3,thousands); ?? EEPROM.write(4,hundreds);?????? ?? EEPROM.write(5,tens); ?? EEPROM.write(6,ones);?? ?? memstatus = 1;? // Let program know memory has been written }; From: [email protected] [[email protected]] on behalf of Adam Sliwa [sq9tla@...]
Sent: Wednesday, March 01, 2017 1:52 AM To: [email protected] Subject: [BITX20] bitx40 VFO I?bought you?trx without DDS.? I'm making DDS witch Arduino Nano and?AD8950 module. I have?any questions.
What is?ferquency VFO (4.8 - 5 MHz for 7-7.2 MHz) ?
How many ?volts should?signal output DDS?
Output signal from VFO on the board? should connect GND or? breake path ?
Regards , adam
|
Re: Proper carrier oscillator frequency
Noel, thanks for the link, but it seems to confirm what I thought - for LSB, the carrier osc has to be above the filter bandpass. In the link you provide, the LSB BFO freq is 12.001 MHz, and the USB freq is 11.999 MHz, assuming a 1KHz modulation tone. It seems that there is more going on here than is obvious, so I'm hoping someone else will weigh in and help me understand why the carrier osc would be lower than the filter bandpass edge, instead of higher. |
Re: 'Small as possible BITX40'
¿ªÔÆÌåÓýI sent you the pictures. This is the way they should have done the PCB. My regulator came hanging out, all bent up? The 47 Ohm / 1W resistor takes some of the heat and with the cap
really helps the regulator for noisy inputs. Mike,WA6ISP On 4/20/2017 10:32 PM, Daniel Norris
wrote:
Hi Mike, |
Re: raduino programming
Ingvar, please follow the instructions in the WIKI to install the SI5351 library to the correct location: /g/BITX20/wiki/Retrieving-the-Si5351A-Library 73, Allard PE1NWL |
Re: raduino programming
Adrian
toggle quoted message
Show quoted text
On 21 Apr 2017, at 6:22 pm, bengt-ingvar.andersson@... wrote:
|
Re: Proper carrier oscillator frequency
See the Wiki... /g/BITX20/wiki/USB-LSB-operation? it might help. BFO set to 11.997 Mhz, with filter at 12MHz, a LO of 4.900 MHz will give 7.100 MHz LSB. |
Re: uBitx Prototype (PCB)
If you¡¯re comparing prices from different , check out http://PCBShopper.com. You enter your board¡¯s specs, the quantity you want and how fast you want it, and it shows you prices from 25 different manufacturers including Dirty PCBs, Seeed Studio and the best known manufacturers in Asia, North America and Europe.
|
Proper carrier oscillator frequency
I modified my Raduino sketch to use a rotary encoder, with the push switch stepping through increments from 1 Hz to 1 MHz (I know, a bit of overkill - I'll fix it later). However, I thought that it would be cool to use one of the si5351 clocks as the carrier (12 MHz) oscillator, and added code that allows me to modify that output in the same way as the main VFO. That all works, but I'm really confused about where the carrier oscillator should be set. So, let's assume that the crystal filter has a center frequency of 12 MHz, a bandwidth of 3 KHz,? and our audio range of interest is 300-3000 Hz. Since we are making LSB, the carrier should be set ABOVE the filter bandpass, correct? In this case, the upper edge of the filter would be 12.001500 MHz, and we want our 300 Hz to be at that frequency, so the carrier should be 12.001800 MHz, i.e. 300 Hz above the filter edge. So, when the mixer sees 300 Hz audio, the difference would be 12.001500 MHz. If the audio is 3KHz, then the difference would be 11.998800 Mhz, which would be within the lower filter edge of 11.998500 MHz, and we would get our lower sideband output. However - I have to set my carrier oscillator on the LOW side of the filter passband to get intelligible LSB output (TX into a dummy load, and using my IC-718 to monitor). I don't have a frequency counter, but using the IC-718 in CW mode, I can hear the carrier oscillator well enough to know that it is pretty darn close to the correct frequency. So, what am I not getting here? Do the crystal filters have some other passband than I'm assuming? Is my theory off? |
Re: 'Small as possible BITX40'
Hi Mike,
toggle quoted message
Show quoted text
I looked up your post, but couldn't get your Dropbox link to work to see the photos.? Are they posted elsewhere? --Dan On Thu, Apr 20, 2017, 7:41 AM Michael Hagen <motdog@...> wrote: Hello, |