收藏本站| 采购流程| 网站地图

博厚-中国,欢迎光临博厚电机官方网站!

东莞市博厚电机有限公司

博厚电机(BH MOTOR)微特电机及解决方案供应商

博厚电机微信
深耕电机行业领域万千客户信赖之选 13829170860
博厚电机资讯

ULN2003 驱动 28BYJ-48 步进电机

作者: 编辑: 来源: 发布日期: 2023.05.12
信息摘要:
使用ULN2003驱动28BYJ-48步进电机。要用一个步进电机测试东西,不过需求来的比较突然手边也没有像是A4988或TMC2209这种硬…
使用 ULN2003 驱动 28BYJ-48 步进电机。
要用一个步进电机测试东西,不过需求来的比较突然手边也没有像是A4988或TMC2209这种硬件驱动,于是就用别人的ULN2003驱动和28BYJ-48步进电机来做如何驱动步进电机。
基本概念
步进电机:将输入的脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度。
可以通过控制脉冲频率,来控制电机转动的速度和加速度。
从这个电机的名字入手28BYJ-48: 28表示电机直径28mm,B代表步进电机,Y代表永磁式步进电机PM,J代表减速型电机带减速箱,48表示四相八拍。

24BYJ48
转子:最中间标注为0~5的六个齿。顾名思义,它是要转动的。转子的每个齿上都带有永久的磁性,是一块永磁体,这就是永磁式。
定子:外圈的8个齿。它是保持不动的,跟电机的外壳固定在一起。每个齿上都缠上了一个线圈绕组,正对着的2个齿上的绕组又是串联在一起的,也就是说正对着的2个绕组总是会同时导通或关断的,如此就形成了4相,即图中标注的ABCD,相对的2个齿是1相。四项五线多吃来那条线是电源线。
拍数:完成一个磁场周期性变化所需脉冲数。一拍就是一个脉冲信号。
以四相电机为例,四相四拍为 AB-BC-CD-DA(-AB…), 四相八拍为 A-AB-B-BC-C-CD-D-DA(-A…)
步距角(步进角):每接收到一个脉冲信号步进电机转动的角度。
步距角 = 360° / (定子齿数 * 运行拍数)
以八拍运行为例,电机主轴的步距角度为: 360/(8*8)=5.625。再除以减速比64,得到输出轴的步距角5.625/64=0.087890625。八拍运行俗称半步,对应四拍运行则为整步。
查到步距角参数,也可以反推需要360/5.625=64个脉冲信号转子才会转动1圈,(因为带减速箱结构所以需要再乘上减速比)64*64=4096个脉冲信号电机主轴才会转1圈。
齿轮减速比:这款为1:64。即内部转子转动64圈,外部输出主轴才转动1圈。于是就是需要64×64=4096个拍数才会让输出轴转过1圈。
空载启动频率:这款步进电机是550P.P.S。即每秒最多给出550个步进脉冲数才可以正常启动,需要单个节拍持续时间(或节拍的刷新时间)至少为1/550=1.8ms
当脉冲频率高于启动频率,电机不能正常启动,可能发生丢步或堵转。在有负载的情况下,启动频率应更低。
如果要使电机达到高速转动,脉冲频率应该有加速过程,即启动频率较低,然后按一定加速度升到所希望的高频(电机转速从低速升到高速)
保持转矩:步进电机通电但没有转动时,定子锁住转子的力矩。通常步进电机在低速时的力矩接近保持转矩。
细分(角度细分):一般由硬件驱动器完成。如果主轴转1圈需要200个脉冲,那么2细分就是转1圈需要400个脉冲。细分是通过影响电机的步距角来影响转角和转速。
了解完了基本信息和原理之后
可以得出转动一个角度的公式
转动角度所需输出步数 = (角度 * 减速比) * (定子齿数 * 运行拍数) / 360°
转速的公式
转速(转/秒) = 脉冲频率(HZ) / (360 / 步距角 * 细分倍数)
例如设置PWM波的频率为1kHz(1秒1000个脉冲),42步进电机的步距角是1.8°,在没有细分的情况下,转速为1000/(360/1.8*1)=5rad/s,即5*60=300rpm
八拍模式是这类4相步进电机的最佳工作模式。八拍相较于四拍除了能使转动精度增加一倍,也能增加电机的整体扭力输出。
除了单四拍和八拍的工作模式外,还有双四拍(双绕组通电四节拍)。双四拍步进角度同单四拍是一样的,但由于它是两个绕组同时导通,所以扭矩会比单四拍模式大。
28BYJ-48的减速比精度问题
然而实际数一下每个齿轮的齿数,然后将各级减速比相乘,算出的真实的减速比应该为 (32/9)(22/11)(26/9)(31/10)≈63.683950617 并非1:64整。
按真实减速比计算,需要64x63.68...≈4075.7拍主轴才会完整转过一圈。要是按1:64错误地计算那么每转过100.5圈就会使主轴差出来半圈。
后来查了下在实际应用中, 28BYJ-48最初的设计目的是用来控制空调的扇叶的,转动的角度也小于180度,也就不需要很高的精度。
代码
/********************************** DEFINE **********************************/
#define MOTOR_PORT GPIOA
#define MOTOR_IN1 GPIO_PIN_4
#define MOTOR_IN2 GPIO_PIN_5
#define MOTOR_IN3 GPIO_PIN_6
#define MOTOR_IN4 GPIO_PIN_7

#define IN1_HIGH HAL_GPIO_WritePin(MOTOR_PORT, MOTOR_IN1, GPIO_PIN_SET);
#define IN1_LOW HAL_GPIO_WritePin(MOTOR_PORT, MOTOR_IN1, GPIO_PIN_RESET);
#define IN2_HIGH HAL_GPIO_WritePin(MOTOR_PORT, MOTOR_IN2, GPIO_PIN_SET);
#define IN2_LOW HAL_GPIO_WritePin(MOTOR_PORT, MOTOR_IN2, GPIO_PIN_RESET);
#define IN3_HIGH HAL_GPIO_WritePin(MOTOR_PORT, MOTOR_IN3, GPIO_PIN_SET);
#define IN3_LOW HAL_GPIO_WritePin(MOTOR_PORT, MOTOR_IN3, GPIO_PIN_RESET);
#define IN4_HIGH HAL_GPIO_WritePin(MOTOR_PORT, MOTOR_IN4, GPIO_PIN_SET);
#define IN4_LOW HAL_GPIO_WritePin(MOTOR_PORT, MOTOR_IN4, GPIO_PIN_RESET);

/******************************** FUNCTION ********************************/
/*
 * @function:   八拍驱动
 * @notion:     28BYJ-48步进电机delay最小为2ms
 */
static void Phase8_Single(uint8_t step, uint8_t delay)
{
    switch (step) {
case 0: IN1_LOW;IN2_HIGH; IN3_HIGH; IN4_HIGH; break;
case 1: IN1_LOW; IN2_LOW; IN3_HIGH; IN4_HIGH; break;
case 2: IN1_HIGH; IN2_LOW; IN3_HIGH; IN4_HIGH; break;
case 3: IN1_HIGH; IN2_LOW; IN3_LOW; IN4_HIGH; break;
case 4: IN1_HIGH; IN2_HIGH; IN3_LOW; IN4_HIGH; break;
case 5: IN1_HIGH; IN2_HIGH; IN3_LOW; IN4_LOW; break;
case 6: IN1_HIGH; IN2_HIGH; IN3_HIGH; IN4_LOW; break;
case 7: IN1_LOW; IN2_HIGH; IN3_HIGH; IN4_LOW; break;
default : break;
}
HAL_Delay(delay);
}

/*
 * @function:   转动指定角度
 * @param: dir: 0为正转 1为反转
 * @notion:     28BYJ-48步进电机delay最小为2ms
 */
void SteppingMotor_TurnAngle(float angle, uint8_t delay)
{
// 转动角度所需输出步数 = (角度 * 减速比) * (定子齿数 * 运行拍数) / 360°
// float tmp = angle * 4096.0f / 360.0f; // 减速比1:64
float tmp = fabsf(angle) * 283712.0f / 4455.0f * 8.0f / 45.0f; // 减速比1:63.684
uint16_t steps = (uint16_t)tmp;

if (angle > 0) {
for (uint16_t i = steps; i > 0; i -- ) {
Phase8_Single(i % 8, delay);
}
} else {
for (uint16_t i = steps; i > 0; i -- ) {
Phase8_Single(abs(i % 8 - 7), delay);
}
}
}
_Single(i % 8, delay);
}
} else {
for (uint16_t i = steps; i > 0; i – ) {
Phase8_Single(abs(i % 8 - 7), delay);
}
}

}

24BYJ48步进电机可在线咨询索样!

【相关推荐】
博厚推荐资讯
博厚电机2023年7~9月生日会

博厚电机2023年7~9月生日会

这次生日会的主题以团队合作,在吃喝玩乐欢声笑语中度过。本次季度生日会流程安排如下:生日会准备了水果、甜品、蛋挞、糕点、糖果和饮品。在游戏活动中参与活动都可以活动参与奖和胜利奖,人人有份,中奖礼品有油、酱油洗衣液、雨伞、牙膏、泡面、纸巾、软面包、巧克力等均为生活必需品和日用品美食等。套圈活动在这......
2023-09-25
摇摆工矿灯用的减速电机

摇摆工矿灯用的减速电机

工矿灯旋转电机可采用35BYJ46四相八拍减速电机驱动,其核心特点有:1.长寿命,电机的寿命不低于1万小时,可长时间运转的步进电机。2.耐高温,电机内置油可在-40°C至140°C的温度内正常运转,磁环不退磁。长时间运转外部温升控制在70°C~80°C。3.抗干扰,电机不受电压电流大小或波形温度进行改变步距角,不受各种干扰因素影响丢步。由驱动板控制电机运转。断电止锁,止锁力与最大扭力相同。4.低噪音,电机运转声音低至40分贝以内,扭力小的情况下噪音更低,以实际测试和调整参数匹配。
2023-08-21
煤气蝶阀可以用那些电机驱动

煤气蝶阀可以用那些电机驱动

一、煤气蝶阀常见电机类型煤气蝶阀常见的电机类型主要有以下三种:1.直流电机:直流电机作为一种简单实用的电机,在很多工业领域中都有广泛应用。它的主要特点是结构简单、启停响应较快,能够精准控制转速和转向,并且具有较低的成本和高效率等优点。煤气蝶阀所选用的直流电机通常采用无刷电机,具有寿命长、转矩大、......
2023-08-19

咨询热线

13829170860

联系方式

  • 东莞市博厚电机有限公司  版权所有
  • 地址:东莞市松山湖高新区中科创新广场A栋4层
    工厂地址: 东莞市横沥镇长田路16号长田工业园1栋
  • 全国服务热线:13829170860  传真:(0769) 8218 1380
  • 总机:0769-82181380  QQ :1057079527
  • 邮箱:Boshun8@solenoid-bs.com

二维码

  • 博厚电机微信微信在线咨询