Author:家有仙妻谢掌柜
Date:2021/2/18
暂时发布这篇文章(只包含代码),后面会补充完整(包含解析为什么这么写代码)然后更新该文章!
今年会更新一个系列,小四轴无人机从功能设计→思维导图→原理图设计→PCBLayout→焊接PCB→程序代码的编写→整机调试一系列,以此记录自己的成长历程!
这个小四轴无人机是大学时期学习制作的,加上现在工作学习对嵌入式的理解更加深入,因此想要重新梳理一下小四轴,之后在此基础上实现大四轴的飞控设计,这些都将在工作之余完成!
//小四轴无人机设计四个空心杯电机,需要四路PWM,4个引脚分别由3个Timer输出4路PWM
#include "motor_driver.h"
/*******************************************************************************
* fuction motor_pwm_set
* brief 给电机PWM值
* param 4路PWM
* return 无
*******************************************************************************/
void motor_pwm_set(uint16_t pwm1,uint16_t pwm2,uint16_t pwm3,uint16_t pwm4 )
{
if(pwm1<=PWM_MIN) pwm1=PWM_MIN;
if(pwm1>=PWM_MAX) pwm1=PWM_MAX;
if(pwm2<=PWM_MIN) pwm2=PWM_MIN;
if(pwm2>=PWM_MAX) pwm2=PWM_MAX;
if(pwm3<=PWM_MIN) pwm3=PWM_MIN;
if(pwm3>=PWM_MAX) pwm3=PWM_MAX;
if(pwm4<=PWM_MIN) pwm4=PWM_MIN;
if(pwm4>=PWM_MAX) pwm4=PWM_MAX;
// 以上作为一个条件判断
TIM12->CCR1 = pwm1;
TIM12->CCR2 = pwm2;
TIM5->CCR1 = pwm3;
TIM2->CCR1 = pwm4;
}
#ifndef _MOTOR_DRIVER_H__
#define _MOTOR_DRIVER_H__
#include "board_define.h"
#define PWM_MIN 0
#define PWM_MAX 1000
#define PWM_ldle 40// 怠速40 为了检测飞机跟遥控器绑定成功后,目测电机是否异常
void motor_pwm_set(uint16_t pwm1,uint16_t pwm2,uint16_t pwm3,uint16_t pwm4 );
#endif