查看: 494|回复: 0

[项目分享] 【N32电机控制大赛】基于N32G455VE微控制器的电机控制机械臂

[复制链接]
  • TA的每日心情
    郁闷
    2024-1-31 23:05
  • 签到天数: 144 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2023-4-11 14:42:12 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 jobszheng5 于 2023-4-15 16:43 编辑

    【N32电机控制大赛】基于N32G455VE微控制器的电机控制机械臂

    项目概述
    本次参赛题目是基于N32G455微控制器的电机控制机械臂。

    我国是制造业大国,之前以劳动密集型产业为主,廉价的劳动力是主要特征,也是明显优势。随着时代的发展,工业技术的进步,国家在工业制造业上的战略调整。智能制造伴随着工业4.0的科技浪潮便被推上前沿。

    本次DIY参赛亦出于对工业4.0的向往,利用国民技术高性能工业MCU,型号N32G455VE作为核心主控,对六自由度机械臂系统进行设计。设计制作了一款具有人机交互功能的机械臂。

    通过对系统总体方案的设计,建立机械臂模型,选取关节连接器,电机,主控芯片和电源等部件。

    通过手动发送命令,控制机械臂运动操作,对泡沫块,小木块分别进行抓取实验。

    实验结果表明,对物体的抓取成功。实验过程稳定可靠,满足设计系统可行性要求。

    本次实验为使用视觉识别,AI主动定位与抓取等应用提供技术基础。初探机械臂在工业领域的应用,对改善传统工业结构具有重要意义。


    硬件设计
    系统框图
    N32G455框图.png
    设计需求
    本次对六自由度机械臂的舵机驱动均使用PWM波方式。在N32G455中使用TIM2与TIM3各3路PWM输出引脚。

    6路PWM输出引脚分配列表如下:

                
    外设
    引脚
    remap配置
    TIM2,CH2
    PA1
    TIM2_REMAP=10
    TIM2,CH3
    PB10
    TIM2_REMAP=10
    TIM2,CH4
    PB11
    TIM2_REMAP=10
    TIM3,CH1
    PC6
    TIM3_RMP[1:0] = 11
    TIM3,CH2
    PC7
    TIM3_RMP[1:0] = 11
    TIM3,CH3
    PC8
    TIM3_RMP[1:0] = 11
    在电源设计上面,针对6路舵机设计单独供电,即舵机控制板驱动侧电源电压为+5V供电,在本次实验中,我们选用一款5v2A输出的手机充电器电源做为电机驱动侧供电电源。

    由于控制板信号侧使用开发板电源,电压为+3.3V供电,因此,借助光耦电路模块对信号进行隔离,保护信号侧电路。

    光耦电路的设计中,PWM波需要的正向脉宽,但光耦对信号有反向器的作用,因此,我们在光耦的输出侧又串连的三极管电路,将反向的信号再次反向,使得隔离模块对信号正向实现,保证隔离驱动电路与MCU侧信号电平保持一致。原理图如下:

    说完与硬件交互的外设,再来说说人机交互的外设——CAN外设。

    本次实验将CAN外设做为人机交互的通讯接口。本次采用手动控制方式,做为基础实验原理性验证。后续将结合边缘计算与AI系统,依旧使用CAN通讯接口操控机械手臂。

    调试接口

    本次使用串口usart1,9600-n-8-1,做调试数据输出接口,实时打印操作记录,便于我们调试与发现问题。

       


    测试
    PCB原理图
    n32g455_pcb0.png 表情

    n32g455_pcb1.png
    软件设计
    设计需求
    软件架构上面,本次移植使用FreeRTOS嵌入式操作系统,提升系统的功能可扩展性,配置便捷性等。

    FreeRTOS移植

    由于N32G455VE属于高性能带浮点运算的Cortex-M4内核的微处理器,因此,我们在移植FreeRTOS时,也兼顾其高性能的特点,不损失性能。在系统时基上面,我们采用1ms的时基,满足我们本项目的实时性要求,又方便我们计算延时等。

    这里我们主要参考国民技术官方的白皮书,来完成FreeRTOS的移植,并修改FreeRTOSConfig.h头文件,裁剪内核的大小。

    FreeRTOS任务划分

    本项目共划分10个任务:

    首先启动时钟配置,并创建LED工作状态任务led_blink任务。

    在led_blink任务中创建其余9个任务,包括:

    • 任务1-6:控制6路舵机的驱动PWM波产生任务;
    • 任务7:ADC周期采样,并分析。通过信号量阻塞;
    • 任务8:CAN接收处理任务。通过信号量的方式+共享内存形式传递脉宽值
    • 任务9:串口日志发送。将操作日志上传到PC端



    核心源代码


    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-4-29 14:11 , Processed in 0.111192 second(s), 16 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.