【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

相关文章
|
2月前
|
SQL Java 关系型数据库
在Python中编写Java数据库驱动是不可能的
在Python中编写Java数据库驱动是不可能的
|
3月前
|
自然语言处理 机器人 测试技术
常见python数据驱动框架
常见python数据驱动框架
|
5月前
|
Web App开发 Python Windows
Python Selenium 驱动下载与配置使用(详细流程)
Python Selenium 驱动下载与配置使用(详细流程)
136 0
|
7月前
|
Ubuntu Java 关系型数据库
Ubuntu下python安装mysqldb(驱动)
先跳转的该目录下,然后执行 sudo python setup.py install 然后就是各种问题,需要配置这个那个的。
49 0
|
7月前
|
SQL 关系型数据库 MySQL
软件开发入门教程网之Python MySQL - mysql-connector 驱动 2
软件开发入门教程网之Python MySQL - mysql-connector 驱动
36 0
|
7月前
|
关系型数据库 MySQL 数据库
软件开发入门教程网之Python MySQL - mysql-connector 驱动 1
软件开发入门教程网之Python MySQL - mysql-connector 驱动
33 0
|
7月前
|
SQL 关系型数据库 MySQL
软件开发入门教程网之Python MySQL - mysql-connector 驱动
软件开发入门教程网之Python MySQL - mysql-connector 驱动
|
9月前
|
关系型数据库 MySQL 数据库连接
Python基础 之 Python3 MySQL 数据库连接 - PyMySQL 驱动 10
Python3 MySQL 数据库连接 - PyMySQL 驱动
61 0
|
9月前
|
关系型数据库 MySQL 数据库连接
Python基础 之 Python3 MySQL 数据库连接 - PyMySQL 驱动 9
Python3 MySQL 数据库连接 - PyMySQL 驱动
56 0
|
9月前
|
SQL 关系型数据库 MySQL
Python基础 之 Python3 MySQL 数据库连接 - PyMySQL 驱动 8
Python3 MySQL 数据库连接 - PyMySQL 驱动
57 0