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

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.lryc.cn/news/2380066.html

相关文章:

  • 怎么打包发布到npm?——从零到一的详细指南
  • NX二次开发C#---遍历当前工作部件实体并设置颜色
  • 如何用体育数据做分析:从基础统计到AI驱动的决策科学
  • 09、底层注解-@Import导入组件
  • 【notes】VScode 使用总结
  • 【论文阅读】KIMI K1.5: SCALING REINFORCEMENT LEARNING WITH LLMS
  • 云服务器开发软件操作步骤
  • Qwen3 - 0.6B与Bert文本分类实验:深度见解与性能剖析
  • 4.6 sys模块
  • UWB定位方案在水力发电站人员安全的应用推荐
  • 青少年编程与数学 02-019 Rust 编程基础 16课题、包、单元包及模块
  • bat 批处理获取日期、时间
  • 手写tomcat:基本功能实现(3)
  • Spring Cloud Seata 快速入门及生产实战指南
  • 电商平台自动化
  • Java微服务架构实战:Spring Boot与Spring Cloud的完美结合
  • 王树森推荐系统公开课 召回11:地理位置召回、作者召回、缓存召回
  • 无刷直流水泵构成及工作原理详解--【其利天下技术】
  • less中使用 @supports
  • 大数据:新能源汽车宇宙的未来曲率引擎
  • 【Java ee】关于抓包软件Fiddler Classic的安装与使用
  • 第五部分:第五节 - Express 路由与中间件进阶:厨房的分工与异常处理
  • 在 CentOS 7.9 上部署 node_exporter 并接入 Prometheus + Grafana 实现主机监控
  • C++--内存管理
  • Java实现PDF加水印功能:技术解析与实践指南
  • Django + Celery 打造企业级大模型异步任务管理平台 —— 从需求到完整实践(含全模板源码)
  • TC3xx学习笔记-UCB BMHD使用详解(二)
  • 用Python实现数据库数据自动化导出PDF报告:从MySQL到个性化文档的全流程实践
  • 实战设计模式之状态模式
  • 人工智能、机器学习与深度学习:概念解析与内在联系