ULN2003是常用的电机驱动板,这里分析关于这个模块的使用方法。

基本原理:

这里只利用前四个IN口,这4个口连接四相电机ABCD四相。

通过向这四个口输入高低平来实现对电机的控制:

正转

反转

单四拍

ABCDABCD

DCBADCBA

双四拍

AB-BC-CD-DA-BC-

DA-CD-BC-AB-DA-

八拍

A-AB-B-BC-C-

D-CD-C-BC-B-

代码实现:

I/O口设置:

uln2003.h:

#define Motor_IN1_Pin GPIO_PIN_11
#define Motor_IN1_Port GPIOA
#define Motor_IN2_Pin GPIO_PIN_12
#define Motor_IN2_Port GPIOA
#define Motor_IN3_Pin GPIO_PIN_13
#define Motor_IN3_Port GPIOB
#define Motor_IN4_Pin GPIO_PIN_14
#define Motor_IN4_Port GPIOB

uln2003.c:

#include"uln2003.h"
#include"gpio.h"
void uln2003_init()
{HAL_GPIO_WritePin(Motor_IN1_Port,Motor_IN1_Pin,0);HAL_GPIO_WritePin(Motor_IN2_Port,Motor_IN2_Pin,0);HAL_GPIO_WritePin(Motor_IN3_Port,Motor_IN3_Pin,0);HAL_GPIO_WritePin(Motor_IN4_Port,Motor_IN4_Pin,0);
}
void MotorPos_s4() //单四拍正转
{uln2003_init();HAL_GPIO_WritePin(Motor_IN1_Port,Motor_IN1_Pin,1);HAL_GPIO_WritePin(Motor_IN4_Port,Motor_IN4_Pin,0);delay_us(10000);HAL_GPIO_WritePin(Motor_IN1_Port,Motor_IN1_Pin,0);HAL_GPIO_WritePin(Motor_IN2_Port,Motor_IN2_Pin,1);delay_us(10000);HAL_GPIO_WritePin(Motor_IN2_Port,Motor_IN2_Pin,0);HAL_GPIO_WritePin(Motor_IN3_Port,Motor_IN3_Pin,1);delay_us(10000);HAL_GPIO_WritePin(Motor_IN3_Port,Motor_IN3_Pin,0);HAL_GPIO_WritePin(Motor_IN4_Port,Motor_IN4_Pin,1);delay_us(10000);}
void MotorNeg_s4() //单四拍反转
{uln2003_init();HAL_GPIO_WritePin(Motor_IN4_Port,Motor_IN4_Pin,1);HAL_GPIO_WritePin(Motor_IN1_Port,Motor_IN1_Pin,0);delay_us(10000);HAL_GPIO_WritePin(Motor_IN4_Port,Motor_IN4_Pin,0);HAL_GPIO_WritePin(Motor_IN3_Port,Motor_IN3_Pin,1);delay_us(10000);HAL_GPIO_WritePin(Motor_IN3_Port,Motor_IN3_Pin,0);HAL_GPIO_WritePin(Motor_IN2_Port,Motor_IN2_Pin,1);delay_us(10000);HAL_GPIO_WritePin(Motor_IN2_Port,Motor_IN2_Pin,0);HAL_GPIO_WritePin(Motor_IN1_Port,Motor_IN1_Pin,1);delay_us(10000);
}
void MotorPos_d4() //双四拍正转
{uln2003_init();HAL_GPIO_WritePin(Motor_IN2_Port,Motor_IN2_Pin,1);HAL_GPIO_WritePin(Motor_IN4_Port,Motor_IN4_Pin,0);delay_us(10000);HAL_GPIO_WritePin(Motor_IN1_Port,Motor_IN1_Pin,0);HAL_GPIO_WritePin(Motor_IN3_Port,Motor_IN3_Pin,1);delay_us(10000);HAL_GPIO_WritePin(Motor_IN2_Port,Motor_IN2_Pin,0);HAL_GPIO_WritePin(Motor_IN4_Port,Motor_IN4_Pin,1);delay_us(10000);HAL_GPIO_WritePin(Motor_IN1_Port,Motor_IN1_Pin,1);HAL_GPIO_WritePin(Motor_IN3_Port,Motor_IN3_Pin,0);delay_us(10000);
}
void MotorNeg_d4() //双四拍反转
{uln2003_init();HAL_GPIO_WritePin(Motor_IN1_Port,Motor_IN1_Pin,1);HAL_GPIO_WritePin(Motor_IN3_Port,Motor_IN3_Pin,0);delay_us(10000);HAL_GPIO_WritePin(Motor_IN2_Port,Motor_IN2_Pin,0);HAL_GPIO_WritePin(Motor_IN4_Port,Motor_IN4_Pin,1);delay_us(10000);HAL_GPIO_WritePin(Motor_IN1_Port,Motor_IN1_Pin,0);HAL_GPIO_WritePin(Motor_IN3_Port,Motor_IN3_Pin,1);delay_us(10000);HAL_GPIO_WritePin(Motor_IN2_Port,Motor_IN2_Pin,1);HAL_GPIO_WritePin(Motor_IN4_Port,Motor_IN4_Pin,0);delay_us(10000);
}
void MotorPos_8() //八拍正转
{uln2003_init();HAL_GPIO_WritePin(Motor_IN4_Port,Motor_IN4_Pin,0);delay_us(10000);HAL_GPIO_WritePin(Motor_IN2_Port,Motor_IN2_Pin,1);delay_us(10000);HAL_GPIO_WritePin(Motor_IN1_Port,Motor_IN1_Pin,0);delay_us(10000);HAL_GPIO_WritePin(Motor_IN3_Port,Motor_IN3_Pin,1);delay_us(10000);HAL_GPIO_WritePin(Motor_IN2_Port,Motor_IN2_Pin,0);delay_us(10000);HAL_GPIO_WritePin(Motor_IN4_Port,Motor_IN4_Pin,1);delay_us(10000);HAL_GPIO_WritePin(Motor_IN3_Port,Motor_IN3_Pin,0);delay_us(10000);HAL_GPIO_WritePin(Motor_IN1_Port,Motor_IN1_Pin,1);delay_us(10000);}
void MotorNeg_8() //八拍反转
{uln2003_init();HAL_GPIO_WritePin(Motor_IN2_Port,Motor_IN2_Pin,0);delay_us(10000);HAL_GPIO_WritePin(Motor_IN4_Port,Motor_IN4_Pin,1);delay_us(10000);HAL_GPIO_WritePin(Motor_IN1_Port,Motor_IN1_Pin,0);delay_us(10000);HAL_GPIO_WritePin(Motor_IN3_Port,Motor_IN3_Pin,1);delay_us(10000);HAL_GPIO_WritePin(Motor_IN4_Port,Motor_IN4_Pin,0);delay_us(10000);HAL_GPIO_WritePin(Motor_IN2_Port,Motor_IN2_Pin,1);delay_us(10000);HAL_GPIO_WritePin(Motor_IN3_Port,Motor_IN3_Pin,0);delay_us(10000);HAL_GPIO_WritePin(Motor_IN1_Port,Motor_IN1_Pin,1);delay_us(10000);}

实验结果:

转得很慢,但扭矩很大。

STM32 四相电机驱动板ULN2003 驱动相关推荐

  1. STM32+ULN2003驱动步进电机

    选用的步进电机的型号为28BYJ-48(或MP28GA,5V,转速比1/64),驱动电路选用uln2003芯片的驱动板,其控制时序图如下: 四相八拍:A->AB->B ->BC -& ...

  2. STM32控制ULN2003驱动步进电机28BYJ-48

    步进电机 步进电动机又称脉冲电动机,是一种将电脉冲信号转换成相应角位移或线位移的电动机.每输入一个脉冲信号,转子就转动一个角度或前进一步,其输出的角位移或线位移与输入的脉冲数成正比,转速与脉冲频率成正 ...

  3. 大功率H桥电机驱动板电路设计方案 此大功率直流电机驱动板采用ir2103驱动芯片,可同时驱动两路电机

    大功率H桥电机驱动板电路设计方案 此大功率直流电机驱动板采用ir2103驱动芯片,可同时驱动两路电机,使用10m高速光耦对控制信号进行隔离,最大额定电流可达100A,方案包括:硬件原理图,PCB(可直 ...

  4. ir2104s的自举电容_电赛必备,IR2104S半桥驱动MOS管电机驱动板(PCB工程文件+磁悬浮代码)...

    IR2104S半桥驱动MOS管电机驱动板设计心得: (1)驱动电路方案为经典的半桥驱动IR2104S加N沟道MOS管IR7843,MOSEFT内部有续流二极管,听说是寄生的(不知对不对),所以外加了肖 ...

  5. STM32 BLDC电机驱动开发板资料 反电动势B-EMF过零检测

    STM32 BLDC电机驱动开发板资料 反电动势B-EMF过零检测 华愉电子工作室

  6. 龙芯智龙开发板:驱动步进电机实战入门

    本文面向初学者,请多各位高手包涵.我在此特别致谢勤为本先生为我提供的帮助. 步进电机 步进电机就是一种受脉冲控制的电机,步进电机接收到一系列某种调制顺序的脉冲,做出相应的反应,转到相应的角度或者相应的 ...

  7. 关于并口控制实验中用到的接口板及驱动板

    关于并口控制实验中用到的接口板及驱动板 之前一直没有把我自己实验中用的接口板及驱动板详细写出来,今天将这部分内容给补上. 我自己也是找了挺久才找到这款性价比高而且较为合适的接口板和驱动板.用以前那种小 ...

  8. 用 8550 和 ULN2003 驱动小型直流电机正反转

    51 单片机的输出能力有限,带动一两个 LED 还是可以的,带动电动机.继电器等等,就难以承担了. 一般来说,常用的扩充 51 单片机带负载能力的芯片有:75452.MC1413.ULN2003 系列 ...

  9. Proteus STM32仿真学习板

    一 全球IC爆冷,价格猛涨,ST系列单片机更是一马当先,贵到你怀疑人生.这个时候想学习STM32的基础去购买开发板是很不划算的,而且用完就搁置了,吃灰到永远,能半价甩卖就已经很好了. 为了让大家方便快 ...

  10. 21、ESP12E Motor Shield 电机驱动板使用

    目录 1.简介 2.使用例子 3.资源下载 4.参考 正文 前篇介绍了L298N电机驱动板的使用,本篇我们就来使用另外一款电机驱动板ESP12E Motor Shield. 1.简介 ESP12E M ...

最新文章

  1. JAVA单向/双向链表的实现
  2. 将单链表的每K个节点之间逆序
  3. 服务器选型:怎样的一款服务器产品才算是优秀的
  4. 列出本机安装的所有硬件设备
  5. java线程知识梳理_Java多线程——多线程相关知识的逻辑关系梳理
  6. 解决import tensorflow时的报错 Passing (type, 1) or ‘1type‘ as a synonym of type is deprecate
  7. [省选联考 2020 A/B 卷] 冰火战士(树状数组上二分)
  8. 如何在博客内添加音乐
  9. Java中实现连接数据库并进行查询
  10. TensorBoard 使用案例
  11. [转]IDE 、SATA、SCSI 的区别
  12. c莫比乌斯函数_莫比乌斯函数
  13. 论文笔记之Understanding and Diagnosing Visual Tracking Systems
  14. 从一个置顶CPT广告学习计算广告设计要点
  15. python 实现证件照换底
  16. Linux基本命令---2
  17. 怎样在 Linux 命令行中切换用户
  18. Android音频子系统(十五)------Audio调试经验
  19. 2023 年值得关注的十大人工智能趋势,还不快码住来看!
  20. Docker IP forward问题

热门文章

  1. 如何制作Android语音机器人
  2. Cesium基础知识-创建3D地球
  3. Linux磁盘管理之GPT分区,磁盘管理之MBR与GPT分区
  4. 移植安卓系统到树莓派开发板
  5. WIFI-WPA破解
  6. java 二元一次方程式_JAVA求解一元一次二次方程
  7. 闭环系统零、极点位置对时间响应性能指标的影响
  8. matlab中rand函数
  9. 台式机+笔记本的扩展模式+远程登录设置
  10. Vivado2018【编辑器设置黑色背景】