# 直流电机控制器 **Repository Path**: litte_enigner/dc-motor-controller ## Basic Information - **Project Name**: 直流电机控制器 - **Description**: No description available - **Primary Language**: C - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2022-04-17 - **Last Updated**: 2023-01-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 直流电机控制器设计 ## 功能介绍 这是一个直流电机控制器,其实现的主要功能为对直流电机进行开环或闭环控制,同时参考变频器的控制方式,这个控制器可以通过控制面板上的旋钮进行控制,可以通过电平输入口对电机进行分段速度控制,也可以通过串口用特定的指令进行控制。 ## 硬件设计 这个设计没有绘制PCB图,而是用用各各种模块在洞洞板上进行搭建,所以这里给出各种模块连接关系的图。 ![硬件框图](https://gitee.com/litte_enigner/dc-motor-controller/raw/master/img/%E7%A1%AC%E4%BB%B6%E6%A1%86%E5%9B%BE.png) ![正面布局](https://gitee.com/litte_enigner/dc-motor-controller/raw/master/img/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20220417162531.jpg) ![背面连线](https://gitee.com/litte_enigner/dc-motor-controller/raw/master/img/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20220417162514.jpg) 这里的旋钮用的是电位器,可以根据情况改成编码器控制。与电机连接需要电机驱动,我在测试的时候用的是L298N模块。 ## 软件设计 电机使用定时器3产生PWM控制,测速使用M法测试,反馈控制算法使用位置式PID。GUI使用LVGL,由于用常规方式驱动屏幕界面动画会比较卡顿,所以屏幕驱动使用了SPI+DMA的驱动方式。详细可见代码。 ## 文件结构 ``` ├─.vscode ├─Application │ ├─BSP │ ├─Interface │ └─lvgl ├─Core ├─Drivers ├─img └─MDK-ARM ``` 此工程的基础文件是由stm32cubeMX生成,自己的代码大部分在Application文件夹下,BSP文件是一些驱动代码如按键驱动,lcd驱动、电机驱动等。Interface这是放界面设计代码的地方。 ## 演示视频 这时之前临时拍摄的视频,效果不太好 https://www.bilibili.com/video/BV16A4y1Q7ZM/