0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

电机驱动器如何通过I2C接口使用PID算法控制电机

电子工程师 来源:未知 2019-02-17 11:25 次阅读

电机驱动器能够通过I2C接口使用PID算法控制电机,精确控制电机从未如此简单。

项目描述

这是一款智能电机驱动器(又称SAMI),设计用于运行微型齿轮电机,该电路板的目标是通过相应的转速反馈对该电机实施PID控制。板子上包含了所有必需的组件,因此可以自行工作运行。

供电和命令发送都是通过I2C接口。

主机控制器和电机驱动器之间通过I2C进行通信,发送包括电机速度、转向在内的命令。SAMI自动实现PID控制。SAMI上的电路板执行具体的电机控制算法,从而减轻了主机控制器的负荷。您还可以通过I2C读取电机的状态并对它进行配置。

SAMI能够驱动电机,使轴上负载走完所需的距离或达到一定的角度,然后在达到目标值时自动停止。这是机器人技术的理想选择,简化了执行精确运动控制所需的许多艰苦工作。而且,可以把多个模块连接到同一条I2C总线上,注意,这里的多个模块是指很多电机!

对于任何人来说,制作先进的机器人从来没有这么简单过!现在,只需要把SAMI这个模块和你的电机连接到一起即可。

项目细节

这是一款设计用来控制微型齿轮电机的智能电机驱动器(也称为SAMI),这块电路板的目标是使用霍尔效应传感器检测到的转速反馈,轻松地在SAMI上实现PID控制。SAMI有自己的微控制器和H桥,能够自己完成电机控制和驱动操作。

主机上的微控制器(或者任何支持I2C端口的系统)通过I2C和智能电机驱动器进行通信,发送包括电机速度、转向在内的命令。SAMI自动实现PID控制算法,保持速度,并在电机的动态运行中增加或减少功率以控制转矩和速度。

此外,该控制器能够驱动电机轴上负载走完所需的距离或角度,然后在达到目标值时自动停止。因此,如果用来驱动一个轮子,你必须同时制定轮子的直径和变速比等参数

为了感应电机的转速,我使用了磁编码器盘,它沿着磁盘表面极化。因此霍尔效应传感器可以检测磁盘磁场的变化并将信号发送到微控制器上。微控制器使用定时器和中断计算电机转速,微控制器利用转速作为反馈,运行PID控制算法,并处理和主机的通信。

这款智能电机驱动器的主要设计思想是用在机器人中,通过使用它来控制机器人的轮子,无论表面是否光滑,电池电量是否充足还是机器人负荷重量发生了变化,都可以进行精确的运动控制。

此外,它还可以防止因为突然加速或者制动造成齿轮脱载,并避免电流冲击,这样可以保证您宝贵的电机的安全。

提供了一个Arduino库,帮助你方便地使用该智能电机驱动器。你可以快速、方便地把它插入到大量电机上使用。

特征

安装在微型直流电机的背面,安装方便;

可以轻松控制电机的速度和转向;

达到既定距离或角度时自动停止;

支持多种控制模式,包括带有或者不带自动停止功能的简单PWM控制或PID控制;可添加安全的方向转变功能;

通过I2C进行通信,可以通过软件更改地址;

可同时控制很多电机,最多支持在同一条I2C总线上挂载128个模块;

可以通过软件启动或禁用I2C的内部上拉电阻;

可以把配置保存在EEPROM中;

读取电机的实际转速,并检查是否发生了故障;

完全可配置;

易于使用的高精度电机控制;

尺寸小;

提供可用的Arduino库。

技术规格

电机电压可达11v;

最大电机连续电流峰值高达1.7A和1.8A;

逻辑电压范围为3-5v;(稍后的版本经测试后可支持到1.8v范围)

默认I2C地址为0x24;

过流保护和过热保护;

要复位默认的I2C地址,请在上电时将MCLR焊盘连接到地上;

标准1mm 5针JST连接器

优点

独立进行电机控制;

可实现更平稳、更精确的动作控制;

具有电机保护功能;

解决方案方便易用;

内置电机速度反馈;

高响应速度的PID控制算法,保持电机速度恒定;

避免出现可能损坏电源或电池的瞬态电流峰值;

如果事先指定,可自动停在所需的距离或角度上;

与IMU等其他传感器结合使用时,可实现性能强大的机器人导航解决方案;

开源设计。

安装

要将SAMI安装到电机上,只需要把它和电机的驱动线、反馈线焊接在一起,并如下视频所示放置编码器

重要提示:您的电机轴上必须留出足够的位置,以便放置编码器!

管脚

通过JST连接器和SAMI进行通信;

ICSP管脚用于更新固件;

MCLR管脚用于复位模块的默认I2C地址。

PCB布局

PCB厚0.8mm,尺寸为10 mm x 20 mm,双层板。

这是一个还在开发阶段的项目,也是一个开源项目,如果您有任何能够改进它的想法,随时欢迎修改。你还可以自行调整硬件和软件设计,以支持更大功率的电机,你还可以增加第二个编码器,甚至可以用它来运行步进电机

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 驱动器
    +关注

    关注

    51

    文章

    7293

    浏览量

    142840
  • PID
    PID
    +关注

    关注

    35

    文章

    1444

    浏览量

    83696
  • I2C
    I2C
    +关注

    关注

    28

    文章

    1343

    浏览量

    120729

原文标题:电机驱动器还能玩出什么花样,这个工程师的小项目告诉你

文章出处:【微信号:wwygzxcpj,微信公众号:电机技术及应用】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    PID电机控制系统(控制原理+控制算法+程序范例)

    推荐课程:张飞软硬开源:基于STM32的BLDC直流无刷电机驱动器(视频+硬件)http://url.elecfans.com/u/73ad899cfd本资料包括PID调节控制
    发表于 03-18 14:18

    求助毕业设计 基于Labview语言的《 交流伺服电机 PID 控制...

    的基本原理及其实现技术,掌握LabVIEW的设计方法,其中重点研究PID算法和程序设计方法。开发的控制系统具有良好的软件交互界面,编程简单,控制效果良好,有实际应用价值。选择D型
    发表于 05-14 22:38

    PID算法控制电机转速

    `PID算法控制电机转速`
    发表于 09-26 17:07

    初步解析飞思卡尔控制电机PID算法代码

    分享一篇在其他地方看的分享的飞思卡尔控制电机PID算法代码解析的,写得非常的好。PID实指“比例proportional”、“积分integ
    发表于 11-04 11:59

    求助Labview PID算法控制伺服电机

    哪位大神指导怎么用Labview进行PID控制伺服电机?我知道现在的伺服电机驱动器都有PID自整
    发表于 11-12 19:02

    基于PID电机闭环控制浅析

    基于PID电机闭环控制 导读通过新华龙c8051f310单片机对三相异步电机进行
    发表于 01-28 17:40

    控制电机PID的结构和参数算法选择

    控制电机PID的结构和参数算法选择在电机控制中,无论是DTC
    发表于 01-29 16:50

    基于I2C接口的功能丰富且性价比又高的LED驱动器设计浅析

    使用I2C接口的LED驱动器,它可以通过I2C接口的两根线,去同时
    发表于 06-05 05:00

    通过PID算法来进行电机的速度控制

    之前的几篇文章(电机控制基础篇),介绍的电机编码原理、定时输出PWM、定时编码
    发表于 09-06 07:04

    模糊PID控制的步进电机细分驱动器设计

    模糊PID控制的步进电机细分驱动器设计-2008。
    发表于 04-06 11:26 19次下载

    PID算法控制电机转速

    PID算法控制电机转速
    发表于 06-25 09:23 125次下载

    七特步进电机驱动器型号

    的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制
    发表于 11-21 15:32 1490次阅读

    智能电机驱动器可让机器人的控制更简单

    这是一款智能电机驱动器(又称SAMI),设计用于运行微型减速电机,该电路板的目标是通过相应的RPM反馈对该电机实施
    发表于 04-06 09:29 640次阅读

    智能电机驱动器让你的机器人控制变得更简单

    这是一款智能电机驱动器(又称SAMI),设计用于运行微型减速电机,该电路板的目标是通过相应的RPM反馈对该电机实施
    发表于 12-26 10:40 159次阅读

    电机控制中的PID

    FOC算法中的电流环,速度环都涉及到PID控制 PID又分位置式PID控制
    发表于 05-05 11:51 10次下载
    <b class='flag-5'>电机</b><b class='flag-5'>控制</b>中的<b class='flag-5'>PID</b>