STM32控制步进电机程序

STM32控制步进电机程序
STM32控制步进电机程序

#include "sys.h"

#include "usart.h"

#include "delay.h"

#include "led.h"

#include "timer.h"

#include "key.h"

int main(void)

{

u8 t;

u32 v=100;

Stm32_Clock_Init(9); //系统时钟设置

delay_init(72); //延时初始化

uart_init(72,9600); //串口初始化

LED_Init(); //初始化与LED连接的硬件接口KEY_Init(); //初始化与按键连接的硬件接口

RCC->APB2ENR|=1<<2; //使能PORTA时钟

GPIOA->CRL&=0X0FFFFFFF;

GPIOA->CRL|=0X30000000;//PA7推挽输出

GPIOA->ODR|=1<<7; //PA7 输出高

GPIOA->CRL&=0XFF0FFFFF;

GPIOA->CRL|=0X00300000;//PA5推挽输出

GPIOA->ODR|=1<<5; //PA5 输出高

LED1=1;

LED0=1;

while(1)

{

t=KEY_Scan(0); //得到键值

switch(t)

{ case KEY0_PRES:

v=v+10;

TIM3_Int_Init(v,7199);//10Khz的计数频率

TIM3->CR1|=0x01;

break;

case KEY1_PRES:

v=v-10 ;

TIM3_Int_Init(v,7199);//10Khz的计数频率

TIM3->CR1|=0x01; //使能定时器3 break;

case WKUP_PRES:

TIM3->CR1&=0xFE;//关定时器3;

break;

}

}

2.LED初始化

#include "sys.h"

#include "led.h"

void LED_Init(void)

{

RCC->APB2ENR|=1<<2; //使能PORTA时钟

RCC->APB2ENR|=1<<5; //使能PORTD时钟

GPIOA->CRH&=0XFFFFFFF0;

GPIOA->CRH|=0X00000003;//PA8 推挽输出

GPIOA->ODR|=1<<8; //PA8 输出高

GPIOD->CRL&=0XFFFFF0FF;

GPIOD->CRL|=0X00000300;//PD.2推挽输出

GPIOD->ODR|=0x0004; //PD.2输出高

}

3.按键初始化

#include "key.h"

#include "delay.h"

void KEY_Init(void)

{

RCC->APB2ENR|=1<<2; //使能PORTA时钟

RCC->APB2ENR|=1<<4; //使能PORTC时钟

JTAG_Set(SWD_ENABLE); //关闭JTAG,开启SWD

GPIOA->CRL&=0XFFFFFFF0; //PA0设置成输入

GPIOA->CRL|=0X00000008;

GPIOA->CRH&=0X0FFFFFFF; //PA15设置成输入

GPIOA->CRH|=0X80000000;

GPIOA->ODR|=1<<15; //PA15上拉,PA0默认下拉GPIOC->CRL&=0XFF0FFFFF; //PC5设置成输入

GPIOC->CRL|=0X00800000;

GPIOC->ODR|=1<<5; //PC5上拉

}

u8 KEY_Scan(u8 mode)

{

static u8 key_up=1;//按键按松开标志

if(mode)key_up=1; //支持连按

if(key_up&&(KEY0==0||KEY1==0||WK_UP==1))

{

delay_ms(10);//去抖动

key_up=0;

if(KEY0==0)return

KEY0_PRES;

else if(KEY1==0)return

KEY1_PRES;

else if(WK_UP==1)return

WKUP_PRES;

}else if(KEY0==1&&KEY1==1&&WK_UP==0)

key_up=1;

return 0;// 无按键按下

}

4.定时器初始化

#include "timer.h"

#include "led.h"

u32 i=0;

//定时器3中断服务程序

void TIM3_IRQHandler(void)

{

if(TIM3->SR&0X0001)//溢出中断

{

//GPIOA->ODR^=0x0100;

GPIOA->ODR^=0x0080;

LED0=!LED0;

}

TIM3->SR&=~(1<<0);//清除中断标志位

}

void TIM3_Int_Init(u16 arr,u16 psc)

{

RCC->APB1ENR|=1<<1; //TIM3时钟使能

TIM3->ARR=arr; //设定计数器自动重装值

TIM3->PSC=psc; //预分频器设置

TIM3->DIER|=1<<0; //允许更新中断

//TIM3->CR1|=0x01; //使能定时器3

MY_NVIC_Init(3,3,TIM3_IRQn,2);//抢占3,子优先级3,组2 }

步进电机控制实验

步进电机控制实验 一、实验目的: 了解步进电机工作原理,掌握用单片机的步进电机控制系统的硬件设计方法,熟悉步进电机驱动程序的设计与调试,提高单片机应用系统设计和调试水平。 二、实验容: 编写并调试出一个实验程序按下图所示控制步进电机旋转: 三、工作原理: 步进电机是工业过程控制及仪表中常用的控制元件之一,例如在机械装置中可以用丝杠把角度变为直线位移,也可以用步进电机带螺旋电位器,调节电压或电流,从而实现对执行机构的控制。步进电机可以直接接收数字信号,不必进行数模转换,用起来非常方便。步进电机还具有快速启停、精确步进和定位等特点,因而在数控机床、绘图仪、打印机以及光学仪器中得到广泛的应用。 步进电机实际上是一个数字/角度转换器,三相步进电机的结构原理如图所示。从图中可以看出,电机的定子上有六个等分磁极,A、A′、B、B′、C、C ′,相邻的两个磁极之间夹角为60o,相对的两个磁极组成一相(A-A′,B-B′,C-C′),当某一绕组有电流通过时,该绕组相应的两个磁极形成N极和S极,每个磁极上各有五个均匀分布矩形小齿,电机的转子上有40个矩形小齿均匀地分布的圆周上,相邻两个齿之间夹角为9°。 当某一相绕组通电时,对应的磁极就产生磁场,并与转子形成磁路,如果这时定子的小齿和转子的小齿没有对齐,则在磁场的作用下,转子将转动一定的角度,使转子和定子的齿相互对齐。由此可见,错齿是促使步进电机旋转的原因。 三相步进电机结构示意图 例如在三相三拍控制方式中,若A相通电,B、C相都不通电,在磁场作用下使转子齿和A相的定子齿对齐,我们以此作为初始状态。设与A相磁极中心线对齐的转子的齿为0

步进电动机控制方法

<<技能大赛自动线的安装与调试>>项目二等奖 心得二 心得二:步进电机的控制方法 我带队参加《2008年全国职业院校技能大赛自动线的安装与调试》项目,我院选手和其他院校的三位选手组成了天津代表队,我院选手所在队获得了《2008年全国职业院校技能大赛自动线的安装与调试》项目二等奖,为天津市代表队争得了荣誉,也为我院争得了荣誉。以下是我这个作为教练参加大赛的心得二:步进电机的控制方法 《2008年全国职业院校技能大赛自动线的安装与调试》项目的主要内容包括如气动控制技术、机械技术(机械传动、机械连接等)、传感器应用技术、PLC控制和组网、步进电机位置控制和变频器技术等。但其中最为重要的就是PLC方面的知识,而PLC中最重要就是组网和步进电机的位置控制。 一、 S7-200 PLC 的脉冲输出功能 1、概述 S7-200 有两个置PTO/PWM 发生器,用以建立高速脉冲串(PTO)或脉宽调节(PWM)信号波形。 当组态一个输出为PTO 操作时,生成一个50%占空比脉冲串用于步进电机或伺服电 机的速度和位置的开环控制。置PTO 功能提供了脉冲串输出,脉冲周期和数量可由用户控制。但应用程序必须通过PLC内置I/O 提供方向和限位控制。 为了简化用户应用程序中位控功能的使用,STEP7--Micro/WIN 提供的位控向导可以帮助您在几分钟内全部完成PWM,PTO 或位控模块的组态。向导可以生成位置指令,用户可以用这些指令在其应用程序中为速度和位置提供动态控制。 2、开环位控用于步进电机或伺服电机的基本信息 借助位控向导组态PTO 输出时,需要用户提供一些基本信息,逐项介绍如下: ⑴最大速度(MAX_SPEED)和启动/停止速度(SS_SPEED) 图1是这2 个概念的示意图。 MAX_SPEED 是允许的操作速度的最大值,它应在电机力矩能力的范围。驱动负载所需的力矩由摩擦力、惯性以及加速/减速时间决定。

PLC控制步进电机的实例(图与程序)

PLC控制步进电机的实例(图与程序) ·采用绝对位置控制指令(DRVA),大致阐述FX1S控制步进电机的方法。由于水平有限,本实例采用非专业述语论述,请勿引用。 ·FX系列PLC单元能同时输出两组100KHZ脉冲,是低成本控制伺服与步进电机的较好选择! ·PLS+,PLS-为步进驱动器的脉冲信号端子,DIR+,DIR-为步进驱动器的方向信号端子。 ·所谓绝对位置控制(DRVA),就是指定要走到距离原点的位置,原点位置数据存放于32位寄存器D8140里。当机械位于我们设定的原点位置时用程序把D8140的值清零,也就确定了原点的位置。 ·实例动作方式:X0闭合动作到A点停止,X1闭合动作到B点停止,接线图与动作位置示例如左图(距离用脉冲数表示)。 ·程序如下图:(此程序只为说明用,实用需改善。) ·说明: ·在原点时将D8140的值清零(本程序中没有做此功能) ·32位寄存器D8140是存放Y0的输出脉冲数,正转时增加,反转时减少。当正转动作到A点时,D8140的值是3000。此时闭合X1,机械反转动作到B点,也就是-3000的位置。D8140的值就是-3000。 ·当机械从A点向B点动作过程中,X1断开(如在C点断开)则D8140的值就是200,此时再闭合X0,机械正转动作到A点停止。 ·当机械停在A点时,再闭合X0,因为机械已经在距离原点3000的位置上,故而机械没有动作!

·把程序中的绝对位置指令(DRVA)换成相对位置指令(DRVI): ·当机械在B点时(假设此时D8140的值是-3000)闭合X0,则机械正转3000个脉冲停止,也就是停在了原点。D8140的值为0 ·当机械在B点时(假设此时D8140的值是-3000)闭合X1,则机械反转3000个脉冲停止,也就是停在了左边距离B点3000的位置(图中未画出),D8140的值为-6000。 ·一般两相步进电机驱动器端子示意图: ·FREE+,FREE-:脱机信号,步进电机的没有脉冲信号输入时具有自锁功能,也就是锁住转子不动。而当有脱机信号时解除自锁功能,转子处于自由状态并且不响应步进脉冲。 ·V+,GND:为驱动器直流电源端子,也有交流供电类型。 ·A+,A-,B+,B-分别接步进电机的两相线圈。

步进电机控制速度的方法

步进电机只能够由数字信号控制运行的,当脉冲提供给驱动器时,在过于短的时间里,控制系统发出的脉冲数太多,也就是脉冲频率过高,将导致步进电机堵转。要解决这个问题,必须采用加减速的办法。就是说,在步进电机起步时,要给逐渐升高的脉冲频率,减速时的脉冲频率需要逐渐减低。这就是我们常说的“加减速”方法。 步进电机转速度是根据输入的脉冲信号的变化来改变的,从理论上讲,给驱动器一个脉冲,步进电机就旋转一个步距角(细分时为一个细分步距角)。实际上,如果脉冲信号变化太快,步进电机由于内部的反向电动势的阻尼作用,转子与定子之间的磁反应将跟随不上电信号的变化,将导致堵转和丢步。 所以步进电机在高速启动时,需要采用脉冲频率升速的方法,在停止时也要有降速过程,以保证实现步进电机精密定位控制。加速和减速的原理是一样的。以加速实例加以说明:加速过程是由基础频率(低于步进电机的直接起动最高频率)与跳变频率(逐渐加快的频率)组成加速曲线(降速过程反之)。跳变频率是指步进电机在基础频率上逐渐提高的频率,此频率不能太大,否则会产生堵转和丢步。 步电机系统解决方案

加减速曲线一般为指数曲线或经过修调的指数曲线,当然也可采用直线或正弦曲线等。使用单片机或者PLC,都能够实现加减速控制。对于不同负载、不同转速,需要选择合适的基础频率与跳变频率,才能够达到最佳控制效果。指数曲线,在软件编程中,先算好时间常数存贮在计算机存贮器内,工作时指向选取。通常,完成步进电机的加减速时间为300ms以上。如果使用过于短的加减速时间,对绝大多数步进电机来说,就会难以实现步进电机的高速旋转。 深圳市维科特机电有限公司成立于2005年,是步进电机产品的销售、系统集成和应用方案提供商。我们和全球产品性价比高的生产厂家合作,结合本公司专家团队多年的客户服务经验,给客户提供有市场竞争力的步进电机系统解决方案。我们的主要产品有信浓(SHINANO KENSHI)混合式步进电机、日本脉冲(NPM)永磁式步进电机、减速步进电机、带刹车步进电机、直线步进电机、空心轴步进电机、防水步进电机以及步进驱动器、减振垫、制振环、电机引线、拖链线、齿轮、同步轮、手轮等专业配套产品。我们还供应德国TRINAMIC驱动芯片和日本NPM运动控制芯片。根据客户配套需要,我们还可以 步电机系统解决方案

步进电机的控制程序

mega16的,16和32管脚兼容,只不过flash大小不一样,不过中断向量号也不一样,你看下自己改改。时钟频率:内部RC 1M 芯片:ULN2003 键值:0 小角度快正转。1 小角度快倒。2 大角度快转。3 大角度快倒。4 小角度正慢转。5 小角度倒慢转。6 大角度正慢转。7 大角度倒慢转。********************************************************************/ #include #include #define uchar unsigned char #define uint unsigned int uchar a=0,b=0; uchar KEY_num=0xe1; unsigned int m=9000; const uchar f1[]={0x02,0x06,0x04,0x0c,0x08,0x09,0x01,0x03}; //正转时序3.75度 const uchar f2[]={0x04,0x06,0x02,0x03,0x01,0x09,0x08,0x0c}; //倒转时序3.75度 const uchar f3[]={0x01,0x02,0x04,0x08}; //正转时序7.5度 const uchar f4[]={0x01,0x08,0x04,0x02}; //倒转时序7.5度 void delay(int k) //延时 { int i; for(i=0;i

步进电机控制方法

第四节 步进电机的控制与驱动 步进电机的控制与驱动流程如图4-11所示。主要包括脉冲信号发生器、环形脉冲分配器和功率驱动电路三大部分。 步进脉冲 方向电平 图4-11 步进电机的控制驱动流程 二、步进电机的脉冲分配 环形分配器是步进电机驱动系统中的一个重要组成部分,环形分配器通常分为硬环分和软环分两种。硬环分由数字逻辑电路构成,一般放在驱动器的内部,硬环分的优点是分配脉冲速度快,不占用CPU的时间,缺点是不易实现变拍驱动,增加的硬件电路降低了驱动器的可靠性;软环分由控制系统用软件编程来实现,易于实现变拍驱动,节省了硬件电路,提高了系统的可靠性。 1.采用硬环分时的脉冲分配 采用硬环分时,步进电机的通电节拍由硬件电路来决定,编制软件时可以不考虑。控制器与硬环分电路的连接只需两根信号线:一根方向线,一根脉冲线(或者一根正转脉冲线,一根反转脉冲线)。假定控制器为AT89S52单片机,晶振频率为12MHz,如图4-18:P1.0输出方向信号,P1.1输出脉冲信号。 则控制电机走步的程序如下: (1)电机正转100步 MOV 0FH,#100D ;准备走100步 CONT1: SETB P1.0 ;正转时P1.0=1 CLR P1.1 ;发步进脉冲的下降沿(设驱动器对于脉冲的下降沿有效) NOP ;延时(延时的目的是让驱动电路的光耦充分导通) NOP ;延时(根据驱动器的需要,调整延时) SETB P1.1 ;发步进脉冲的上升沿 MOV 0EH,#4EH ;两脉冲之间延时20000μs(决定电机的转速) MOV 0DH,#20H ;20000的HEX码为4E20 CALL DELAY ;调用延时子程序 DJNZ 0FH,CONT1 ;循环次数减1后,若不为0则继续,循环100次 RET (2)电机反转100步 MOV 0FH,#100D ;准备走100步 CONT2: CLR P1.0 ;反转时P1.0=0 CLR P1.1 ;发步进脉冲的下降沿(设驱动器对于脉冲的下降沿有效) NOP ;延时(延时的目的是让驱动电路的光耦充分导通) NOP ;延时(根据驱动器的需要,调整延时) SETB P1.1 ;发步进脉冲的上升沿

STM32F107+ULN2003+步进电机

STM32F107+ULN2003+步进电机,主要是步进电机部分,只写了正转,控制转速靠延时函数delayl(),反转的话还要写一个函数,将那把个数倒过来送过去,先送9,最后送8. int main(void) { /*!< At this stage the microcontroller clock setting is already configured, this is done through SystemInit() function which is called from startup file (startup_stm32f10x_xx.s) before to branch to application main. To reconfigure the default setting of SystemInit() function, refer to system_stm32f10x.c file */ uint32_t Times = 0; uint8_t ucStr[80] = {0}; uint32_t num = 0; /* 3?ê??ˉ°???LED??ê?μ? */ SZ_STM32_LEDInit(LED1); SZ_STM32_LEDInit(LED2); SZ_STM32_LEDInit(LED3); SZ_STM32_LEDInit(LED4); SZ_STM32_SysTickInit(1000); SZ_STM32_COMInit(COM1, 115200); COTR_Init(); /* Infinite loop ?÷?-?· */ while (1) { /* LED1??ê?μ?×′ì?è?·′ */ LED1OBB = !LED1OBB; */ Zhengzhuan(); } } /*********μ??ú**********************/ void delayl(unsigned int dl) { unsigned int i,y; for(i = 0; i < 5000; i++)

步进电机控制及其汇编程序

综合实践报告之第二次大作业 题目:步进电机控制设计 说明:在工业电气自动化工程中,步进电机是一种常用的控制设备,它以脉冲信号控制电机的转速,在数控机床、仪器仪表、计算机外围设备以及其它自动设备中有广泛的应用。 步进电机是指一步步走的电动机,所谓“步”指转动角度,每步都会使电机转过一个固定的角度。步进电机有不同的种类,但其控制方法均相同,均以脉冲信号进行驱动,很适合使用单片机来进行控制。 本次大作业要求设计一个步进电机的控制部分。 已知: 采用2相制5线步进电机,其结构如下图所示,线圈中心抽头X1与X2连接在一起; B 相X1A 相 2相步进电机 步进电机采用1相激磁法,即在每一个瞬间只有一个线圈导通,其它线圈休息; 单片机与步进电机之间可采用ULN2003类的驱动IC ; 要求: 查找资料,设计出步进电机的硬件连接电路图; 给出控制软件流程图; 用汇编语言写出控制软件的代码。 提示:本作业对电机的转动方向不做要求,在实际应用中,改变线圈激磁的顺序可以改变步进电机的转动方向,每送一次激磁信号后应经过一小段时间延时,让步进电机有足够的时间建立激励磁场及转动。可以使用单片机的~端口输出控制信号,经驱动IC 传至步进电机。

电路图设计说明 此控制电路选用AT89S51型单片机作为驱动时序的输出控制器,其输出作为两相四线步进电机的时序信号,经过驱动芯片ULN2003放大后输入到两相四线步进电机的输入端口;单片机作为控制指令的输入按键K1-K3的输入端口,K1为电机正转按键,K2为电机正转按键,K3为电机停止按键,这三个按键均为高电平输入有效,按一下K1电机正转,按一下K2电机反转转,按一下K3电机停止。其硬件电路如图一: 控制程序流程图

三相步进电机原理与控制方法资料

本模块由45BC340C型步进电机及其驱动电路组成。 (一)步进电机: 一般电动机都是连续旋转,而步进电动却是一步一步转动的,故叫步进电动机。每输入一个脉冲信号,该电动机就转过一定的角度(有的步进电动机可以直接输出线位移,称为直线电动机)。因此步进电动机是一种把脉冲变为角度位移(或直线位移)的执行元件。 步进电动机的转子为多极分布,定子上嵌有多相星形连接的控制绕组,由专门电源输入电脉冲信号,每输入一个脉冲信号,步进电动机的转子就前进一步。由于输入的是脉冲信号,输出的角位移是断续的,所以又称为脉冲电动机。 随着数字控制系统的发展,步进电动机的应用将逐渐扩大。 步进电动机的种类很多,按结构可分为反应式和激励式两种;按相数分则可分为单相、两相和多相三种。 图1 反应式步进电动机的结构示意图 图1是反应式步进电动机结构示意图,它的定子具有均匀分布的六个磁极,磁极上绕有绕组。两个相对的磁极组成一组,联法如图所示。 模块中用到的45BC340型步进电机为三相反应式步进电机,下面介绍它单三拍、六拍及双三拍通电方式的基本原理。 1、单三拍通电方式的基本原理 设A相首先通电(B、C两相不通电),产生A-A′轴线方向的磁通,并通过转子形成闭合回路。这时A、A′极就成为电磁铁的N、S极。在磁场的作用下,转子总是力图转到磁阻最小的位置,也就是要转到转子的齿对齐A、A′极的位置(图2a);接着B相通电(A、C 两相不通电),转了便顺时针方向转过30°,它的齿和C、C′极对齐(图2c)。不难理解,当脉冲信号一个一个发来时,如果按A→C→B→A→…的顺序通电,则电机转子便逆时针方向转动。这种通电方式称为单三拍方式。 图2 单三拍通电方式时转子的位置

基于STM32和L6208的步进电机控制系统

基于STM32和L6208的步进电机控制系统 摘要:本文介绍了步进电机的基本工作原理及控制方法,通过对ARM公司的STM32F103XX处理器Cortex-M3和ST公司步进电机驱动芯片L6208性能和驱动原理的深入分析,阐述了一种新型驱动步进电机的控制系统。本控制系统能够实时、准确、可靠地控制两相两极的步进电机。 关键词:STM32、L6208、步进电机 Abstract:This paper introduced the basic work principle and control methods, By introducing the performance of STM32F103XX and thorough analyzing the drive principle of DMOS driver for bipolar steeper motor L6208, I expounded a new control system for driving steeper motor. This control system can control bipolar stepper motor real-time, well and truly and reliably. Key words: STM32, L6208, stepper motor 第1章引言 本系统采用STM32F103XX微控制器驱动双极性步进电机的方法,执行整步和半步模式来控制步进电机。用户可以选择:操作模式(整步/半步);电机旋转方式(顺时针/逆时针);当前控制模式(快速/慢速)。这种方法使用中密度STM32F103XX微控制器和全集成两相步进电机驱动L6208,这是性价比最高和最简单的方式获得最小的CPU负载。Cortex-M3是专门在微控制系统和无线网络等对功耗和成本敏感的嵌入式应用领域实现高系统性能而设计的,它大大简化了编程的复杂性,集高性能、低功耗、低成本于一体。 本设计的主要特点: 1、不需反馈器件,比其他运动控制系统成本低。 2、尤其在低速扭转力和强稳定性方面具有优势。 3、低功耗,高性能并且灵活,可用于机器人控制,机械工具转弯处,影像和其它精准 的轴位置控制环境。 4、高性能的STM32F103XX微控制器驱动步进电机依赖于控制器的低计算环境。 第2章方案比较与论证 总体系统框图如图1所示:

步进电机角度控制(1)

课程设计 课程名称微型计算机控制技术 题目名称步进电机角度控制(1) 学生学院自动化学院 专业班级自动化(4)班 学号 学生姓名 指导教师 2012 年 6 月26 日

一、系统设计说明 1.硬件设计 本次设计要求通过键盘按键实现对步进电机的转动次数和每次转动的角度的控制,并通过数码管显示出来。 本方案中通过按键对步进电机的转动角度进行设定,给各个按键设置不同的键值。按下按键时,给8255A一个信号设定步进电机下一步的动作。8086通过8255A的数据总线读取该信号,并作出反应,通过给8255A一系列的指令驱动其工作,从而驱动步进电机和LED 显示器 2.软件设计 3.显示模块设计说明: 为使显示程序具有通用性和灵活性,在8086内设置一个显示缓冲区,显示缓冲区的每个单元与LED的各位一一对应。当主程序需要显示,只需将要显示的字符送入显示缓冲区,然后调用显示子程序。显示子程序的任务则是逐一取出显示缓冲区中的字符、查字形表转换成相应字型码,然后通过字段口输出显示。显示模块是用四位七段数码管来显示转动次数和每次转动的角度。给八个按键设置不同的子程序,当按下按键时,根据事先设定好的各个按键对应的转动角度的值输出到数码管进行显示。 步进电机模块设计说明: 在此设计中,采用的是八拍步进电机。步进电机控制程序就是完成环形分配器的任务,从而控制电动机的转动,以达到控制转动角度和位移的目的。控制模型可以以立即数的形式一一给出。对于步进电机模块的程序设计采用循环程序设计方法。先把转动的次数和角度的控制模型存放在内存单元中,然后再逐一从单元中取出控制模块并输出。首先启动,按下按键选择步进电机的角度,然后读入转动的控制模型驱动步进电机转动。 二、程序设计流程图

步进电机速度控制系统设计

目录 1 总体方案的确定 (1) 1.1 对步进电机的分析 (1) 1.2 电机的控制方案 (2) 1.3 控制算法的方案 (3) 1.4 串口通讯的模拟 (3) 2 硬件的设计与实现 (4) 2.1 微处理器的选择 (4) 2.2 控制电路的实现 (4) 2.3 键盘和显示电路 (6) 3 软件的设计与实现 (6) 3.1 控制信号输入程序 (7) 3.2 步进电机控制程序设计 (8) 3.3 程序分析及说明 (9) 4 系统的仿真与调试 (10) 4.1 程序的调试 (11) 4.2 串口通信的调试 (11) 4.3 调试结果及分析 (11) 5 设计总结 (13) 参考文献 (14) 附录 (15)

步进电机速度控制系统设计报告 1 总体方案的确定 系统以单片机为核心,接收并分析来自键盘或串口的控制指令,经过CPU 的逻辑计算输出控制信息,让步进电机按要求转动。由于步进电机是开环元件,系统不需反馈环节,但也同时要求控制信号足够精确。此外,为实现单片机与电机之间信号对接,需要加入步进电机驱动单元。 1.1 对步进电机的分析 步进电机又叫脉冲电机,它是一种将电脉冲信号转化为角位移的机电式数模转换器。在开环数字程序控制系统中,输出控制部分常采用步进电机作为驱动元件。步进电机控制线路接收计算机发来的指令脉冲,控制步进电机做相应的转动,步进电机驱动数控系统的工作台或刀具。很明显,指令脉冲的总数就决定了数控系统的工作台或刀具的总位移量,指令脉冲的频率决定了移动的速度。因此,指令脉冲能否被可靠地执行,基本上取决于步进电机的性能。 步进电机的工作就是步进转动。在一般的步进电机工作中,其电源都是采用单极性的直流电源。要是步进电机转动,就必须对步进电机定子的各相绕组以适当的时序进行通电。当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(即步进角)。通过控制脉冲个数即可以控制角位移量,从而达到准确定位的目的;同时通过控制脉冲频率来控制电机转动的速度和加速度,即可达到调速的目的。本设计是用单片机输出可调脉冲作为单片机的控制信号,通过改写脉冲频率调节单片机转速。 常见的步进电机分三种:永磁式(PM),反应式(VR)和混合式(HB),永磁式步进一般为两相,转矩和体积较小;反应式步进一般为三相,可实现大转矩输出,但噪声和振动都很大。混合式步进是指混合了永磁式和反应式的优点,它又分为两相和五相,应用最为广泛。单片机管脚输出电压一般不足以驱动步进电机转动,所以需要在单片机和步进电机之间加入驱动电路。

步进电机的控制电路和程序

步进电机的控制电路和程序 先看一下我们将要使用的51单片机综合学习系统能完成哪些实验与产品开发工作:分别有流水灯,数码管显示,液晶显示,按键开关,蜂鸣器奏乐,继电器控制,IIC总线,SPI总线,PS/2实验,AD模数转换,光耦实验,串口通信,红外线遥控,无线遥控,温度传感,步进电机控制等等。 上图是我们将要使用的51单片机综合学习系统硬件平台,本期实验我们用到了综合系统主机、步进电机,综合系统其它功能模块原理与使用详见前几期《电子制作》杂志及后期连载教程介绍。 步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。步进电机可以作为一种控制用的特种电机,利用其没有积累误差(精度为100%)的特点,广泛应用于各种开环控制。 步进电机分类与结构 现在比较常用的步进电机分为三种:反应式步进电机(VR)、永磁式步进电机(PM)、混合式步进电机(HB)。本章节以反应式步进电机为例,介绍其基本原理与应用方法。反应式步进电机可实现大转矩输出,步进角一般为1.5度。反应式步进电机的转子磁路由软磁材料制成,定子上有多相励磁绕组,利用磁导的变化产生转矩。常用小型步进电机的实物如图1 所示。 图1步进电机实物图 图 2 步进电机内部图 步进电机现场应用驱动电路 综合系统使用的是小型步进电机,对电压和电流 要求不是很高,为了说明应用原理,故采用最简单 的驱动电路,目的在于验证步进电机的使用,在正 式工业控制中还需在此基础上改进。一般的驱动电 路可以用图3的形式。 图3 一般驱动电路 在实际应用中一般驱动路数不止一路,用上图的分立电路体积大,很多 场合用现成的集成电路作为多路驱动。常用的小型步进电机驱动电路可以用 ULN2003或ULN2803。本书配套实验板上用的是ULN2003。ULN2003是高压大电流达林顿晶体管阵列系列产品,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统。ULN2003A由7组达林顿晶体管阵列和相应的电阻网络以及钳位二极管网络构成,具有同时驱动7组负载的能力,为单片双极型大功率高速集成电路。ULN2003内部结构及等效电路图如图4:

基于STM32的步进电机控制系统

基于STM32的步进电机控制系统

摘要 本文的主要工作是基于STM32步进电机控制系统的设计。随着越来越多的高科技产品逐渐融入了日常生活中,步进电机控制系统发生了巨大的变化。单片机、C 语言等前沿学科的技术的日趋成熟与实用化,使得步进电机的控制系统有了新的的研究方向与意义。本文描述了一个由STM32微处理器、步进电机、LCD显示器、键盘等模块构成的,提供基于STM32的PWM细分技术的步进电机控制系统。该系统采用STM32微处理器为核心,在MDK的环境下进行编程,根据键盘的输入,使STM32产生周期性PWM信号,用此信号对步进电机的速度及转动方向进行控制,并且通过LCD显示出数据。结果表明该系统具有结构简单、工作可靠、精度高等特点. 关键词:STM32微处理器;步进电机;LCD显示;PWM信号;细分技术

Abstract As well as the high-tech products gradually integrated into the daily life,servo control system has undergone tremendous changes.SCM and C language of the frontier disciplines such mature technology and practical,steering control system is a new research direction and meaning.This paper describes a STM32 microprocessors, steering, LCD display and keyboard, Based on the STM32 servo control system of PWM signal,This system uses STM32 microprocessor as the core, MDK in the environment, according to the keyboard input , STM32 produce periodic PWM signal, with this signal to the velocity and Angle of steering gear control, and through the LCD display data. The features of the simple hardware, stable operation and high precision are incarnated in the proposed system. Keywords:STM32 microprocessors; Steering system; LCD display;pulse width modulation signal;Subdivide technology

基于-51单片机步进电机控制-设计报告说明书源程序

一步进电机与驱动电路 1.1 什么是步进电机 步进电机是一种将电脉冲转化为角位移的执行机构。通俗一点讲:当步进驱动器接收到 一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时也可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。 1.2 步进电机的种类 步进电机分永磁式(PM)、反应式(VR)、和混合式(HB)三种。永磁式步进一般为两相,转矩和体积较小,步进角一般为7.5度或15度;反应式步进一般为三相,可实现大转矩输出,步进角一般为1.5度,但噪声和振动都很大。在欧美等发达国家80年代已被淘汰;混合式步进是指混合了永磁式和反应式的优点。它又分为两相和五相:两相步进角一般为1.8度而五相步进角一般为0.72度。这种步进电机的应用最为广泛。 1.3 步进电机的特点 1.精度高一般的步进电机的精度为步进角的3-5%,且不累积。可在宽广的频率围通过改变脉冲频率来实现调速,快速起停、正反转控制及制动等,这是步进电动机最突出的优点 2.过载性好其转速不受负载大小的影响,不像普通电机,当负载加大时就会出现速度下降的情况,所以步进电机使用在对速度和位置都有严格要求的场合; 3.控制方便步进电机是以“步”为单位旋转的,数字特征比较明显,这样就给计算机 控制带来了很大的方便,反过来,计算机的出现也为步进电机开辟了更为广阔的使用市场; 4.整机结构简单传统的机械速度和位置控制结构比较复杂,调整困难,使用步进电机后,使得整机的结构变得简单和紧凑。 1.4 步进电机的原理 图1是一种四相可变磁阻型的步进电机结构示意图。这种电机定子上有八个凸齿,每一

步进电机的PLC 控制调速方法之探索

步进电机的PLC 控制调速方法之探索 步进电机又叫做脉冲电机,是控制系统中的一种执行元件。它的作用是将脉冲信号变换为相 应的位移,即给一个脉冲电信号,步进电机就转动一个角度或前进一步。由于步进电机的位 移与脉冲个数成正比,其转向与脉冲分配到步进电机的各相绕组的相序有关。所以只要控制 指令脉冲的数量、频率及电机绕组通电的相序,便可控制步进电机的输出位移量、速度和方向。步进电机具有较好的控制性能,其启动、停止、正反转及其它任何运行方式的改变都可 在少数脉冲内完成,且可获得较高的控制精度,从而实现精确定位。同时可以通过控制脉冲 频率来控制步进电机转动的速度和加速度,从而达到调速的目的。在负载能力范围内,这些 关系不因电源电压、负载大小、环境条件的波动而变化,因而可适用于开环系统中作执行元件,使控制系统大为简化。目前,我国已较多地将步进电机用于机械加工的数控机床中,在 绘图机、轧钢机的自动控制、自动记录仪表和数模变换等方面也得到较多的应用。 可编程序控制器简称PLC,是一种数字运算操作的控制系统,专门用于工业环境设计。它的 主要特点是可靠性高、使用方便、体积小、重量轻、编程简单易学,在工业控制领域得到广 泛的应用。目前,利用PLC 技术可以方便地实现对电机速度和位置的控制,方便地进行各种 步进电机的操作,完成各种复杂的工作。它代表了先进的工业自动化革命,加速了机电一体 化的实现。 本论文以项目教学法的方式探索步进电机的PLC 控制转速方法。本设计控制要求如下:按下 启动按钮,步进电机以100Hz 的基准频率正转。按一次加速按钮,频率以50Hz 递增,最多 加速5 次;按一次减速按钮,频率以25Hz 递减,最多减速4 次。加速时为正转,减速时为反转。按下停止按钮,步进电机立即停止运行。步进电机驱动器的细分设置为1,电流设置为1.5A。 1 控制系统的硬件设计 1.1 控制系统的结构。本设计中,系统硬件部分由上位机、PLC、步进电机驱动器、步进电机、负载等组成。上位机是计算机,作为控制面板、人机交互界面和控制软件编制环境,通过与PLC 的通信,实现操作监控功能;PLC 发出脉冲信号、方向信号,通过步进电机驱动器控制步进电机的运行状态。 1.2 控制系统的硬件。 1.2.1 PLC。使用PLC 控制步进电机时,应该保证PLC 具有高速脉冲输出功能。通过选择具有 高速脉冲输出功能或专用运动控制功能的模块来实现。在本设计中,采用的是三菱系列 FX2N-32MT 型的晶体管输出型PLC。在PLC 的选型上,必须采用晶体管输出型PLC,若使用继电器型的PLC,则高速脉冲的输出很难达到控制要求。 1.2.2 步进电机。步进电机有步距角(涉及到相数)、静力矩、电流三大要素组成。根据负载的控制精度要求选择步距角大小,根据负载的大小确定静力矩,静力矩一经确定,根据电机 矩频特性曲线来判断电机的电流。一旦三大要素确定,步进电机的型号便确定下来了。 1.2.2.1 步距角的选择。步进电机的步距角取决于负载精度的要求,将负载的最小分辨率(当量)换算到电机轴上,每个当量电机应走多少角度(包括减速)。电机的步距角应等于或小 于此角度。目前市场上步进电机的步距角一般有0.36 度/0.72 度(五相电机)、0.9 度/1.8 度(二、四相电机)、1.5 度/3度(三相电机)等。 1.2.2.2 静力矩的选择。步进电机的动态力矩一下子很难确定,我们往往先确定电机的静力矩。静力矩选择的依据是电机工作的负载,而负载可分为惯性负载和摩擦负载两种。单一的惯性 负载和单一的摩擦负载是不存在的。直接起动时(一般由低速)两种负载均要考虑,加速起

完整的单片机控制步进电机程序

#include "reg52.h" #include "INTRINS.H" #include #include #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,interval; uchar sent_ok,speed_change,start_up,start_end,address_true,i; uint y1; uint code add[100]={60006,62771,63693,64154,64430,64614,64746,64845,64922,64983,65033,65075,651 11,65141,65167,65190,65211,65229,65245,65260,65273,65285,65296,65306,65315,65323,65331 ,65339,65345,65352,65358,65363,65368,65373,65378,65382,65387,65390,65394,65398,65401,6 5404,65407,65410,65413,65416,65418,65421,65423,65425,65428,65430,65432,65434,65435,654 37,65439,65441,65442,65444,65445,65447,65448,65450,65451,65452,65453,65455,65456,65457 ,65458,65459,65460,65461,65462,65463,65464,65465,65466,65467,65468,65469,65469,65470,6 5471,65472,65472,65473,65474,65475,65475,65476,65477,65477,65478,65478,65479,65480,654 80,65481}; 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;

步进电机的控制

《RC正弦波振荡电路》 课程设计说明书 专业班级:2012级电子信息科学与技术2班姓名: 指导教师:江郑云 设计时间: 2014、11、26——2014、11、10 物理与电气工程学院 2014年11 月10 日 摘要

步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。这一线性关系的存在,加上步进电机只有周期的误差而无累计误差等特点。使得在速度、位置等控制领域用步进电机来控制变得非常简单。步进电机的调速一般是改变输入步进电机的脉冲的频率来实现步进电机的调速。因为步进电机每给一个脉冲就转动一个固定的角度,这样就可以通过控制步进电机的一个脉冲就到下一个脉冲的时间间隔来改变脉冲的频率,延时的长短来具体控制步进角来改变步进电机的转速,从而实现步进电机的调速。在本设计方案中采用AT89C52型单片机内部的定时器改变CP脉冲的频率从而实现对步进电机的转速进行控制,实现电机调速与正反转的功能。 关键词:步进电机单片机小系统数码管发光二极管

目录 一、引言 (1) 1.1 设计背景 (1) 1.2 设计要求 (2) 二、硬件电路的设计 (2) 2.1 系统总电路框图 (2) 2.2 电路单元 (2) 2.2.1 STC89C52小系统 (2) 2.2.2 ULN2003驱动芯片 (3) 2.2.3 步进电机 (4) 2.3原理图 (5) 2.3.1 最小系统原理图 (6) 2.3.2键盘模块原理图 (6) 2.3.3八位数码管显示原理图 (7) 2.3.4 电机驱动模块原理图 (7) 三、软件系统 (8) 3.1 系统流程图 (8) 3.2 主程序 (9) 四、参考资料 (11)

plc控制步进电机程序.

plc控制步进电机程序 ·采用绝对位置控制指令(DRVA),大致阐述FX1S控制步进电机的方法。由于水平有限,本实例采用非专业述语论述,请勿引用。 ·FX系列PLC单元能同时输出两组100KHZ脉冲,是低成本控制伺服与步进电机的较好选择! ·PLS+,PLS-为步进驱动器的脉冲信号端子,DIR+,DIR-为步进驱动器的方向信号端子。·所谓绝对位置控制(DRVA),就是指定要走到距离原点的位置,原点位置数据存放于32位寄存器D8140里。当机械位于我们设定的原点位置时用程序把D8140的值清零,也就确定了原点的位置。 ·实例动作方式:X0闭合动作到A点停止,X1闭合动作到B点停止,接线图与动作位置示例如左图(距离用脉冲数表示)。 ·程序如下图:(此程序只为说明用,实用需改善。) ·说明: ·在原点时将D8140的值清零(本程序中没有做此功能) ·32位寄存器D8140是存放Y0的输出脉冲数,正转时增加,反转时减少。当正转动作到A点时,D8140的值是3000。此时闭合X1,机械反转动作到B点,也就是-3000的位置。D8140的值就是-3000。 ·当机械从A点向B点动作过程中,X1断开(如在C点断开)则D8140的值就是200,此时再闭合X0,机械正转动作到A点停止。 ·当机械停在A点时,再闭合X0,因为机械已经在距离原点3000的位置上,故而机械没有动作!

·把程序中的绝对位置指令(DRVA)换成相对位置指令(DRVI): ·当机械在B点时(假设此时D8140的值是-3000)闭合X0,则机械正转3000个脉冲停止,也就是停在了原点。D8140的值为0 ·当机械在B点时(假设此时D8140的值是-3000)闭合X1,则机械反转3000个脉冲停止,也就是停在了左边距离B点3000的位置(图中未画出),D8140的值为-6000。 ·一般两相步进电机驱动器端子示意图: ·FREE+,FREE-:脱机信号,步进电机的没有脉冲信号输入时具有自锁功能,也就是锁住转子不动。而当有脱机信号时解除自锁功能,转子处于自由状态并且不响应步进脉冲。 ·V+,GND:为驱动器直流电源端子,也有交流供电类型。 ·A+,A-,B+,B-分别接步进电机的两相线圈。 此主题相关图片如下: 此主题相关图片如下: PLC 在步进电机驱动系统中的应用 一、引言 步进电机是一种常用的执行元件,它可将电脉 冲信号变换为转轴的角位移。由于它的总的位移量 是严格等于输入的指定脉冲数,或其平均转速严格 正比于输入脉冲的频率,同时在其工作频段内,可以 从一种运动状态稳定地转换到另一种运动状态,因 此步进电机具有能精确位移,精确定位,且无累积误 差等特点,从而广泛应用于数字定位控制中。 步进拖动是多元件系统,包括:输入指令脉冲的 程控装置、环形分配器、功放器和执行元件步进电 机。而步进电机驱动源是由环形分配器,功放器两 部分组成,故步进拖动的结构图如图1 所示。 输入脉冲的

相关文档
最新文档