【HaaS Python硬件积木】ULN2003A步进电机驱动

简介: 【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] 购买链接

————————————————

版权声明:本文为CSDN博主「HaaS技术社区」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/HaaSTech/article/details/124768438

相关文章
|
1月前
|
机器学习/深度学习 数据挖掘 TensorFlow
解锁Python数据分析新技能,TensorFlow&PyTorch双引擎驱动深度学习实战盛宴
在数据驱动时代,Python凭借简洁的语法和强大的库支持,成为数据分析与机器学习的首选语言。Pandas和NumPy是Python数据分析的基础,前者提供高效的数据处理工具,后者则支持科学计算。TensorFlow与PyTorch作为深度学习领域的两大框架,助力数据科学家构建复杂神经网络,挖掘数据深层价值。通过Python打下的坚实基础,结合TensorFlow和PyTorch的强大功能,我们能在数据科学领域探索无限可能,解决复杂问题并推动科研进步。
51 0
|
3月前
|
机器学习/深度学习 数据挖掘 TensorFlow
解锁Python数据分析新技能,TensorFlow&PyTorch双引擎驱动深度学习实战盛宴
【7月更文挑战第31天】在数据驱动时代,Python凭借其简洁性与强大的库支持,成为数据分析与机器学习的首选语言。**数据分析基础**从Pandas和NumPy开始,Pandas简化了数据处理和清洗,NumPy支持高效的数学运算。例如,加载并清洗CSV数据、计算总销售额等。
55 2
|
3月前
|
机器学习/深度学习 人工智能 数据挖掘
Numba是一个Python库,用于对Python代码进行即时(JIT)编译,以便在硬件上高效执行。
Numba是一个Python库,用于对Python代码进行即时(JIT)编译,以便在硬件上高效执行。
|
3月前
|
监控 网络协议 安全
由于楼层自动化系统的复杂性和多样性,很难给出一个通用的Python代码示例,因为每个系统可能使用不同的硬件、通信协议和软件接口。
由于楼层自动化系统的复杂性和多样性,很难给出一个通用的Python代码示例,因为每个系统可能使用不同的硬件、通信协议和软件接口。
|
3月前
|
数据挖掘 数据处理 决策智能
Python 数据分析工具箱:深挖 Pandas 与 NumPy 高级功能,驱动智能决策
【7月更文挑战第12天】Python的Pandas和NumPy是数据分析的基石。Pandas提供灵活的数据结构如DataFrame,用于高效处理关系型数据,而NumPy则以多维数组和科学计算功能著称。两者结合,支持数据合并(如`pd.merge`)、时间序列分析(`pd.to_datetime`)和高级数组运算。通过掌握它们的高级特性,能提升数据分析效率,应用于各领域,如金融风险评估、市场分析和医疗预测,助力数据驱动的决策。学习和熟练运用Pandas与NumPy是成为出色数据分析师的关键。
51 0
|
5月前
|
Web App开发 人工智能 Java
Python Selenium实现自动化测试及Chrome驱动使用
Python Selenium实现自动化测试及Chrome驱动使用
140 2
|
5月前
|
Web App开发 测试技术 Python
【如何学习python自动化测试】—— 浏览器驱动的安装 以及 如何更新driver
【如何学习python自动化测试】—— 浏览器驱动的安装 以及 如何更新driver
|
5月前
|
SQL Java 关系型数据库
在Python中编写Java数据库驱动是不可能的
在Python中编写Java数据库驱动是不可能的
|
5月前
|
自然语言处理 机器人 测试技术
常见python数据驱动框架
常见python数据驱动框架
|
5月前
|
Web App开发 Python Windows
Python Selenium 驱动下载与配置使用(详细流程)
Python Selenium 驱动下载与配置使用(详细流程)
555 0