真正的 汉姆精神 回归 有福同享八重洲电台用艾康姆天调的转换器制作秘密大公开,技术开源共享的典范!!! ------------------------------八重洲的电台配一个便宜的ICOM天调似乎是个很经济实惠的选择,但是怎样才能用的更爽呢?于是有了以下的研究。
2021年2月24日更新了一下电路图链接,把原来链接Key信号的引脚从D2换到了A0模拟口,程序也修改过了,经过简单测试,857老一代电台和991A新一代都可以正常工作,891的别问我,我没有891所以无法测试,只能估计是可以的,喜欢动手的小朋友们可以完全模仿制作了,但是如果你把电台弄烧了可别来找我啊。。。
制作所需材料:
arduino nano pro 小板一块
7805 三端稳压一块
DIN 8PIN 圆口插座一个
DIN 8PIN 圆口插头两个
ICOM四口天调接口一个
8芯软线若干,实在没有你用网线也成
最好再有一小块多孔实验板
连接线若干
以上材料一共加运费可能要不超过20块钱
开始制作之前最好还是学习一下理论比较好,不然违背了做一个汉姆的宗旨 -------- 折腾到死方为止! 而且理论绝对是实践的基础,懂了理论你再遇到困难时候,你心里就有数了!
下图为857D与MAT-30天调协同工作的时候,TXGND与TXINH之间的时序,蓝色是TXINH,这两个信号的电压都是来自于天调或者是咱们将要制作的协议转换板,TXGND信号的目的是电台通知天调时候开始发射信号,信号为低电平时代表电台已经开始发送射频信号,TXINH这个信号是天调需要切换匹配网络与信号检测器的时候,用来通知电台停止发射信号用的,高电平代表禁止电台发射信号,当调电台向天调发送调谐指令后,天调首先让TXINH暂时升高,然后切换继电器,让信号接入天调内部的信号检测器,检测之后再次升高TXINH让继电器切入匹配网络进行匹配,等匹配完成后,天调向电台发送结束指令,电台收到指令后停止发射并将TXGND拉高,完成一次调谐。
下图是ICOM 706与AH4天调通信时START与KEY信号之间的关系,此图为调谐不成功时候的波形,蓝色是KEY,ICOM的四线控制天调,例如AT120,AT130,AH4这样的,都是这个原理,同时也包括ZTT100这样的都是同理,START信号是由天调供电的,KEY则是由电台提供,天调上电后会产生一个70毫秒短脉冲来通知电台,这时候电台就知道有天调的存在,没这个信号的话,按电台上的调谐按钮是没用的(我用706测试的,别的信号ICOM电台我不保证是这样,毕竟见识不足啊)。当正确初始化天调后,按下调谐按钮后电台将START信号拉低300毫秒以此通知天调要开始工作了,天调在检测到信号后会将KEY信号拉低表示天调准备好调谐,可以发送信号,然后直到调谐过程结束,如果调谐成功,天调直接将KEY信号拉高表示调谐成功,如果调谐不成功天调则会在完全结束调谐之前在KEY上产生一个70毫秒的脉冲,之后再拉高表示调谐没有成功!
以下是新增的三张AH4天调的工作时序图,此图反映了START KEY 以及RF信号三者之间的时序关系,调整好工作时需非常重要,这决定了整个系统能不能正常工作!
第一张,天调上电与电台“握手”信号
第二张 天调成功调谐的时序图,这张图的时序我们一定要保证,不然整个系统工作会不正常,或者容错性会差!
第三张,系统调谐失败时的时序图,可以看出,调谐失败后,天调会以一个20毫秒的KEY高电平信号通知电台,然后200毫秒后结束调谐过程,所以电台会知道有没有调谐成功。
总结几点,这些要点说起来比较麻烦,所以直接了解一下就好了,遇到问题找不到原因时候再仔细看也不迟!
1 八重洲天调使用4800速率串口传输信号
2 电台每次发出4字节16进制数,例如FF F1 00 00
3 天调每次收到指令会恢复A0表示收到,再回复A1表示执行完毕(我猜是这样的)
4 TXGND信号通常为高电平,调谐时由电台拉低,作用似乎是通知天调电台已经开始发射信号
5 TXINH通常是低电平,调谐时由天调拉高表示禁止电台发射。
6 以上两个信号的电压均来自于天调。
7 891 991A这样的新型的机器,CAT接口的第六脚(有的叫BAND)应该直接接地,此信号接地后,电台认为有天调联入,不接地将无法通过串口数据握手工作。
8 ICOM天调没什么多说的,主要采用的是例如AT120,AH4这样的四线控制的天调。
9 ICOM天调的START信号拉低300毫秒后KEY信号才会拉低,表示调谐电路已介入,这时候接入射频信号才行,过早的接入射频信号八重洲电台会认为驻波过高而停止调谐。
10 ICOM天调在调谐时候KEY信号和START信号都会有不超过一伏特的小波动,但是这会影响单片机判断,所以做转换器的时候,可能要考虑这问题,我加了一个可调电阻貌似解决了
11 最重要的一点是控制时序问题,电台如果发射后没有及时接入天调,那么电台会因驻波过高而自动停止,天调如果开始调谐后没有接收到电台的载波也会自动停止,所以必须让这两个过程要基本同步,我猜测误差时间应该不能大于20毫秒吧,yaesu电台收到第一段调谐指令FF F1 XX XX 的时候,我猜是在天调发送完A1时就会开始发射,将TXGND拉低,而ICOM的天调在接收到START开始信号之后300毫秒才会开始调谐,并拉低KEY信号,所以我的做法是在发送第一个A1之前300毫秒把START拉低,这样就刚好能够同步好这个过程,由于我这个做法是通过猜测和实验的来的,所以不一定准确,但是保证能用,主要是懒的再用示波器测试了,我这个示波器不算高级,测起来也麻烦,所以偷个懒,毕竟改一下程序更容易。
以下是八重洲电台与天调之间的几种通信情况,以991a的为例,857这一代的跟991这一代是不同的,但是天调能够通用
[ ]中的数据是来自于天调的返回数据,电台的信号总是以FF开头,然后延迟50毫秒,跟着的是指令字符,比如F0 可能是转换频段或是启用天调,F1是旁路天调,F2是调谐,F3不知道是什么,有可能是取消调谐还是什么的,反正出问题了才会有F3,比如长时间天调不回答A1。
具体指令举例:
1 开机后旁路天调的握手过程 00
[a0][a1] ff e0 01 00 ff e0 00 01 ff f1 00 00 [a0] [a1]
2 开机后启用天调的握手过程 00
[a0][a1] ff e0 01 00 ffe0 00 01 ff f0 00 00 [a0] [a1] ff f0 07 16 [a0] [a1]
3 启用调谐器 ff f0 07 06 [a0] [a1]
4 禁用调谐器 ff f1 00 00 [a0] [a1]
5 开始调谐 ff f1 00 00 [a0] [a1] ff f2 07 06 [a0] [a1]
6 更换频段 ff f0 07 16 [a0] [a1] 这个表示频率换到7.16兆,如果换到14.27那么指令就会是 ff f0 14 27 [a0][a1]
目前只做了一个测试电路,利用arduino的328P小系统做的,这货启动比较慢,不能像原版天调或者国产天调那样开机的瞬间就能发送串口数据,但是也能用
这上面的开关是没用的,我这板是用了原来一个别的东西的板,单片机上面那个长条大的板是DC-DC可调降压模块,制作这个用7805就好了,稳定可靠,还便宜。
这张连接图你们凑合看吧,我也没用软件画正规的电路图,反正很简单就是了,另外需要说明的是各条信号线之间你们可能需要考虑一下是不是需要串联电阻进行保护,我用的AH4天调的信号电压不超过5伏,所以我胆大没接多余的电阻反正没事,但是据说AT120这些的信号电压可能会有七八伏,这时候就必须连接电阻进行分压,否则可能会烧单片机,购买arduino nano的时候,建议买我连线图上这种自带USB接口的,也就八九块钱,如果你买了我电路板上那种小的,虽然便宜得很,但是你还得另外买个USB串口才能跟他连上编程,不是很方便。
根据以上这些工作原理,我们同样也可以通过单片机来实现独立控制这两个牌子的天调,尤其是YAESU的串口天调,你基本没办法像控制ICOM天调那样独立控制他们,所以把这些天调变成一个通用天调这是最大的福音,这意味着在金钱不足的情况下,你可以有办法购买便宜又好的ICOM天调来给YAESU电台用。
目前为止这个东西在国内可能没人发过吧?其实国外也不多见,而且国内似乎成品也不多见,因为凡是做成功的人都把这个当作技术保密起来,成为捞钱的工具,我曾经向制作MAT-30的卖家请教技术,但是他并不善于交谈,什么技术方面的东西都不想告诉你,这其实真的有点违背了汉姆互帮互助的精神,尤其是对刚入坑的汉姆来说,显得相当的冷峻。
单片机的程序我暂时先不发了,因为这东西刚搞好,也不知道稳定不稳定,要经过一段时间的使用来调整程序,让他更可靠,另外我编程水平太差,怕被你们懂行的兄弟看了嘲笑,所以。。。。如果需要的话可以留言,不过这个制作如果你不会单片机的话恐怕也不容易做出来,会单片机的朋友编程肯定都比我好,程序设计的关键就在于通过你的程序控制好这整个工作流程,保证各单元工作时序的正确配合,否则将无法正常工作,上面的资料应该已经很完全了,各种注意事项我都写了,如果还有什么疑问,欢迎留言咱们一起讨论啊! 请不是很懂电路和编程的朋友谨慎动手,不懂的地方可以留言询问,我这种话痨型汉姆只要看到一定会帮你解答的,当然我也算不上高手,所以还是共同研究学习吧,祝大家好心情好身体!
最重要的来了:以下是完全可用的程序,肯定支持857和991A,我测试过的!
//本程序限定使用arduino nano pro mini小板,换别的板需要自己改线路//本程序由1.8.5版本的编译器编制//本程序没有版权,你可以拿去自己用,也可以随意转发装逼,本人绝不会予以揭穿//如果有谁看得起用了本程序制成商品,赚取合适的利润的同时还能廉价出售造福广大汉姆,本人深表感谢!//本人不是专业人员,纯属业余爱好,程序写的不好。//有些特殊指令的处理也被我忽略了,但是保证能用,大不了陷入死机你就重新启动一下即可!//复制的时候注意,从下面这行英语的第一个字母 "U" 开始到最后一个字符 " } " 大括号,你一个不能多一个不能少!//多一个少一个都通不过编译的,中间有空行倒是可以删掉。
unsigned char com[4];
int f=0;
int txgnd=5;//白色
int txinh=4;//棕色
int start=3;//黑色
int key=A0;//黄色
int led=13;
void setup() {
Serial.begin(4800);
delay(200);
Serial.write(0xA0);
delay(800);
Serial.write(0xA1);
pinMode(txgnd,INPUT_PULLUP);
pinMode(txinh,OUTPUT);
pinMode(start,OUTPUT);
pinMode(key,INPUT_PULLUP);
//digitalWrite(txgnd,HIGH);
digitalWrite(txinh,LOW);
digitalWrite(start,HIGH);
//digitalWrite(key,HIGH);
digitalWrite(led,HIGH);
}
void loop() {
sr();
//关闭调谐器或是准备调谐
if (com[0]==0xFF && com[1]==0xF1){
Serial.write(0xA0);
Serial.write(0xA1);
delay(15);
digitalWrite(start,LOW);
delay(300);
if (digitalRead(txgnd)==HIGH){
digitalWrite(start,LOW);
digitalWrite(led,LOW);
delay(70);
digitalWrite(start,HIGH);
digitalWrite(led,HIGH);
}
}
//打开调谐器或是转换频段
if (com[0]==0xFF && com[1]==0xF0){
Serial.write(0xA0);
delay(10);
Serial.write(0xA1);
if (digitalRead(txgnd)==HIGH){
digitalWrite(start,LOW);
digitalWrite(led,LOW);
delay(70);
digitalWrite(start,HIGH);
digitalWrite(led,HIGH);
}
}
//调谐
if (com[0]==0xFF && com[1]==0xF2 && com[2]>0x00 && com[2]<0x60 && com[3]>=00){
Serial.write(0xA0);
delay(35);
digitalWrite(start,HIGH);
while(analogRead(key)<400){
if(digitalRead(txgnd)==HIGH){
digitalWrite(led,HIGH);
//Serial.write(0xZ1); //表示txgnd 高电频终止发射。
break;
}
}
delay(50);
if (analogRead(key)<400){
Serial.write(0xA0);
digitalWrite(led,HIGH);
delay(10);
Serial.write(0xA1);
}
else
{
digitalWrite(led,LOW);
Serial.write(0xA1);
//Serial.write(0xZ3);表示调谐成功终止。
}
}
}
//串口接收
void sr() {
while(f<4) {
if (f==0 && Serial.available()>0){
com[0]=Serial.read();
f=1;
}
if (f==1 && Serial.available()>0){
com[1]=Serial.read();
f=2;
}
if (f==2 && Serial.available()>0){
com[2]=Serial.read();
f=3;
}
if (f==3 && Serial.available()>0){
com[3]=Serial.read();
f=4;
}
}
/*
//test com[]
if (f==4){
for (int k=0;k<=3;k++){
Serial.write(com[k]);
}
delay(200);
}
*/
f=0;
}
[ 此帖被BH4QDP在2021-10-18 18:08重新编辑 ]