2.电调(ESC)-XP7A刷BLHeli固件(四轴专用,更快响应)

BlHeli开源电调代码-背景篇
市面上电调的效果都很不好,试过华科尔的10LT,以及AOE无刷转换器+6A电调,都是油门1/3位置才能启动,到了2/3位置就满油门了,而这些电调都无法编程改变设置,导致无刷很不顺

BLHeli程序支持的功能:
更好的支持无刷尾电调,避免用SR120导致尾重的效果(除了3D高手,一般人改尾无刷没有太大的必要。但是改了之后确实可以使小鸡在侧翻滚时更好地保持前后平衡,所以是否改尾无刷取决于你的飞行水平是否足够高J
主无刷支持定速模式这个很强大,将高档电调才有的定速移植到小鸡,使暴力3D时可以有效地避免电机掉转速,不过定速模式需要很大功率的电机(至少hp05s以上)才有足够的功率余量来让定速发挥作用,所以用一般的c05m电机实际意义不大。还有,由于不是用测旋翼头转速来实现定速,这个定速模式可以看做是一种仿真定速或者伪定速。不过无论如何,开启了定速绝对可以让各种飞行保持高度更稳定,这点就足以秒杀市面上其他小鸡无刷电调(当然卖mcpx电调的商家也会抄袭这个程序出改进版的mcpx电调)
可以用遥控器对电调参数编程 – 这点也可以市面上其他小鸡无刷电调的厂家回去面壁三天了;此外有其他网友提供的电脑用编程界面,可以在电脑上很方便的设置电调参数,使笔记本成为编程卡,比用遥控器编程更加直观快捷
可以自己DIY出超轻的电调(<0.4g--小鸡减轻重量很有用,即使零点几克的减肥也足以让翻滚更好操控
支持MCPX v1v2 –这个程序可以自动识别1khz-12khzPWM有刷信号,经过我的实际测试,可以覆盖所有的迷你机:FBL100(12Khz), Mcpx V1(8Khz), Mcpx v2(1Khz), Genius CP/mini cp(据说是2Khz)
不需要额外的有刷转换电路- BLHeli程序即可实现有刷信号识别并控制无刷电机,市面上的类似电调比如华科尔的 10LT都要一个单独有刷转无刷电路,弱爆了。

- 最新试验表明 , Blheli除了可以识别mcpx/fbl/cp之类的有刷输出信号,也可以识别PPM无刷信号,在120d02s之类的接收机也可以正常使用 -- 同时兼容有刷和无刷输入


一、硬件改动和连接

XP7A


标了Remove的电容焊掉,编程器的三根线接到三个圈的地方(黑、红、黄 <-> 黑、红、白)


如果不是用上面的专门USB设置工具,参照下面进行连接

电调和编程器连接用C8051C2接口即可,只需要连接3根线。实际上,所有电调的电路板都会留好编程用的焊点,找到C2D, C2KGND三个焊点连接到编程器对应的接脚,然后给电调供电,就可以用下 载器软件刷程序。




二、运行BLHeli-Setup

下载地址:http://download.csdn.net/detail/jiangwujing/5197643


  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
/* This file is part of AutoQuad ESC32. AutoQuad ESC32 is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. AutoQuad ESC32 is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with AutoQuad ESC32. If not, see . Copyright © 2011, 2012 Bill Nesbitt */ /* * pwm.c文件.此文件有2个功能,2个功能分别使用,不能同时使用 * 1、pwm in输入模式,pwm输入中断里,调用runNewInput函数 * 2、one wire通讯协议,pwm输入中断里,调用owEdgeDetect函数,来输入新的数据,调用owReset函数来复位1wire通讯 * */ #include "pwm.h" #include "timer.h" #include "run.h" #include "main.h" #include "ow.h" #include "stm32f10x_gpio.h" #include "stm32f10x_tim.h" #include "misc.h" static int16_t pwmMinPeriod; //timer1 ch1 pwm 输入最小周期 static int16_t pwmMaxPeriod; //timer1 ch1 pwm 输入最大周期 int16_t pwmMinValue; //timer1 ch2 pwm 输入最小周期 static int16_t pwmMaxValue; //timer1 ch2 pwm 输入最大周期 int16_t pwmLoValue; int16_t pwmHiValue; int16_t pwmMinStart; volatile uint32_t pwmValidMicros; //关闭输入捕获比较中断 1和2 void pwmIsrAllOff(void) { PWM_TIM->DIER &= (uint16_t)~(TIM_IT_CC1 | TIM_IT_CC2);//关闭中断 } //开启输入捕获比较中断 1和2 void pwmIsrAllOn(void) { PWM_TIM->CCR1; PWM_TIM->CCR2; PWM_TIM->DIER |= (TIM_IT_CC1 | TIM_IT_CC2);//允许捕获比较 1 2中断 } //开启捕获比较2中断 void pwmIsrRunOn(void) { uint16_t dier = PWM_TIM->DIER; dier &= (uint16_t)~(TIM_IT_CC1 | TIM_IT_CC2); dier |= TIM_IT_CC2;//允许捕获/比较2中断 PWM_TIM->CCR1; PWM_TIM->CCR2; PWM_TIM->DIER = dier; } //timer 1 void pwmInit(void) { GPIO_InitTypeDef GPIO_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; TIM_ICInitTypeDef TIM_ICInitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; pwmSetConstants(); // TIM1 channel 1 pin (PA.08) configuration GPIO_InitStructure.GPIO_Pin = PWM_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(PWM_PORT, &GPIO;_InitStructure); // Enable the TIM1 global Interrupt NVIC_InitStructure.NVIC_IRQChannel = PWM_IRQ; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC;_InitStructure); TIM_TimeBaseStructInit(&TIM;_TimeBaseStructure); TIM_TimeBaseStructure.TIM_Prescaler = (PWM_CLK_DIVISOR-1); TIM_TimeBaseStructure.TIM_Period = 0xffff; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(PWM_TIM, &TIM;_TimeBaseStructure); TIM_ICInitStructure.TIM_Channel = PWM_CHANNEL; TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising; TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; TIM_ICInitStructure.TIM_ICFilter = 0x0; TIM_PWMIConfig(PWM_TIM, &TIM;_ICInitStructure); // Select the TIM Input Trigger: TI1FP1 // 滤波后的定时器输入1(TI1FP1) TIM_SelectInputTrigger(PWM_TIM, TIM_TS_TI1FP1); // Select the slave Mode: Reset Mode TIM_SelectSlaveMode(PWM_TIM, TIM_SlaveMode_Reset);//复位模式 // Enable the Master/Slave Mode TIM_SelectMasterSlaveMode(PWM_TIM, TIM_MasterSlaveMode_Enable); // TIM enable counter TIM_Cmd(PWM_TIM, ENABLE); pwmIsrAllOn(); } //timer1 TIM1_CC_IRQHandler中断 void PWM_IRQ_HANDLER(void) { uint16_t pwmValue; uint16_t periodValue; uint8_t edge; edge = !(PWM_TIM->SR & TIM_IT_CC2); periodValue = PWM_TIM->CCR1; //IO 输入PA8 周期 pwmValue = PWM_TIM->CCR2; //IO 输入(但是没有看到配置了使用哪个IO做为输入了) 脉宽长度 // look for good RC PWM input if (inputMode == ESC_INPUT_PWM && //PWM输入模式 periodValue >= pwmMinPeriod && periodValue = pwmMinValue && pwmValue <= pwmMaxValue //脉宽长度 ) { if (edge == 0) { pwmValidMicros = timerMicros; runNewInput(pwmValue); //PWM正确.输入 } } } void pwmSetConstants(void) { float rpmScale = p[PWM_RPM_SCALE]; pwmMinPeriod = p[PWM_MIN_PERIOD] = (int)p[PWM_MIN_PERIOD];//PWM最小周期 timer1 ch1 pwmMaxPeriod = p[PWM_MAX_PERIOD] = (int)p[PWM_MAX_PERIOD];//PWM最大周期 timer1 ch1 pwmMinValue = p[PWM_MIN_VALUE] = (int)p[PWM_MIN_VALUE]; //PWM最小周期 timer1 ch2 pwmMaxValue = p[PWM_MAX_VALUE] = (int)p[PWM_MAX_VALUE]; //PWM最大周期 timer1 ch2 pwmLoValue = p[PWM_LO_VALUE] = (int)p[PWM_LO_VALUE]; pwmHiValue = p[PWM_HI_VALUE] = (int)p[PWM_HI_VALUE]; pwmMinStart = p[PWM_MIN_START] = (int)p[PWM_MIN_START]; if (rpmScale PWM_RPM_SCALE_MAX) rpmScale = PWM_RPM_SCALE_MAX; p[PWM_RPM_SCALE] = rpmScale; } ESC32开源电调 源码与原理图,此源码采用RTT操作系统,CAN PWM操作方式 ,本人已用PWM方式成功驱动起来,CAN 暂且还没做测试。 此资料是 啊嘉 开源出来的,好资料不敢独享,稍加整理放到这与大家共享。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值