站内搜索
发作品签到
专业版

电赛TI训练营-简易PID项目

工程标签

39
0
0
0

简介

项目基于立创-天猛星MSPM0G3507开发板,目标实现使用按键在IPS液晶屏上设置参数,通过PID算法,控制霍尔编码器电机,实现PID定速和定距功能。

简介:项目基于立创-天猛星MSPM0G3507开发板,目标实现使用按键在IPS液晶屏上设置参数,通过PID算法,控制霍尔编码器电机,实现PID定速和定距功能。
电赛TI训练营-简易PID项目

开源协议

CC BY-NC-SA 3.0

(未经作者授权,禁止转载)
创建时间:2025-05-02 07:23:13更新时间:2025-06-09 14:39:16

描述

简易PID项目训练营学习记录

一、项目简介

立创开发板推出了电赛TI-简易PID项目训练营活动,看到电赛和PID这俩词同时出现,有点犯难,因为基础薄弱,怕跟不上来; 不得不说,在了解项目简介和资料的详细程度后,感叹项目团队用心了,让我觉得我又行了,学起来! 以下内容仅做学习总结记录,可靠性请诸位自行甄别哈。

项目基于立创-天猛星MSPM0G3507开发板,目标实现使用按键在IPS液晶屏上设置参数,利用PID算法,控制霍尔编码器电机,实现PID定速和定距功能。

二、硬件部分

1、原理图

1.1电源输入电路

    由三脚开关控制Type-c接入的5V电源给电机和开发板供电,导通时红色二极管指示灯被点亮; 其中U1为防倒灌二极管。

 

1.2电机驱动电路

项目采用BDR6126D直流电机驱动芯片,根据源项目指导,个人理解电机的供电是从电源与开发板中间位置引入的,电源发往开发板的电流,容易被电机忍不住偷吃一部分,这时候根据电机驱动数据手册上的示意图

需要给这家伙门口装个冰箱(C0电容),馋了先吃冰箱里的,不够再送,别惦记开发板家的。

 

 

   

电机编码器线序因为有所差异,三种线序灵活配置,总有一款适合你。

 

 

1.3按键电路

上下左右中,一共五个按键,控制A08、A09、A28、A31、B04这五个开发板上的引脚,当引脚接地为低电平时,按键逻辑被触发。

   

 

1.4立创-天猛星开发板

        我还真研究过,此乃项目核心,名头之大,三十六天罡之一天猛星,别名猛冒星,意思就是讲它引脚定义之多,看得眼睛猛冒星星。

 

1.5连接排母

    两个2.54引脚间距,2*20规格的排母,用来托举天猛星的。

 

 

 

1.6芯片座

   铁打的芯片座,流水的芯片,BDR6126D电机驱动芯片专属宝座,不是它多尊贵,等它被电机气崩了,方便换。

  

 

1.7螺丝孔位

  孔位是留了,螺丝忘买了。

 

Ps:上述图片灰色部分为不加入BOM和不转到PCB的提示。

 

 

   

 

 

2、PCB

      源项目考虑像在下这样的新手焊接问题,非常友好的使用直插元器件,使用量也很少,所以PCB布线比较清晰,着重注意电源线加粗就可以了。因购买的电机与源项目推荐的电机尺寸有差异,实物偏大,就简单的改了改布局,电机部分开孔略大,总比卡不进去强。

 

    

 

 

三、软件部分

    1.环境搭建

       1.1 本项目的软件类工具

             

       从左到右分别是keil5嵌入式系统开发环境、MSPM0 SDK软件开发套件、SysConfig图形化配置工具。

       这三款软件,本人和电脑都是第一次相识,说实话除了第一个知道是个厨房,芯片吃啥都在里头造,后面两个理解成SysConfig是位巧妇,不再为有没有米而发愁了,人家转头玩起了预制菜(MSPM0 SDK),这个组合可以让开发者专注功能实现,减少在底层代码上投入过多精力。

       搭建教程源项目有详细且友好的操作步骤教学,但过程确实繁琐,状况百出,但目的是统一的,就是让系统找到这个要使用的工具。注意路径不能有中文SDK与SysConfig路径配置要准确,一个点的问题耽误大半天进度。

就这里,多删了个点,报错:..\ti_msp_dl_config.h(54): error: 'ti/devices/msp/msp.h' file not found。

 

 

2.代码编写

2.1底层代码编写

整个代码编写进行分层编写分为硬件层(适配接口)、中间层(信息处理)、应用层(功能实现)

      

   2.1.1屏幕信息与驱动创建

采用的是1.9寸,SPI接口,分辨率170*320,驱动ST7789。天猛星开发板自带SPI接口,焊上赠送的脚座,插上屏幕就可以用了。

 

 

2.1.2创建驱动

选取厂家提供的驱动源代码中的HARDWARE里的LCD代码复制到自己创建的工程文件里的hardware文件内。

 

 

导入其中两个.c文件到hardware目录下

      

 

使用SysConfig配置引脚,参考天猛星开发板原理图中的屏幕接口电路图。

跟着教学视频一步一步调整修改代码,最终实现软件SPI效果:

                 

 

硬件SPI效果:

                 

 

在后面的字符取模中出现复制到代码中的文字显示成问号,无法起到索引的作用,

                 

解决办法:

       选择keil菜单栏中的Editconfiguration,修改全局编码即可。

             

在lcdfont.h文件内替换取模软件生成的字符

           

           

 

编译加载后的效果:

   

 

 

2.1.3按键驱动

复制上一个屏幕工程文件时,需要更改工程路径:

 

 

 

 

根据按键原理图使用图形化代码生成工具SysConfig配置上、下、左、右、中引脚按键初始化GPIO:

 

在hardware文件下新建两个文件并保存到工程文件内,用于存储按键状态与判断。

 

编辑测试代码,根据教学视频,编写中间按键被按下后屏幕显示字符。

 

   实现效果:

 

   

 

 

  接下来要借助开源按键库,实现按键长按与短按操作 

 

    短按显示字符,长按消失效果测试:

   

2.1.4电机驱动

使用图像化代码生成工具SysConfig配置PWM引脚

             

             

 

  在创建的motor_drive工程文件里的硬件层文件夹hardware中新建hw_motor.c和hw_motor.h两文件,并将hw_motor.c添加至工程目录中。

             

 

   根据电机驱动芯片输出真值表,得知电机转动控制逻辑,通过控制FI和BI两端PWM波占空比,实现高低电平的驱动逻辑。

     

   

 

验证BI为电平,FI为低电平时电机旋转逻辑,对着教学视频跟敲代码:

             

           

         

 

 

   编译烧录后查看电机转动效果:

           

 

 

   接下来尝试将电机旋转速度显示在屏幕上,每次10递增,电机缓慢加速,到达9999电机停止转动,周而复始。

 

           

 

2.1.5编码器驱动

依旧复制上一个工程,重命名encoder_drive文件名,打开kei并更改项目路径。

然后使用图形化代码生成工具配置引脚:

配置A相引脚

配置B相引脚:

 

 

 创建hw_encoder.c和hw_encoder.h文件存在hardware文件内,并将hw_encoder.c导入到工程目录下:

       

 

     

 

获取编码器数值显示在屏幕上,单A相检测显示:

 

 

上图A相检测数值最大为±12(开了AB双相检测后才是±21),与教学视频±51不符,查找修改多出代码不得实现,几度要放弃,最后是在查看电机线序时偶然发现,项目推荐的是13线霍尔编码器,我这个是3线的,虽然不明白里面的道道,但是咱九九乘法口诀表背的溜啊,对于3线编码器,每转的计数为:3×4=12(4倍频)那这就对上了,52/4=13,符合线数之说。

不懂代码,让AI给修改如下:

         

 

最终A相编码器获取的数值为±51,获得伪13线编码器电器。

       

 

  2.2软件应用层代码

软件应用层代码包括UI与界面管理事件与状态机PID定速功能PID定距功能;这部份代码因个人基础薄弱,也没有视频教学这块石头了,没得摸了,完全是比着葫芦画瓢,就不贴代码了,直接展示各功能效果。

UI与界面管理

 

 

 

状态机与事件

 

PID定速功能

 

 

PID定距功能


 

 

四、结构部分

       忘了给PCB留电机固定孔位,同时屏幕插在开发板上时,下方会悬空,时间长了会倾斜损坏引脚,再者如果被键盘不小心砸到了,实测能飞出去一米多。

       

 

       

 

       出于固定电机和支撑屏幕的目的,打印了一个固定支撑架子:

     

    

     本次训练营并没有对外壳有什么硬性要求,至于为啥给电机做个船型外壳,无他,装X用,别人问我捣鼓啥呢?验证舰载量子雷达使用PID算法对快速捕捉并跟踪雷达目       标的极端特殊应用。 

     

 

 

五、总结

以上内容为学习记录,可靠性请自行斟酌。

通过本次训练营,对开发环境搭建、配置工程模板、彩屏驱动、按键驱动、电机驱动、编码器驱动这些软件底层设计进行了学习,对本人来说皆为新识,受益匪浅,需要好好消化一下。

就这样! 希望类似项目多多益善,不积跬步无以至千里,祝大家别累着,更进一步,大展宏图!

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

3D模型

序号文件名称下载次数
暂无数据

附件

序号文件名称下载次数
暂无数据
克隆工程
添加到专辑
0
0
分享
侵权投诉

工程成员

知识产权声明&复刻说明

本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。

请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。

评论

全部评论(1
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航