信号发生器(可用单片机控制频率和幅值)
做一个可用单片机控制频率和幅值的正弦信号发生器,用什么芯片可以实现? 主要是产生信号后幅值怎么调(用单片机控制)? 谁帮帮我,谢谢!...
做一个 可用单片机控制频率和幅值的正弦信号发生器,用什么芯片可以实现? 主要是产生信号后幅值怎么调(用单片机控制)? 谁帮帮我,谢谢!
展开
展开全部
如果要求频率不是很高,可以采用PWM方式,优点是无需另外加DA,且输出分辨率可灵活调整。
考虑到单片机的运算能力不强,你可以用EXCEL编制一个正弦信号在一个周期内的等间隔幅值表,比如说,将一个周期的正弦信号分为64个点,信号的峰值为1000,初始相位为0°,那么,这个表格的第一个点是0,第n点为1000*sin(2πn/64),用EXCEL将64个点的幅值计算完毕,按照需要的格式编制为编程语言能够接受的表格。
利用单片机的一个定时器,定时器的溢出值设置为1000,溢出时,某个IO口输出低电平,再用一个寄存器存储输出点序号,序号为n时,根据输出点序号通过查表获取1000*sin(2πn/64)的数值,将定时器的计数值与1000*sin(2πn/64)比较,相等时,IO口输出高电平。不断循环执行上述程序,IO将输出占空比与正弦信号幅值成正比的方波信号,这就是常说的正弦调制PWM信号。
设计一个增益可调的有源低通滤波器,PWM信号经过低通滤波器后,输出就是正弦波,调节低通滤波器的增益,即可改变正弦信号的幅值。
当然,在设置PWM占空比时,将查表结果先乘以一个设定数值(一般是0~1的小数),也可以调节输出幅值。为了简化运算,可以是先乘以一个整数M,再除以N(N为128、256等2的幂的数值),M取值范围为0~N,因为这种除法可通过移位进行,程序简单,且运算速度快。
考虑到单片机的运算能力不强,你可以用EXCEL编制一个正弦信号在一个周期内的等间隔幅值表,比如说,将一个周期的正弦信号分为64个点,信号的峰值为1000,初始相位为0°,那么,这个表格的第一个点是0,第n点为1000*sin(2πn/64),用EXCEL将64个点的幅值计算完毕,按照需要的格式编制为编程语言能够接受的表格。
利用单片机的一个定时器,定时器的溢出值设置为1000,溢出时,某个IO口输出低电平,再用一个寄存器存储输出点序号,序号为n时,根据输出点序号通过查表获取1000*sin(2πn/64)的数值,将定时器的计数值与1000*sin(2πn/64)比较,相等时,IO口输出高电平。不断循环执行上述程序,IO将输出占空比与正弦信号幅值成正比的方波信号,这就是常说的正弦调制PWM信号。
设计一个增益可调的有源低通滤波器,PWM信号经过低通滤波器后,输出就是正弦波,调节低通滤波器的增益,即可改变正弦信号的幅值。
当然,在设置PWM占空比时,将查表结果先乘以一个设定数值(一般是0~1的小数),也可以调节输出幅值。为了简化运算,可以是先乘以一个整数M,再除以N(N为128、256等2的幂的数值),M取值范围为0~N,因为这种除法可通过移位进行,程序简单,且运算速度快。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |