¿ªÔÆÌåÓý

Date

Re: SD Card

howardmsmall
 

From earlier posts I am led to believe that writing frequencies too often to the eeprom will shorten its life considerably. I had in mind the possibility of storing frequencies ad hoc which coukd then be too frequent.


Howard, VK4BS


Re: You can't fix stupid (or hurry-up-itis)

 

Welkome to the Club. Hi.

73
john
AD5YE


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:

From: College Professor Simon Thompson <nwccenglishprofessor@...>
Subject: Re: [BITX20] Bitx 40 usb copy
Date: April 4, 2017 at 11:20:55 AM PDT
Cc: College Professor Simon Thompson <nwccenglishprofessor@...>

I wonder if the Bitx is overdriving the amplifier, and creating USB distortion, or if the Bits is somehow not adequately suppressing the USB signal that is going in to the amplifier. Have you tried to turn down the output of the BitX by running through the alignment procedure so that you are producing very little output, and thereby not overdriving the amplifier?
On Apr 4, 2017, at 6:17 AM, Rajan Krs <rajankrs@...> wrote:

Sir,
Thanks for replay, is using bitx 40 kit with 200 watts linear some my friends said that my signal having usb copy. IE., When i transmitted the LSB copy is 59 report in USB He gives 56 report how to eleminate usb copy in bitx 40
Thanking you
Rajan.R

?


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. "


Delivery Report

 

I received my BITX40.

Ordered: 15-Mar

Shipped: 22-Mar

Delivered: 3-Apr

S/N: 3-730


Best Regards,

Matthew

NB0X


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.

What 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:
sarma
?vu3zmv

On Wed, Apr 5, 2017 at 12:10 AM, Mvs Sarma <mvssarma@...> wrote:
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:

I am planning to use thin coax for the Raduino vfo output, what would be better 50, 75, or maybe 90 ohm?




--
Regards
Sarma
?




--
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:

I am planning to use thin coax for the Raduino vfo output, what would be better 50, 75, or maybe 90 ohm?




--
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
 

¿ªÔÆÌåÓý



Begin forwarded message:

From: College Professor Simon Thompson <nwccenglishprofessor@...>
Subject: Re: [BITX20] Bitx 40 usb copy
Date: April 4, 2017 at 11:20:55 AM PDT
Cc: College Professor Simon Thompson <nwccenglishprofessor@...>

I wonder if the Bitx is overdriving the amplifier, and creating USB distortion, or if the Bits is somehow not adequately suppressing the USB signal that is going in to the amplifier. Have you tried to turn down the output of the BitX by running through the alignment procedure so that you are producing very little output, and thereby not overdriving the amplifier?
On Apr 4, 2017, at 6:17 AM, Rajan Krs <rajankrs@...> wrote:

Sir,
Thanks for replay, is using bitx 40 kit with 200 watts linear some my friends said that my signal having usb copy. IE., When i transmitted the LSB copy is 59 report in USB He gives 56 report how to eleminate usb copy in bitx 40
Thanking you
Rajan.R

On Tue, Apr 4, 2017 at 10:54, College Professor Simon Thompson
What is your question?

Sent from my iPad

On Apr 3, 2017, at 10:17 PM, Rajan Krs via Groups.Io <rajankrs@...> wrote:

Hi every once nice to see you on air. I need some help regarding usb copy please help.to short out the problem in?
bitx 40




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?