开源一款I2C电机驱动扩展板-FreakStudio多米诺系列
总线直流电机扩展板
原文链接:
摘要
设计了一个I2C电机驱动板,通过I2C接口控制多个电机的转速和方向,支持刹车和减速功能。可连接16个扩展板,具有PWM输出、过流过热保护和可更换电机驱动芯片。支持按键控制使能,电源指示灯显示供电状态。
往期推荐:
全网最适合入门的面向对象编程教程:00 面向对象设计方法导论
全网最适合入门的面向对象编程教程:01 面向对象编程的基本概念
全网最适合入门的面向对象编程教程:02 类和对象的 Python 实现-使用 Python 创建类
全网最适合入门的面向对象编程教程:03 类和对象的 Python 实现-为自定义类添加属性
全网最适合入门的面向对象编程教程:04 类和对象的Python实现-为自定义类添加方法
全网最适合入门的面向对象编程教程:05 类和对象的Python实现-PyCharm代码标签
全网最适合入门的面向对象编程教程:06 类和对象的Python实现-自定义类的数据封装
全网最适合入门的面向对象编程教程:07 类和对象的Python实现-类型注解
全网最适合入门的面向对象编程教程:08 类和对象的Python实现-@property装饰器
全网最适合入门的面向对象编程教程:09 类和对象的Python实现-类之间的关系
全网最适合入门的面向对象编程教程:10 类和对象的Python实现-类的继承和里氏替换原则
全网最适合入门的面向对象编程教程:11 类和对象的Python实现-子类调用父类方法
全网最适合入门的面向对象编程教程:12 类和对象的Python实现-Python使用logging模块输出程序运行日志
全网最适合入门的面向对象编程教程:13 类和对象的Python实现-可视化阅读代码神器Sourcetrail的安装使用
全网最适合入门的面向对象编程教程:全网最适合入门的面向对象编程教程:14 类和对象的Python实现-类的静态方法和类方法
全网最适合入门的面向对象编程教程:15 类和对象的 Python 实现-__slots__魔法方法
全网最适合入门的面向对象编程教程:16 类和对象的Python实现-多态、方法重写与开闭原则
全网最适合入门的面向对象编程教程:17 类和对象的Python实现-鸭子类型与“file-like object“
全网最适合入门的面向对象编程教程:18 类和对象的Python实现-多重继承与PyQtGraph串口数据绘制曲线图
全网最适合入门的面向对象编程教程:19 类和对象的 Python 实现-使用 PyCharm 自动生成文件注释和函数注释
全网最适合入门的面向对象编程教程:20 类和对象的Python实现-组合关系的实现与CSV文件保存
全网最适合入门的面向对象编程教程:21 类和对象的Python实现-多文件的组织:模块module和包package
全网最适合入门的面向对象编程教程:22 类和对象的Python实现-异常和语法错误
全网最适合入门的面向对象编程教程:23 类和对象的Python实现-抛出异常
全网最适合入门的面向对象编程教程:24 类和对象的Python实现-异常的捕获与处理
全网最适合入门的面向对象编程教程:25 类和对象的Python实现-Python判断输入数据类型
全网最适合入门的面向对象编程教程:26 类和对象的Python实现-上下文管理器和with语句
全网最适合入门的面向对象编程教程:27 类和对象的Python实现-Python中异常层级与自定义异常类的实现
全网最适合入门的面向对象编程教程:28 类和对象的Python实现-Python编程原则、哲学和规范大汇总
全网最适合入门的面向对象编程教程:29 类和对象的Python实现-断言与防御性编程和help函数的使用
全网最适合入门的面向对象编程教程:30 Python的内置数据类型-object根类
全网最适合入门的面向对象编程教程:31 Python的内置数据类型-对象Object和类型Type
全网最适合入门的面向对象编程教程:32 Python的内置数据类型-类Class和实例Instance
全网最适合入门的面向对象编程教程:33 Python的内置数据类型-对象Object和类型Type的关系
全网最适合入门的面向对象编程教程:34 Python的内置数据类型-Python常用复合数据类型:元组和命名元组
全网最适合入门的面向对象编程教程:35 Python的内置数据类型-文档字符串和__doc__属性
全网最适合入门的面向对象编程教程:36 Python的内置数据类型-字典
全网最适合入门的面向对象编程教程:37 Python常用复合数据类型-列表和列表推导式
全网最适合入门的面向对象编程教程:38 Python常用复合数据类型-使用列表实现堆栈、队列和双端队列
全网最适合入门的面向对象编程教程:39 Python常用复合数据类型-集合
全网最适合入门的面向对象编程教程:40 Python常用复合数据类型-枚举和enum模块的使用
全网最适合入门的面向对象编程教程:41 Python常用复合数据类型-队列(FIFO、LIFO、优先级队列、双端队列和环形队列)
全网最适合入门的面向对象编程教程:42 Python常用复合数据类型-collections容器数据类型
全网最适合入门的面向对象编程教程:43 Python常用复合数据类型-扩展内置数据类型
全网最适合入门的面向对象编程教程:44 Python内置函数与魔法方法-重写内置类型的魔法方法
全网最适合入门的面向对象编程教程:45 Python实现常见数据结构-链表、树、哈希表、图和堆
全网最适合入门的面向对象编程教程:46 Python函数方法与接口-函数与事件驱动框架
全网最适合入门的面向对象编程教程:47 Python函数方法与接口-回调函数Callback
全网最适合入门的面向对象编程教程:48 Python函数方法与接口-位置参数、默认参数、可变参数和关键字参数
全网最适合入门的面向对象编程教程:49 Python函数方法与接口-函数与方法的区别和lamda匿名函数
全网最适合入门的面向对象编程教程:50 Python函数方法与接口-接口和抽象基类
全网最适合入门的面向对象编程教程:51 Python函数方法与接口-使用Zope实现接口
全网最适合入门的面向对象编程教程:52 Python函数方法与接口-Protocol协议与接口
全网最适合入门的面向对象编程教程:53 Python字符串与序列化-字符串与字符编码
全网最适合入门的面向对象编程教程:54 Python字符串与序列化-字符串格式化与format方法
全网最适合入门的面向对象编程教程:55 Python字符串与序列化-字节序列类型和可变字节字符串
全网最适合入门的面向对象编程教程:56 Python字符串与序列化-正则表达式和re模块应用
全网最适合入门的面向对象编程教程:57 Python字符串与序列化-序列化与反序列化
全网最适合入门的面向对象编程教程:58 Python字符串与序列化-序列化Web对象的定义与实现
全网最适合入门的面向对象编程教程:59 Python并行与并发-并行与并发和线程与进程
更多精彩内容可看:
给你的 Python 加加速:一文速通 Python 并行计算
一个MicroPython的开源项目集锦:awesome-micropython,包含各个方面的Micropython工具库
1.总体介绍
总线直流电机扩展板设计用于通过I2C接口控制最多四个直流电机,具有以下主要特点:
- 小尺寸设计:可以与XIAO系列主控板直接连接,也可以作为独立模块使用。
- I2C接口:提供I2C总线接口进行堆叠式级联,最多支持16个电机驱动扩展板,且提供4个地址位可供选择。
- PWM输出引脚:PWM扩展芯片的输出引脚连接有保护电阻,同时使用的电机驱动芯片自带过流和过热保护功能。
- 按键控制芯片使能/失能:PWM扩展芯片的使能引脚通过按键引出,使用时可通过按键失能芯片。
- 电机驱动芯片可更换:根据需要,可将RZ7899芯片替换为TMI8260、AM2837或SS6285L芯片。
- 电源指示灯:板载电源指示灯显示电机供电状态和PWM扩展芯片供电状态。
- 多种电源输入方式:支持接线端子和Type-C接口供电,具有防反接设计。
- 支持6V至18V供电的电机:整个扩展板最大电流为5A,若只使用两个电机通道,单通道峰值电流支持最大4A。
- 高频低阻电解电容供电:使用四颗220μF高频低阻电解电容或固态电解电容进行供电,固态电解电容相比铝电解电容具有更低的ESR、较高的工作频率和更长的使用寿命。
- 散热设计:扩展板背面的VCC区域采用开窗设计,通过焊锡增大散热效果。
该扩展板提供了优越的电机保护和电源管理功能,适用于各种电机控制应用,我们提供了MicroPython和Arduino例程。
2.接口说明
2.1 通信接口
我们提供了两个I2C通信接口,当作为单独模块使用时,通过PH2.0连接线连接主控模块和扩展板,如下图所示:
也可以使用主控板直接插入到扩展板的排母接口上:
多个扩展板也可以堆叠连接,此时使用扩展板下方靠近供电端子部分的I2C通信接口与扩展板上方靠近供电端子部分的I2C通信接口相互连接,连接时需要注意线序,这里需要使用PH2.0双头反向连接线,我们这里使用M2塑料柱将两个扩展板进行固定:
2.2 电机接口
连接电机时,注意电机线M+与A通道连接,电机线M-与B通道连接,若不确定电机的正负极,可以在程序中驱动两个编号电机都向正方向运动,若其中一个电机反向运动,将该电机连线反接即可:
2.3 供电接口
我们可以使用Type-C接口的电源适配器进行供电(需要注意电源适配器最大电流,建议使用15V 3A适配器),也可以使用接线端子供电,电源正极连接V,电源负极连接G:
3.硬件细节
3.1 提高散热和电流
我们的电路板对供电部分进行开窗处理,必要时可通过向开窗部分焊锡和加装散热片提高散热:
3.2 更换电机驱动芯片
我们可以根据电机需要的电压和电流对驱动芯片进行更换:
3.3 电容选择
我们使用220uF固态电容作为稳压元件,固态电容具有较低的等效串联电阻和快速的电荷释放能力,对高频信号的阻抗更低,能够更高效地滤除高频噪声,相比传统电解电容在高温下具有更稳定的性能和更长的使用寿命,你也可以选择高频低电阻铝电解电容:
3.4 PWM输出芯片地址位选择
我们可以通过焊接扩展板背面短路点来设置PWM扩展芯片地址位,注意四个地址位必须都焊接,默认地址位浮空:
3.5 沉金工艺
部分配置采用沉金工艺,确保焊接质量和延长电路板的使用寿命。
4.提供代码和使用须知
在使用烧录完程序后的主控板通过扩展板控制电机前,务必确保电机和通信接线正确,供电无误:
示例代码包括以下版本:
- MicroPython版本:总线电机扩展板MicroPython示例程序
- Arduino版本:总线电机扩展板Arduino示例程序
5.定制化选择
你的模块,何必千篇一律?我们已经厌恶了市面上开源硬件厂商提供的一模一样的电子模块,类似如下:
为什么我们买的的模块都是一模一样的?而不能是像买手机或者电脑一样,对其配色和配置可以选择?
秋刀鱼会过期,肉罐头会过期,连保鲜纸都会过期,但是我们持续满足玩家个性化需求的意愿永不过期!
购买我们的模块,无论是选择散件发货还是成品发货,都可以对排母的高低、排针颜色、电容类型和电机驱动芯片类型进行选择:
甚至于电路板的颜色和阻焊类型也可以进行选择:
是的,再出高价,也可以把我们的logo换掉!!!:
6.获取链接
- 商品链接:总线电机驱动扩展板购买链接
- 硬件开源链接:硬件开源资料链接
7.设计思路
I2C总线电机扩展板类型可以分为I2C总线PWM电机控制类型和I2C总线外置主控电机控制类型两种:
I2C总线PWM电机控制类型的基本原理为:使用主控板通过I2C通信接口控制一个独立的PWM芯片来生成多路PWM信号,并将其传输到电机驱动芯片,控制电机的速度和方向:
I2C总线外置主控电机控制类型的基本原理为:主控板通过I2C接口与电机驱动板上芯片进行通信,电机驱动板上内置芯片读取主控板的指令、数据或状态,并根据这些信息控制电机驱动芯片的工作(例如:调整电机转速、改变电机方向等):
两种方式各有侧重:
- I2C总线PWM电机控制类型:适合简单、直接的电机控制,结构简单,控制方式易于实现。
- I2C总线外置主控电机控制类型:可以实现更复杂的电机控制算法(例如:PID控制、电机状态监测等)。
做这块板的核心设计想法:
- 小尺寸,可以和我的XIAO系列主控板搭配,也可以作为外置模块直接使用
- 电机驱动芯片烧坏时,可轻易更换电机驱动芯片
8.参考资料
- https://github.com/Seeed-Studio/grove.py/blob/master/grove/motor/i2c_motor_driver.py
- https://github.com/Seeed-Studio/grove.py/blob/master/grove/grove_i2c_motor_driver.py
- https://github.com/adafruit/micropython-adafruit-pca9685/blob/master/stepper.py
- https://wiki.seeedstudio.com/Grove-I2C_Motor_Driver-TB6612FNG/
- https://wiki.seeedstudio.com/Grove-I2C_Motor_Driver_V1.2/
- https://wiki.seeedstudio.com/Grove-I2C-Motor-Driver-L298P/
- https://item.taobao.com/item.htm?id=627007991368
- https://www.adafruit.com/product/3243
开源一款I2C电机驱动扩展板-FreakStudio多米诺系列的更多相关文章
- Facebook 开源三款图像识别人工智能软件
Facebook今天开源了三款人工智能图像分割(Image Segmentation)软件,分别是DeepMask.SharpMask和MultiPathNet,三款工具相互配合完成一个完整的图像识别 ...
- 开源一款iOS中国地图行政区控件(含一级与二级行政区)
开源一款iOS版中国省市级地图行政区的控件,该组件可以支持拖动.缩放以及全国省和市级行政区的点选,主要适用于iPad,如果要在iPhone上使用,一些细节可能得做相关调整. 该地图组件实现起来不难,数 ...
- 开源一款强大的文件服务组件(QJ_FileCenter)(系列一)
系列文章 1. 开源一款强大的文件服务组件(QJ_FileCenter)(系列一) 2. 开源一款强大的文件服务组件(QJ_FileCenter)(系列二 安装说明) 3. 开源一款强大的文件服务组件 ...
- 开源一款强大的文件服务组件(QJ_FileCenter)(系列二 安装说明)
系列文章 1. 开源一款强大的文件服务组件(QJ_FileCenter)(系列一) 2. 开源一款强大的文件服务组件(QJ_FileCenter)(系列二 安装说明) 3. 开源一款强大的文件服务组件 ...
- 开源一款强大的文件服务组件(QJ_FileCenter)(系列三 访问接口与项目集成)
系列文章 1. 开源一款强大的文件服务组件(QJ_FileCenter)(系列一) 2. 开源一款强大的文件服务组件(QJ_FileCenter)(系列二 安装说明) 3. 开源一款强大的文件服务组件 ...
- 开源一款资源分享与下载工具 —— 电驴(eMule)
这里分享一款资源分享与下载工具--电驴,其实严格来说,应该叫电骡,这是我维护的版本,eMuleVeryCD版本,VeryCD是一个不错的资源分享网站:http://www.verycd.com/.大概 ...
- 开源一款私藏Management Studio插件,ProjkyAddin,送给所有使用SQLServer的园友们
ProjkyAddin 是一款Management Studio 插件,安装包才500多kb,兼容SSMS 2005.SSMS 2008.SSMS 2008 R2.SSMS 2012.SSMS 201 ...
- 开源一款超实用的 Dubbo 测试工具,已用半年,感觉很有feel~
不知道你是否在工作中有遇到过类似情况: dubbo接口调试复杂,需要通过telnet命令或者通过consumer调用来触发. telnet语句参数格式复杂,每次编写都要小心谨慎,一旦出错又需重来. 复 ...
- 开源 5 款超好用的数据库 GUI 带你玩转 MongoDB、Redis、SQL 数据库
作者:HelloGitHub-*小鱼干 工欲善其事必先利其器,想要玩溜数据库,不妨去试试本文安利的 5 款开源的数据库管理工具.除了流行的 SQL 类数据库--MySQL.PostgreSQL 之外, ...
- 开源一款android 偷拍 app【静拍】豌豆荚、flyme商店已经上线
首先先花3秒时间,预览下下app的大概是做啥的,解决啥痛点的:) app: 本地下载地址 需求点: 1:音量键可以拍照 2:没有快门声.闪光灯 3:锁屏下.或者是在其他程序界面都可以拍照 思路: 1: ...
随机推荐
- HarmonyOS Next 入门实战 - 基础组件、页面实现
基础组件 常用组件 Text:显示文本内容 Image:显示图片 Button:显示一个按钮 Column: 纵向布局 Row:横向布局 List:列表 各组件的用法 Text("文本组件& ...
- 物联网cc2530按键长按短按分别控制亮灯亮灭(详细版)
一.在编辑程序之前搭建其基本框架,如下所示 #include <iocc2530.h> void main(void) { halBoardInit(); while(1) { } } ...
- 中电金信:源启混沌工程平台(V4)与东方通TongwebV7.0完成适配认证
近日,源启混沌工程平台(V4)与北京东方通科技股份有限公司(以下简称东方通)应用服务器软件东方通TongwebV7.0完成产品兼容互认证,通过在产品功能.性能.兼容性方面的全面严格测试,得出结论:东 ...
- 聊一聊坑人的 C# MySql.Data SDK
一:背景 1. 讲故事 为什么说这东西比较坑人呢?是因为最近一个月接到了两个dump,都反应程序卡死无响应,最后分析下来是因为线程饥饿导致,那什么原因导致的线程饥饿呢?进一步分析发现罪魁祸首是 MyS ...
- 【报错解决】【Linux】Name or service not known
# 配置文件位置 /etc/sysconfig/network-scripts/ # nano ifcfg-eth0查看网卡配置,确认dns已配置,且网关已配置 在虚拟机中添加临时路由网关(要与物理主 ...
- 禅道bug增加自定义字段
禅道版本 18.9 需求 给禅道的bug模块,增加自定义字段. 目前主要增加"发现阶段"."所属环境"."出现频率" 增加bug的类型 在b ...
- Java代码打成jar后 classgetClassLoadergetResource("")返回为null
用maven打成jar包后,Main.class.getClassLoader().getResource("")为null. 示例: public static void mai ...
- Qt音视频开发45-视频传输TCP版
一.前言 做音视频开发,会遇到将音视频重新转发出去的需求,当然终极大法是推流转发,还有一些简单的场景是直接自定义协议将视频传出去就行,局域网的话速度还是不错的.很多年前就做过类似的项目,无非就是将本地 ...
- datahub 采集oracle数据 DPI-1047: Cannot locate a 64-bit Oracle Client library: libclntsh.so
datahub 命令行采集oracle 报错如下: datahub ingest -c oracle.yml sqlalchemy.exc.DatabaseError: (cx_Oracle.Data ...
- Note -「M. Analysis 24 Aut. Prev.」“有歌的地方,自有向往”
\[\textit{Litar!} \newcommand{\opn}[1]{\operatorname{#1}} \newcommand{\card}[0]{\opn{card}} \newcomm ...