当前位置: 首页 > news >正文

AM32电调学习解读九:ESC上电启动关闭全流程波形分析

        这是第九篇,前面的文章把各个模块的实现都介绍了一轮,本章是从运行的角度结合波形图,把整个流程走一遍。

        先看下一运行的配置,我把一些配置关闭了,这样跑起来会好分析一些,不同配置跑起来效果会有差异。使用的ServoPwm信号。

1、运行配置

2、ESC上电启动停止全过程

ESC上焊了很多飞线,用GPIO指示运行的状态

void MX_GPIO_Init(void)
{gpio_mode_QUICK(GPIOA, GPIO_MODE_OUTPUT, GPIO_PULL_NONE, GPIO_PINS_12);gpio_mode_QUICK(GPIOA, GPIO_MODE_OUTPUT, GPIO_PULL_NONE, GPIO_PINS_15);gpio_mode_QUICK(GPIOB, GPIO_MODE_OUTPUT, GPIO_PULL_NONE, GPIO_PINS_2);gpio_mode_QUICK(GPIOB, GPIO_MODE_OUTPUT, GPIO_PULL_NONE, GPIO_PINS_3);gpio_mode_QUICK(GPIOB, GPIO_MODE_OUTPUT, GPIO_PULL_NONE, GPIO_PINS_4);gpio_mode_QUICK(GPIOB, GPIO_MODE_OUTPUT, GPIO_PULL_NONE, GPIO_PINS_5);gpio_mode_QUICK(GPIOB, GPIO_MODE_OUTPUT, GPIO_PULL_NONE, GPIO_PINS_7);gpio_mode_QUICK(GPIOB, GPIO_MODE_OUTPUT, GPIO_PULL_NONE, GPIO_PINS_8);//PA11作为比较器输出 gpio_init_type gpio_init_struct;crm_periph_clock_enable(CRM_GPIOA_PERIPH_CLOCK, TRUE);gpio_init_struct.gpio_pins = GPIO_PINS_11;gpio_init_struct.gpio_mode = GPIO_MODE_MUX;gpio_init_struct.gpio_out_type = GPIO_OUTPUT_PUSH_PULL;gpio_init_struct.gpio_pull = GPIO_PULL_NONE; gpio_init(GPIOA, &gpio_init_struct);gpio_pin_mux_config(GPIOA, GPIO_PINS_SOURCE11, GPIO_MUX_7);
}

3、ESC上电油门信号检测

先来一个部分发大图

(1)MCU启动

(2)发启动音

然后开启接收油门信号

(3)油门在位检测

detectInput->checkServo

transfercomplete -> inputSet == 1 -> !armed

这个时候油门信号是1001us,是小于启动点的

(4)油门信号置低解锁

油门置低1秒解锁

(5)解锁后发音

发两种频率的声音

4、启动

(1)油门大于启动点

(2)old_routine=1阶段

每隔50us执行tenKhzRoutine->getBemfState读取反电动势

(3)找到过零点则换相

(4)转速达到预期,切无感驱动

5、无感驱动

(1)interruptRoutine

(2)检测到过零点

这里会设置换相等待时间waitTime,然后使能定时器

(3)PeriodElapsedCallback定时器回调

换相,计算换相等待时间,使能比较器中断

(4)下一次interruptRoutine

6、油门减小转速低了

old_routine  = 1;//油门低于这个转速,使用同步驱动的方式

7、转速低了油门小于启动点停转

7、整理

http://www.xdnf.cn/news/534745.html

相关文章:

  • 无人机遥控器光纤通信模块技术要点!
  • 前端(vue)学习笔记(CLASS 6):路由进阶
  • 公网ip是固定的吗?动态ip如何做端口映射?内网ip怎么让外网远程访问?
  • FastAPI自定义异常处理:优雅转换Pydantic校验错误
  • 【占融数科-注册/登录安全分析报告】
  • python里的\和/有什么区别
  • 汇编:电子计数器
  • SCT2A10一款4.5V-85V 0.6A 高效率同步可调频率的降压DCDC转换器
  • Kubernetes高阶使用指南:深入探索容器编排的艺术
  • 基于大模型的手术全流程智能决策支持系统大纲
  • 关于systemverilog中在task中使用force语句的注意事项
  • 核保核赔的集中管理方案
  • GO语言学习(五)
  • 【C/C++】C++并发编程:std::async与std::thread深度对比
  • GPFS故障实际生产故障处理分析
  • 告诉我,pavucontrol的用法,我连接耳机的时候,输入设备应该使用什么呢?
  • AI神经网络降噪 vs 传统单/双麦克风降噪的核心优势对比
  • Ktransformers0.3框架的api访问接口程序
  • vue2.0 组件生命周期
  • LLaMA-Factory:了解webUI参数
  • Mysql 刷题 day06
  • Image and depth from a conventional camera with a coded aperture论文阅读
  • “保证医疗器械信息来源合法 真实、安全的保障措施、情况说明及相关证明”模板
  • 滑动窗口算法详解:从理论到实战(LeetCode 3 438)
  • 自动化测试的框架有哪些?原理是什么?
  • 深入掌握MyBatis:连接池、动态SQL、多表查询与缓存
  • springboot+mybatis或mybatisplus在进行%name%的前后模糊查询时如何放防止sql注入
  • 汇川MD810-20M4110GXXX变频器为什么要加GRJ9000S电源滤波器?
  • C# 深入理解类(属性)
  • python打卡day30