开源一款I2C电机驱动扩展板-FreakStudio多米诺系列

总线直流电机扩展板

原文链接:

FreakStudio的博客

摘要

设计了一个I2C电机驱动板,通过I2C接口控制多个电机的转速和方向,支持刹车和减速功能。可连接16个扩展板,具有PWM输出、过流过热保护和可更换电机驱动芯片。支持按键控制使能,电源指示灯显示供电状态。

往期推荐:

可能是全网最适合入门的面向对象编程教程:Python实现-嵌入式爱好者必看!

全网最适合入门的面向对象编程教程: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 异常捕获-异常和语法错误

全网最适合入门的面向对象编程教程:23 异常捕获-抛出异常

全网最适合入门的面向对象编程教程:24 异常捕获现-异常的捕获与处理:try/except语句、文件读写示例、Exception引用

全网最适合入门的面向对象编程教程:25 异常捕获-Python 判断输入数据类型

全网最适合入门的面向对象编程教程:26 异常捕获-上下文管理器和with语句

全网最适合入门的面向对象编程教程:26 异常捕获-上下文管理器和with语句

全网最适合入门的面向对象编程教程:27 异常捕获-Python 中异常层级与自定义异常类的实现

全网最适合入门的面向对象编程教程:28 异常捕获-Python编程原则、哲学和规范大汇总

全网最适合入门的面向对象编程教程:29 异常捕获-断言与防御性编程和help函数的使用

全网最适合入门的面向对象编程教程:29 异常捕获-断言与防御性编程和help函数的使用

全网最适合入门的面向对象编程教程:30 Python的内置数据类型-object根类

全网最适合入门的面向对象编程教程:31 Python的内置数据类型-对象Object和类型Type

全网最适合入门的面向对象编程教程:32 Python的内置数据类型-类Class和实例Instance

全网最适合入门的面向对象编程教程:33 Python 的内置数据类型-对象 Object 和类型 Type 的关系

全网最适合入门的面向对象编程教程: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并行与并发-并行与并发和线程与进程

更多精彩内容可看:

CM3调试系统简析

肝了半个月,嵌入式技术栈大汇总出炉

Avnet ZUBoard 1CG开发板上手—深度学习新选择

SenseCraft 部署模型到Grove Vision AI V2图像处理模块

比赛获奖的武林秘籍:10 一文速通“大唐杯”全国大学生新一代信息通信技术大赛

比赛获奖的武林秘籍:09 一文速通计算机设计大赛,比赛人必看的获奖秘籍

比赛获奖的武林秘籍:08 一文速通光电设计大赛,电子人必看

比赛获奖的武林秘籍:07 一文速通电子设计大赛,电子人必看的获奖秘籍!

比赛获奖的武林秘籍:06 5 分钟速通比赛路演答辩,国奖选手的血泪经验!

比赛获奖的武林秘籍:05 电子计算机类比赛国奖队伍技术如何分工和学习内容

比赛获奖的武林秘籍:04 电子类比赛嵌入式开发快速必看的上手指南

比赛获奖的武林秘籍:03 好的创意选取-获得国奖的最必要前提

比赛获奖的武林秘籍:02 国奖秘籍-大学生电子计算机类竞赛快速上手的流程,小白必看

比赛获奖的武林秘籍:01 如何看待当代大学生竞赛中“卷”“祖传老项目”“找关系”的现象?

比赛获奖的武林秘籍:00 学科竞赛-工科类大学生绕不开的话题,你了解多少?

1.总体介绍

image

image

image

总线直流电机扩展板设计用于通过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例程。
    image
    image
    image
    image
    image
    image

2.接口说明

2.1 通信接口

我们提供了两个I2C通信接口,当作为单独模块使用时,通过PH2.0连接线连接主控模块和扩展板,如下图所示:
image

也可以使用主控板直接插入到扩展板的排母接口上:
image

多个扩展板也可以堆叠连接,此时使用扩展板下方靠近供电端子部分的I2C通信接口与扩展板上方靠近供电端子部分的I2C通信接口相互连接,连接时需要注意线序,这里需要使用PH2.0双头反向连接线,我们这里使用M2塑料柱将两个扩展板进行固定:
image

2.2 电机接口

连接电机时,注意电机线M+与A通道连接,电机线M-与B通道连接,若不确定电机的正负极,可以在程序中驱动两个编号电机都向正方向运动,若其中一个电机反向运动,将该电机连线反接即可:
image

2.3 供电接口

我们可以使用Type-C接口的电源适配器进行供电(需要注意电源适配器最大电流,建议使用15V 3A适配器),也可以使用接线端子供电,电源正极连接V,电源负极连接G:
image

3.硬件细节

3.1 提高散热和电流

我们的电路板对供电部分进行开窗处理,必要时可通过向开窗部分焊锡和加装散热片提高散热:
image

3.2 更换电机驱动芯片

我们可以根据电机需要的电压和电流对驱动芯片进行更换:
image

3.3 电容选择

我们使用220uF固态电容作为稳压元件,固态电容具有较低的等效串联电阻和快速的电荷释放能力,对高频信号的阻抗更低,能够更高效地滤除高频噪声,相比传统电解电容在高温下具有更稳定的性能和更长的使用寿命,你也可以选择高频低电阻铝电解电容:
image

3.4 PWM输出芯片地址位选择

我们可以通过焊接扩展板背面短路点来设置PWM扩展芯片地址位,注意四个地址位必须都焊接,默认地址位浮空:
image

3.5 沉金工艺

部分配置采用沉金工艺,确保焊接质量和延长电路板的使用寿命。
image
image

4.提供代码和使用须知

在使用烧录完程序后的主控板通过扩展板控制电机前,务必确保电机和通信接线正确,供电无误:
image

示例代码包括以下版本:

  • MicroPython版本总线电机扩展板MicroPython示例程序
  • Arduino版本总线电机扩展板Arduino示例程序

5.定制化选择

你的模块,何必千篇一律?我们已经厌恶了市面上开源硬件厂商提供的一模一样的电子模块,类似如下:
image

为什么我们买的的模块都是一模一样的?而不能是像买手机或者电脑一样,对其配色和配置可以选择?
秋刀鱼会过期,肉罐头会过期,连保鲜纸都会过期,但是我们持续满足玩家个性化需求的意愿永不过期!

购买我们的模块,无论是选择散件发货还是成品发货,都可以对排母的高低、排针颜色、电容类型和电机驱动芯片类型进行选择:
image

甚至于电路板的颜色和阻焊类型也可以进行选择:
image

是的,再出高价,也可以把我们的logo换掉!!!:
image

6.获取链接

  • 硬件开源链接硬件开源资料链接

7.设计思路

I2C总线电机扩展板类型可以分为I2C总线PWM电机控制类型和I2C总线外置主控电机控制类型两种:
image

I2C总线PWM电机控制类型的基本原理为:使用主控板通过I2C通信接口控制一个独立的PWM芯片来生成多路PWM信号,并将其传输到电机驱动芯片,控制电机的速度和方向:
image

I2C总线外置主控电机控制类型的基本原理为:主控板通过I2C接口与电机驱动板上芯片进行通信,电机驱动板上内置芯片读取主控板的指令、数据或状态,并根据这些信息控制电机驱动芯片的工作(例如:调整电机转速、改变电机方向等):
image

两种方式各有侧重:

  • I2C总线PWM电机控制类型:适合简单、直接的电机控制,结构简单,控制方式易于实现。
  • I2C总线外置主控电机控制类型:可以实现更复杂的电机控制算法(例如:PID控制、电机状态监测等)。

做这块板的核心设计想法:

  • 小尺寸,可以和我的XIAO系列主控板搭配,也可以作为外置模块直接使用
  • 电机驱动芯片烧坏时,可轻易更换电机驱动芯片
    image

image

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

image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/975595.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

论文笔记(七十二)Reward Centering(三)

Reward Centering(三) 文章概括摘要3 基于值的奖励中心化4 案例研究: 以奖励为中心的 Q-learning5 讨论、局限性与未来工作致谢 文章概括 引用: article{naik2024reward,title{Reward Centering},author{Naik, Abhishek and Wan…

内部知识库的核心模块是什么?

内容概要 现代企业内部知识库的架构设计遵循系统性、可扩展性与安全性三重原则,其核心模块的协同运作构成完整的知识资产运营体系。在知识存储层,基于结构化分类的存储管理采用多级目录架构(如客户服务库、培训学习库)&#xff0…

kafka基本知识

什么是 Kafka? Apache Kafka 是一个开源的分布式流处理平台,最初由 LinkedIn 开发,后来成为 Apache 软件基金会的一部分。Kafka 主要用于构建实时数据管道和流处理应用程序。它能够高效地处理大量的数据流,广泛应用于日志收集、数…

P8716 [蓝桥杯 2020 省 AB2] 回文日期

1 题目说明 2 题目分析 暴力不会超时&#xff0c;O(n)的时间复杂度&#xff0c; < 1 0 8 <10^8 <108。分析见代码&#xff1a; #include<iostream> #include<string> using namespace std;int m[13]{0,31,28,31,30,31,30,31,31,30,31,30,31};// 判断日期…

手机时钟精确到秒

这里以小米手机 MIUI 系统 举例 进入开发者模式 设置 - 我的设备 - 全部参数与信息 快速连续多次点击 MIUI 版本选框&#xff0c;即可进入开发者模式&#xff1b; 打开时间悬浮窗 设置 - 更多设置 - 开发者选项&#xff1b; 滑动至 输入 模块&#xff0c;开启时间悬浮窗&a…

京东广告基于 Apache Doris 的冷热数据分层实践

一、背景介绍 京东广告围绕Apache Doris建设广告数据存储服务&#xff0c;为广告主提供实时广告效果报表和多维数据分析服务。历经多年发展&#xff0c;积累了海量的广告数据&#xff0c;目前系统总数据容量接近1PB&#xff0c;数据行数达到18万亿行&#xff0c;日查询请求量8…

ubuntu新系统使用指南

1. 更新源 2. 配置rime 输入法 sudo apt install ibus-rimeibus-setup #打开配置界面添加雾凇拼音 cd ~/Documents/Tool/input_source/plumgit clone --depth 1 https://github.com/rime/plum plum #没有梯子就劝退cd plum/bash rime-install iDvel/rime-ice:others/recipe…

给小米/红米手机root(工具基本为官方工具)——KernelSU篇

目录 前言准备工作下载刷机包xiaomirom下载刷机包【适用于MIUI和hyperOS】“hyper更新”微信小程序【只适用于hyperOS】 下载KernelSU刷机所需程序和驱动文件 开始刷机设置手机第一种刷机方式【KMI】推荐提取boot或init_boot分区 第二种刷机方式【GKI】不推荐 结语 前言 刷机需…

Liunx(CentOS-6-x86_64)系统安装MySql(5.6.50)

一&#xff1a;安装Liunx&#xff08;CentOS-6-x86_64&#xff09; 安装Liunx&#xff08;CentOS-6-x86_64&#xff09; 二&#xff1a;下载MySql&#xff08;5.6.50&#xff09; MySql下载官网 二&#xff1a;安装MySql 2.1 将mysql上传到Liunx 文件地址 /usr/local/ 2…

2025版-Github账号注册详细过程

目录 1.访问GitHub官网 2. 点击“Sign up”按钮 3. 填写注册信息 4. 验证机器人 5. 点击“Create account”按钮 6. 验证邮箱 7. 完成注册 8. 初始设置&#xff08;可选&#xff09; 9. 开始使用 注意事项 1.访问GitHub官网 打开浏览器&#xff0c;访问 GitHub官网。 …

基于CentOS7安装kubesphere和Kubernetes并接入外部ES收集日志

一、修改所有节点主机名 主节点就修改成master hostnamectl set-hostname master 然后输入bash刷新当前主机名 工作节点1就修改成node1 hostnamectl set-hostname node1 然后输入bash刷新当前主机名 二、全部节点安装依赖并同步时间 yum -y install socat conntrack ebta…

halcon 条形码、二维码识别、opencv识别

一、条形码 函数介绍 create_bar_code_model * 1.创建条码读取器的模板 * 参数一&#xff1a;通用参数的名称&#xff0c;针对条形码模型进行调整。默认值为空 * 参数二&#xff1a;针对条形码模型进行调整 * 参数三&#xff1a;条形码模型的句柄。 create_bar_code_model (…

【用deepseek和chatgpt做算法竞赛】——还得DeepSeek来 -Minimum Cost Trees_5

往期 【用deepseek和chatgpt做算法竞赛】——华为算法精英实战营第十九期-Minimum Cost Trees_0&#xff1a;介绍了题目和背景【用deepseek和chatgpt做算法竞赛】——华为算法精英实战营第十九期-Minimum Cost Trees_1&#xff1a;题目输入的格式说明&#xff0c;选择了邻接表…

红帽7基于kickstart搭建PXE环境

Kickstart 文件是一种配置文件&#xff0c;用于定义 Linux 系统安装过程中的各种参数&#xff0c;如分区、网络配置、软件包选择等。system-config-kickstart 提供了一个图形界面&#xff0c;方便用户快速生成这些配置文件。 用户可以通过图形界面进行系统安装的详细配置&…

【Linux网络】TCP/IP地址的有机结合(有能力VS100%???),IP地址的介绍

目录 1.背景知识&#xff08;更好的理解TCP/IP的结合&#xff09; 1.1远距离的传输要经过很多的子网&#xff0c;很多的路由器 1.2IP在OSI标准的网络层 1.3路由器的多个IP 2.TCP和IP的有机结合 2.1IP确定怎么选择路径&#xff0c;数据链接就是具体的实现 2.2问题背景&am…

ue5 Arch vis AI traffic system 车辆系统添加不同种类的车

一、前置条件 资源包拥有二、步骤 添加第二辆车 在父级蓝图底下创建子级蓝图 打开子级蓝图 替换骨骼网格体 创建动画蓝图&#xff0c;骨骼选择该骨骼网格体的骨骼 连接动画蓝图 添加动画蓝图 添加资源包

3分钟idea接入deepseek

DeepSeek简介 DeepSeek 是杭州深度求索人工智能基础技术研究有限公司开发的一系列大语言模型&#xff0c;背后是知名量化资管巨头幻方量化3。它专注于开发先进的大语言模型和相关技术&#xff0c;拥有多个版本的模型&#xff0c;如 DeepSeek-LLM、DeepSeek-V2、DeepSeek-V3 等&…

ChatGPT平替自由!DeepSeek-R1私有化部署全景攻略

一、DeepSeek-R1本地部署配置要求 &#xff08;一&#xff09;轻量级模型 ▌DeepSeek-R1-1.5B 内存容量&#xff1a;≥8GB 显卡需求&#xff1a;支持CPU推理&#xff08;无需独立GPU&#xff09; 适用场景&#xff1a;本地环境验证测试/Ollama集成调试 &#xff08;二&a…

搭建 Hadoop 3.3.6 伪分布式

搭建 Hadoop 3.3.6 伪分布式 IP 192.168.157.132 初始化操作 更改yum源 # 1_1.安装Wget yum install wget# 1_2.备份CentOS-Base.repo文件 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak# 2.下载阿里yum源配置 wget -O /etc/yum.repos.d/Cen…

nodejs:vue 3 + vite 作为前端,将 html 填入<iframe>,在线查询英汉词典

向 doubao.com/chat/ 提问&#xff1a; node.js js-mdict 作为后端&#xff0c;vue 3 vite 作为前端&#xff0c;编写在线查询英汉词典 后端部分&#xff08;express js-mdict &#xff09; 详见上一篇&#xff1a;nodejs&#xff1a;express js-mdict 作为后端&#xff…