Keyboard Shortcuts
Likes
- BITX20
- Messages
Search
Re: JT65 on the BitX
I built my BitX40 for USB so I could run digital modes and I use it a lot for JT65. The only mod I made was to replace the L5 jumper near the BFO with a inductor. I found out what value is used here in the USB BITX20. For me it was 41 turns on a T37-6 core which I happened to have on hand. I then had to retune my VFO to read on frequency. I haven't found an satisfactory way to switch back and forth to SSB mode but so far I haven't tried very hard. I use 12 volts and get about 7W and the stock heatsink runs cool with the digital duty cycles. That power is a bit lower than most people seem to use and I typically get a lower report than I give. I already have several QSLs beyond 10,000 miles though, so I'm still having fun.? --Frank KK6WUU |
Re: Bitx 40 usb copy
I think the guy who said he's using a 200 watt amp might linear amp, might be using it in the wrong mode. Having it set on AM, or USB, or CW, or if it's made for something else other than LSB will produce this extra signal. And turning down the output power could help too. Some linear amp kits only want low milliwatt input. With a BITX40 you would want to pick up the signal before it gets to the final amplifier. But other amps expect you to connect a coax between radio and rig, and has many filters to keep your signal clean. That's why I think it could be a user error. Look for the manual online of that model number.?
|
Re: raduino v1.05 released: kill the 7199 birdie
@KE8CPD:
The toroid L4 is only used for the standard analog VFO. When you use the Raduino instead you must remove L4. Do not replace it by the provided one. Please try again with L4 removed. If you then still have a strong birdie at 7199 you can try different VFO drive levels at line 654 for best results (see my previous posting in this thread). 73, Allard PE1NWL |
Re: Bitx 40 usb copy
The Bitx40 has a 4 crystal IF filter. ?Adequate for a 5W rig, though perhaps not for 200W. ?I assume your friend finds your USB signal to be much weaker than the desired LSB signal. ?The uBitx looks better in this regard, you might experiment with patching in that better filter. ?But that would not be trivial to do, definitely a learning experience. ?? On Tue, Apr 4, 2017 at 11:21 am, Simon Thompson wrote:
? |
Re: bitx40 VFO
Jack Purdum
The Arduino String processing functions carry a lot of overhead and can fragment your memory. If you can, avoid the String class objects and use C strings (note lowercase 's') using char arrays instead. The following example shows a simple way to store and retrieve a frequency from EEPROM. The two functions of interest are the StoreFrequency() and RetrieveFrequency(). #include <EEPROM.h> #define FREQOFFSET ?10 ? ?// Byte address of where frequency is stored union eUnion{ ? byte v[sizeof(long)]; ? ? ? ? ? ?// Array with enough elements to hold a long data type ? long num; } myUnion; / ? ? Purpose: To store a long data type into EEPROM ? ? Parameter list: ? ? ? ? eUnion m ? ? ? ?// A union with a 4-element byte array, and a long ? ?Return type: ? ? ? ? void ? ? CAUTION: This code assumes that FREQOFFSET defines the address of the long in the EEPROM memory space / void StoreFrequency(eUnion m){ ? ? ? ? ? ?// Write frequency to EEPROM ? int i; ? for (i = 0; i < sizeof(long); i++) ? ? EEPROM.write(FREQOFFSET + i, m.v[i]); } / ? ? Purpose: To retrieve a long data type from EEPROM ? ? Parameter list: ? ? ? ? eUnion m ? ? ? ?// A union with a 4-element byte array, and a long ? ?Return type: ? ? ? ? void ? ? CAUTION: This code assumes that FREQOFFSET defines the address of the long in the EEPROM memory space / long RetrieveFrequency(eUnion m) { ? ? ?// Read a frequency from EEPROM ? ? int i; ? for (i = 0; i < sizeof(long); i++) ? ? m.v[i] = EEPROM.read(FREQOFFSET + i); ? return m.num; } void setup() { ? long frequency = 7040000L; ? long rF; ? ? Serial.begin(9600); ? Serial.print("Frequency = "); ? Serial.println(frequency); ? myUnion.num = frequency; ? ? ? ? ?// Store frequency in union ? StoreFrequency(myUnion); ? ? ? ? ?// write it to EEPROM ? rF = RetrieveFrequency(myUnion); ?// Retrieve it ? Serial.print("Retrieved Frequency = "); ? Serial.println(rF); } void loop() { } A union in C is a little chunk of memory that's capable of holding the largest member of whatever is defined in the union. Since frequency is expressed as a long, we need to reserve 4 bytes of memory (e.g., sizeof(long)). We then assign the frequency into the union with the statement: ? myUnion.num = frequency; ? ? ? ? ?// Store frequency in union The StoreFrequency() function simply writes that frequency to EEPROM as 4 bytes of data. It could care less that it's a long. To the compiler, it's just 4 bytes of data. Likewise, RetrieveFrequency() simply reads those same 4 bytes of data back into the byte array named v[]?that is part of the union. The code has no clue what those 4 bytes are, but we know it's the frequency, so we treat them as a long and return that value with the statement: ? return m.num; This is a pretty simple way to read and write to EEPROM. The nice thing about unions is that it doesn't have to contend with how the compiler stored the byte-order of the data (e.g., the Endian Problem). 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: raduino v1.05 released: kill the 7199 birdie
Dave,
in the raduino_v1.05 sketch the VFO drive level has been increased to 4mA (it was 2mA in earlier releases). 4MA is probably the optimum level in most cases (for a standard non-modified BITX40 board). But it seems that there is some variation between BITX40 radios. Perhaps your radio needs a different level? You can tweak the drive level in line 654: si5351.drive_strength(SI5351_CLK2, SI5351_DRIVE_4MA); Please try different drive levels (accepted values are 2,4,6,8MA) and find out at which drive level you get the best result. 73, Allard PE1NWL |
Re: Mic gain and RF power
¿ªÔÆÌåÓýHmm. ? That sounds like a KISS procedure. ?"Distance from the BITX40 mic makes a huge difference. If you can lick it, you are too close. If you can't, then it's too far away. If you are?Gene Simmons, never mind. " |
Raduino output waveform
As I was building my bitx40 kit, I looked at the output of the Raduino board, and running standalone, it is a decent square wave signal, and it appears to have a coupling capacitor in the output, as the signal is centered at ground level. However, when connected to the bitx40, the signal is level shifted (which makes sense, as it is feeding a point with DC bias), but the waveform looks really horrible - sort of a very distorted triangle/sawtooth shape. Is this typical? The RX seems to work - in that I hear pretty much the same junk as I hear on my IC-718, but I was curious if the distortion I see is normal. Also, how does the drive level setting of the si5351 have any effect upon the mixer diodes (re the birdie at 7199 KHz), since the VFO signal is significantly buffered before injection? 73, Dave, N6AFV |
Re: Mic gain and RF power
I haven't touched R136 at all, since i got the board. Assuming it was fine. I run it on a 13.8 power supply. But i did make the mistake of wiring the mic backwards and was wondering if they could effect anything. Maybe damaged the Mic? FYI i am still getting RF power out now. I whistle into the mic and get about 7 to 8 watts on the meter. 73 KE8CPD |
Re: raduino v1.05 released: kill the 7199 birdie
Hello Allard, I recently got my bitx40 kit, and due to to some foolish mistakes of my own, I had to replace the mega328 on the Raduino Nano board. As a consequence, I decided to go with the raduino_v1.05 sketch when I loaded the firmware. I don't have a point of comparison with earlier firmware loads, but I can tell you that, on my bitx40 at least, the 7199 birdie is incredibly strong. I can hear it with the volume almost all the way down. I'm not sure what else may contribute to this issue, but thought I'd let you know of my experience. 73, Dave, N6AFV |
Re: Coax impedance for vfo signal between raduino and bitx boards.
here is the linked info. sarmaWhat is the cable impedance and when it is needed? The basic idea is that a conductor at RF frequencies no longer behaves like a regular old wire. As the length of the conductor (wire) approaches about 1/10 the wavelength of the signal it is carrying - good ol' fashioned circuit analysis rules don't apply anymore. This is the point where things like cable impedance and transmission line theory enter the picture. Read more at: On Wed, Apr 5, 2017 at 12:10 AM, Mvs Sarma <mvssarma@...> wrote:
--
Regards
Sarma ? |
Re: Coax impedance for vfo signal between raduino and bitx boards.
For short lengths of coax at HF? (not VHF or UHF) it wont matter what you use. the load impedance gets applied ? to the source On Tue, Apr 4, 2017 at 10:54 PM, Cory Clemmer <cclemmer@...> wrote:
--
Regards
Sarma ? |
Re: Mic gain and RF power
There is an alignment process where you adjust R136 to dial in just 1 amp doing the ahhh thing. If you have done that and use 12-13 volts, you have a BITX on par everyone else. And holding the mics at the same distance would also help with scientific consistency too. I don't want to unnecessarily complicate it for you so maybe just forget I said anything. Distance from the BITX40 mic makes a huge difference. If you can lick it, you are too close. If you can't, then it's too far away. If you are Gene Simmons, never mind.? |
Bitx 40 usb copy
Simon Thompson
¿ªÔÆÌåÓý
|
Re: Mic gain and RF power
Michael Davis
I too questioned my power out. So I set up my base rig identical to how I would set up the Bitx. Same 40 meter dipole antenna, same voltage in, same frequency. I did the haalllowww thing into the Icom set at 5 watts and watched my power/swr on my cheap meter. Then the Bitx. Surprisingly the Bitx moved the needle higher. My guess, 6-8 watts out. Not very scientific I know, but satisfactory for me.?
|
Electret mic
Michael Davis
I recently had no audio drive. I bought a new electret microphone element at RS and rewired and installed the identical looking little unit. My question is, does anyone know the spec of the OEM device? Impedence? Gain? Freq response? Any other variable I should know before deciding to stay with what I bought (it works) or purchase a different one. The RS spec is: f resp. 50-10k, supply voltage 1-10vdc, nominal supply, 4.5vdc, current drain .5ma (max), s/n 58db (min), sensitivity -44 +/- 2db and output impedence 2.2k ohms. Thanks WA1MAD |
Re: raduino v1.05 released: kill the 7199 birdie
Allard, Thanks for the updated firmware. I loaded it last night it help with taking the birdie down a bit. But its still there. So i order the radiuno separate from the bitx40 board. the board is still V3, but my question is the radiuno came with a toroid, and in the instructions ( I read after i installed it and power tested it) says to remove the toroid and replace it with the provided one. Not sure what toroid its talking about, and do i need to replace it? 73 KE8CPD? |