首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于ARM的直流电机调速系统的设计与实现(3)

基于ARM的直流电机调速系统的设计与实现(3)

2.3  程序代码

本文中的应用程序是在ADS1.2的开发环境下交叉编译后下载到Flash中运行的。程序代码(以定时器1为例):

//初始化端口

void  Init_PortE( )

{

rPCONE=0x5a00; //定义I/O口//PE4,PE5,PE6,PE7的//功能

rPUPE=0xf8; //禁止相应位的电阻上拉使能

}

//启动A号电机,此电机由定时器1控制

void  Start_MotorA ( )

{

rTCNTB1=Motor_CONT;//给两个缓冲器//赋值

rTCMPB1=Motor_cont;

rTCON |=(0x01<<11); //定时器1自动重载

rTCON |=(0x01<<9); //手动刷新置位

rTCON &= ~ (0x01<<10); //关反向器

rTCON |=(0x01<<8); //启动定时器1

rTCON &= ~ (0x01<<9); //清手动刷新位

}

//A电机停止

void  Stop_Motor1()

{

rTCON &= ~ (0x01<<8); //清定时器1使能位

}

//改变电机占空比和转向

void SetPWM (int valueA, int drct)

{

rPDATE=drct; // drct定义PE6口输出高电平还是低电平,控制电机转向

rTCMPB1=Motor_COUNT*valueA/0x64;//valueA为占空比,亦可设置valueA为0使电机A停//止转动。

}

另一电机的相关设置同上。小车行进过程中可以同时改变两组PWM的占空比来调节小车的行驶速度;通过设置两组不同的占空比形成两个车轮的转速差达到改变行驶方向的目的。

在对比了100Hz,1KHz,10KHz的PWM输出驱动电机的情况发现:当频率为100 Hz时,电机运行呈间隙转动状态;当频率为10KHz时,电机运行不平稳;当频率为1KHz时,不同占空比下电机运行都很平稳,转速、转向改变迅速。图3是由示波器产生的PWM频率为1KHz,占空比为30%,电机反转情况下的调制波形。


图3占空比为30%,电机反转

图4是由示波器产生的PWM频率为1KHz,占空比80%,电机正转时的调制波形。


图4占空比为30%,电机反转

3  结束语

本文中所设PWM的输出频率为1KHZ,所用直流电机是120转/分钟,额定电压为12V(电机外不加其他感性负载)。本课题最终实现的是基于ARM的嵌入式智能小车系统,而直流电机的PWM调速控制是其中一个重要的子系统。实验证明,Samsung公司的16/32位RISC处理器S3C44B0X对调制PWM实现方便,可编程,电机转速、转向的改变迅速,无停顿,可以很好的为智能小车服务。
继承事业,薪火相传
返回列表