首页 资讯 应用 高压 设计 行业 低压 电路图 关于

嵌入式

旗下栏目: PLC 嵌入式 单片机 DCS

STM32控制步进电机(有代码)

嵌入式 | 发布时间:2018-06-17 | 人气: | #评论# | 本文关键字:STM32,步进电机,代码
摘要:步进电机(也称脉冲电机) (将电脉冲转换为相应的角位移或线位移的电磁机械装置,具有快速启动,停能力,在电机的负荷不超过它能提供的动态转矩时,可以通过输入脉冲来控制它在一瞬

步进电机(也称脉冲电机)(将电脉冲转换为相应的角位移或线位移的电磁机械装置,具有快速启动,停能力,在电机的负荷不超过它能提供的动态转矩时,可以通过输入脉冲来控制它在一瞬间的启动或者停止。在非超载的情况下,步距角和转速只和输入的脉冲频率有关,和环境温度,气压,振动无关,也不受电网电压的波动和负载变化的影响,因此,控制较为精准)即给电机一个脉冲信号,电机则转过一个步距角

步进电机是一种感应电机,它的工作原理:利用电子电路,将直流电变成分时供电的,多相时序控制电流,用这种电流为步进电机供电,步进电机才能正常工作,驱动器就是为步进电机分时供电的,多相时序控制器,就是说:必须用由双环形脉冲信号功率驱动电路等组成的控制系统方可使用。

步距角:控制系统每发一个步进脉冲信号,电机所转动的角度。电机出厂时给了一个步距角的值,如:86BYG250A型      电机的值为0.9、1.8(表示半步工作时为0.9,整步为1.8),被称之为“电机的固有步距角”,但是不一定是      电机实际工作时的真正步距角,真正的步距角和驱动器有关

相数:电机内部的线圈组数,目前常用的有二相,三相,四相,五相步进电机。电机相数不同,其步距角也就不同了,          一般二相电机的步距角为0.9/1,8,三相为0.36/0.72,五相为0.36/0.72。在没有细分驱动器的情况下,用户主要            靠选择不同相数的步进电机来满足自己步距角的要求。如果使用细分驱动器,那么相数好像也就没有了意义

拍数:完成一个磁场周期性变化所需脉冲数或导电状态,或指电机转过一个步距角所需脉冲数。以如下的四相电机为            例,有四相四拍运行方式,AB-BC-CD-DA-AB;四相八拍:A-AB-B-BC-C-CD-D-DA-A

1.png

失步:电机运转时运转的步数不等于理论上的步数,称之为失步

开环控制与闭环控制:(主要看系统中有没有反馈环节)(反馈指的是动作所引起的效果)

(反馈简单的理解就是:“你打了别人一巴掌,我们看到了它的脸是红的,嗯嗯,这就是眼睛所得到的反馈”)

闭环控制:存在反馈环节的控制,就是当前的系统能够实时的检测控制的输出结果,并将检测到的信息通过反馈环节反映到输入端,调整输入量,达到修正控制误差,提高控制精度的目的,(对外部扰动和系统参数变化不敏感)如:

2.png

(闭环)

全自动洗衣机,给洗衣机加水时,里边有一个红外传感器,扫描到水位高低,当水位合适时,洗衣机自动停止加水

家用空调根据传感器采集到当前的温度,然后比较设定温度,通过设定指令,控制室内外机的工作情况,改变频率,压缩机的转速等进行简单的调节,然后不断地进行控制

寻迹小车时,两边的红外传感器不断的检测黑线,将返回的结果输入到相应i/o口上,我们对这些i/o口进行中断检测就可以知道,当前时刻的位置,然后可以执行相应的操作(左转,右转);

调节平衡天平的时候,其中一种方法就是利用mpu6050获取当前所处位置的角度,调用PID算法,对当前的位置或者角度进行处理,然后对调整后的角度再次进行反馈处理

(家用空调调节温度)

家用空调调节指定的温度,靠的是电子传感器,(电子传感器就是一个热敏电阻,不同的温度会有不同的阻值),利用也可以理解为电子膨胀,不同的温度会有不同的阻值。利用对入风口的空气进行取样,把数据传输到控制板上,然后,在与设定的温度进行比较,产生一个指令来实现控制。(制冷的话,比较之后:输出室内风机和室外机的开机指令,内外机开始工作(室外机包括压缩机,室外风机,四通阀等部件),工作一定温度的话,室内温度将会:1,(定频空调)达到设定值,室外机停止工作,室内机保持工作,保证空气循环,当室内温度逐渐上升,大于设定值2-3度时,室外机重新启动制冷,室内温度将又开始下降,重复这个过程,室内温度就能保持在设定温度值上下1度左右范围内波动; 2,(变频空调)接近设定值,室外机的变频板输出的频率下降,压缩机转速下降,制冷量也相应降低,室内温度保持在与设定值相同的数值下。随着室内热源的变化,室内机温度传感器实时检测温度的变化,主控板输出的控制信号使变频器跟随变化调节压缩机工作频率,从而改变瞬时制冷量,确保室内温度稳定)

开环控制:不存在反馈环节的控制,也就是控制器与被控制对象间只有顺序作业而无反方向联系且控制单方向进行,无自动纠偏能力,不用取输出量变化信号控制输入量。

3.png

如:在开车的过程中,我们来控制方向盘

人工转换电扇的档位实现转速的控制,不用反馈回来实际的转速

给洗衣机加水时:我们通过来观察水位来确定什么时候关掉水龙头

(所以,简单的说:就是看有没有反馈:开环没有,闭环有,对于用到机器上来说,每一件事都是有反馈的,只是情况不同而已,当反馈是人自己来判断的话,那么这个系统就是开环的,如果反馈是机器自己来判断的话,那么这个系统就是闭环的)                   

从整体的角度来看:主控程序+按键+步进电机

主控程序(test.c)

  1. #include "sys.h"  

  2. #include "usart.h"        

  3. #include "delay.h"    

  4. #include "led.h"   

  5. #include "key.h"  

  6. #include "motor.h"  

  7.   

  8. int main(void)  

  9. {          

  10.     u8 t;       

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

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

  13.     LED_Init();             //初始化与LED连接的硬件接口  

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

  15.     LED0=0;                 //点亮LED  

  16.     MOTOR_Init();  

  17.     while(1)  

  18.     {  

  19.         MOTOR();  

  20.     }          

  21. }  

整体截图:

 1529237337639710.png

然后接下来就是:led.c

  1. #include "sys.h"     

  2. #include "led.h"  

  3. //////////////////////////////////////////////////////////////////////////////////            

  4. //LED IO初始化  

  5. void LED_Init(void)  

  6. {  

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

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

  9.     GPIOA->CRH&=0XFFFFFFF0;   

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

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

  12.                                                 

  13.     GPIOD->CRL&=0XFFFFF0FF;  

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

  15.     GPIOD->ODR|=1<<2;      //PD.2输出高   

  16. }  

led.h


  1. #ifndef __LED_H  

  2. #define __LED_H    

  3. #include "sys.h"  

  4.                             

  5. //////////////////////////////////////////////////////////////////////////////////       

  6.   

  7. //LED端口定义  

  8. #define LED0 PAout(8)   // PA8  

  9. #define LED1 PDout(2)   // PD2    

  10.   

  11. void LED_Init(void);    //初始化                             

  12. #endif  


责任编辑:步进电机
首页 | 电气资讯 | 应用技术 | 高压电器 | 电气设计 | 行业应用 | 低压电器 | 电路图 | 关于我们 | 版权声明

Copyright 2017-2018 电气自动化网 版权所有 辽ICP备17010593号-1

电脑版 | 移动版 原创声明:本站大部分内容为原创,转载请注明电气自动化网转载;部分内容来源网络,如侵犯您的权益请发送邮件到[email protected]联系我们删除。