迪文科技论坛

 找回密码
 立即注册
搜索
查看: 13|回复: 0

【分享】24级-陈俊豪-基于迪文屏开发的码垛机械臂

[复制链接]

0

主题

0

回帖

23

积分

新手上路

Rank: 1

积分
23
发表于 昨天 21:18 | 显示全部楼层 |阅读模式
1. 项目思路
      码垛机械臂是一种典型的工业自动化设备,能够将物料按照预设规则堆叠,替代人工完成重复性、高强度的搬运码垛作业,在现代生产线中具有重要的应用价值但是成本极度高昂,本次项目的成本设置不超过300元(加上迪文屏)本项目的简易码垛机械臂系统可简化为一个多自由度点位控制系统进行分析,设计目标是使机械臂能够按照存储的点位稳定完成物料的抓取、搬运与码放动作当系统接收到控制指令后,能够通过控制系统实现动作执行。本项目中的码垛机械臂以 STM32F411CEU6 为主控,采用迪文屏作为人机交互界面,通过串口通信实现指令下发与状态反馈。系统使用 PCA9685 驱动板控制舵机,配合红外传感器检测物料状态,实现条件判断与自动码垛逻辑。机械臂各关节舵机的角度与转向作为控制量,实现点位存储、自动运行与手动控制功能。
2.设计总框架
      硬件方面主要分为两部分,其中下位机:码垛机械臂,由STM32F411CEU6最小系统,PCA9685舵机驱动,电源管理模块,红外传感器,OLED显示屏组成。通过单片机与PCA9685进行I2C通信从而控制机械臂上的舵机上位机;迪文DGUS串口屏。上位机与下位机通过特定的数据指令格式进行串口通信。软件方面主要是迪文DGUS串口屏的UI开发设计通过串口实现对机械臂的控制,以及stm32机械臂与人的人机交互,软件框架如图所示:

  file:///C:/Users/DELL/AppData/Local/Temp/ksohtml19012/wps23.jpg

3.器件选型
     低成本机械臂控制要搭载的模块并不多尽量选择低成本的器件,满足运动条件即可。

             file:///C:/Users/DELL/AppData/Local/Temp/ksohtml19012/wps24.jpg

     MeArm骨架:MeArm的三轴机械臂骨架,该机械臂主打教育与创客入门,做简单的小型物块搬运已经足够,成本28元(仅机械骨架)。


     STM32F411CEU6的内核为ARM-CortexM4,是一种处理能力强、主频100MHz,运算速度快、超低功耗、片内资源丰富,自带FPU浮点运算单元的处理器,具有方便高效的开发环境。通过I2C通信可以进行角度映射(浮点运算),通过I2C通信写入运算结果传输给PCA9685的PWM输出寄存器,实现简单易于新手使用而且作为STM32F4系列里性能最高的最小系统,成本低廉,对于该项目性价比最高,该处理器的最小系统板价格仅为14元

        file:///C:/Users/DELL/AppData/Local/Temp/ksohtml19012/wps25.jpg


      PCA9685是一款功能16路独立 PWM 输出芯片,通信接口为I2C。该芯片不仅可应用于舵机,还可以用于电机,呼吸灯,红外调制等等。要控制舵机先要通过处理器对其进行I2C通信并修改其配制寄存器的值,设置输出PWM频率为50Hz,分辨率12位。对于控制角度,只需要对其PWM输出寄存器的值进行更改即可,价格仅为14元。
       file:///C:/Users/DELL/AppData/Local/Temp/ksohtml19012/wps26.jpg

      发射管向外发射特定波长红外光束,光束遇物体物发生反射,反射光线被接收管捕捉;电路将光信号转化为电信号,完成电平转换与输出。如果没有检测到物块,模块的输出上拉为高电平,检测到物块则输出低电平,缺点是由于太阳光也含有该波段的红外光,而且没有协议格式,所以不宜在太阳下使用。尽管如此,成本仅为3元。
        file:///C:/Users/DELL/AppData/Local/Temp/ksohtml19012/wps27.jpg

      电源模块为DC-DC的降压模块,可以将12V的电池电压转为5V(实测为5.22V)输出电流最大为5A,用与给单片机与舵机驱动板供电。注意:不可以用手机充电器给电路供电,因为手机充电器检测不到手机的连接是不会输出大电流的成本为11元。

     舵机属于小型伺服电机,由内部的直流电机与齿轮组以及内置电路元件构成,由50Hz的PWM波来控制角度。

                   file:///C:/Users/DELL/AppData/Local/Temp/ksohtml19012/wps28.jpg
     如图的MG90S为闭环型的舵机,角度范围只有0到180°。内置角度传感器(电位器)与反馈电路,所以控制精度较高,对应的PWM占空比可以完美对应其对应的角度,所以不需要软件进行PID调控,4个舵机价格总共24元。
   
file:///C:/Users/DELL/AppData/Local/Temp/ksohtml19012/wps29.jpg


      DGUS(DWIN Graphic Utilized Software)是迪文自主创新的智慧型图形应用服务GUI软件,专门用来进行DGUS界面的设计以及参数变量的配置,生成用于运行在GUI CPU中的DGUS软件程序,从而避免过去液晶屏开发过程中复杂的代码,但缺点也很明显,相比传统的电阻触摸屏,开发方式变得不自由,专门传输图像数据的串口(USART1)被DGUS设计的硬件锁死,没法对该屏幕进行实时的图像传输,被存储的图像才能显示。
4.软件方案
      在迪文串口屏,按下对应的按键将通过串口发送对应的指令于STM32,如果DGUS里面的按键返回了什么值,就以该值作为指令进行发送,为了方便代码的编写,统一定义了该按键的地址为对应的值左移4位再加上0x1000。为了防止偶然对应指令的脏数据出现而控制机械臂。所以设计了个特定的串口指令发送格式,如果过帧头和帧尾错误,指令码是无效的,那么对应指令的脏数据也就无效。统一帧头为0xAA,帧尾为指令码的反码作为校验码,如图:
   
file:///C:/Users/DELL/AppData/Local/Temp/ksohtml19012/wps30.jpg

      在进行点位添加,删除以及光标移动时,发送指令后必须接收到STM32的应答指令才可以进行点位显示,删除与移动。

      对于接收机,采用空闲中断搭配DMA数据搬移的方式来接收指令数据,检测到指令数据就进入中断进行接收,最后一个字节接收完毕就退出中断,可以高效接收指令,“停止”的指令就需要这样的中断来打断机械臂的运动,相当于急停按钮。
       在每个主循环周期里,只能判断一次指令(“停止”指令除外),但只要对应的指令一执行,对应的全局变量就会改变,通过这些变量可以判断是否该启动机械臂的自动控制,启动后是否要循环执行,要不要判断传感器的状态(条件),以及手动控制机械臂的同时进行点位的编辑与存储。

file:///C:/Users/DELL/AppData/Local/Temp/ksohtml19012/wps31.jpg

       如果要启动机械臂,那么这个主循环周期内,机械臂将要执行完一切才可以到下一个主循环周期,如果按过“循环”按键,机械臂将在本周期一直循环执行动作,按“停止”才会停下一切动作,允许继续编辑点位。以下为基础简化版的程序流程图,该图可以解释机械臂是如何进行自动控制的。

     file:///C:/Users/DELL/AppData/Local/Temp/ksohtml19012/wps32.jpg

5.点位存储
    如果要启动自动控制,必须要对点位进行存储,自动控制时遍历存储位置,一个个执行里面的内容才可完成自动控制,所以用结构体来对一个点位的舵机运动角度以及其他信息进行存储,程序流程图中的IF与Inset就是结构体内的变量。先手动控制将机械臂调到目标姿态1,按下“点位”即存储该点位并放入第一个位置,迪文屏上也会跟着显示该点位的生成与光标移动,再次进行手动控制调到目标姿态2,按下“点位”即可存储第二个点位放入第二个位置,迪文屏也会显示对应的生成信息,按下“条件”将会把对应点位的IF变量赋值为1,迪文屏会显示“条件生成”。此时按下“启动”机械臂会先移动到第一个点位再移动到地二个点位。如果按下了光标移动,迪文屏内的光标移动,STM32内点位的指针也要移动。
总之迪文屏的显示信息必须与STM32内点位的存储保持一致。
6.迪文屏控制图标设计
      迪文屏控制图标设计如下图所示。
            file:///C:/Users/DELL/AppData/Local/Temp/ksohtml19012/wps33.jpg
     在上图中,包含有启动与停止位,机械臂手动控制位,条件点位的删除与插入位,复位与单步调试位,光标移动位,档速位与循环位,变量返回地址均为其返回值左移四位加上0x1000,文本显示光标(基本图形显示)则分别以0x20与0x10为步长,分别加上0x2000与0x3000,通过使用keil5编程软件编写相应的C51代码,最终得以实现所有功能,具体代码见工程源码文件。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2026-6-23 14:30 , Processed in 0.040452 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表