基于STM32单片机的变频正弦信号发生器
2016-09-13蒋昭颖
蒋昭颖
(国电子科技集团第15研究所 北京 100083)
基于STM32单片机的变频正弦信号发生器
蒋昭颖
(国电子科技集团第15研究所 北京100083)
为了实现对三相永磁式同步交流伺服电机频域响应的检测需求,提出了一种基于ARM单片机的变频率PWM正弦信号发生器的设计方案,并完成系统的软硬件设计。该系统的硬件部分采用STM32F103系列ARM单片机,用于PWM方式输出变频率的模拟正弦信号,软件部分采用Keil进行编程。通过软件仿真和示波器对输出信号进行检测,利用该方案的正弦信号发生器对三相永磁式同步交流伺服电机进行频率响应测试,将得到的数据利用matlab绘图,实验结果表明此方案产生的正弦信号发生器满足电机频响需求。
交流伺服电机;ARM单片机;PWM;正弦信号发生器
近年来,中国航空工业的发展进一步加速,新型号,新机型不断推出,大型运输机成功首飞,C919大型客机开始进行结构总装,航空零部件生产规模不断扩大,这一系列成就预示着中国的大飞机时代正离我们越来越近。在大飞机项目发展的同时,相应机型的飞行模拟器研制也逐渐加快了脚步。本文依托于某机型飞行模拟器项目的操纵负荷系统的研发,为了满足操纵负荷系统的实时性要求,对系统内交流伺服电机的频域响应进行了深入研究。
控制系统中的信号可以表示为不同频率正弦信号的合成。控制系统的频率特性反映正弦信号作用下系统响应的性能,所以频域分析法是研究系统频率特性非常有效的方法。为了能够更直观的对电机系统频率响应进行检测,需要为电机系统提供一个合适的信号源。信号发生器在工程领域是常用的信号源,种类包括:函数信号发生器、脉冲信号发生器等。这些信号发生器可以为系统提供所需频率、波形的电压和电流信号。本文涉及电子电路以及自动化控制技术,借助于ARM单片机的TIMER(定时器)功能以及PWM输出,为正弦信号发生器的设计提供了理论依据和技术支持,同时将正弦信号加到交流伺服电机上进行验证电机的频率响应特性。
1 正弦信号发生器总体设计
1.1理论分析
PWM(脉冲宽度调制)将模拟信号进行数字编码,按一个固定的频率来接通和断开电源,并且根据需要改变一个周期内的“接通”和“断开”时间的长短。对于直流电机来说,通过改变直流电机电枢上电压的“占空比”来达到改变平均电压大小的目的,从而来控制电动机的转速。从某种意义上来说,只要带宽足够,PWM可以对任何模拟量进行数字编码。
交流脉宽调制是建立在直流脉宽调制基础上,通过一定的方式将正弦波改为幅值相等,而占空比有规律变化的方波来进行对交流的调制。基本工作原理是先将50 Hz交流电经整流变压器变压得到所需电压,经二极管和电容滤波,形成恒定直流电压,而后送入大功率晶体管构成的逆变器主电路,输出三相电压和频率均可调整的等效于正弦波的脉宽调制波(SPWM波),即可拖动三相伺服电机运转。
根据采样控制理论,冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同。冲量即指窄脉冲的面积,效果相同是指环节的输出相应波形基本相同[1]。在本文中,针对交流伺服电机的位置模式特性,传统的交流脉宽调制改变占空比的方案并不适用。由于在位置模式工作下的伺服电机会检测单片机发出的脉冲上升沿从而进行相应的动作,而在高电平期间,电机处于静止状态,所以改变占空比并不会使得电机按照正弦信号的规律进行运动。在这样的情况下,我对传统的交流脉宽调制进行了修改,即通过一定的方式将正弦波改为幅值相等,而频率有规律变化的方波来进行对交流的调制。
PWM方式的优点是信号是数字式,抗干扰能力强,无需通过单片机的数模转换,应用广泛,同时信号的稳定性与平滑性都很好,易于调控幅值和频率。
1.2总体设计
STM32F103单片机采用CortexM3内核,同时为了实现低功耗,设计了一个功能完善但非常复杂的时钟系统。飞行模拟器操纵负荷系统中的交流伺服电机在运动过程中对实时性有较大的要求,需要的信号源的频率要求在0.6~4 Hz之间并且可调。我们选用STM32中的高速时钟。从芯片角度来说,时钟源分为内部时钟与外部时钟源,内部时钟是在芯片内部RC振荡器产生的,起振较快,而外部时钟信号是由外部晶振输入,在本文设计的方案中选用内部时钟[2]。
图1 方案设计图Fig.1 Structure diagram of project
高速内部时钟的频率为8 MHz,经过单片机内部倍频到64 MHz输出,我们需要对系统时钟进行分频处理,分频后的时钟可以对输出PWM信号的频率进行调节。
PWM频率=系统时钟频率/(分频系数*(1+计数器上限值))
由于单片机进行脉冲采样,所以我们对正弦函数进行离散化处理,取到的N个点,可以影响信号源的精度,由于采样频率越高,信号越趋近于正弦值,但是相应的实时性会下降,所以,我们需要根据实际情况进行离散化精度处理。根据采样定理(在进行模拟/数字信号的转换过程中,当采样频率fs.max大于信号中最高频率fmax的2倍时 (fs.max>2fmax),采样之后的数字信号完整地保留了原始信号中的信息,一般实际应用中保证采样频率为信号最高频率的5~10倍)得到的正弦数据对应的就是PWM输出频率。PWM的占空比我们设定为频率的50%。
对于正弦信号发生器,它的模拟正弦波输出可以用下式描述:上式中t为连续时间,离散化处理后,用单片机内部时钟clk进行采样
利用CAN总线将采样数据通过串口发送至上位机软件,并且将数据在上位机软件中进行绘图。交流伺服电机根据正弦信号进行往复运动,同时将速度信息通过485通讯传送至上位机软件,保存数据并在上位机软件中进行绘图。
图2 正弦信号采样图Fig.2 Sampling diagram of sine-wave
2 硬件设计
对于STM32系列单片机,我们采取定时器PWM输出模式,通过ARR寄存器调整频率,通过TIM_Pulse调整占空比,直接生成频率可变的方波信号,也就是PWM信号。由于PWM波本身是数字脉冲,其中含有大量的高频成分,因此,我加入了积分器电路——有源低通滤波器,将高频成分除去,从而得到较好的模拟变化信号[3-4]。
图3 硬件电路设计图Fig.3 Design of hardware circuit
模拟器操纵负荷要求精度较高,所以在本文对传统的PWM到电压D/A转换电路做了改进。传统转换电路利用单片机PWM输出,经过简单的RC积分电路除去高频,得到D/ A转换输出电压。该电路没有基准电压,且随着频率不断的变化,精度很难保证,同时负载能力差,只适用于精度要求不高,负载很小的场合。
对于改进的电路,我增加了基准电压和负载驱动。电路中的LM336-5为基准电压源,LM358为输出放大器。PWM经过两级阻容滤波得到电压信号,实现D/A转换功能。由于放大器的输入阻抗大,二级阻容滤波效果好,输出电压波纹小,满足高精度要求。由于电容的存在,电路输出会有相位滞后,过渡时间影响D/A的转换速度,通过调整阻容参数,可以改变转换速度[5-6]。
3 软件设计
本方案设计的信号发生器主要对ARM单片机的定时器进行编程。STM32定时器除了TIM6和TIM7之外,其他的定时器均可以用来产生PWM输出。定时器分为高级定时器和通用定时器,高级定时器可以产生多达7路的PWM输出,而通用定时器也能产生多达4路的PWM输出,本文我选用通用定时器TIM2。
为了实现变频率PWM输出,我主要研究STM32通用定时器TIM2中的寄存器,用于控制PWM。通过配置捕获/比较模式寄存器、捕获/比较使能寄存器、捕获/比较寄存器以及自动装载寄存器的数值可以调整PWM的幅值和占空比。
中断在本方案中起到了决定性的作用,由于我们的PWM不是传统的定频率、定占空比,所以自动装载寄存器的数值要随正弦值变化。同时,本方案的PWM输出需要精确定位,因为对于交流电机的控制,我们需要精确地将脉冲个数发给电机,使其走相应的位移。所以,当自动装载寄存器的值达到上限时,需要进入中断进行对自动装载寄存器的数值进行修改。
本方案的数据通讯应用到了CAN总线通讯,将PWM的信号输出通过CAN总线传输至串口,得到的数据利用上位机软件进行绘图比较。CAN总线通常有2根线(CAN_High和CAN_Low)组成,CAN控制器通过一个收发器连接到总线上,总线的电平由CAN_High和CAN_Low的电位差来确定,总线有2个电平:显性和隐性,在任意给定的时间内,总线总是处于这2个电平之一。对于逻辑上“线与”的总线,显性和隐性电平被看作逻辑0和逻辑1,一个发送单元能够通过改变总线电平来送一个信息给接收单元。本设计中的CAN协议主要利用了数据帧类型。数据帧由发送单元使用,用来发送信息给接收单元。数据帧有7个域组成,分别是帧开始、仲裁域、控制域、数据域、CRC域、ACK域以及帧结束[7]。
图4 改进D/A转换图Fig.4 Diagram of D/A improvement
4 实验分析
首先测试STM32单片机PWM输出,KEIL软件仿真图如图5所示。
图5 变频PWM输出仿真图Fig.5 Diagram of PWM output with frequency conversion
从图中可以看出,在一个周期内,PWM按正弦频率输出,占空比为输出频率的1/2。该仿真图对应的正弦波频率为1 Hz。将此PWM的脉冲加到交流伺服电机,电机将以1 Hz的频率进行往复运动。
通过CAN总线通讯,将电机编码器反馈数据传至上位机软件,得到的数据在matlab下绘图如图6所示。
图6 10 Hz采样图Fig.6 Diagram of 10 Hz sample
以10 Hz的频率对电机反馈的信号进行采样,采样点数为1 000个点,从图中可以看出,采样数据为正弦信号,说明电机反馈的速度信号是正弦信号,验证了伺服电机的速度跟踪性能良好。
将上位机采集到的电机速度反馈数据画成连续曲线,时间为10 s,采样频率为10 Hz,采样点为1 000个,得到的连续曲线有些许失真,并不是非常平滑,说明采样点个数的减少,信号会有失真。模拟机操纵负荷系统对信号的跟随性能有很高要求,信号的频率要达到4 Hz不失真,所以要在保证实时性的前提尽可能多的提高采样频率。
图7 10 Hz采样连续图Fig.7 Continuous diagram of 10 Hz sample
最后,我将硬件电路输出连接至示波器验证改进的D/A电路效果是否明显,频率分别调整为100 Hz和1 kHz,发现输出的波形效果非常好,说明改进的D/A电路对信号发生器的模拟波形有显著改善。
图8 100 Hz连续图Fig.8 Continuous diagram of 100 Hz
图9 1 kHz连续图Fig.9 Continuous diagram of 1 kHz
5 结 论
本文设计了变频率PWM正弦信号发生器用于模拟机操纵负荷系统,信号发生器能够产生1~4 Hz频率正弦信号且不发生失真,满足操纵负荷系统实时性和精准性的要求,并且在本文的信号发生器设计了改进D/A型硬件电路,使得信号发生器模拟输出1~1 kHz正弦信号均不发生失真。根据最终的实验结果可以验证,该方案在频率稳定性、抗干扰能力以及硬件电路实现情况等方面均具有较大的优点。同时该方案也是PWM从理论分析到实际应用的一个典型案例。
[1]洪俊峰,卜文强,张榕鑫,等.基于STM32PWM的正弦信号发生器设计[J].合肥工业大学学报,2014,37(2):189-191.
[2]雷道仲.基于FPGA的正弦信号发生器研究与设计[D].湖南:湖南师范大学,2008
[3]王立刚,建天成.基于光电二极管检测电路的噪声分析与电路设计[J].大庆石油学院院报,2009(33):88-91.
[4]韩志军,沈晋源,王振波.单片机应用系统设计[M].北京:机械工业出版社,2005.
[5]任骏原,杨玉强,刘维学.数字电子技术基础[M].北京:清华大学出版社,2013.
[6]杨居朋,王军民,刘迪仁.基于线性光耦HCNR201双极性信号隔离电路[J].光电技术应用,2009,24(6):51-54.
[7]陈延奎.基于80C51单片机的通用数据采集与处理系统[J].机械,2008(4):49-51,54.
Design of sine-wave signal generator of frequency conversion based on STM32
JIANG Zhao-ying
(China Electronics Technology Group Corporation 15th,Beijing 100083,China)
In order to satisfy the requirement of frequency domain response of AC servo motor,we proposed a method for produce a sine-wave signal of frequency conversion based on ARM.The hardware system is used to PWM output to produce a sine-wave signal of frequency conversion by STM32F103.The software system adopts the Keil as development environment. Simulations using software and oscilloscope accomplish to detect output signal.The results show that the proposal can satisfy the requirement of frequency domain response of AC servo motor.
AC servo motor;ARM;PWM;sine-wave signal generator
TN710
A
1674-6236(2016)05-0190-04
2015-05-06稿件编号:201505041
蒋昭颖(1992—),女,黑龙江哈尔滨人,硕士。研究方向:嵌入式系统,网络前沿技术。