步进电机的控制与测速
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
步进电机控制与测速
姓名:竹玉书
学号:02008513
指导老师:李超彪
一、实践环节任务与要求
选题:步进电机控制与测速
设备:可编程并行接口8255,可编程定时计数器8253,控制开关,步进电机,光耦合器
要求:1.通过开关K0~K6设置不同的转速,开关K7设置电机的转向。
2.利用定时器8253计数,测速。
二、实验原理
1.步进电机的控制原理:
步进电机驱动原理是通过对每相线圈中的电流的顺序切换使电机作
步进式旋转驱动电路由脉冲信号来控制,所以调节脉冲信号频率便可
改变步进电机的转速。
如图所示:
本实验使用的步进电机用直流+5V电压,电机线圈由四相成:
φ1(BA);φ2(BB);φ3(BC);φ4(BD)
8253定时器0确定脉冲改变的频率(工作方式3,控制字00110110,CLK0=1MHZ,初值=200则OUT0输出周期为200μs的脉冲),由8255(工作方式0,控制字 10001011)查询定时时间是否到,输出相应的脉冲,以实现转速控制。
2.步进电机的测速原理:
在电机转动时,光电传感器每转输出6个脉冲,8253的定时器1负责计数,以测速。设计程序当OUT0出现高电平则计数一次,当计数达到50000次则计算并显示一次速度。显示间隔时间=100μs 50000=5s
三、硬件接线图
四、程序框图
主函数:
测速子函数:
五、源程序
程序源代码如下:
(含注解)
/******************/
/* 步进电机*/
/******************/
#include
#include
#include "ApiEx.h"
#pragma comment(lib,"ApiEx.lib") #define 8255A 0x290
#define 8255B 0x291
#define 8255C 0x292
#define 8255CTL 0x293
#define 82530 0x280
#define 82531 0x281
#define 82532 0x282
#define 8253CTL 0x283
static unsigned int c=0;
static unsigned int a=0,b;
void Payoff(int d) // 延时测速
{
static BYTE x=0,y=0;
static BYTE z;
while(d)
{
do
{
PortReadByte(8255B,&y); //读OUT0输出状态即PB0状态
y &= 0x01;
} while((x^y)==0);
x=y;
c++; // 每当出现高电平则计数一次
if(c==50000)
{
PortReadByte(82531,&z); //读8253计时器1记录的脉冲数低八位
b=z;
PortReadByte(82531,&z); //读8253计时器1记录的脉冲数高八位
b=b+z*256;