- 相关推荐
基于单片机的选频表自动变步长的设计实现
唐如松(合肥工业大学计算机与信息学院)摘要:关键词:
在小规模话路、基群、超群载波通讯中广泛使用电频振荡器和选频表来测量载波通讯设备与线路的电平、增益、衰减、防卫度等特性。现在振荡器和选频表已经基本上利用数字化器件产生频率,得到高精度的正弦波信号,再对其进行必要的处理送给输出或乘法器。但由于传统的仪器采取的是模拟器件产生频率,并采取转动转轮来改变频率达到使用目的,为了满足传统用户的使用习惯和要求,故必须在新的数字化设备上实现此功能。现在有的数字化设备上已经实现此功能,但转轮必须配合步长键来使用,即用户只能先设置合适的步长,然后转动转轮才能达到合适的变化量,在大频率的调节当中用户觉得很不方便,我们在设计中实现了转动转轮时能够根据转轮的转动速度自动调节步长功能:速度越快,频率变化的步长越大;速度越慢,则频率变化的步长越小。这样在调节频率时,须大范围变化时可快速转动转轮,而细调时则慢慢的转动转轮,达到微调效果。在实际的使用中证明:此种调节方法比较符合操作人员的习惯,因此具有较好的使用价值。
此方法采取发射接收对管加转轮实现变步长,如图1所示,电路的采样部分由一个圆形的扇叶和两组红外发射接收对管组成(扇叶按图2所示做成,空隙和叶片的宽度为1:1)。由于一组红外发射接收对管检测扇叶转动时,只能检测出轮轮是否在转动,而无法判断出它的转向,所以必须采用两组红外发射接收对管。令两组红外发射接收对管分别为A和B(A和B两点间的距离要保证小于叶片或空隙的宽度),当红外发射接受对管工作时,若对管之间是空隙(无叶片),则接收管的输出为”0”,若对管之间是叶片,则接收管的输出为“1”。
现在分析如何判断出转轮的转向。如图2所示,在任意时刻,A和B的输出只存在四种状态:00,01,10,11。以A和B处于11状态为例,如果转轮正转时,即扇叶顺时针转动,A和B的下一个状态必然为10;如果转轮倒转时,扇叶逆时针转动,A和B的下一个状态必然为01。由此我们可判断出转轮的转向。在正常工作时,先检测A和B的状态,并将该状态保存下来,然后一直检测A和B的状态,一旦状态发生变化即转轮开始转动,读出A和B的状态,按表中所示的变化规律,得出转轮的转向,从而进行相应的处理,然后返回,刷新状态保存,并继续检测,即在转动过程中不断检测出A和B的状态,更新状态保存,并根据下一个状态不断进行转向判断。由于通常单片机的指令执行时间只有us数量级,所以A和B的状态一旦发生变化时,立刻就会被检测出来,因此状态变化情况都被包括在表1中,而不会出现从11变化到00之类情况。实践当中,我们采用AMD公司的PIC16C74A单片机,使用4.000MHZ的晶振,指令的执行时间为1us,检测的状态变化情况都如表1所示,没有出现异常现象。
状态变化表
下面简介如何自动判断步长,这主要由单片机的软件实现:当A和B的状态发生变化时,记录下来从一状态变化到另一状态所需的时间,设定一定的时间门限值,状态变化时间越短,转轮转动速度越快,步长越大;相反,状态变化时间越长,转轮转动速度越慢,步长越小。根据状态变化所需的时间,判断出属于哪一类步长,调用相应处理即可达到自动变步长的效果。在具体的实现过程中,从开始读A和B的状态并保存状态时开始启动单片机的内部计时器,一旦判断出A和B的状态发生变化时,关断计数器,读出计数器的值,算出所需的时间,然后由此时间判断出在哪一个门限值之间,从而设置正确的步长,达到自动变步长的目的。为了使单片机尽可能地把时间花在检测转轮的变化上,所以在内部计数器的设置上我们采取分频数选大一点的措施,即执行128条指令时内部计数器中断一次。图3给出程序的框图。
图3
在实际产品中,也有采用直流电机来实现变步长功能的方法。对于永磁式直流电机而言,当转动电动机的转子时,电动机的线圈中会流过一定的电流,表现在电动机的接线端口上就有一定的电压,当电动机的转子正转时,电机输出为正电压;如果反转时,输出为负电压,并且转动转子的速度越快,输出电压越高。利用永磁式直流电机的这一特点,将电机的输出电压经A/D转换后检测出转轮的转向和转速。
以上介绍的采取发射接收对管实现自动变步长的方法相对于直流电机法具有不用模拟/数字转换器(ADC),结构简单,易于实现,成本很低的优点,当然在实际应用中需考虑到操作时转动转轮的速度可能不太均匀,在软件的实现上要加上一定的速度保持控制功能。这种基于单片机的自动变步长方法,在实际中已分别地运用于新型数字化的HX-D11型选频电平表和HX-G11型电平振荡器中,取得了令人满意的效果。此方法,也可应用于数字化扫频仪等仪器中。
参考文献
《PIC系列单片机原理和程序设计》窦振中京航空航天大学出版社
TLC548/549的使用指南美国TI仪器公司
【基于单片机的选频表自动变步长的设计实现】相关文章:
基于Client/Server 的课件系统的设计与实现04-12
基于新课标实现教学需求08-16
基于Linux内核的键盘模拟实现08-19
基于MATLAB 的自动控制原理实验仿真系统的设计04-10
基于Vxworks实时操作系统的串口通信程序设计与实现08-19
基于MSP430和nRF40l的 无线自动抄表系统04-12
基于16位单片机的语音电子门锁系统08-19