首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

2019恩智浦杯MCU挑战赛三等奖

现如今,科技日新月异,协作机械臂开始广泛地应用在我们的日常生活中,但你知道他是如何控制的吗?今天给大家分享的恩智浦杯MCU挑战赛获奖作品TARM机械臂控制卡。作者将给大家全方位讲解作品,360度!淋漓尽致!让我们一起来瞧瞧吧!

项目介绍

作者简介:谭天诺 | 学生  广东工业大学

这篇是三等奖作品《TARM机械臂下位机控制卡》,该参赛作品为针对液体搬运环境优化的机械臂下位机运动控制卡。针对日常生活中一个常见的场景——搬运液体(俗称“端水”),设计一项高效平稳的控制算法,配合自主开发的控制器驱动板卡,驱动自制的机械臂到达目标位置,使该算法达到高效平稳搬运液体的目的。

项目demo秀

专家点评:该作品完成度较好,同时利用双核和PowerQuad的优势优化整个设计,作品展示完整流畅。且电机和舵机控制应用较为广泛,值得推广。

项目软件框架

项目所使用到的资源

程序组件介绍

1.communication组件

负责对上下位机通讯。

外设启动了两个串口:FL0控制台串口、FL2设备串口。控制台串口位于板卡上;设备串口通过arduino型接口与驱动板连接,驱动板上可以通过跳帽选择使用RS232或者无线蓝牙模块作为传输介质。支持打断控制。

指令为自定义命令集,格式如下:

_&;;

2.Timer组件

定时器定时实现。timebase为第一套算法提供时基,该算法仅支持一般恒速运动,可以调节一次运动的速度;可以实现三轴联动;使用的时钟是CTIMER0。timepv使用时钟CTIMER1为第二套算法提供时基,该算法仅支持主轴、副轴联动;对运动过程有变速控制,为针对液体平稳搬运环境的优化算法。

3.SYSTICK时钟提供延时

CTIMER2提供速度仿真计时器时基,功能用于开发工程中评估算法消耗时间。

4.limit组件

限位器组件,协助机械臂进行初始化定位。限制机械臂运动行程。通过外部中断实现。触碰到限位器时,返回设定的零点。

5.IO组件

对脉冲输出端口、方向控制端口配置、初始化。控制主轴、副轴、绕Z旋转轴的三个步进电机。

6.Closeloop组件

反馈控制。通过硬件IIC总线访问MPU6050,校准运动误差,使运动误差不积累。在外部因素影响导致IIC硬接线断开时,能自动转化为开环模式。

7.Pwm组件

通过输出PWM控制夹持末端回转轴、夹持轴的舵机。

单核工程使用资源介绍

Ctimer定时器

程序的核心就是通过定时器控制脉冲周期,不同的轴、不同的运行方式需要不同的ctimer,此外速度仿真也需要计时器提供时基。该项目中一共使用了三个ctimer定时器。

iic

iic与角度传感器通讯,反馈位姿信息。

Uart

下位机通过uart与上位机通讯。通讯形式为自定义指令。

PowerQuad

运算对运动速度精度的提升尤为明显,该框架下的运动,运算时间都是额外算进去的,运算时间越长,运动失真越厉害,特别是高速运动时达不到指令预设速度。PowerQuad加速令该情况大为改善。

相关程序在middleware的tarm_math源文件内。

PIN中断

当角度传感器无效时,运动自动变为完全开环状态,这时候需要限位装置初始化机械臂的定位。触碰到限位时,需要触发PIN中断,保证行程不过限制。

双核工程使用资源介绍

除单核所使用的五个外设外,双核工程的从核心额外添加音频播放功能,单独使用一个核心进行音频处理可以有效避免资源抢夺,运动完成一次后,通过MAILBOX向从核心发送信号,从核心播放音乐。因为指令发送可能是频繁的,因此播音的过程可能再启动一个运动。采用另一个核心处理音频,即保证音频信号的连续传输,也不会影响可能正在进行中的运动计算。

双核工程的额外功能:

SDIO+FATFS

通过SDIO驱动TF卡,通过FATFS读取所需的音频文件

DMA+IIS+IIC,驱动WM8904进行音频播放

FL4外设作为IIC,FL7外设作为IIS,驱动WM8904板载WAV解码IC播放音乐,通过耳机或者外部功放播放,每当运动完成时进行音频提醒

MAILBOX

使用MAILBOX进行主从核心之间通讯当主核心运动完成后,告知从核心,从核心播放音乐提醒。

通过PowerQuad加速算法

对LPC5500来说,最亮眼的无疑是比传统DSP核更快的PowerQuad单元,能够实现三角函数运算和开放运算的加速。

在对代码优化加速后,比如:

控制效果

步进电机的控制是通过脉冲和方向实现的,控制速度是脉冲的功能,因此这里重点分析脉冲。本设在控制程序中嵌入了一个speed debug单元,这个单元可以输出运行过程信息和定时时间等信息,用于观察算法耗时与准确度。

首先这里需要点明,该算法的控制脉冲从控制逻辑上是等占空的,但运算过程都在低电平时期,因此低电平时期会包含算法解算所需要的时间。

通过逻辑分析仪,可以发现,脉冲最终产生脉冲高低电平间时差在1.2ms左右。

同样的运动,通过逻辑分析仪可以看到,高低电平之间大概有500ms的时间差,缩小了超过一半。

实物展示

所使用到的LPC55S69开发板

水杯搬运展示

设计者结语

TARM机械臂控制卡旨在实现液体搬运场景下的平稳运动。核心的运动算法是机械臂的空间解析与脉冲生成的时间控制,通过LPC55S69丰富的定时器资源与强大的数学运算能力保证算法的实用性、实时性。由于算法受数学运算速度的影响,PowerQuad比寻常M4F的DSP内核更加强大的运算能力能够保证所控制的运动速度、加速度的精确性。

另外从核心承担音频文件读取与功放驱动,配合DMA功能,保证声音信号保真的情况下不会影响主核心的运动算法。

MCUXpresso IDE配合SDK在驱动开发带来非常便捷、流畅的体验,无论是小到一个串口、IIC亦或者整个fatfs+DMA+SDIO驱动体系都能轻松移植,加上明了的代码体系,能够大大缩短开发难度与开发周期。

彩蛋

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200709A04AGA00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券