Auteur: Il y a une fée épouse Xie le commerçant
Date: 2021/2/18
Publiez cet article temporairement (seul le code est inclus), je le compléterai plus tard (y compris l'analyse des raisons pour lesquelles le code est écrit de cette manière) et ensuite mettre à jour l'article!
Une série de petits drones à quatre axes sera mise à jour cette année, de la conception fonctionnelle → carte mentale → conception schématique → mise en page PCB → PCB de soudage → code de programmation → débogage de l'ensemble de la machine pour enregistrer leur propre processus de croissance!
Ce petit drone à quatre axes a été fabriqué pendant les années universitaires, et maintenant j'ai une compréhension plus profonde de l'incorporation dans le travail et les études, je veux donc réorganiser le petit quatre axes, puis réaliser la conception des commandes de vol du grand quatre- axe sur cette base., Tout cela sera fait après le travail!
//小四轴无人机设计四个空心杯电机,需要四路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