jjzjj

STM32驱动28BYJ-48步进电机

叶叶子yy 2023-12-30 原文

一、认识28BYJ-48步进电机

首先我们来了解一下28BYJ-48步进电机,那就先从名字开始吧!

28:步进电机的有效最大外径是28毫米

B:表示是步进电机

Y:表示是永磁式子

J:表示是减速型(减速比:1:64)

48:表示四相八拍

长相”上看是这样子滴...

这个步进电机需要配合着一个驱动板来使用,图片上的是一个ul 203的驱动板和一个步进电机。

驱动板具体怎么接线网上搜就有,而且没有什么难度,在这里就不介绍啦!“一直坚信百度是个好东西”。这个在某宝上搜就有,价钱的话大概10刀左右就行,这也是我为什么选择它的一个原因,哈哈。

接着来看的是步进电机的内部结构

通过图片可以看到内部是有8个齿,每个齿上都缠上了一个线圈绕阻,正对着的2个齿上的绕阻是串联在一起的,则正对着的两个绕阻总是会同时导通或关断,这就形成了四相,即图中标记的A-B-C-D。

二、工作原理

步进电机是一种将电脉冲转化角位移的执行机构。当驱动器接收到一个脉冲信号就会驱动步进电机按设定的方向转动一个固定的角度,则可以通过脉冲个数来控制角位移量,从而达到准确定位的目的,同时可以通过控制脉冲的频率来控制电机转动的速度和加速度,从而达到调速的目的。

三、28BYJ-48减速概念

“永磁式减速步进电机”中“减速”的概念,下图中步进电机内部拆解图中可以看到位于最中心的那个白色小齿轮是步进电机的转子输出,64个节拍只是让这个小齿轮转了一圈,之后会带动浅蓝色的大齿轮,这个就是一级减速。右上方的白色齿轮的结构除电机转子和最终输出轴外的3个传动齿轮都是这样的结构,由一层多齿和一层少齿构成,而每一个齿轮都用自己的少齿层去驱动下一个齿轮的多齿层,这样每2个齿轮都构成一级减速,一共就有了4级减速。

四、28BYJ-48时序图

五、程序

下边代码实现的是四相单四拍的,其它两种也可以根据这个进行参考并实现,如下:

(注:所需要用到的头文件已经放到  #include <stm32f10x_conf.h>  )

motor.c

#include <stm32f10x_conf.h>

void MOTOR_UserConfig(void)
{
	GPIO_InitTypeDef GPIO_InitStruct;
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
	
	GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
	GPIO_InitStruct.GPIO_Pin=MOTOR_A|MOTOR_B|MOTOR_C|MOTOR_D;
	GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(MOTOR_PROT, &GPIO_InitStruct);
}
void MOTOR_Rhythm_4_1_4(u8 step,u8 dly)
{
	switch(step)
	{
		
		case 0 :
			;;
		break;
		
		case 1 :
			MOTOR_A_LOW;MOTOR_B_HIGH;MOTOR_C_HIGH;MOTOR_D_HIGH;
		break;
		
		case 2 :
			MOTOR_A_HIGH;MOTOR_B_LOW;MOTOR_C_HIGH;MOTOR_D_HIGH;
		break;
		
		case 3 :
			MOTOR_A_HIGH;MOTOR_B_HIGH;MOTOR_C_LOW;MOTOR_D_HIGH;
		break;
		
		case 4 :
			MOTOR_A_HIGH;MOTOR_B_HIGH;MOTOR_C_HIGH;MOTOR_D_LOW;
		break;
		
	}
	
	Delay_ms(dly);

}

void MOTOR_Direction(void)   //反转
{
	for(u8 i=1;i<5;i++)
	{
		MOTOR_Rhythm_4_1_4(i,3);
	}
	
}

void MOTOR_Direction1(void)   //正转
{
	for(u8 i=4;i>0;i--)
	{
		MOTOR_Rhythm_4_1_4(i,3);
	}
}

 motor.h

#ifndef _MOTOR_H_
#define _MOTOR_H_

#include <stm32f10x_conf.h>

#define MOTOR_A GPIO_Pin_0
#define MOTOR_B GPIO_Pin_1
#define MOTOR_C GPIO_Pin_2
#define MOTOR_D GPIO_Pin_10
#define MOTOR_PROT GPIOB

#define MOTOR_A_HIGH GPIO_SetBits(MOTOR_PROT,MOTOR_A);
#define MOTOR_A_LOW GPIO_ResetBits(MOTOR_PROT,MOTOR_A);

#define MOTOR_B_HIGH GPIO_SetBits(MOTOR_PROT,MOTOR_B);
#define MOTOR_B_LOW GPIO_ResetBits(MOTOR_PROT,MOTOR_B);

#define MOTOR_C_HIGH GPIO_SetBits(MOTOR_PROT,MOTOR_C);
#define MOTOR_C_LOW GPIO_ResetBits(MOTOR_PROT,MOTOR_C);

#define MOTOR_D_HIGH GPIO_SetBits(MOTOR_PROT,MOTOR_D);
#define MOTOR_D_LOW GPIO_ResetBits(MOTOR_PROT,MOTOR_D);

void MOTOR_UserConfig(void);
void MOTOR_Rhythm_4_1_4(u8 step,u8 dly);
void MOTOR_Direction(void);
void MOTOR_Direction1(void);

#endif

注:连接驱动板的四个IO口在stm32板子上设置为四个相邻的GPIO口(如果电机抖动,有一个指示灯不亮的话就试试这个吧!)

 采用的是stm32f103c8t6的板子,其实验结果如下:

本来想放视频,但还是新手不知道怎么操作就先放图片吧,下边图中电机其实是在转动的。 

 好了,这篇博文可能也没有很详细,最近也再搞这个,之后应该还会发类似相关的博文,大家看了之后如果有什么错误的或自己有更好理解的欢迎大家在下边评论分享,接受大家的批评指正~~

有关STM32驱动28BYJ-48步进电机的更多相关文章

  1. ruby-on-rails - 如何在 Ruby on Rails 中实现由 JSF 2.0 (Primefaces) 驱动的 UI 魔法 - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。问题1)我想知道ruby​​onrails是否有功能类似于primefaces的gem。我问的原因是如果您使用primefaces(http://www.primefaces.org/showcase-labs/ui/home.jsf),开发人员无需担心javascript或jquery的东西。据我所知,JSF是一个规范,基于规范的各种可用实现,prim

  2. FOHEART H1数据手套驱动Optitrack光学动捕双手运动(Unity3D) - 2

    本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01  客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02  数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit

  3. STM32读取串口传感器数据(颗粒物传感器,主动上传) - 2

    文章目录1.开发板选择*用到的资源2.串口通信(个人理解)3.代码分析(注释比较详细)1.主函数2.串口1配置3.串口2配置以及中断函数4.注意问题5.源码链接1.开发板选择我用的是STM32F103RCT6的板子,不过代码大概在F103系列的板子上都可以运行,我试过在野火103的霸道板上也可以,主要看一下串口对应的引脚一不一样就行了,不一样的就更改一下。*用到的资源keil5软件这里用到了两个串口资源,采集数据一个,串口通信一个,板子对应引脚如下:串口1,TX:PA9,RX:PA10串口2,TX:PA2,RX:PA32.串口通信(个人理解)我就从串口采集传感器数据这个过程说一下我自己的理解,

  4. STM32的HAL和LL库区别和性能对比 - 2

    LL库和HAL库简介LL:Low-Layer,底层库HAL:HardwareAbstractionLayer,硬件抽象层库LL库和hal库对比,很精简,这实际上是一个精简的库。LL库的配置选择如下:在STM32CUBEMX中,点击菜单的“ProjectManager”–>“AdvancedSettings”,在下面的界面中选择“AdvancedSettings”,然后在每个模块后面选择使用的库总结:1、如果使用的MCU是小容量的,那么STM32CubeLL将是最佳选择;2、如果结合可移植性和优化,使用STM32CubeHAL并使用特定的优化实现替换一些调用,可保持最大的可移植性。另外HAL和L

  5. ruby - 运行测试时静音 Chrome 驱动程序控制台输出 - 2

    我使用的是最新版本的Chrome(32.0.1700.107)和Chrome驱动程序(V2.8)。但是当我在Ruby中使用以下代码运行示例测试时:require'selenium-webdriver'WAIT=Selenium::WebDriver::Wait.new(timeout:100)$driver=Selenium::WebDriver.for:chrome$driver.manage.window.maximize$driver.navigate.to'https://www.google.co.in'defapps_hoverele_hover=$driver.find_

  6. node.js - 从未编写过任何自动化测试,我应该如何开始行为驱动开发? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。多年来,我一直在使用多种语言进行编程,并且认为自己总体上相当擅长。但是,我从未编写过任何自动化测试:没有单元测试,没有TDD,没有BDD,什么都没有。我已经尝试开始为我的项目编写适当的测试套件。我可以看到在进行任何更改后能够自动测试项目中所有代码的理论值(value)。我可以看到像RSpec和Mocha这样的测试框架应该如何使设置和运行所述测试变得相当容易

  7. ruby-on-rails - 在 Rails/Capybara/Poltergeist 规范中使用 url_for 将驱动程序发送到 example.com 而不是应用程序 - 2

    如果我在功能规范中调用url_for,它会返回一个以http://www.example.com/开头的绝对URL.Capybara会很乐意尝试加载该站点上的页面,但这与我的应用程序无关。以下是重现该问题的最少步骤:从这个Gemfile开始:source'https://rubygems.org'gem"sqlite3"gem"jquery-rails"gem"draper"gem"rails",'4.1.0'gem"therubyracer"gem"uglifier"gem"rspec-rails"gem"capybara"gem"poltergeist"gem"launchy"运行

  8. 驱动开发:内核无痕隐藏自身分析 - 2

    在笔者前面有一篇文章《驱动开发:断链隐藏驱动程序自身》通过摘除驱动的链表实现了断链隐藏自身的目的,但此方法恢复时会触发PG会蓝屏,偶然间在网上找到了一个作者介绍的一种方法,觉得有必要详细分析一下他是如何实现的进程隐藏的,总体来说作者的思路是最终寻找到MiProcessLoaderEntry的入口地址,该函数的作用是将驱动信息加入链表和移除链表,运用这个函数即可动态处理驱动的添加和移除问题。MiProcessLoaderEntry(pDriverObject->DriverSection,1)添加MiProcessLoaderEntry(pDriverObject->DriverSection,

  9. ESP32学习入门:WiFi连接网络 - 2

    目录一、ESP32简单介绍二、ESP32Wi-Fi模块介绍三、ESP32Wi-Fi编程模型四、ESP32Wi-Fi事件处理流程 五、ESP32Wi-Fi开发环境六、ESP32Wi-Fi具体代码七、ESP32Wi-Fi代码解读6.1主程序app_main7.2自定义代码wifi_init_sta()八、ESP32Wi-Fi连接验证8.1测试方法8.2服务器模拟工具sscom58.3测试代码8.4测试结果前言为了开发一款亚马逊物联网产品,开始入手ESP32模块。为了能够记录自己的学习过程,特记录如下操作过程。一、ESP32简单介绍ESP32是一套Wi-Fi(2.4GHz)和蓝牙(4.2)双模解决方

  10. Spring Security 6.0系列【32】授权服务器篇之默认过滤器 - 2

    有道无术,术尚可求,有术无道,止于术。本系列SpringBoot版本3.0.4本系列SpringSecurity版本6.0.2本系列SpringAuthorizationServer版本1.0.2源码地址:https://gitee.com/pearl-organization/study-spring-security-demo文章目录前言1.OAuth2AuthorizationServerMetadataEndpointFilter2.OAuth2AuthorizationEndpointFilter3.OidcProviderConfigurationEndpointFilter4.N

随机推荐