系统概述
步进电机控制系统的设计分为两大部分:硬件部分和软件部分。
硬件部分的设计包括脉冲发生模块、电流驱动模块、液晶显示模块和键盘输入模块四个部分。
软件部分的设计包括键盘扫描模块、脉冲发出模块、液晶显示模块、延时模块和速度调节模块等。
图1 系统硬件设计框图
系统硬件设计
1.1 设计概要
在系统硬件设计中主要考虑的事MCU的选型、系统各模块的实际工作效率、模块的接口
1.2 STM32F103C8微处理器
1.2.1 微处理器选型
在步进电机控制系统设计中,微控制器起着关键的作用。
步进电机控制的数据处理运算并不多,不要求微控制器具有很高的处理速度和较大的RAM存储空间。
从成本和电路简化方面考虑,我们希望寻找一款体积较小、功能全面、价格低廉的单片机。
通过系统分析,我们确立微处理器的选型原则如下:
1)基于控制类微处理器
2)内置程序存储空间
3)内置数据存储空间
4)具备足够的I/O端口
5)具有常见的封装形式,且便于电路制作和焊接
6)性价比高,容易选购
此外还需考虑处理器在市场的应用广泛情况、学习与参考的资料是否丰富。
结合以上的选型考虑最终选择STM32F10x系列的处理器作为步进电机电机控制系统设计的核心处理器。
1.2.2 STM32F103c8简介
STM32F103c8增强型系列使用高性能的ARM Cortex-M3 32位的RISC内核,工作频率为72MHz,内置高速存储器(高达128K字节的闪存和20K字节的SRAM),丰富的增强I/O端口和联接到两条APB总线的外设。
所有型号的器件都包含2个12位的ADC、3个通用16位定时器和一个PWM定时器,还包含标准和先进的通信接口:多达2个I2C和SPI、3个USART、一个USB和一个CAN。
STM32F103xx增强型系列工作于-40°C至+105°C的温度范围,供电电压2.0V至3.6V,一系列的省电模式保证低功耗应用的要求。
1.2.3 设计中部分应用介绍
通用输入输出接口(GPIO)
每个GPIO引脚都可以由软件配置成输出(推挽或开漏)、输入(带或不带上拉或下拉)或复用的外设功能端口。
多数GPIO引脚都与数字或模拟的复用外设共用。
除了具有模拟输入功能的端口,所有的GPIO引脚都有大电流通过能力。
在需要的情况下,I/O引脚的外设功能可以通过一个特定的操作锁定,以避免意外的写入I/O寄存器。
在APB2上的I/O脚可达18MHz的翻转速度。
图2 I/O端口位的基本结构
在本次步进电机控制系统设计中使用GPIO输出脉冲序列,结合输出特性将配置成推挽输出。
采用50MHZ速率输出(不考虑功耗)。
推挽输出的特性:
1)推挽输出可以输出高,低电平,连接数字器件
2)推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候
另一个截止.要实现线与需要用OC(open collector)门电路.是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小,效率高。
输出既可以向负载灌电流,也可以从负载抽取电流。
Systick定时器
Systick主要的作用就是用来计时,采用Systick计时可以获得准确的时钟间隔,从而获得精准频率的脉冲序列。
采用Systick定时器获得时间间隔是采用硬件延时的手段,比较软件延时可以知道有一下几个特点:
1)硬件延时占用了硬件资源,但是不占用CPU的运算资源。
硬件延时有着自己的计时系
统,不会占用CPU,只有到达了设定的时间间隔CPU才会响应中断,处理中断过程序。
而软件延时是循环消耗CPU的运算时间,在此间CPU不会处理其他任务。
这对于多任务的控制系统是相当浪费资源的。
2)硬件延时准确,不用考虑内部程序的处理情况,就可以反应准确的时间间隔响应;而这
一点软件延时由于内部处理的程序不同,指令周期不同,产生的时间间隔也不同。
外部中断/事件控制器(EXTI)
外部中断/事件控制器有用于阐释事件/中断请求的19个边沿检测器组成。
每个输入线可以被单独配置以选择类型(脉冲或者挂起)和相关的触发(上升沿触发或者下降沿触发或者双边沿触发)。
每个线也可以被单独屏蔽,一个挂起的寄存器保存了中断请求的状态线。
在本次步进电机控制系统设计中使用EXTI作为按键的中断接口。
1.3脉冲发生模块
步进电机的驱动脉冲是由处理器GPIO端口产生的。
在这采用GPIO四个端口分别对步进电机的A,B,C,D端口输入脉冲。
脉冲的频率通过软件来设定。
单极性5线4相步进电机的工作方式有:
1)单拍:A – B – C – D 它指每次仅给一个绕组通电,使得转子旋转,并且运动到转子永磁
体与具体相反记性的绕组对齐的位置。
2)双拍:AB –BC – CD – DA 它同时给两个绕组通电,这样就使转子旋转,并且在永磁体到
达两个通电绕组的中间位置点时平衡。
双拍方式的优点是比单拍方式多获得41.4%的输出力矩,不过代价是需要花费后者的双倍的能量,因为它有两相绕组同时通电。
3)半拍:A – AB – B – BC – C – CD – D – DA 它工作时的则让两个绕组通电与单个绕组通电方
式交替的进行。
半拍方式的输出力矩比双拍方式小,随设计不同,在15% - 30%之间变化,不过它可以获得双拍方式两倍的步进分辨率(每圈两倍的步数)。
本文采用半拍方式。
其工作方式通电换相的相序如上3)所示,共8个状态。
如果GPIOA 口输出的控制信号中,用“0”和“l”分别代表绕组通电和断电,则可用8个控制字来对应这8个状态。
在程序中,只要依次将这8个控制字送到GPIOA口,每送一个控制字,就完成一拍,步进电机转过一个步距角,每步转角3.75°。
程序可根据这个原理来设计。
1.4电流驱动模块
本文采用的驱动芯片是ULN2003 达林顿芯片。
ULN2003 是是高压大电流达林顿晶体管阵列系列产品,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点适应于各类要求高速大功率驱动的系统。
ULN2003电路是美国Texas Instruments公司和Sprague公司开发的高压大电流达林顿晶体管阵列电路文中介绍了它的电路构成、特征参数及典型应用。
图3 ULN2003功能逻辑图
本次步进电机控制系统设计只分别使用了四个输入、输出端口。
四个输出端口作为步进电机的电流驱动端口。
部分电流放大电路原理图如图4
图4 电流驱动电路连接图
1.5其他模块
液晶显示模块
LCD1602显示屏是工业字符型液晶,能够同时显示16x02即32个字符。
(16列2行)1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。
它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。
1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。
市面上字符液晶大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。
下图是本次设计的显示器的原理图,具体驱动方式可以参考数据手册。
图5 LCD1602显示屏原理图
液晶显示模块用于显示步进电机的正反转向、转速等显示信息。
按键输入模块
键盘中每一个按键都是一个常开的开关电路,当所设置的功能键或数字键按下时,则处于闭合状态,对于一组键或一个键盘,需要通过接口电路与单片机相连,以便把键的开关状态通知单片机。
单片机可以采用查询或中断方式了解有无键输入并检查哪一个键被按下,并
通过转移指令转入执行该键的功能程序,执行完又返回到原始状态。
一般有独立按键和矩阵键盘两种接口方式。
本文需要按键接口不是很多,采用独立按键方式,独立式按键是指直接用I/O口线构成的单个按键电路。
每个独立式按键单独占有一根I/O口线,每根I/O口线的工作状态不会影响其他I/O口线的工作状态,这是一个最简单易懂的按键结构,如下图:
图6 独立按键原理图。