【HaaS Python硬件积木】ULN2003A步进电机驱动
一、产品简介
ULN2003A,是一种高压大电流的共发射极达林顿晶体管数组集成电路,内含7组达林顿对管,每组对管的电流容量是500mA,输出的电压最高50V。该集成电路还集成了7只共阴极形式连接的续流二极管,用于电感性负载的开关动作的电流续流,本驱动是通过ULN2003A控制5线4相步进电机。
引脚定义
- VCC: 5-12V
- IN1: host GPIO
- IN2: host GPIO
- IN3: host GPIO
- IN4: host GPIO
- GND: GND
二、技术参数
- 钳位二极管输出
- 高电压输出:50V
- 可兼容各类逻辑的输入
三、软件接口
ULN2003A步进电机驱动HaaS Python驱动:下载地址
ULN2003(A, A_, B, B_) - 创建ULN2003驱动对象
- 函数原型:
motorObj = ULN2003(a, a_, b, b_)
- 参数说明:
参数 | 类型 | 必选参数? | 说明 |
a | GPIO | 是 | 调用此函数前需确保a对象已经处于open状态 |
a_ | GPIO | 是 | 调用此函数前需确保a_对象已经处于open状态 |
b | GPIO | 是 | 调用此函数前需确保b对象已经处于open状态 |
b_ | GPIO | 是 | 调用此函数前需确保b_对象已经处于open状态 |
- 返回值: 创建对象成功,返回ULN2003对象;ULN2003A对象创建失败,抛出Exception
- 示例代码:
from uln2003 import * # ULN2003驱动库 A = GPIO() A.open("uln2003_a") A_ = GPIO() A_.open("uln2003_a_") B = GPIO() B.open("uln2003_b") B_ = GPIO() B_.open("uln2003_b_") motorDev = ULN2003(A, A_, B, B_)
- 输出: 无
motorCw(speed) - 步进电机正向旋转
- 函数功能: 驱动步进电机正向旋转
- 函数原型:
ULN2003.motorCw(speed=4)
- 参数说明: speed: 单位ms,步进电机旋转速度,speed越小,速度越快
- 返回值: 无
motorCcw(speed) - 步进电机反向旋转
- 函数功能: 驱动步进电机反向旋转
- 函数原型:
ULN2003.motorCcw(speed=4)
- 参数说明: speed: 单位ms,步进电机旋转速度,speed越小,速度越快
- 返回值: 无
motorStop() - 停止步进电机旋转
- 函数功能: 停止步进电机旋转
- 函数原型:
ULN2003.motorStop()
- 参数说明: 无
- 返回值: 无
- 示例:
from uln2003 import * # MQ3温湿度传感器驱动库 A = GPIO() A.open("uln2003_a") A_ = GPIO() A_.open("uln2003_a_") B = GPIO() B.open("uln2003_b") B_ = GPIO() B_.open("uln2003_b_") motorDev = ULN2003(A, A_, B, B_) while 1:motorDev.motorCw()
- 输出: 无
四、接口案例
此使用实例在board.json中定义了名为uln2003的gpio数据类型,并控制步进电机正向旋转。
- 代码:
# board.json配置: {"name": "board-name","version": "1.0.0","io": {"uln2003_a": {"type": "GPIO","port": 19,"dir": "output","pull": "pullup"},"uln2003_a_": {"type": "GPIO","port": 27,"dir": "output","pull": "pullup"},"uln2003_b": {"type": "GPIO","port": 0,"dir": "output","pull": "pullup"},"uln2003_b_": {"type": "GPIO","port": 2,"dir": "output","pull": "pullup"}},"debugLevel": "ERROR","repl": "disable" }
# Python代码 print("Testing uln2003 ...") A = GPIO() A.open("uln2003_a") A_ = GPIO() A_.open("uln2003_a_") B = GPIO() B.open("uln2003_b") B_ = GPIO() B_.open("uln2003_b_") motorDev = ULN2003(A, A_, B, B_) while 1:motorDev.motorCw() A.close() A_.close() B.close() B_.close() del motorDev print("Test uln2003 done!")
- 输出: 无
五、通信协议
主控芯片通过GPIO控制步进电机的正转反转。
- 正转序列
序号 | 功能说明 | 命令字宏定义 |
1 | GPIO A 输出高电平 | CMD_PINA_OUT_HIGH |
2 | GPIO A_ 输出低电平 | CMD_PINA__OUT_LOW |
3 | GPIO B 输出低电平 | CMD_PINB_OUT_LOW |
4 | GPIO B_ 输出低电平 | CMD_PINB__OUT_LOW |
5 | delay xx ms | CMD_DELAY_XX_MS |
6 | GPIO A 输出低电平 | CMD_PINA_OUT_LOW |
7 | GPIO A_ 输出高电平 | CMD_PINA__OUT_HIGH |
8 | GPIO B 输出低电平 | CMD_PINB_OUT_LOW |
9 | GPIO B_ 输出低电平 | CMD_PINB__OUT_LOW |
10 | delay xx ms | CMD_DELAY_XX_MS |
11 | GPIO A 输出低电平 | CMD_PINA_OUT_LOW |
12 | GPIO A_ 输出低电平 | CMD_PINA__OUT_LOW |
13 | GPIO B 输出高电平 | CMD_PINB_OUT_HIGH |
14 | GPIO B_ 输出低电平 | CMD_PINB__OUT_LOW |
15 | delay xx ms | CMD_DELAY_XX_MS |
16 | GPIO A 输出低电平 | CMD_PINA_OUT_LOW |
17 | GPIO A_ 输出低电平 | CMD_PINA__OUT_LOW |
18 | GPIO B 输出低电平 | CMD_PINB_OUT_LOW |
19 | GPIO B_ 输出高电平 | CMD_PINB__OUT_HIGH |
20 | delay xx ms | CMD_DELAY_XX_MS |
- 反转序列
序号 | 功能说明 | 命令字宏定义 |
1 | GPIO A 输出低电平 | CMD_PINA_OUT_LOW |
2 | GPIO A_ 输出低电平 | CMD_PINA__OUT_LOW |
3 | GPIO B 输出低电平 | CMD_PINB_OUT_LOW |
4 | GPIO B_ 输出高电平 | CMD_PINB__OUT_HIGH |
5 | delay xx ms | CMD_DELAY_XX_MS |
6 | GPIO A 输出低电平 | CMD_PINA_OUT_LOW |
7 | GPIO A_ 输出低电平 | CMD_PINA__OUT_LOW |
8 | GPIO B 输出高电平 | CMD_PINB_OUT_HIGH |
9 | GPIO B_ 输出低电平 | CMD_PINB__OUT_LOW |
10 | delay xx ms | CMD_DELAY_XX_MS |
11 | GPIO A 输出低电平 | CMD_PINA_OUT_LOW |
12 | GPIO A_ 输出高电平 | CMD_PINA__OUT_HIGH |
13 | GPIO B 输出低电平 | CMD_PINB_OUT_HIGH |
14 | GPIO B_ 输出低电平 | CMD_PINB__OUT_LOW |
15 | delay xx ms | CMD_DELAY_XX_MS |
16 | GPIO A 输出高电平 | CMD_PINA_OUT_HIGH |
17 | GPIO A_ 输出低电平 | CMD_PINA__OUT_LOW |
18 | GPIO B 输出低电平 | CMD_PINB_OUT_LOW |
19 | GPIO B_ 输出低电平 | CMD_PINB__OUT_HIGH |
20 | delay xx ms | CMD_DELAY_XX_MS |
- 停止序列
序号 | 功能说明 | 命令字宏定义 |
1 | GPIO A 输出低电平 | CMD_PINA_OUT_LOW |
2 | GPIO A_ 输出低电平 | CMD_PINA__OUT_LOW |
3 | GPIO B 输出低电平 | CMD_PINB_OUT_LOW |
4 | GPIO B_ 输出低电平 | CMD_PINB__OUT_LOW |
- 控制电机流程 可以通过控制MCU的gpio 来输出正向旋转序列、反向旋转序列或停止序列来控制步进电机的正转、反转或者停止,并且可以通过控制正向序列或反向序列之间的延时间隔来控制步进电机的速度。
六、工作原理
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件, 通过GPIO控制脉冲变化从而触发磁场周期性变化,即可牵引转子周期性的变化,而ULN2003A能与TTL和CMOS电路直接相连,可以直接处理原先需要标准逻辑缓冲期来处理的数据。 如下是ULN2003内部的框图,1-7是ULN2003的输入段,经过达林顿管的电流放大,9-16进行输出。
参考文献及购买链接
[1] ULN2003A驱动器
[2] 购买链接
【HaaS Python硬件积木】ULN2003A步进电机驱动相关推荐
- 【HaaS Python 硬件积木】 BMP280气压传感器
来这里发现更多拿来即用的传感器 HaaS开发框架HaaS积木方案,赋能生态开发者,让您快速找到自己需要的解决方案,硬件主板与外设,以及各种应用组件.https://haas.iot.aliyun.co ...
- 【HaaS Python硬件积木】HCSR04超声波测距传感器
来这里发现更多拿来即用的传感器 HaaS开发框架HaaS积木方案,赋能生态开发者,让您快速找到自己需要的解决方案,硬件主板与外设,以及各种应用组件.https://haas.iot.aliyun.co ...
- 【HaaS Python硬件积木】土壤湿度传感器
来这里发现更多拿来即用的传感器 HaaS开发框架HaaS积木方案,赋能生态开发者,让您快速找到自己需要的解决方案,硬件主板与外设,以及各种应用组件.https://haas.iot.aliyun.co ...
- 【HaaS Python 硬件积木】INA219电压电流计
一.产品简介 INA219电压电流计可用于测量负载的电压.电流.功率等参数,可以用于服务器.电脑笔记本.电源.电池管理等电子电路设备提供电流电压值监测提供解决方案. 引脚定义 VCC:3.3V GND ...
- 【HaaS Python硬件积木】甲醛传感器
一.产品简介 甲醛(化学式HCHO或CH2O)是一种有特殊刺激气味的气体,对人的眼睛和鼻子有强烈的刺激作用.若空气中甲醛浓度过高,比如新装修的房子.新买的汽车等,可引起中毒反应,严重的可致癌.甲醛是空 ...
- 【HaaS Python硬件积木】水位监测传感器
一.产品简介 水位监测传感器主要用于测量水位深度的传感器,该传感器测量范围在0cm-4cm,通过使用一系列五个连接到系统接地的裸露走线来工作.在每两个接地迹线之间交错插入一个感测迹线,五个接地迹 ...
- 【HaaS Python 硬件积木】粉尘传感器
一.产品简介 GP2Y10粉尘传感器用于检测非常细的空气漂浮颗粒物,主要用于空气净化系统中,传感器外观引脚如下图所示. 引脚定义 GND:地 VCC:5V LED:输入信号 OUT:模拟信号输出 ...
- 【HaaS Python硬件积木】空气质量检测模块 - CCS811
空气质量检测模块 - CCS811 来这里发现更多拿来即用的硬件积木 https://haas.iot.aliyun.com/solution/detail/hardware 一.产品简介 通过CCS ...
- 【HaaS Python硬件积木】AS608指纹识别模块 打造指纹门禁 开门有手就行
一.产品简介 ATK-AS608指纹识别模块是ALIENTEK推出的一款高性能的光学指纹识别模块.它采用的是指纹识别芯片公司杭州晟元芯片技术有限公司生产的AS608指纹识别芯片.该芯片内置DSP运算单 ...
最新文章
- 在Sharepoint中批量删除大量条目
- kali linux状态栏显示网速
- JIRA中vm后缀文件语法说明
- 选择指定的MySQL数据库
- linux命令提示符不同,Linux命令提示符如何按照自己的习惯修改?
- simulink模块的输入端口与参数的关系
- if循环java语句_java-条件判断和循环语句
- payload sql注入_Web安全:SQL注入工具
- 2021年PTCMS4.3最新采集规则13条
- 商业虚拟专用网络技术一
- ESP8266-连接阿里云示例
- HTTP协议 (五) ---代理
- 车牌识别 php,智能车牌识别系统
- 自定义通用信号处理核心板CMB-2C6657-1K7
- 源码阅读工具 UnderStand
- Kali安装VirtualBox增强功能
- 判断三点顺序(顺时针或者逆时针)(模板)
- 共享办公室成为共享经济发展大趋势
- MFC之学习绘制椭圆、库画刷使用
- 正弦稳态电路的LC串并联谐振