最近迷上了29.6MHZ的短波通讯。本着少花钱,多办事的原则。购买了一台淘宝上的CB机。CB机就是美国或欧洲免许的对讲机。27MHZ频段。功率4w。我买的这台是全新库存,105元,貌似价格还可以。
以前的改法,需要用到一个混频器,垫高本振频率。我的改法和这个不同。我的改法相当于更换晶振。将CB机的MCU的晶振,原来是4.5MHZ的,换成一个DDS,DDS板上面有MCU控制。将CB机的发射控制电平接DDS板,这样在发射的时候,DDS产生的频率和接收时候的频率是不同的。例如用9频道,接收时候的晶振输入频率调整到5.196854001MHZ,这样通过CB机自己的PLL能倍频到18.905MHZ,正好是29.600接收时候的一本振频率。一本振频率计算公式是:接收频率- 1次变频中频放大器的工作频率。即 29.6-10.695 = 18.905MHZ。发射的时候,将输入晶振引脚的频率调整到4.921485313MHZ。发射是二倍频,CB机的VCO输出14.8MHZ,二倍频后发射频率刚好29.6MHZ。
这样就相当于更换了机内的晶振,只是这个晶振是可控,可变频率的。对原机改动最小,只接电源、地、晶振输入、发射切换4根线。改动成功率高。适合所有CB机的改装。当然,改装了频率后,还需要调整VCO谐振感,发射回路和接收回路的中周。我用我原创的方法,已经改好了一台。收发正常,灵敏度好。已经和几个HAM在29.6上进行了通联。
这样改后有个问题,机器本身设定的频率就是一个固定值,不能改变,例如设定9频道。改变频率后,收发频率就不在一起了。相比垫高本振,还是有一定不足。我将机内的频率上下调整的按钮,接入改装板的单片机,用改装板的单片机可以控制晶振的输入频率,仍然可实现40或80个信道。DDS就这一点好处,频率分辨率很啊。但频率不能显示,这个怎么解决?有办法,让单片机输出语音,把语音馈送到机内功放输入引脚。这样,按一下向上,喇叭中就发出29.625这样的声音了。至此,改装完毕。通过调整发射回路,可以将输出功率调整到8w,现在10米传播较好,通联没有问题。
DDS芯片用AD9850 MCU用的是STM32F101。
部分主要程序:
int main(void)
{
#ifdef DEBUG
debug();
#endif
Status ret;
u8 j=0;
u32 i;
u8 old_key=0,current_key;
/* Setup STM32 system (clock, PLL and Flash configuration) */
Stm32_Clock_Init(2);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_Configuration();
delay_init(16);
uart_init(16,115200); //UART INIT TO BAUT = 115200
printf("start");
JTAG_Set(0X10); //JTAG MIRROR GPIO
ad9850_wr_serial(0x00,5196854); //接收频率
delay_ms(1);
ad9850_wr_serial(0x00,5196854); //接收频率
old_key = 0;
while(1)
{
//ad9850_wr_serial(0x00,1000);
// ad9850_wr_serial(0x00,4867531.58); //发射频率
// ad9850_wr_serial(0x00,5196854); //接收频率
current_key = GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_13);
if(old_key !=current_key )
{
old_key = current_key;
if (current_key==0) //返回按键所端口电平状态 0 为接收
{
ad9850_wr_serial(0x00,5196854.001); //接收频率
delay_ms(1);
ad9850_wr_serial(0x00,5196854.001); //接收频率
delay_ms(100);
}
else
{
ad9850_wr_serial(0x00,4921485.313); //发射频率
delay_ms(1);
ad9850_wr_serial(0x00,4921485.313); //发射频率
delay_ms(100);
}
}
}
}
程序未加整理,让大家见笑了。此程序没有语音和频道切换功能。
作者:BG7PNK 欢迎转载。