基于C++ Builder6.0的pc机实现步进电机的调速系统

时间:2022-06-12 06:31:28

基于C++ Builder6.0的pc机实现步进电机的调速系统

摘要:近年来单片机在实际生活中应用越来越广泛,本科教学对单片机的教学实践越来越重视。本文结合教学计划简单介绍pc机(上位机)是如何通过单片机控制步进电机,通过本文了解pc机与单片机的通讯知识,掌握单片机与步进电机的控制原理。

关键词:pc机单片机 步进电机

1 引言

随着现代社会的不断进步,高科技的不断发展,单片机的应用越来越广泛,如交通监控系统、汽车制造、航天航海、医疗设备等等,单片机在人类生活中越来越重要。

本文将pc机作为控制中心,是电机调速系统中的一个重要分支,单片机主要完成对步进电机的信号的采集,然后自行处理后上传到上位机,并显示数据。这里pc机与单片机的数据通讯的准确性至关重要,因此要求通讯准确及时。电机的方向、转速主要通过单片机来控制处理。上位机利用C++ Buinder6.0开发串口的通讯程序,单片机使用c语言进行编程。

2 c8051f单片机的概述

本文选择的单片机是Silicon Labs 公司推出C8051F340单片机,这种单片机有两种封装:48引脚TQFP和32脚LQFP,温度最低零下40摄氏度,最高达85摄氏度。内核是CIP-51内核,与MCS-51指令集完全兼容,具有标准的8052的所有外设部件,共有4个16位的计数器/定时器,两个全双工的UART,多达4352字节的内部RAM,128字节的特殊功能寄存器地址空间,与标准的8051结构相比执行速度大大提高,功能增强。

C8051f系列的单片机的主要特性有:

第一:模拟外设

10位的模拟外设系统,转换速率可达到200ksps,内置温度传感器,还可以从外部转换启动输入。

第二:usb控制器

拥有全速(12Mbps)或低速(1.5Mbps)的USB控制器,支持8个端点,集成收发器无需外部电阻,符合2.0版的USB规范。

第三:数字外设

拥有4个通用的16位计数器/定时器,5个捕捉/比较模块,还有硬件增强型的SPI、SMBus和2个增强型的UART串口。

第四:时钟源

内部振荡器可以达到0.25%的精度,支持所有的usb和uart工作方式;外部振荡器有晶体振荡器,RC振荡器和外部时钟。并且在程序运行中可以随时切换时钟源。

3 步进电机的原理

步进电机的基本原理是将电脉冲信号转变为角位移或线位移,在空载的情况下,电机的转速、停止位置由脉冲信号的频率和脉冲数来决定,即给电机一个脉冲信号,电机则转过一个步距角。根据这一线型关系,和不仅电机只有周期性误差没有累计误差的优点,使得步进电机在速度、位置的控制领域应用简单,但是步进电机必须由环形脉冲信号和驱动电路组成的控制系统才可以使用。

3.1 步进电机的分类

①反应式步进电机:这种电机转子由软磁材料制成,没有绕组,结构简单,成本低,步距角可以做的很小,但是动态性能差。

②永磁式步进电机:这种电机是用永磁材料制成,其转子就是磁源,输出转矩大,动态性能好,步距角较大,需供给正负脉冲信号。

③混合式步进电机:综合了以上两种电机的优点,但是结构复杂,成本较高。

在单片机系统中反应式步进电机应用较为广泛,本文重点介绍反应式步进电机的结构和原理。

3.2 反应式步进电机的结构

三相反应式步进电机分为转子和定子两部分,定子有6个磁极,每2个相对的磁极构成一对,共有3对,每对磁极形成一相。这样3对磁极有3个绕组,形成3相,由此推论:两相步进电机有2对磁极,2相绕组,四相步进电机有4对磁极,4相绕组。每个磁极内表面分布多个小齿,大小相同,间距相同。转子外表面也分布许多小齿,这些小齿与定子上的小齿间距相同形状相似。定子和转子的齿距角相同,计算公式如下:

其中,Z表示转子齿数。

3.3 反应式步进电机的工作原理

给处于错齿状态的相通电,在电磁力的作用下,转子向磁导率最大(或磁阻最小)的位置转动,即向对齿的状态转动,步进电机根据这一原理进行转动。

假设三相步进电机的三相分别为A、B、C三相,给A相绕组通电,A相的定子和转子的齿形成对齿,同时,B相和C相定子与转子的齿形成错齿。A相断电,B相通电,转子在磁力作用下,向与B相成对齿的位置转动,这样转子转动1/3个齿距角,B相与转子形成对齿,C相与转子相错1/3个齿距角,A相与转子错2/3个齿距角。同理,给B相断电的同时给C相通电和给C相断电的同时给A相通电,转子就会转动1/3的齿距角。可见,依次给A、B、C相通电转子就会转过一个齿距角,如果按照相反的顺序同电,转子就会按照相反的顺序转动。

4 电机的调速系统

本文利用C++ Builder6.0软件开发上位机,实现pc机向c8051f340单片机发送控制命令,通过电机驱动控制电机的方向、转速和步数。电机驱动型号为LSA7033。在上位机开发上,利用C++ Builder6.0软件安装MSComm控件的方法实现上位机与单片机的串口通讯。

4.1转速的控制

控制每步之间的延时时间就可以控制步进电机的速度,延时越小,速度越快,延时越大,速度越慢,通过调用延时的子程序,就可以通过软件调整延时,这里一般选用200ms的延时,延时大小影响到电机的速度。

4.2 转向的控制

根据电机的数组顺序不同来调整电机的转向,这里电机的数组是Moto_R[]={0x08,0x0A,0x02,0x06,0x04,0x05,0x01,0x09}这是根据电机驱动文档的规定确定的,按照上面顺序是正向,将上面的顺序反过来发送给电机,电机就会翻转。

4.3 上位机显示数据

本设计不只控制了电机的方向速度,还在上位机上显示了电机的状态,包括电机的方向、速度、位置和圈数,在这里添加了一个光电开关,其功能是挡住光电开关电机停止。

4.4 部分控制程序

电机转动程序:

void Moto_Run(void) // 扫描电机走一步; m=0 反走一步; m=1 正走一步

{

if(m==0)

{ Moto_Status--;Moto_Position--;if(Moto_Status==255)Moto_Status=7;}

else

{ Moto_Status++;Moto_Position++;if(Moto_Status>7)Moto_Status=0;}

P1 = Moto_R[Moto_Status];

}

用来控制电机速度的延时程序:

void Delay(uint16 temp)

{

uint16 i ; //循环变量

for(i = 0; i < temp; i++);

}

5 结语

本文设计了一个利用上位机对电机进行控制的系统,不仅控制了电机的方向、速度、步数和启停,而且在上位机上显示了电机的状态,其中添加的光电开关使得电机停止,这在实际生活中的有着很大的应用价值。

参考文献:

[1] 魏俊鹏,C++Builder实用编程100例,中国铁道出版社,2004

[2] 蒙祖强,C++Builder程序员成长攻略,水利水电出版社,2007

[3]王晓明,电动机的单片机控制,北京航空航天大学出版社,2011

[4]田希晖等,C51单片机技术教程,人民邮电出版社,2007

注:文章内所有公式及图表请以PDF形式查看。

上一篇:基础隔震技术在“天水麦积法院审判楼”中的应... 下一篇:建在岩溶地区高层建筑的基础设计方法研究