谁有用单片机实现步进电机的转速方向和转速的控...

单片机通过向步进电机驱动电路发送控制信号实现对步进电机控制
查看: 637|
摘要:   单片机实现的步进电机控制系统具有成本低、使用灵活的特点,广泛应用于数控机床、机器人,定量进给、工业自动控制以及各种可控的有定位要求的机械工具等应用领域。步进电机是数字控制电机,将脉冲信号转换成角位移,电机的转速、 ...
  实现的控制系统具有成本低、使用灵活的特点,广泛应用于、机器人,定量进给、工业自动控制以及各种可控的有定位要求的机械工具等应用领域。步进电机是数字控制电机,将脉冲信号转换成角位移,电机的转速、停止的位置取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,非超载状态下,根据上述线性关系,再加上步进电机只有周期性误差而无累积误差,因此步进电机适用于单片机控制。步进电机通过输入脉冲信号进行控制,即电机的总转动角度由输入脉冲总数决定,而电机的转速由脉冲信号频率决定。步进电机的驱动电路是根据单片机产生的控制信号进行工作。因此,单片机通过向步进电机驱动电路发送控制信号就能实现对步进电机的控制。
  1.系统设计原理
  步进电机控制系统主要由单片机、键盘LED、驱动/放大和PC上位机等4个模块组成,其中PC机模块是软件控制部分,该控制系统可实现的功能:1)通过键盘启动/暂停步进电机、设置步进电机的转速和改变步进电机的转向;2)通过LED管显示步进的转速和转向等工作状态;3)实现三相或四相步进电机的控制:4)通过PC上位机实现对步进电机的控制(启停、转速和转向等)。为保护单片机控制系统硬件电路,在单片机和步进电机之间增加过流保护电路。图l为步进电机控制系统框图。
  2.系统硬件电路设计
  2.1 单片机模块
  单片机模块主要由MSP430FG4618单片机及外围滤波、管理和晶振等电路组成。MSP430FG4618单片机内部的8 KB RAM和116 KB Flash满足控制系统的存储要求,P1和P2端口在步进电机工作过程中根据按键状态判断是否跳入中断服务程序来改变步进电机的工作状态,USART模块实现单片机和PC上位机之间的通信,实现PC机对步进电机控制。电源管理电路提供稳定的3.3 V和5 V电压,分别给单片机、晶振电路和驱动和功率放大电路供电。32 kHz晶振给单片机、键盘/显示接口器件8279和脉冲分配器PMM8713提供时钟;当采用USART模块时需开启8MHz晶振设置通信模块。图2为单片机模块结构框图。
  2.2 键盘/LED模块
  为实现人机对话,该系统设计扩展了3x4按钮矩阵键盘和4片8段LED数码管,可手动直接操作该控制系统。系统上电后,通过键盘输入步进电机的启停、步数转速和转向等,由LED管动态显示步进电机的转速和转向。键盘的输入和LED管的输出由8279进行控制,减少单片机工作负担。8279编程工作在键盘扫描输入方式,读入键盘时具有去抖动功能,避免误触发。图3为键盘LED模块设计结构框图。
  2.3 驱动/放大模块
  控制系统采用步进电机控制用的脉冲分配器(又称逻辑转换器)PMM8713,该器件是CMOS,相输出驱动能力(源电流或吸入电源)为20 mA,适用于控制三相或四相步进电机,可选择下列6种激励方式:三相步进电进:1相,2相,1-2相;四相步进电进:1相,2相,1-2相。输入方式可选择单时钟(加方向信号)和双时钟(正转或反转时钟)两种方式,具有正反转控制、初始化复位、原点监视、激励方式监视和输入脉冲监视等功能。器件PMM8713由时钟选通、激励方式控制、激励方式判断和可逆环形计数器等部分构成,所有输入端内都设有施密特电路,可提高抗干扰能力。PMM8713输出需接功率驱动电路,选用功率驱动器PMM2101,最大输出电流为1.4 A,满足驱动步进电机的要求。驱动/放大电路如图4所示。MSP430单片机通过调节PMM8713的端口1~4输入脉冲信号控制步进电机的启停、速度和转向等。
  3.系统软件设计
  3.1 单片机程序
  利用单片机的定时器TIMER_A(TA)中断产生脉冲信号,通过在响应的中断程序中实现步进电机步数和圈数的准确计数,通过PWM实现转速控制;利用P1.0端口的中断关闭TA中断程序,并推入堆栈,停止电机;P1.1中断则开启TA中断,堆栈推入程序计数器(PC),开启电机;P3.1端口输出高电平由PMM8713的U/D端口控制电机的转向;P3.0~P3.7端口接8279的8个数据接口,当单片机扫描到矩阵键盘有键按下时,利用P2端口的中断设置TA,控制启停、调速和转向等,同时单片机反馈给8279控制LED管显示转速和转向。其程序流程如图5所示。
  3.2 PC上位机模块
  PC上位机模块实现PC机对步进电机的控制。利用MSP430单片机的USART模块实现与PC上位机的通信,PC机通过串口向单片机发送控制命令,实现电机控制。单片机所接收到控制命令暂存在RXBUFFER中,然后与存储在片内Flash的中断程序的入口地址相比较,相同就进入中断,实现步进电机的控制。操作该模块时需要开启8 MHz晶振为USART模块设置波特率(设置波特率为9 600)。控制软件由VB6.0编写,利用MSComm控件实现串行通讯功能。其控制软件界面如图6所示。
  4.系统检测
  为检验该控制系统的实际工作情况,在给定PMM2101输出工作电流的状态下采用能量转化法测得步进电机输出的最大静转矩。选取输出电流间隔0.2 A,测到步进电机最大静转矩与电流之间关系的静特性曲线,如图7所示,说明该控制系统设计较合理。
  5.结论
  该系统通过MSP430单片机控制步进电机运转情况,可靠性高,在电机运行时能够方便设定步进电机的启/停、转速和方向,提高步进电机的步进精度;能够控制三相或四相步进电机;由PC上位机完全控制步进电机的各种运行方式,使系统能够应用于恶劣环境中,保证人员安全,适用范围较广,且电路简单,成本较低,控制方便,移植性强,实用价值高。
上一篇:下一篇:
Powered by &
这里是—这里可以学习 —这里是。
栏目导航:查看: 848|回复: 0
基于VB实现单片机控制步进电机有了单片机的程序,谁会VB的编程
#include &reg52.h& #include &INTRINS.H& #include &absacc.h& #include &math.h& #define uint unsigned int #define uchar unsigned char&&void check_addr(void); /*地址核对*/&&uchar code slave_addr[4]={00, 01, 02, 255};& && &/*从机地址*/ uchar idata T0low, T0high,common_count,input_order,cmd_in_permit, uchar sent_ok,speed_change,start_up,start_end,address_true,i;&&uint y1;uint code add[100]={,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,};&&sbit P2_0=P2^0;&&/*作输入步进电机的脉冲信号发送口*/ sbit P2_2=P2^2;&&/*作输入步进电机的旋转方向信号发送口*/ sbit P1_0=P1^0;&&/*作串口输出信号的使能口, P1_0=0时接通串口,输出信号*/ sbit WD=P1^7;& &/*看门狗*/&&main() {& &P2_0=0;&&P2_2=0;&&/*步进电机的旋转方向待试验后确定*/ P1_0=1; /*开机时需要关断,串口发送功能,需要时再接通*/ WD=1;& && && &&&/*看门狗先为1,电平翻转为喂狗*/&&i=0;&&common_count=0;&&cmd_in_permit=0;&&input_order=0;&&interval=0;&&address_true=1;&&speed_change=0;&&start_up=0;start_end=0;&&sent_ok=0;& && &//允许发送& &&&EA=1; /*开放总中断*/& &&&TMOD=0x21;&&TH1 = 0xFD;& &// 波特率9600&&TL1 = 0xFD;& &SCON = 0xd0;& &// 设定串行口工作方式&&PCON &= 0x00;& &// 波特率不倍增&&SM2=1;& &TR1 = 1;&&ES=1;& && && &&&// 启动定时器1& & T2MOD=00;&&T2CON=0x00;&&RCAP2H =0xEE;& && && && && & //赋T2的预置值0xA600,25MS,0xB800,20MS,0xCA00,15MS,0xDC00,10MS,0xEE00,5MS&&RCAP2L =0x00;& &&&& && &&&TR2=1;& && && && && && && &&&//启动定时器 & && &&&ET2=1;& && && && && && && &&&//打开定时器2中断 do { & && && &if(address_true==1)&& {& & address_true=0;& & check_addr();
}&&& && && &if(start_up==1&&start_end==0)& && && &&&//第一次启动& && && & { & && &&&y1=add[common_count];&&T0high = (uchar)(y1&&8) ;&&/*取y1的高8位*/&&T0low = (uchar)(y1&0x00ff);&&/*取y1的低8位*/&&TR0 = 1;&&ET0=1; /*允许T/C0中断*/
start_end=1;&&}&& if(speed_change==1)&& {& && && & if(interval&=0&&interval&=0x63)& && & {& &if(interval&common_count)& & {common_count=common_count+1; }& &if(interval&common_count)& & {common_count=common_count-1; }&&}speed_change=0;
if(sent_ok==1)
{& && && & sent_ok=0;& && && & P1_0=0;& && && &
for(i=0;i&=20;i++) {_nop_();}& && && && &&&TI=0; SBUF=T0& && && & while(TI==0);TI=0;& && && & TI=0; SBUF=T0& && && & while(TI==0);TI=0;& && && && && && &
P1_0=1;& && && & for(i=0;i&=20;i++) {_nop_();}& && && && && && &&& SM2=1;&& } } while(1); }&&void timer0(void) interrupt 1 using 3&&{&&P2_0=~P2_0;
y1=add[common_count];&&T0high = (uchar)(y1&&8);& &/*取y1的高8位*/&&T0low = (uchar)(y1&0x00ff);&&/*取y1的低8位*/&&TH0=T0 /*高8位T0high送定时器0的TH0*/&&TL0=T0 /*低8位T0low送定时器0的TL0*/&&} void timer2(void) interrupt 5 using 2& &{& && & TF2=0; /*T2溢出中断需软件清0*/& && && && &&&speed_change=1;& & //速度可以改变标示,以便主程序处理& &
WD=!WD; /*MAX813喂狗*/&&}&&void inte_SERIAL() interrupt 4 using 1&&/*串口0中断服务子程序*/ {&&uchar key_in& &key_in=0;
if(RI)& &{key_in=SBUF;& & RI=0;& &if (SM2==1)& &{&&&&if(key_in==slave_addr[2])& &{& && &SM2=0;& &&&address_true=1;&& }& &}& &if ((SM2==0)&& (RB8==0)) &&{& &&&&&if(key_in==0xff){SM2=1;}& &
if(key_in==0xfe)& &
{ /*接收主机命令引导字节,准备接收主机命令*/& && && &&& cmd_in_permit=1; & &}& & if(cmd_in_permit==1)& &&&{& & input_order=input_order+1;& &&&}&&&&if (input_order==2)& &&&{ /*接收主机命令,使从机开始调节电机*/& &&&cmd_in_permit=0;& &&&input_order=0;& &&&/*interval代表控制器发给电机的转速期望值*/& &&&interval= key_& &&&sent_ok=1;& &&&if(start_up==0){start_up=1;}& &&&}&&}& &} }& &void check_addr(void)&&{ /*地址核对成功,发送从机地址给主机*/& &TB8=1;
RB8=0;&&P1_0=0;&& for(i=0;i&=25;i++) {_nop_();}& &SBUF=slave_addr[2]; /*发送地址核对成功,发送从机地址给主机*/&&do{} while(TI==0); TI=0;&&P1_0=1;& &for(i=0;i&=25;i++) {_nop_();}& & TB8=0; }
Powered by求大神看看这是步进电机,小弟用pic控制步进电机转速。可是。。…_单片机吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:125,939贴子:
求大神看看这是步进电机,小弟用pic控制步进电机转速。可是。。…收藏
电机后面写着28BYJ-485VDC跪求大神解释这是什么型号的步进电机,要是有图就更好了,谢谢,还有,有没有人买的爱晶电子的PIC18F4520单片机,在送的视频教程中有关于步进电机的吗
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或用AT89C51单片机控制步进电机的汇编源程序
日 11:54 来源:本站整理 作者:秩名 (0)
  下面程序完成的主要功能:实现步进电机的正反转,加速、减速;显示电机转速(转速级别)和工作状态(正转、反转、不转)。
  源程序
  SPEED EQU 10H ;SPEED为转速等级标志,共7级,即1~7
  FX EQU 11H ;FX 为方向标志
  COUNT EQU 12H ;COUNT中断次数标志
  ORG 0000H
  AJMP MAIN
  ORG 0003H ;外部中断0入口地址,加速子程序
  AJMP UP
  ORG 0013H ;外部中断1入口地址,减速子程序
  AJMP DOWN
  ORG 000BH ;定时器0中断入口地址,控制中断次数来达到控制转速 AJMP ZDT0
  ORG 0030H
  MAIN: MOV SP,#60H
  MOV TMOD,#01H ;工作于定时、软件置位启动,模式1(16 位计时器)
  MOV TH0,#0CFH
  MOV TL0,#2CH
  MOV COUNT,#01H
  SETB ET0 ;定时/计数器允许中断
  CLR IT0 ;外部中断为电平触发方式,低电平有效
  CLR IT1
  SETB EX0 ;外部允许中断
  SETB EX1
  SETB EA ;开总中断
  MOV R1,#11H ;四相单四拍运行,共阳数码管方向显示8,速度值显示0
  MOV SPEED,#00H
  MOV FX,#00H
  XIANS: MOV A,SPEED
  MOV DPTR,#LED
  MOVC A,@A+DPTR ;查表获取等级对应数码管代码
  MOV P2,A ;第二个数码管显示转速等级
  MOV A,FX ;准备判断转向
  CJNE A,#11H,ELS
  MOV P0, #0F9H ;第一个数码管显示 1,表示正转
  AJMP QD
  ELS: CJNE A,#00H,ZHENG
  MOV P0,#0C0H ;第一个数码管显示 0,表示不转
  AJMP QD
  ZHENG: MOV P0,#0BFH ;第一个数码管显示-,表示反转
  QD: JB P3.4,DD ;P3.4 接启动开关 K1,P3.4=1 时启动
  CLR TR0 ;停止定时/计数器
  MOV P0,#0C0H ;第一个数码管显示 0,表示不转
  MOV P2,#0C0H ;第二个数码管显示 0,表示转速为 0
  MOV SPEED,#00H ;重新赋初值
  MOV FX,#00H
  AJMP QD
  DD: MOV A,SPEED
  JNZ GO ;A 不等于 0,即初始速度不为零,则转移到 GO
  CLR TR0 ;停止定时/计数器
  AJMP QD
  GO: SETB TR0 ;开启定时/计数器
  ACALL DELAY
  AJMP XIANS
  DELAY: MOV R6,#10 ;延时子程序
  DEL1: MOV R7,#250
  HERE1: DJNZ R7, HERE1
  DJNZ R6,DEL1
相关技术文章:
相关资料下载:
上周热点文章排行榜
上周资料下载排行榜
技术交流、我要发言! 发表评论可获取积分! 请遵守相关规定。
创新实用技术专题
在28nm FPGA战场上,Xilinx和Altera已经展...来源:《电子与自动化》1998年第03期 作者:金雯丽,吴宏伟,张志慧
利用8098单片机的软件定时器中断实现步进电机的控制
利用8098单片机的软件定时器中断实现步进电机的控制金雯丽吴宏伟*张志慧(洛阳轴承公司装备研究所,洛阳,471039)*(洛阳一拖集团公司建修处)摘要通过改变8098单片机内定时器T1的定时时间,实现对步进电机不同转速的控制,并且在步进电机启动和停止时具有升频和降频过程。该方法不占用CPU的大量时间,且简单可靠,经实际使用效果良好。关键词8098单片机,步进电机,软件定时器,中断在许多自动控制系统中,单片机在进行步进电机控制的同时,还要完成键盘处理、CRT显示屏显示、数据采集及数据处理等诸多控制,因而存在着CPU时间争用的问题。在这里,介绍一种利用8098单片机的软件定时器中断实现步进电机的控制方法,既不占用CPU的大量时间,同时控制方法又很简单可靠,经实际使用效果良好。1.步进电机的控制原理步进电机驱动器的输入信号为脉冲方式,每来一个脉冲,步进电机驱动器就驱动步进电机转动一个步距角,即走一步。而步进电机的转速由脉冲的频率控制,脉冲频率高时,步进电机的转速就高;脉冲频率低时,步进电机的转速就低。我们采用8098单片机片内的定时器T1作为基准,将T1定时时间......(本文共计4页)
相关文章推荐
《电子测量技术》2008年05期
《电力电子技术》2008年02期
《河南科技》2013年04期
《河北工业科技》2008年02期
《科技传播》2012年23期
《科技和产业》2013年11期
《微计算机信息》2008年17期
《电脑知识与技术》2011年24期
《东华大学学报(自然科学版)》2003年05期
《福建师范大学学报(自然科学版)》1993年02期
《沈阳工业大学学报》2013年01期
《电机与控制应用》2007年10期
《价值工程》2012年05期
《黑龙江科技信息》2011年34期
《工业控制计算机》2000年06期
电子与自动化
主办:上海科学技术情报所
出版:电子与自动化杂志编辑部
出版周期:双月
出版地:上海市

我要回帖

更多关于 6级电机转速 的文章

 

随机推荐