《技术报告-直流无刷电机测控.docx》由会员分享,可在线阅读,更多相关《技术报告-直流无刷电机测控.docx(19页珍藏版)》请在第一文库网上搜索。
1、实验工程技术报告-直流电机测控系统设计实验内容 增量式编码器和74LS163计数器电机角位移、速度的测量; D/A转换器、LM324的使用; 单片机串口通讯、定时器、带校验字节的数据传输; VC中使用仪表类进行角度和位移的显示以及定时器的使用; VC中滑块控件的使用; VC中MSCOMM串口通讯控件的使用; VC中数据的保存;实验结果实现PC机对霍尔无刷直流电机角位移及速度的实时显示,利用测控系统操作界面对电机速度的连 续调节,实现电机的启动、制动和速度及转向的控制。实验所需元器件直流电动机(1个,05V输入及转向控制)、AM-WZ3A电机驱动器(1个)、编码器(1个,A-B-C 三路输出)、
2、计数电路74HC74-D触发器1个、HD74HC00P与非门两个、74LS193计数芯片一个)、单 片机(80C51 一片)、DAC0832数模转换器1个、LM324放大器1个、串口套件1套。1、实验工程的整体结构光电码盘实验工程的整体结构如下图: 利用对光电编码器每周输出的校准脉冲计数,完成电机转速的测量(转/分); 单片机采集计数器的4位数字信号,和旋转方向2位信号,通过串行总线RS232传送至计算机; 计算机通过串口接收单片机发送的电机速度信息,进行动态显示、处理及保存; 计算机通过串口发送控制电机旋转的电压信号(0255)和转向控制量(0或255); 单片机通过串口接收上位机发送的转速
3、和转向控制数据,通过DA转换器将其转换为05V的数据, 并送至无刷直流电机驱动器,控制电机的转速和转向;2、光电编码器光电编码器通过光电转换将电机轴上的机械几何位移量转换成脉冲数字量,其工作原理如图2所示, 在圆盘上有规那么地刻有透光和不透光的线条,在圆盘两侧,安放发光元件和光敏元件。当圆盘旋转时, 光敏元件接收的光通量随透光线条同步变化,光敏元件输出波形经过整形后变为脉冲,码盘上有定相标 志,每转圈输出一个校准脉冲。此外,为判断旋转方向,码盘还可提供相位相差90。的两路脉冲信号。I-轴;2光源;3-A、B、C相狭缝;4-旋转板(光栅码盘J; 5-A、B、C受光元件;图2光电编码盘原理图3光电
4、编码器的正反转信号顺时针旋转时,通道A输出波形超前通道B波形90 ;逆时针旋转时,通道A输出波形迟通道B 波形90 ;光电编码器每旋转圈,输出一个基准脉冲Z,基准脉冲的波形中心对准通道A输出的波 形中心,用于基准点定位,如图3。光电编码盘的检测精度是一个重要的性能指标,它说明了光电编码每旋转一周可以输出多少个脉 冲,显然,输出脉冲数越多,说明码盘的精度越高,本系统采用的光电编码盘输出1024个脉冲。考虑 到霍尔无刷电机的转速较高,因此我们使用A、B两路输出信号的相位关系来判断旋转方向,利用通道 Z的脉冲计数来对电机的转速进行测量。3、光电编码盘的计数与鉴向实验中采用的码盘是增量式码盘,增量式编
5、码盘需要累加计数来完成角度检测,通常采用的计数电 路大同小异,都是对编码器产生的脉冲进行计数来得到角度值,考虑到转盘转动是双向的,既可顺时针 旋转,也可逆时针旋转,需要对编码器的输出信号鉴相后才能计数。典型的编码器计数与鉴向电路如图 4所示,鉴相电路用1个D触发器和2个与非门组成,计数电路用N片74LS193组成,N由所需的计数范围确定,本实验中,使用1片74LS193完成16个脉冲的正反计数。将编码器输出A相接D触发器 D端,B相接触发器CP端。D触发器的输出Q和Q与两与非门,控制计数器74LS193加减方向。Z 相为计数脉冲,分别与两与非门相连,计数器熨位初值为OOo0,即ABCD接地处理
6、。图4编码器典型的计数与鉴向电路当光电编码器顺时针旋转时,通道A输出波形超前通道B输出波形90 , D触发器输出Q为高电 平,Q一为低电平,上面与非门翻开,计数脉冲(Z相)送至双向计数器74LS193的减脉冲输入端CPD, 进行减法计数;此时,下面与非门关闭,其输出为高电平给CPU。当光电编码器逆时针旋转时,通道A 输出波形比通道B输出波形延迟90 , D触发器输出Q为低电平,上面与非门关闭,下面与非门翻开, 计数脉冲通过Z相脉冲送至双向计数器74LS193的加脉冲输入端CPU,进行加法计数。考虑到霍尔电机最大转速为2000rm(约为33rs, 3.3r100ms),故我们使用一个74LS19
7、3共四位完成 转速信息的测量,同时,使用D触发器的输出Q和Q一共两位信息判断电机转向,单片机接收6位电机 的速度信息,即:D5-D4-D3-D2-D1-D0当D5D6=10时,正转,反之,反转。实验中,我们将该6位数据信息与单片机的Pl管脚相连,如 图5所示。4、系统硬件连接计数器输出42位Ik1x 1A 1A Ix PPPP12 3 4IrTTRST/Vpd 匚 接串 口 TXDP3. O/RXD c接串口 RXDP3. 1/TXD 匚P3.2INT0 U P3.3INT1 cP3. 4T0 cP3.5I1 cDAO-WRl P3. 6/WR 匚 P3.7/RD cXTL2 c XTALl
8、cVss cVcc 丁 IOkVcc转向控制DAO 转速控制O 9 8 7 654321098 76 5432 143333333333222222222Ig8Is0812345678910U121314151617181920图5直流无刷电机控制系统单片机硬件连接图5、8位D/A数模转换器DACo832DA转换器的作用是将单片机的送出的数字量转换为对应的模拟量输出,在本实验中,我们使用8 位DAa)832来获得用于控制电机旋转速度的输入控制电压(05V),其连接电路如图6所示。IXiND 否CSVCC ILEXFERRfbWRlIoutiVVR21OUT2AGD7 DACo832 ?DIo图
9、6 D0832管脚分布及连接电路图其中二西为片选信号,低电平有效,实验中接地处理;函写信号1,低电平有效,实验中DAC的WRl接单片机的P3?管脚;ILE是允许锁存信号,高电平有效,接VCC;WRI. CSj ILE三者逻辑与后的负跳边沿,将数据线上的信息锁入输入锁存器; 即利用WRl的上下电平的变化完成数据写入和锁存,如图7所示。VlHWRVil读数字量锁入锁存器图7. DA0832写数据时序图寿正传送控制信号,低电平有效,接地;碱写信号2,输入低电平有效,其有效时,传送控制信号又必将锁存在输入锁存器的8位数据 送DAC存放器,接地处理;VREF:基准电压输入端,可在0V10V范围内调节,实
10、验中只需要单极性电压输出,故此脚接地;DI0DI7:数字量输入端,实验中DA数字量输入端接单片机PO 口;Rfb: DAeO832芯片内部反应电阻引脚,实验中悬空。IOUTk IOUT2:电流输出引脚。电流IoUT1、IOUT2的和为常数,IOUT1、IOUT2随存放器的内 容线性变化,实验中IOUT2悬空,IOUTl接LM324放大器同相端进行同向放大,连接电路如图8所示, 其放大倍数为:实验中我们选择与、R2、所、&和C的值分别为Ik、Ik、Ik、Ik和50uF。R/RZ图8 DA转换器电流电压转换电路考虑到LM324放大器放大倍数及饱和电压的限制,实验中选择适宜的电阻的值,且LM324的
11、供电 电压VCC接9V电压。6、单片机主要程序单片机主要完成电机转速信息的采集、串口发送以及串口接收上位机数据、控制DA转换,下面我 们来分块介绍。6.1带引导码和校验字节的数据传输由于单片机要接收上位机发送的8位的电机控制电压数字信号和控制电机正反转的控制信号,因此 单片机在接收数据时,对数据的顺序有严格的要求,否那么就会造成转速和转向控制数据混乱,电机失 控。另一方面,本实验中下位机仅发送6位有效数据(占一个字节)给上位机,故不涉及数据的顺序发 送和上位机的顺序接收问题,但如果下位机需要发送多个字节的数据给上位机,也需要涉及到数据的正 确接收问题,因此,实验中,我们引入了带引导码和校验字节
12、的单向数据传输模式,即通讯过程中,省略主机和从机的屡次握手协议,进而提高通讯的速度和效率,其实现思路如图9所示。事件触发图9带引导码和校验字节的数据传输设置数据接收标志bRecving=O,表示等待接收数据块的引导码,当接收到引导码后,置bRecving=l, 准备接收有效数据和校验字节,当接收完毕后重新置bRecving=O,准备接收下一个数据块的引导码。接 收到的字节利用校验字节进行校验(一般为校验字节等于有效数据的和并256求余)。单片机主要程序如下:#include#define uint unsigned int#define uchar unsigned charUChartt,R
13、Indx=OEagErr=O/*数据正确接收标志*;uchar DIPos2=0,0y13 位有效,11+2 位鉴相UCharDAln2=0,0;/单片机接收到的发送给DA转换器的数据Sbit daOWR=P36;转速控制电压 DA0;SbildalWR=P3zv7;电机转向DAI, 5V俯瞰逆转,OV正转 void main()(TMoD=OX21;设置定时器1为工作方式2,波特率设置;定时器0工作于工作方式1;THl=Oxfd;TLl=Oxfd;THO=(65536/0000)/256;IOms,由n次数来决定实际的周期TL0=(65536-l (XXX)%256;EA=I;ES=I;开串
14、口中断ETO=1;定时器0中断响应标志位TRO=I;TRl = I;REN=I;SMO=O;SMl = I;daOWR=l;为DA转换器读数据准备高电平dalWR=l;while(l)(if(tt2)ES=O;tt=O;DIPOS0=P1;取角位移低8位;DIPoS1=P2;取角位移高8位SBUF=DlPoS0;发送数据低8位While(JTI);TI=O;SBUF=DIPoS;高 5 位数据while(!TI);TI=O;if(RIndx=O)(If(FlagErr=O)(P0=DAIn0DA0 转换 da()WR=O;daOWR=l; 启动转换PO=DAInI;/DAl 转换 da IWR=O;dalWR=l;ES=I;if(tt2)while(l)main()void time() interrupt 1定时器0,定时发送数据TH0=(65536-1)256;TL0=(65536-1 (XXX)%256;tt+;void ReadSer() interrupt 4接收RI=O;DAInRIndx=SBUF:/No.l控制电机转速数据;No.2为控制电机转向数据 RIndx+;RIndx=RIndx%2;设置FIagErr来判断是否接收正确If(RIndx=O)(if(DAIn 1 !=0xff)&(DAIn 1 !=0x)(RlndX