admin管理员组文章数量:1558916
目录
一、步进电机模块介绍
二、步进电机模块接线说明
三、测试说明、步进电机驱动代码
四、串口调试助手把采集的旋转角度数据发送出来
五、源代码
六、串口调试助手软件
七、步进电机原理图资料
一、步进电机模块介绍
步进电机是一种特殊的电机,它按照一定步距进行旋转,每个步距都对应一个特定的转角,因此可以精确地控制电机的位置和运动。与直流电机相比,步进电机具有较高的位置精度、较低的噪音、较低的功耗等优点,因此在自动化、机器人、电子设备等领域中得到了广泛应用。
步进电机通常由定子和转子两部分组成。定子包括一个或多个线圈,转子包括一个或多个磁性极对。通过控制定子线圈的电流,可以使磁性极对依次被吸引和排斥,从而实现电机的旋转。步进电机根据线圈数目、旋转角度、旋转精度等特点可以分为不同类型,如单相步进电机、两相步进电机、三相步进电机等。
通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(即步进角)。我们可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时我们可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
ULN2003是大电流驱动阵列,多用于单片机、智能仪表、PLC、数字量输出卡等控制电路中,可直接驱动继电器等负载。输入5VTTL电平,输出可达500mA/50V。
简单地说,ULN2003其实就是用来放大电流的,增加驱动能力。比如说单片机输出引脚一般输出就几mA,是无法驱动电机、继电器或者电磁阀的,像要让直流电机转需要500mA,而用ULN2003放大后,可以通过单片机的输出引脚直接控制这些设备。
由于单片机的引脚输出电流太低了,无法驱动大部分的设备。而ULN2003只相当于是一个开关,设备(负载)的供电是在外围电路上,而它能够通过微弱的单片机输出电流来控制外围电路的开闭。这某种程度上也可以说是,放大电流,增加驱动能力。
采用STM32驱动28BYJ4步进电机,实现正转反转,完成角度调整。步进电机是一种将电脉冲转化为角位移的执行机构。
二、步进电机模块接线说明
1 VCC 外接5V
2 GND 外接GND
3 IN1-IN4 分别接到stm32单片机上的PA3,PA4,PA5,PA6引脚。
4 电机四线接头 插入ULN2003驱动板。该连接器是带键的,因此只能以一种方式进入。
三、测试说明、步进电机驱动代码
编译环境:keil5
测试单片机: STM32F103C8T6
功能:按键按下步进电机逆时针旋转360度。OLED屏幕显示旋转的角度变化。
Motor.c文件编写步进电机驱动代码如下:
#include "stm32f10x.h" // Device header
#include "Delay.h"
#include "OLED.h"
void Motor_Init(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4|GPIO_Pin_5 | GPIO_Pin_6; //PA3,PA4,PA5,PA6¿ØÖƲ½½øÇý¶¯Òý½Å
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
//A-B-C-D
void Motor_One(uint16_t speed)
{
GPIO_SetBits(GPIOA,GPIO_Pin_3);
GPIO_ResetBits(GPIOA,GPIO_Pin_4|GPIO_Pin_5 | GPIO_Pin_6);
Delay_ms(speed);
GPIO_SetBits(GPIOA,GPIO_Pin_4);
GPIO_ResetBits(GPIOA,GPIO_Pin_3|GPIO_Pin_5 | GPIO_Pin_6);
Delay_ms(speed);
GPIO_SetBits(GPIOA,GPIO_Pin_5);
GPIO_ResetBits(GPIOA,GPIO_Pin_3|GPIO_Pin_4 | GPIO_Pin_6);
Delay_ms(speed);
GPIO_SetBits(GPIOA,GPIO_Pin_6);
GPIO_ResetBits(GPIOA,GPIO_Pin_3|GPIO_Pin_4 | GPIO_Pin_5);
Delay_ms(speed);
}
// AB-BC-CD-DA
void Motor_two(uint16_t speed)
{
GPIO_SetBits(GPIOA,GPIO_Pin_3|GPIO_Pin_4);
GPIO_ResetBits(GPIOA,GPIO_Pin_5 | GPIO_Pin_6);
Delay_ms(speed);
GPIO_SetBits(GPIOA,GPIO_Pin_4|GPIO_Pin_5);
GPIO_ResetBits(GPIOA,GPIO_Pin_3 | GPIO_Pin_6);
Delay_ms(speed);
GPIO_SetBits(GPIOA,GPIO_Pin_5|GPIO_Pin_6);
GPIO_ResetBits(GPIOA,GPIO_Pin_3 | GPIO_Pin_4);
Delay_ms(speed);
GPIO_SetBits(GPIOA,GPIO_Pin_6|GPIO_Pin_3);
GPIO_ResetBits(GPIOA,GPIO_Pin_4 | GPIO_Pin_5);
Delay_ms(speed);
}
// A-AB-B-BC-C-CD-D-DA
void Motor_one_two(uint16_t speed)
{
GPIO_SetBits(GPIOA,GPIO_Pin_3);
GPIO_ResetBits(GPIOA,GPIO_Pin_4|GPIO_Pin_5 | GPIO_Pin_6);
Delay_ms(speed);
GPIO_SetBits(GPIOA,GPIO_Pin_3|GPIO_Pin_4);
GPIO_ResetBits(GPIOA,GPIO_Pin_5 | GPIO_Pin_6);
Delay_ms(speed);
GPIO_SetBits(GPIOA,GPIO_Pin_4);
GPIO_ResetBits(GPIOA,GPIO_Pin_3|GPIO_Pin_5 | GPIO_Pin_6);
Delay_ms(speed);
GPIO_SetBits(GPIOA,GPIO_Pin_4|GPIO_Pin_5);
GPIO_ResetBits(GPIOA,GPIO_Pin_3 | GPIO_Pin_6);
Delay_ms(speed);
GPIO_SetBits(GPIOA,GPIO_Pin_5);
GPIO_ResetBits(GPIOB,GPIO_Pin_3|GPIO_Pin_4 | GPIO_Pin_6);
Delay_ms(speed);
GPIO_SetBits(GPIOA,GPIO_Pin_5|GPIO_Pin_6);
GPIO_ResetBits(GPIOA,GPIO_Pin_3 | GPIO_Pin_4);
Delay_ms(speed);
GPIO_SetBits(GPIOA,GPIO_Pin_6);
GPIO_ResetBits(GPIOA,GPIO_Pin_3|GPIO_Pin_4 | GPIO_Pin_5);
Delay_ms(speed);
GPIO_SetBits(GPIOA,GPIO_Pin_6|GPIO_Pin_3);
GPIO_ResetBits(GPIOA,GPIO_Pin_4 | GPIO_Pin_5);
Delay_ms(speed);
}
Motor.h文件,对步进电机驱动函数经行了声明:
#ifndef __MOTOR_H
#define __MOTOR_H
void Motor_Init(void);
void Motor_One(uint16_t speed);
void Motor_two(uint16_t speed);
void Motor_one_two(uint16_t speed);
#endif
四、串口调试助手把采集的旋转角度数据发送出来
printf("步进电机旋转角度 = %d° \r\n",0);
五、源代码
《STM32单片机+28BYJ-48步进电机+ULN2003驱动板+OLED屏幕+步进电机角度数据发送到串口调试助手》源代码_步进电机28BYJ48+ULN2003驱动板器资源-CSDN文库
六、串口调试助手软件
串口调试助手-keil5调试工具资源-CSDN文库
七、步进电机原理图资料
28BYJ-48步进电机传感器原理图、模块资料资源-CSDN文库
版权声明:本文标题:STM32单片机+28BYJ-48步进电机+ULN2003驱动板+OLED屏幕+步进电机角度数据发送到串口调试助手+源代码 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1727405341a1113310.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论