前言
STM32F103C8+VS1838+有刷直流电机位置PID,想做一个远程遥控开关的说。
一、项目概览
直接上图
3天来说,工作量还是有点大。
哈哈,后面开发板是野火出的,毕竟32单片机是野火带大的…
总结
第一点:代码的组织,要模块化。不然直接影响后面的开发效率,一个模块一个模块的往上累积。这种规模的我觉得上操作系统会更好组织代码。(未亲自尝试用),不过个人感觉会更好。
第二点:要注意中断优先级的规划,这个工程我用了5个在stm32f10x.it.c里面的函数,TIM1(输出控制电机的PWM波),TIM3(pid运算中断),TIM2(编码器模式),EXTI(红外信号检测),SysTick(内核定时器红外协议的延时)。而且STM32每执行完一条指令就会判断中断是否发生,所以最好把暂时不用的中断暂时关闭,用的时候再开启,我刚开始以为中断优先级配好就OK,奈何做出来的效果和 shit 一样。中断屏蔽不熟,所以当时是直接把中断使能关了。再后来好像直接初始化了…各位大佬们有没有好方法呢。
第三点:一定要注意直流电机反电动势,我已经烧了2个核心板了,因为没有输入隔离保护电路。把单片机击穿了(单片机一上电就发烫)。
用标准库写的驱动,借鉴了野火的代码。记录下来项目心得分享给大家和自己。