STM32103驱动28BYJ48步进电机
电路接法
步进电机需要的驱动电流很大,因此直接使用单片机往往管脚电流不够,加上一般3.3V的单片机也无法驱动5V的步进电机,因此需要电路转换。
常用的ULN2003芯片驱动步进电机。ULN2003就是起到了电流放大作用,也使得驱动电压变成了5V。除了用ULN2003也可以自己用三极管搭建电路,原理与ULN2003内部结构类似。
了解相序
也就是步进电机要运转时,如何给脉冲,让电机连续运动。
ps:如果给错脉冲可能左转几下又转回来。下图就是小编电机的相序。
软件的实现 使用STM32F103控制电机
下面是正转翻转的编码 根据技术要求。如图用的单双八拍。
unsigned char F_Rotation[8]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09} ; //FAN
unsigned char B_Rotation[8]={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08} ; //ZHENG
此函数两个参数,第一个参数是圈数。第二个参数是方向也就是选择正转和翻转
void motorNCircle(int n,bool position)
{
int i=0;
int j=0;
int k=0;
for(j=0;j<n;j++)
{
for(i=0;i<64*8;i++)
{
for(k=0;k<8;k++)
{
if(TRUE == position)
SetMotor(F_Rotation[k]);
else
SetMotor(B_Rotation[k]);
Delay(20000);
}
}
}
}
下面就是SetMotor函数,根据传的数据不同,控制的4个IO pin输出不同。
void SetMotor(unsigned char InputData)
{
if(InputData & 0x08)
{
GPIO_ResetBits(GPIOC, GPIO_Pin_6 );
}
else
{
GPIO_SetBits(GPIOC, GPIO_Pin_6);
}
if(InputData & 0x04)
{
GPIO_ResetBits(GPIOC, GPIO_Pin_7 );
}
else
{
GPIO_SetBits(GPIOC, GPIO_Pin_7);
}
if(InputData & 0x02)
{
GPIO_ResetBits(GPIOC, GPIO_Pin_8 );
}
else
{
GPIO_SetBits(GPIOC, GPIO_Pin_8);
}
if(InputData & 0x01)
{
GPIO_ResetBits(GPIOC, GPIO_Pin_9 );
}
else
{
GPIO_SetBits(GPIOC, GPIO_Pin_9);
}
}
如何计算
以28BYJ-48为例,根据技术资料,步距的角度为5.625-64 而且带有减速齿轮是1:64 因此转64乘64个脉冲才是1圈。 因此一个脉冲转过5.625除64=0.08789度。
所以有了下面的循环。
for(j=0;j<n;j++)
{
for(i=0;i<64*8;i++) //64*8
{
for(k=0;k<8;k++) //4相单双8拍
{
if(TRUE == position)
SetMotor(F_Rotation[k]);
else
SetMotor(B_Rotation[k]);
Delay(20000); //注意这个延时自己去调节。
}
}
STM32103驱动28BYJ48步进电机相关推荐
- Arduino 调用Stepper库驱动28BYJ-48步进电机,电机振动不转、无法反方向转的解决办法
电机堵转 首先检查杜邦线是否正常联通,如GND线接触不良,电机也会导通,但无法正常工作. 检查Arduino和驱动板接线是否正确,正确硬件接线如下图,即板子IO 8.9.10.11分别对应 驱动IN ...
- python控制步进电机_MicroPython TPYBoard v102 驱动28BYJ-48步进电机
TPYBoard v102 驱动28BYJ-48步进电机 实验目的 了解步进电机的工作原理 学习步进电机的驱动方法 实验器材 TPYBoard v102 1块 微型步进电机(28BYJ-48) 1个 ...
- 解决ESP32 驱动 28BYJ-48 步进电机反向不转之震动的问题
解决ESP32 驱动 28BYJ-48 步进电机反向不转之震动的问题 date: 2021-09-19 lastmod: 2021-09-19 问题描述 Esp 32 在 mqtt 消息下通过 Ste ...
- 使用 ULN2003 驱动 28BYJ-48 步进电机
使用 ULN2003 驱动 28BYJ-48 步进电机. 要用一个步进电机测试东西,不过需求来的比较突然手边也没有像是A4988或TMC2209这种硬件驱动,于是就用别人的ULN2003驱动和28BY ...
- Ardunio使用ULN2003驱动28BYJ-48步进电机
Ardunio使用ULN2003驱动28BYJ-48步进电机 28BYJ-48步进电机内部原理图 实物图 相关参数 28BYJ-48步进电机步进电机最高也就 能收1000hz脉冲,再快就堵转了,根据参 ...
- TPYBoard v102 驱动28BYJ-48步进电机
为什么80%的码农都做不了架构师?>>> TPYBoard v102 驱动28BYJ-48步进电机 实验目的 了解步进电机的工作原理 学习步进电机的驱动方法 实验器材 TPYBoar ...
- [ 电子]STM32驱动28BYJ-48步进电机实现外网控制
新人博主Github==>https://github.com/MartinxMax 这个项目能做什么? 用到了哪些编程语言? 需要什么硬件? 硬件接线 配置SIM900A STM32 C语言代 ...
- 【常用芯片】ULN2003工作原理及中文资料(实例:STM32驱动28BYJ48步进电机)
ULN2003的基本介绍 ULN2003的概述 ULN2003是高耐压.大电流复合晶体管阵列,由七个硅NPN 复合晶体管组成.一般采用DIP-16 或SOP-16 塑料封装. ULN2003的主要特点 ...
- 使用ULN2803驱动28BYJ-48步进电机
uln2803则是解决驱动问题,单片机达不到驱动电流,使用也很方便,1-8引脚是输入,9接地,10接VCC,11到18输出,输入高电平,输出低电平,输出高,则无法驱动电机,这里的电机正极接电源,负极接 ...
最新文章
- 使用pinchzoom实现头像剪裁
- Python自定义:粒子群优化算法
- 基于区块链的健康链系统设计与实现(3)系统设计
- 人群频率 | gnomAD数据库 (二) 后台数据的获取及质量评估
- 浏览器通知,可配合socket
- 文本分类(一)封装分词器
- android 中xml解析方式
- SQL SERVER 数据库概括
- java 自定义表单 动态表单 表单设计器 工作流引擎 flowable 设计方案
- GHOST备份还原系统教程
- 显示Java国家列表
- 2018入门微单相机推荐
- 这么多大学,保证一志愿优先录取!
- 2020第六届“美亚杯”团队赛WP
- 怎样购买笔记本电脑-世界十大品牌
- VxWorks中文FAQ
- biopython:2:序列组成
- mac程序进程无法退出,强制退出后有重启了,怎么彻底解决?
- IMSI,SN,IMEI分别是什么意思
- 计算机字长通常不可能,计算机的字长通常不可能为( )位。
热门文章
- 关于坐标系和投影的相关知识探讨
- 计算机休眠会断电吗,电脑休眠后到底可不可以切断电源!!是还是不是啊??
- 纪中20日c组模拟赛T1 2121. 简单游戏
- 我是没有口袋的哆啦a梦
- swak4foam的安装(v7测试有效)
- JAVA学习内容汇总(一)
- Objective-C基础教程读书笔记(3)
- ironpython 使用-IronPython
- 游戏音效分类以及运用场景
- ROS+UR机械臂+Moveit+ 仿真与实体机械臂的使用+realsense相机+eye_handeye手眼标定(亲测有效)下