当前位置:首页 > 张老师 六选五实验报告
实验一
实验题目:步进电机的控制实验 实验类型:设计性实验
实验目的: 1、了解步进电机的工作原理
2、掌握步进电机的驱动及编程方法 3、了解8255可编程并行接口芯片 实验内容及实验原理: 1、按图连接线路,利用 8255 输出脉冲序列,8255 CS 接 288H~28FH。PC0~PC3 接 BA~BD。
2、编程要求:用计算机键盘的 1、2、3 键分别实现步进电机的三种速度;用计算机键盘的“+”“-” 键控制步进电机转向。
3、用 VC 编程时要加头文件: #include
#pragma comment(lib,\
实验原理:步进电机驱动原理是通过对每相线圈中的电流的顺序切换来使电机作步进式旋转。驱动电路由脉冲信号来控制,所以调节脉冲信号的频率便可改变步进电机的转速。如图所示:本实验使用的步进电机用直流+5V 电压,每相电流为 0.16A,电机线圈由四相组成即:φ1(BA);φ2(BB);φ3(BC);φ4(BD)
驱动方式为二相激磁方式,各线圈通电顺序如下表
顺序相 φ1 φ2 φ3 φ4 0 1 2 3 1 0 0 1 1 1 0 0 0 1 1 0 0 0 1 1 表中首先向φ1 线圈-φ2 线圈输入驱动电流,接着φ2-φ3,φ3-φ4,φ4-φ1,又返回到φ1-φ2,按这种顺序切换,电机轴按顺时针方向旋转。 实验仪器:微型计算机一套、TPC-UP试验箱一套、万用表一块 实验方法: 1、 程序流程图
开始 8255初始化
33H BUF
显示提示信息
C=1d=10 键盘输入
d=40 C=2 延时
d=80 C=3
d=0 C=”.
停止
2、实验程序:
#include
#pragma comment(lib,\程序头文件 主函数使程序完整运行,包括屏void main() 幕显示和基本控制。 {
BYTE data; //定义一个字节数据 int buf = 0x33,d,i; char c;
printf(\//程序开始运行时显示内容 if(!Startup()) {
printf(\出错时的显示 return; 给8255端口 } 写状态。 PortWriteByte(0x28b,0x90); while(1) //循环,使程序一直运行,从而使电机持续转动 {
c=getch(); //将键盘输入定义为变量“c” 将键盘输入定义为c,从而能够 while(!kbhit()) 保证程序对键盘输入的响应。 {
PortReadByte(0x288,&data); 这里的程序是通过占 switch (c) 空比来实现调速的。 {
用句号使占 空 case'1':d=10;break; //当输入为“1”时,d=10 比为0,使电机 case'2':d=40;break; 停转。 case'3':d=80;break;
case'.':d=0; break;
case'-':i=0; break; //用+-控制电机正反转 case'+':i=1; break;
default:printf(\ return; }
if(d != 0) 用i来表示电机正反转,这里的程序是 { 用来保证电机正反转的。 Sleep(d); if (i)
buf = ((buf&1)<<7)|(buf>>1); else
buf = ((buf&130)>>7)|(buf<<1); PortWriteByte(0x28a,buf); } else
PortWriteByte(0x28a,0xff); } }
Cleanup(); //停止程序 }
3、对实验指标的调整方法
可以通过调整键盘输入相对应的d值来调整不同的转速,通过键盘上的“。”是用来使程序停止。 实验结果分析:
在实验中调速主要是通过调整占空比来实现的,因此可以通过改变不同的d值来赋予电机不同的速度。通过键盘上的“。”是用来使程序停止。
试验程序中的头文件需要放在程序指定的位置,否则容易造成错误。
共分享92篇相关文档