7. STM32 控制步进电机正方转

7. STM32 控制步进电机正方转
7. STM32 控制步进电机正方转

实验目的:利用STM32 来控制步进电机正反转

实验设备:STM32开发板,两相步进电机,24V&5V直流电源,丝杆导轨,DM422C 驱动器

图1 实物图

第一步弄清楚驱动器接线

1.1 ENA可以悬空

大部分使用者就是将ENA悬空的,就是电机通常不锁轴

1.2 OPTO 是共阳极端

1.2.1 如果用的是AVR ,就直接接到AVR 5V接线柱上。

1.2.2 如果用的是ARM,就将OPTO接到5V 电源上,记得电源要和ARM共地,这样才能识别接的电源是5V

第二步弄清楚脉冲的发送形式,即Delay函数作用

清楚脉冲的发送形式,即Delay函数作用,

弄清楚接口由哪个GPIO口控制,然后连接硬件图,

通过电源IO控指示灯检验信号发送:

第三步主程序

下面这个程序是

/* Includes ------------------------------------------------------------------*/

#include "stm32f10x.h"

void Delay (u32 nCount)

{

for(; nCount != 0; nCount--);

}

void GPIO_Config()

{

GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC |

RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE , ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_0;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

GPIO_Init(GPIOC, &GPIO_InitStructure);

}

int main(void)

{

SystemInit();

GPIO_Config();

while(1){

int i,n=4000;

for(i=0;i

{

GPIO_SetBits(GPIOC , GPIO_Pin_3);

Delay(0xfff) ;

GPIO_SetBits(GPIOC , GPIO_Pin_2);

Delay(0xfff) ;

GPIO_ResetBits(GPIOC , GPIO_Pin_2);

Delay(0xfff) ;

}

Delay(0xfffff) ;

Delay(0xfffff) ;

Delay(0xfffff) ;

for(i=0;i

{

GPIO_ResetBits(GPIOC , GPIO_Pin_3);

Delay(0xfff) ;

GPIO_SetBits(GPIOC , GPIO_Pin_2);

Delay(0xfff) ;

GPIO_ResetBits(GPIOC , GPIO_Pin_2);

Delay(0xfffff) ; //增加的数值,会控制发脉冲的速度,从而控制电机的转速

}

}

}

最后结果是电机启动,快去慢回

下载

图程序烧写过程图

注意:程序修改后一定要编译一次,或者保存才能烧写进去,不然永远只会是保存或者编译前的程序。

基于8086的步进电机控制课程设计

基于8086的步进电机控制课程设计

西安电子科技大学 《微型计算机原理》课程设计 题目基于8086的步进电机控制 学生姓名 专业班级11级计嵌班

学号 201 院(系)信息工程学院 指导教师 完成时间年月日 目录 1 课程设计的目的 (1) 2课程设计的任务与要求 (1) 3引言 (1) 4设计方案与论证 (2) 5 设计内容及功能说 明 (3) 5.1 励磁线圈及其励磁顺 序 (3) 5.2工作原理 (4) 5.3 8086 CPU …………………………………………………………………

5 5.4 8255工作方式选择 (6) 5.5 ULN2003A (6) 5.6 74LS273 (7) 5.7 74LS138 (7) 6单元电路的设计(计算与说明) (7) 7硬件的制作与调试………………………………………………………… 10 8总结…………………………………………………………………………… 12 参考文 献…………………………………………………………………………1 3 附录1:总体电路原理 图 (14)

附录2:元器件清 单 (14) 附录3:源程序代 码 (15)

1 课程设计的目的 培养和锻炼学生在学习完本门课后综合应用所学理论知识,解决实际工程设计和应用问题的能力的重要教学环节。要求学生熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,使学生得到微机开发应用方面的初步训练。让学生独立或集体讨论设计题目的总体设计方案、编程、软件硬件调试、编写设计报告等问题,真正做到理论联系实际,提高动手能力和分析问题、解决问题的能力,实现由学习知识到应用知识的初步过渡。通过本次课程设计使学生熟练掌握微机系统与接口扩展电路的设计方法,了解步进电机控制的基本原理,掌握控制步进电机转动的编程方法,进一步熟练掌握8255A并行I/O口的工作方式以及编程方法,熟练应用8086以及汇编语言编写应用程序和实际设计中的硬软件调试方法和步骤,熟悉微机系统的硬软件开发工具的使用方法。体会系统整体设计的流程与方法,为以后系统级设计积累经验。 培养学生在实际的工程设计中查阅资料,撰写设计报告表达设计思想和结果的能力。 2 课程设计的任务与要求 01.通过开关K1实现步进电机的开始与停止; 02. 通过开关K2来选择步进电机的正转与反转; 03. 通过开关K3,K4组成(2-4译码)四档电机转速选择; 04. 对每只开关的选择情况同时通过4位8段数码管来显示; 05. 扩展设计:可以在以上功能基础上,增加控制步进电机单步转动的开关;增加控制电机加速转动的开关;增加控制电机减速的开关。 3 引言 步进电机的原理是基于最基本的电磁铁作用,其模型起源于1830年之1860年,1870年后开始以控制为目的的尝试,应用于氩弧灯的电极输送机构中,这被认为是最初的步进电机,此后步进电机被广泛使用[1]。 步进电机是将脉冲信号转换成角位移或线位移的开环控制源步进电机件。在非超载的情况下,电机的转速,停止的位置只取决于脉冲信号的频率和脉冲

实验四步进电机控制接口实验

湖北科技学院计算机科学与技术学院《微机接口技术》实验报告 学号: 124221031 姓名:李亮亮 实验题目:步进电机控制接口实验报告 指导老师:范建军 实验日期: 2014.12.12

一、实验目的 通过步进电机控制实验,学习并行接口电路及其控制程序的设计原理与方法。 二、实验内容 基本实验四相步进电机,以双八拍方式运行。按开关SW1启动;按开关SW2,停止。 三、实验要求 利用MFID实验平台和步进电机驱动模块板进行硬件连接,利用MFIDE-6集成开发环境进行步进电机软件控制程序的设计、调试,直到使步进电机正常运行。 四、实验原理 1.步进电机驱动模块板电路原理如图2.1.2所示。模块板上包括接口的对象永磁式四相步进电机和驱动电路达林顿管TIP,保护电路74LS373,相序指示灯以及开关SW1和SW2等。 2.步进电机接口设计原理与方法的详细阐述,参考《微型计算机接口技术及应用》教材第7.3节(P146~151)。 图2.1.2 步进电机驱动模块电路原理框图 五、实验资源配置 1.电源:机内供电,将平台的电源开关拔到“内”的位置上,并将模块电源中并口电源接通 2.电缆线:采用单线/20芯扁平线 3.开关:T区的SW1、SW2和SW3可以配置为用来控制步进电机的运行方向、速度和

启动/停止 4.本实验所涉及的模块:F(8255模块),P(步进电机),T(按键开关),L(跳线)四个模块 5.I/O端口地址:8255的4个端口地址为300H~303H。其中A口=300H,B口=301H,C口=302H,命令口=303H 6.软件资源:MFID-6集成开发环境软件提供了丰富的汇编语言和C/C++语言程序开发工具 六、实验的硬件连接与软件编程 1.硬件连线: F区P区 PA0 A相 PA2 B相 PA4 C相 PA6 D相 PC4 OE#74LS373开关

步进电机自动控制系统

步进电机自动控制系统 设计内容 设计用P C机对四相步进电机,方向,步数及自动化控制系统,并编写汇编程序实现相应轻能。 设计要求 (1)设计控制系统硬件电机。 (2)由8255键盘控制电机的方向,走的步数,并由数码管显示相应的参数。 (3)在命令执行结束后,由PC内部扬声器发出信号提示。 设备与器材 PC机一台,TPC-1实验台一个,并行接口8255一片,步进电机一个,LED数码管4个,74ls164按键11个,GAL芯片一个,74LS245一片。 硬件方案 硬件共分成5个模块:①译码驱动电路,②8255控制键盘模块③8255LED显示模块,④步电机驱动模块,⑤步进电机模块 a) 译码驱动电路 方案一使用适当的门电路来实现不同地址的,用74LS245做数据驱动,缺点: 由于只使用门电路,电路连线非常复杂 方案二使用76LS138和适当门电路实现译码,相对于方案一电路复杂度有一定的改观,在TPC实验箱上使用这种译码方案 方案三使用可编程逻辑器件GAL16V8实现译码功能,用GAL优点:成本低,电路连线少。本设计选择这个方案来实现译码功能。 a)键盘模块 方案一用8255 12个口直接接按键,此方法成本高,不使用行列法,浪费端口,如用行列法只用7个端口。 方案二使用2个74LS273或74LS373控制键盘,其中一个控制行,273反向从键盘中读数据,另一个控制列选,273正向向键盘发数据。 方案三使用7281芯片同时控制键盘和数码,7281通过串行口和总线通信,端口使用少,且操作方便。 方案四PC0~4,PB0~4分别控制16个按键。由于本模块技术已经成熟,在应用中广泛使用,所以本设计选择此方案来实现。 c) LED数码管显示模块 方案一74LS138一片,ULN2803A一片和74HC573一片,来实现显示,74LS138译 码送UNL2083A通过UNL2083A控制位,通过74HC573控制数据,本方案,成本较高,要单片机中有使用比较多。 方案二使用一片8255A控制两个74HC573和一个正相驱动器74LS07和一个反相驱 动器74LS06分别控制4个LED位选和编码数据传输。此方案用到了8255A由于模块②中用到的8255A3个口都以使用,再用一个8255A成本比较高。 方案三通过一个片信号,两个74HC373和一个正相驱动器74LS06和一个反相驱动 器74LS07分别控制3个LED位选和编码数据传输。此方案成本低,但是软件实现的点复杂。 方案四使用4个74HC373和控制4个LED编码数据,用8255A PC高位和总线片选信号控制数据输入位选,由于是静态显示,一般用于1个或2个数码管的显示。 方案五使用4个74LS164,通过串行移位来实现LED显示。成本不高,使用端口少,可以直接通过8255PC7和PB7口,一个做为移位控制,一个送数据。本设计使用此方案 d) 步进电机驱动模块

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 0 —2 0 学年第学期指导教师: 2 0 年月 课程设计成绩评定表

目录 一、设计题目………………………………………………………………. 二、设计目的………………………………………………………………. 三、设计原理及方案………………………………………………………. 四、实现方法………………………………………………………………. 五、实施结果………………………………………………………………. 六、改进意见及建议……………………………………………………….

七、设计体会………………………………………………………………. 、 一、设计题目 编程实现步进电机的控制 二、设计目的 1.了解步进电机控制的基本原理 2.掌握控制步进电机转动的编程方法 3.了解8086控制外部设备的常用电路 4.掌握8255的使用方法 三、设计原理及方案 设计原理 步进电机驱动原理是通过对每相线圈中的电流的顺序切换(实验中的步进电机有四相线圈,每次有二相线圈有电流,有电流的相顺序变化),来使电机作步进式旋转。 驱动电路由脉冲信号来控制,所以调节脉冲信号的频率便可改变步进电机的转速。 利用 8255对四相步进电机进行控制。当对步进电机施加一系列连续不断的控制脉冲时,它可以连续不断地转动。每一个脉冲信号对应步进电机的某一相或两相绕组的通电状态改变一次,也就对应转子转过一定的角度(一个步距角)。当通电状态的改变完成一个循环时,转子转过一个齿距。四相步进电机可以在不同的通电方式下运行,常见的通电方式有单(单相绕组通电)四拍(A-B-C-D-A…),双(双相绕组通电)四拍(AB-BC-CD-DA-AB…),八拍(A-AB-B-BC-C-CD-D-DA-A…)等。 通过编程对8255的输出进行控制,使输出按照相序表给驱动电路供电,则步进电机的输入也和相序表一致,这样步进电机就可以正向转动或反向转动。 硬件连接图 四.实现方法 .步进电机控制程序流图

控制步进电机调速系统实验报告

华北科技学院计算机系综合性实验 实验报告 课程名称微机原理及应用 实验学期 2011 至 2012 学年第二学期学生所在系部电子信息工程学院 年级 2009 专业班级 学生姓名学号 任课教师 实验成绩 计算机系制

《微机原理及应用》课程综合性实验报告 开课实验室:计算机接口实验室2012年5月29日 实验题目微机控制步进电机调速系统 一、实验目的 1、了解计算机控制步进电机原理 2、掌握步进电机正转反转设置方法 3、掌握步进电机调速工作原理及程序控制原理 二、设备与环境 TPC-2003A 微机。 Vc++编译器。 三、实验内容 硬件接线图参考实验指导书。 软件编程在TPC-2003A自带的VC++编译环境下使用。 在通用VC++下编程,需要拷贝相关的库文件。 用汇编语言编写控制程序需注明原理。 四、实验结果及分析 1、实验步骤 1、按如下实验原理图连接线路,利用8255输出脉冲序列,开关K0~K6控制步进电机转速,K7控制步进电机转向。8255 CS接288H~28FH。PC0~PC3接BA~BD;PA口接逻辑电平开关。 2、编程:当K0~K6中某一开关为“1”(向上拨)时步进电机启动。K7向上拨电机正转,向下拨电机反转。 实验原理图

2.实验结果 按照实验步骤连接实验电路,检查无误后运行程序。可以看到,当开关k0到k6依次为高电平时,电机转速越来越慢,k0闭合时速度最快,k6闭合时速度最慢,当k0到k6的低位有闭合时,步进电机按最低位的转速运行,因为程序中的查询方式是从k0-k6,即在程序的优先级别中k0的级别是最高的而k7的优先级别是最低的。k7控制电机的正转与反转。 3.实验分析 (1)步进电机的工作原理: 步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点,使得在速度、位置等控制领域用步进电机来控制变的非常的简单。 步进电机驱动原理是通过对每相线圈中的电流的顺序切换来使电机作步进式旋转。驱动 电路由脉冲信号来控制,所以调节脉冲信号的频率便可改变步进电机的转速。 如图(b)所示:本实验使用的步进电机用直流+5V 电压,每相电流为0.16A,电机线圈 由四相组成:即: φ1(BA) φ2(BB) Φ3(BC) Φ4(BD) 驱动方式为二相激磁方式,各线圈通电顺序如下表所示。图(b) 表中首先向φ1 线圈-φ2 线圈输入驱动电流,接着φ2-φ3,φ3-φ4,φ4-φ1,又返回到φ1-φ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所示:

基于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

二相步进电机控制系统实施方案

课程设计任务书 学生姓名:专业班级:自动化0903班 指导教师:工作单位:自动化学院 题目: 二相步进电机控制系统地设计 初始条件: 采用8086最小模式,扩展4K地EPROM及2K地RAM,利用L298 ,输出双极性模拟电压驱动二相步进电机,使其按不同速度正反转,电机以八个开关以补码形式给定输入并以发光二极管显示出来,转速为-500rpm~+500rpm b5E2R。 要求完成地主要任务: 1.硬件设计:系统总原理图及各部分详细原理图 2.软件设计:系统总体流程图、步进电机四拍,八拍各模块流程图、显示模块流程图等 3.编写程序:能够完成上述任务 4.完成符合要求地设计说明书 时间安排:2012年6月25日~2012年7月3日 指导教师签名:年月日 系主任(或责任教师)签名:年月日

目录 摘要1 1 设计任务及要求2 1.1 设计任务2 1.2 任务分析2 2 方案选择及论证3 2.1 总体思路3 2.2 控制部分设计4 2.3驱动电路部分设计4 3 硬件电路设计模块5 3.1硬件系统总原理图5 3.2控制部分6 3.2.1 8086CPU地介绍6 3.2.2 8255A地介绍7 3.2.3原理分析10 3.3步进电机地介绍12 3.3.1 步进电机地特点12 3.3.2 步进电机工作原理13 3.3.3 二相步进电机13 3.4 电机驱动部分14 3.4.1 L298芯片介绍14 3.4.2 驱动电路原理分析15 3.5 电机正反转与调速电路17 4 软件设计18 4.1 设计思路18 4.2 各程序流程图18 5 系统仿真20 小结体会23 参考文献24 附录一系统地总设计图25 附录二部分代码26

最新8255端口控制步进电机控制框图和程序汇总

8255端口控制步进电机控制框图和程序

9.4工程应用 9.4.1项目1:用8255A端口控制步进电机 1.项目要求与目的 (1)项目要求:根据开关的状态,用8255端口控制步进电机,编写程序输出脉冲序列到8255的PA口,控制步进电机正转、反转,加速,减速。 (2)项目目的: ●了解步进电机控制的基本原理。 ●掌握控制步进电机转动的编程方法。 ●了解单片机控制外部设备的常用电路。 2.项目电路连接与说明 (1)项目电路连接:8255的片选CS孔用导线接至译码处200H~207H 插孔,8255的PA0-PA3用导线接至步进电机的A、B、C和D,PB0-PB3用导线接至开关K0、K1和K2。 (2)项目说明:步进电机驱动原理是通过对每相线圈中的电流的顺序切换来使电机作步进式旋转。切换是通过8255输出脉冲信号来实现的。所以调节脉冲信号的频率便可以改变步进电机的转速,改变各相脉冲的先后顺序,可以改变电机的旋转方向。步进电机的转速应由慢到快逐步加速。 步进电机驱动方式可以采用双四拍(AB→BC→CD→DA→AB)方式,也可以采用单四拍(A→B→C→D→A)方式,或单、双八拍(A→AB→B→BC→C→CD→D→DA →A)方式。实际控制时公共端是接在+5V上的,所以实际控制脉冲是低有效。8255的PA口输出的脉冲信号经(MC1413或ULN2003A)倒相驱动后,向步进电机输出脉冲信号序列。

当开关K0=0时,步进电机驱动方式采用单/双八拍工作方式,当开关K1=0时,步进电机驱动方式采用双四拍工作方式,当开关K2=0时,步进电机驱动方式采用单四拍反转工作方式。 3.项目电路原理框图 项目电路原理框图如图7-1所示。电路由8255A芯片、驱动和步进电机等组成。 图7-1 用8255A端口控制步进电机电路框图 4.项目程序设计 (1)程序流程图 用8255A端口控制步进电机程序流程图如图7-2所示。

7. STM32 控制步进电机正方转

实验目的:利用STM32 来控制步进电机正反转 实验设备:STM32开发板,两相步进电机,24V&5V直流电源,丝杆导轨,DM422C 驱动器 图1 实物图 第一步弄清楚驱动器接线 1.1 ENA可以悬空 大部分使用者就是将ENA悬空的,就是电机通常不锁轴 1.2 OPTO 是共阳极端 1.2.1 如果用的是AVR ,就直接接到AVR 5V接线柱上。 1.2.2 如果用的是ARM,就将OPTO接到5V 电源上,记得电源要和ARM共地,这样才能识别接的电源是5V 第二步弄清楚脉冲的发送形式,即Delay函数作用 清楚脉冲的发送形式,即Delay函数作用,

弄清楚接口由哪个GPIO口控制,然后连接硬件图, 通过电源IO控指示灯检验信号发送: 第三步主程序 下面这个程序是 /* Includes ------------------------------------------------------------------*/ #include "stm32f10x.h" void Delay (u32 nCount) { for(; nCount != 0; nCount--); } void GPIO_Config() { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE , ENABLE);

微机原理步进电机控制课程设计报告

河北科技大学 课程设计报告 学生姓名:学号: 专业班级: 课程名称: 学年学期:2 0 —2 0 学年第学期指导教师: 2 0 年月

课程设计成绩评定表

目录 一、设计题目………………………………………………………………. 二、设计目的………………………………………………………………. 三、设计原理及方案………………………………………………………. 四、实现方法………………………………………………………………. 五、实施结果………………………………………………………………. 六、改进意见及建议………………………………………………………. 七、设计体会……………………………………………………………….

、 一、设计题目 编程实现步进电机的控制 二、设计目的 1.了解步进电机控制的基本原理 2.掌握控制步进电机转动的编程方法 3.了解8086控制外部设备的常用电路 4.掌握8255的使用方法 三、设计原理及方案 3.1设计原理 步进电机驱动原理是通过对每相线圈中的电流的顺序切换(实验中的步进电机有四相线圈,每次有二相线圈有电流,有电流的相顺序变化),来使电机作步进式旋转。驱动电路由脉冲信号来控制,所以调节脉冲信号的频率便可改变步进电机的转速。 利用 8255对四相步进电机进行控制。当对步进电机施加一系列连续不断的控制脉冲时,它可以连续不断地转动。每一个脉冲信号对应步进电机的某一相或两相绕组的通电状态改变一次,也就对应转子转过一定的角度(一个步距角)。当通电状态的改变完成一个循环时,转子转过一个齿距。四相步进电机可以在不同的通电方式下运行,常见的通电方式有单(单相绕组通电)四拍(A-B-C-D-A…),双(双相绕组通电)四拍(AB-BC-CD-DA-AB…),八拍(A-AB-B-BC-C-CD-D-DA-A…)等。 通过编程对8255的输出进行控制,使输出按照相序表给驱动电路供电,则步进电机的输入也和相序表一致,这样步进电机就可以正向转动或反向转动。 3.2硬件连接图

8255端口控制步进电机

《微机原理与接口技术》 实验报告 题目:8255A端口控制步进电机 专业名称:通信工程 班级:通信2班 学号: 320090937081 姓名:王小云

1.实验要求: 根据开关的状态,用8255端口控制步进电机,编写程序输出脉冲序列到8255的PA口,控制步进电机正转、反转,加速,减速。 2.实验原理: 步进电机驱动原理是通过对每相线圈中的电流的顺序切换来使电机作步进式旋转。切换是通过8255输出脉冲信号来实现的。所以调节脉冲信号的频率便可以改变步进电机的转速,改变各相脉冲的先后顺序,可以改变电机的旋转方向。步进电机的转速应由慢到快逐步加速。 步进电机驱动方式可以采用双四拍(AB→BC→CD→DA→AB)方式,也可以采用单四拍(A→B→C→D→A)方式,或单、双八拍(A→AB→B→BC→C→CD→D→DA→A)方式。实际控制时公共端是接在+5V上的,所以实际控制脉冲是低有效。8255的PA口输出的脉冲信号经(MC1413或ULN2003A)倒相驱动后,向步进电机输出脉冲信号序列。 当开关K0=0时,步进电机驱动方式采用单/双八拍工作方式,当开关K1=0时,步进电机驱动方式采用双四拍工作方式,当开关K2=0时,步进电机驱动方式采用单四拍反转工作方式。 3.电路图 项目电路原理框图如图7-1所示。电路由8255A芯片、驱动和步进电机等组成。 用8255A端口控制步进电机电路框图 电路连接:8255的片选CS孔用导线接至译码处200H~207H插孔,8255 的PA0-PA3用导线接至步进电机的A、B、C和D,PB0-PB3用导线接至开关K0、K1和K2。

4.程序流程图 用8255A端口控制步进电机程序流程图如图 程序流程图 5.程序 ASTEP EQU 01H BSTEP EQU 02H CSTEP EQU 04H DSTEP EQU 08H CODE SEGMENT ASSUME CS:CODE START : MOV DX, 203H ;8255控制口地址 MOV AL, 82H ;PA口输出,B口输入 OUT DX, AL ;写控制字 K0:MOV DX, 200H ;PA口地址 MOV AL,0 ;输出低电平 OUT DX,AL ;电机停止转动 MOV DX,201H ;PB口地址 IN AL,DX ;读开关状态 TEST AL,01H ;PB0位(K0=0吗?) JNZ K1 ;不是零转K1 JMP STEP8 是零转单/双八拍工作方式 K1: IN AL,DX ;读开关状态 TEST AL,02H ;PB1位(K1=0吗?) JNZ K2 ;不是零转K2 JMP STEP4 ;是零转双四拍工作方式 K2:IN AL,DX ;读开关状态 TEST AL,04H ;PB2位(K2=0吗?) JZ STEP41 ;是零转单四拍反转工作方式

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

基于STM32的步进电机控制系统 沈阳航空航天大学 2010年6月

摘要 本文的主要工作是基于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

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; }

步进电机控制设计(C程序设计语言)

接口课程设计任务书 学生姓名专业班级 指导老师工作单位计算机学院 题目:步进电机控制设计(C程序设计语言) 一、内容: 在MIFID微机实验台上以双八拍的方式控制步进电机运行,用按钮控制启动和停止。接口硬件电路图见说明书。 二、要求: 1、控制步进电机运行的相序表存储在文件中。 2、按下SW1按钮,从文件中取出一个相序数据,从并行接口8255A的PA 口输出,使步进电机运行。相序数据在CRT上显示。按下SW2按钮,步进电机运行停止。 3、SW1按钮的数字量由PC1输入,SW2按钮的数字量由PC0输入, 4、设计程序运行时的界面友好。 三、进度安排: 指导教师签名:年月日 系主任(责任教师)签名:年月日

一.设计目的和内容 目的:通过步进电机控制实验,学习并行接口电路及其控制程序的设计原理与方法。 内容: 在MIFID微机实验台上以双八拍的方式控制步进电机运行,用按钮控制启动和停止。 接口硬件电路图见说明书。 要求: 1、控制步进电机运行的相序表存储在文件中。 2、按下SW1按钮,从文件中取出一个相序数据,从并行接口8255A的PA口输出, 使步进电机运行。相序数据在CRT上显示。按下SW2按钮,步进电机运行停止。 3、SW1按钮的数字量由PC1输入,SW2按钮的数字量由PC0输入, 4、设计程序运行时的界面友好。 二、实验预备知识 可编程并行接口8255是一个具有两个8位(A端口和B端口)和两个4位(C端口)并行I/O端口的芯片。在与外设进行数据传输时,把A、B、C3个端口分为两组。A组由A端口和C端口的高4位组成。B组由B端口和C端口的低4位组成。为了满足多种数据传输的要求,可以通过对8255的编程用方式控制字设置3种工作方式来实现。这3种工作方式为:方式0(基本I/O工作方式);方式1(选通I/O工作方式);方式2(双向传送方式)。8255的控制字有工作方式控制字和C端口的位置位/复位控制字。工作方式控制字是必须要预先设定的,C端口的位置位/复位控制字可视需要而定。一般来说,在方式0中,C端口除在特殊场合用作联络信号外,如:双机通信,基本上都作为数据端口参与I/O操作。但在方式1或方式2下,C端口的相应位可用来作为I/O操作的控制和同步信号,也可用作对CPU的中断请求信号。 为了更好地完成本次实验,要求实验者掌握8255控制寄存器,8255方式0、方式1的工作原理及工作过程;熟悉方式1(输入和输出)下A端口的方式字、C端口的位置位/复位控制字以及状态字的设置方法。 三.实验原理 1.步进电机驱动模块板电路原理如图1.1.2所示。模块板上包括接口的对象永磁式四相步进电机和驱动电路达林顿管TIP,保护电路74LS373,相序指示灯以及开关SW1和SW2等。 2.步进电机接口设计原理与方法的详细阐述。步进电机是一种将电脉冲转化为角位移的执行机构。通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。您可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时您可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。步进电机控制原理:步进电机是数字控制电机,它将脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此非常适合于单片机控制。步进电机可分为反应式步进电机(简称VR)、永磁式步进电机(简称PM)和混合式步进电机(简称HB)。

STM32用IO口控制步进电机的简单程序

STM32用IO口控制步进电机的简单程序 练习IO口库函数操作。//相序uint16_tphasecw[4] ={0x2000,0x0001,0x0004,0x0008};//D-C-B- Auint16_tphaseccw[4]={0x0008,0x0004,0x0001,0x2000};//A-B-C-D //步进电机相关IO口初始化 //IN4:PC13//IN3:PC0//IN2:PC2//IN1:PC3voidMoto_Init(void){GPIO_InitTypeDefG PIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABL E);//GPIOCLOCKENABLEGPIO_InitStructure.GPIO_Pin=GPIO_Pin_13;GPIO_Ini tStructure.GPIO_Mode=GPIO_Mode_Out_PP;//推挽输出 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//50MHz速率 GPIO_Init(GPIOC,&GPIO_InitStructure);GPIO_ResetBits(GPIOC,GPIO_Pin_13);// 输出低电平 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;GPIO_Init(GPIOC,&GPIO_InitStructur e);GPIO_ResetBits(GPIOC,GPIO_Pin_0);GPIO_InitStructure.GPIO_Pin=GPIO_Pin _2;GPIO_Init(GPIOC,&GPIO_InitStructure);GPIO_ResetBits(GPIOC,GPIO_Pin_2); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3;GPIO_Init(GPIOC,&GPIO_InitStructur e);GPIO_ResetBits(GPIOC,GPIO_Pin_3);} //电机正转voidMotorcw(void){uint8_ti;for(i=0;i记得使能IO口时钟。 tips:感谢大家的阅读,本文由我司收集整编。仅供参阅!

硬件-实验11-步进电机控制

武汉大学教学实验报告 动力与机械学院 自动化专业 2012年 1月 5日 3. 结论 1. 分析程序设计要求 本程序目的是使用8086CPU 控制步进电机,步进电机的控制原理前面实验原理部分已经稍有介绍了,其实对步进电机的控制只需按照一定 顺序给电机的ABCD 四相供电即可,步进电机的转向控制见本部分后面表格部分,下面使用高级语言描述控制算法,脉冲信号经由8255并口输出(连接方式见后面硬件连接说明部分)。 步进电机的转向控制方法如下表(单相四拍方式): 转向 正转 反转 通电顺序 A-B-C-D A-D-C-B 系统硬件连接说明:8255的PA0~PA3依次连到HA-HD 插孔,而HA-HD 则分别通过四个非门和四个与非门连接到步进电机的ABCD 四相,非门和与非门提高驱动能力。接线如下图所示: 8255初始化; Bool dir = true; PA = 00010001B; //二进制0001 0001 While(1) If(dir == true) //正转 8255_PA = 8255_PA 循环左移 1; Else //反转 8255_PA = 8255_PA 循环右移1; End Delay(10); //延时10ms End

CODE SEGMENT ASSUME CS:CODE 8255_CON EQU 0FF2BH ;8255端口地址列表 8255_PA EQU 0FF28H ORG 0000H ;程序从0000H加载 START: JMP Main Key db ? ;键盘码存放地址,由函数GetKey写入键盘码 ;GetKey在其他地方实现 Main: MOV AL,90H ;8255初始化 MOV DX,8255_CON OUT DX,AL MOV CX, 10H ;延时 CALL DELAY STEP_CON: ;While(1) CALL GetKey ;获取键盘码并放入Key地址处 MOV DX,8255_PA MOV CX,04H MOV AL,11H CMP Key,01H ;key : 1 JNZ CCW CC : OUT DX,AL ;正转 CALL DELAY_S ROL AL,1 LOOP CC JMP STEP_CON CCW: OUT DX,AL ;反转 CALL DELAY_S ROR AL,1 LOOP CCW JMP STEP_CON DELAY: LOOP DELAY ;通用延时子程序 RET DELAY_S: PUSH CX ;特定延时子程序 MOV CX,100H LOOP $ POP CX RET CODE ENDS 教务部制表

相关文档
最新文档