四旋翼无人机从0到1的实现(十二)无人机外设驱动→MOTOR

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

猜你喜欢

转载自blog.csdn.net/FutureStudio1994/article/details/113853688