前言:
因后期需要使用32单片机控制直流电机做实验,实验需要对电机的精度、响应以及稳定性有一定的要求,但是目前有两个问题:
1、考虑使用的电机有点贵,不能直接购买;
2、PID控制思路仍不明确。
所以假借这几个模块先做个实验试试,为了节省开发时间,本次实验采用HAL库进行开发。
实验过程用到的模块包括:STM32F103C8T6单片机、TB6612FNG电机驱动模块、直流电机(带霍尔编码器,精度一般)、TFT128*128LCD屏显示模块、8v电源模块。
实验思路:
1、利用STM32输出PWM波传输给TB6612驱动模块,使之能够将电源的电压以自己想要的方式施加在电机上,控制电机速度。
涉及知识:GPIO引脚配置、单片机定时器、PWM输出控制、H桥驱动直流电机。
2、编写LCD驱动代码,使之显示相应的内容包括电机转动的正反向,电机的转速。
涉及知识:SPI驱动LCD屏幕、LCD屏字符转码、利用STM32单片机的定时器的输入捕获功能采集电机的电压、ADC采集、卡尔曼滤波、单片机定时器输入捕获。
3、编写电机转动的控制代码,加入PID控制算法,调试PID参数。
涉及知识:PID控制算法(这里推荐B站upDR_CAN老师的视频,大学如果学过控制基础的课程,不需要全部都看)、PID调参方法(这里没找到合适的资料、暂且先用尚硅谷老师的方法来调,后期会尝试多种PID控制算法)
4、加入串口部分,利用上位机串口调试助手测试及控制电机转速、如果时间足够将加入蓝牙模块、利用手柄控制电机。
涉及知识:USART串口传输数据、蓝牙+串口传输数据
5、使用FREERTOS进行任务调度(跟实验关系不大,主要是为了练练手)。
涉及知识:FREERTOS任务调度机制、消息队列、消息通知
6、加入姿态传感器反馈部分。(不是做平衡小车,但跟B站尚硅谷的平衡车项目有很大相似性,只能说很巧)
涉及知识:MPU6050(或MPU系列)、速度计算、加速度控制、计算姿态
目录
一、stm32+TB6612+PWM+电机驱动_tb6612stm32-优快云博客
二、stm32+spi驱动lcd+电机数据采集及显示-优快云博客