kjsm

  • 2025-01-16
  • 发表了主题帖: [极海APM32M3514电机]+无感电机运行

    本帖最后由 kjsm 于 2025-1-15 09:51 编辑 极海APM32M3514无感FOC测试; 继上次运行完有感驱动BLDC 这次尝试官方的无感DEMO程序;官方的程序已经把DEMO的硬件都配置完成;主要根据自己不同的电机调试parameter.h里的参数基本就可以将电机运行起来。 分享下调试过程注意的几点: 1、观察下系统是否报错;若运行过程中程序报错,则可以通过观测“M1FaultID_Record”故障标识确认报错代码,进而定位到问题所在,进行分析及排查。Fault.h文件中参数如下图所示。 2、观察状态机的值;系统运行到哪一种状态,可以通过eM1_RunSubState来观察; 3、分步调试;BLDC无感的三段式启动 无刷电机的三段式启动是一种特殊的启动技术,主要应用于无刷直流电机(BLDC)在静止或低速时反电动势很小或为零,无法直接通过反电动势信号确定转子磁极位置的情况。这种启动技术确保了电机能够从静止状态平稳过渡到运行状态,并保证了启动的可靠性。以下是对无刷电机三段式启动的详细解释: 定义与原理 三段式启动技术是指将无刷直流电机的启动过程划分为三个阶段:转子预定位、外同步加速和运行状态切换。这三个阶段共同协作,使电机能够顺利启动并稳定运行。 转子预定位: 目的:确定转子在静止时的位置,为电机启动做好准备。 方法:一般采用磁制动转子定位方式。系统启动时,任意给定一组触发脉冲,在气隙中形成一个幅值恒定、方向不变的磁通。只要保证其幅值足够大,这一磁通就能在一定时间内将电机转子强行定位在这个方向上。 外同步加速(强拖): 目的:在转子预定位后,由于此时定子绕组中的反电动势仍为零,必须人为地改变电机的外施电压和换相信号,使电机由静止逐步加速运动。 方法: 恒频升压法:换相信号频率不变,逐步增大外施电压使电机加速。 恒压升频法:保持外施电压不变,逐渐增高换相信号的频率,使电机逐步加速。 升频升压法:同时逐步增大外施电压和增高换相的频率。 运行状态切换: 目的:当电机通过外同步加速到一定的转速,反电势信号可以准确检测时,由外同步向自同步切换。 方法:可以通过试验观察反电势信号能够被准确检测的转速,当达到这一转速时即可进行切换。另一种方法是通过试验检测出达到预定切换转速的时间,通过软件定时器设置切换时间。 三段式启动电流示意; 4、电机启动时分三段启动:我们在调试时,也可以一步一步状态调试;我的做法时; 在状态机先注释下个状态;如我先调试开环启动,就注释下闭环的状态。每步调试,查看电机实际的运行状态。 最后我的电机实际运行的视频 [localvideo]ae1eeaeb01f5bd6b1ed392bfdd5228f6[/localvideo]  

  • 回复了主题帖: [极海APM32M3514电机]+PWM使用及电机运行

    常见泽1 发表于 2025-1-15 11:18 楼主 你的电机和驱动用的是啥型号  驱动板是极海APM32M3514电机通用评估板;驱动芯片和单片机合封在一起的。电机是以前淘宝二手买的找不到型号了;

  • 2025-01-13
  • 发表了主题帖: [极海APM32M3514电机]+PWM使用及电机运行

    本帖最后由 kjsm 于 2025-1-13 09:04 编辑 接上一篇文章,https://bbs.eeworld.com.cn/thread-1302655-1-1.html 读到了hall信号,这里初步使用PWM的控制实现电机控制。 硬件介绍:APM32M3514集成了驱动,MCU的PWM引脚与驱动的连接如下: 使用的是TMR1高级定时器 配置PA8/PA9/PA10复用功能 配置PWM的计数模式,和打开PWM的更新中断 通过上篇文章的基础,通过读取HALL信号,使用上桥PWM下桥打开的控制方式;H_PWM-L_ON的方式驱动电机 在PWM中断里处理换向程序;通过读取的hall信号进行6步换向驱动电机。 驱动输出的电压波形 电机运行视频: [localvideo]70af5464e78975debaebebf0568c344d[/localvideo]  

  • 2025-01-03
  • 发表了主题帖: [极海APM32M3514电机]+读取霍尔信号

    本帖最后由 kjsm 于 2025-1-3 09:37 编辑 这次试下使用APM32M3514对三相霍尔信号读取; 霍尔传感器 电机中的霍尔传感器为单极性霍尔传感器,即在靠近N磁极时表现为高电平,在靠近S磁极表现为低电平。 直流无刷电机的霍尔传感器布置方式为120°和60°两种,对应着两种控制序列。 参考网上这个的文章https://blog.csdn.net/Seigyoravel/article/details/138876974 120°霍尔的分布 霍尔信号的波形如下图: 开发板上的霍尔信号连接的是PA3/PA1/PA0引脚; 我打算通过GPIO的外部中断来对霍尔信号进行读取,通过外部中断的上升/下降沿触发中断 GPIO的中断信号: 配置GPIO为输入引脚及配置GPIO使用外部中断功能 配置外部触发中断的模式,上升沿和下降沿均触发,使能中断 触发中断后,写入同一个中断处理函数 如图蓝色为U相的霍尔信号输入,黄色线是每次进入外部中断进行一次IO口翻转。三路霍尔信号120°的霍尔上升和下降均触发;所以一个蓝色霍尔信号,有六次翻转。 将三相的霍尔信号进行整合按HC-HB-HA记录;定义一个数组Hall_Three.HallUVW[3]; HC为1时;Hall_Three.HallUVW[2]就置1否则为0依次类推; 三相霍尔信号组合,通过串口打印出霍尔的状态;

  • 2024-12-24
  • 发表了主题帖: [极海APM32M3514电机]+ADC和内部运放使用

    今天测试下APM32M3514里的ADC和内置运放的应用; 硬件上我打算用滑动变阻器可以用来观察ADC的采样值的变化 ADC的采样使用了PA7 初始化配置GPIO和ADC的采样设置 在AD中断程序中,读取AD的值并串口打印出来 串口打印出来的AD采集数据 APM32M3514里面还内置4个运算放大器,运放的压摆率在10V/us; 这个参数代表运放响应迅速;可以在电机应用中放大采样相电流的信号; 内部运放的电路示意图 APM32M3514内部运放可以配置两种情况;内部增益和外部增益; OPA软件的配置如下: 通过AD读取运放的OPA输出引脚的电压

  • 2024-12-17
  • 发表了主题帖: [极海APM32M3514电机]+串口调试使用

    本帖最后由 kjsm 于 2024-12-17 09:16 编辑 今天测试下APM32M3514;板上预留的串口是连接到PF0/PF1上的; 要想使用PF0和PF1串口通信,板上需要先要把R37/R38的0电阻移动到R44和R45上 因为是复用了连接外部晶振的IO口,需要使用内部时钟HSI 可以直接使用HIS内部时钟是8MHZ,要想得到更高频率需要设置PLL; 可以参考在system_apm32m35xx.c修改,通过查看规格书 HSICLK只能2分频后作为PLL时钟源;查看PLL倍频系数 SystemCoreClock最高能设置在(8/2)*16 = 64MHZ 相关的软件配置如下 PF0/PF1将配置复用串口是AF1; 配置串口模式,使能串口中断 在USART1中断里写下接收的数据的处理程序 实际的效果如下:

  • 2024-12-11
  • 发表了主题帖: [极海APM32M3514电机]+初步开箱和GPIO口使用

    开箱后板子十分小巧精致;因为APM32M3514集成了运放、LDO和栅极驱动 看介绍板的接口如下: APM32M3514是M0+ 72MHz的MCU;内部集成了运放和M0CP协处理器;这个协处理器可以方便计算电机多种运算;而且APM32M3514集成了LDO和栅极驱动;集成度是很高的一款芯片 可以去官方的芯片资料下载地址;下载对应的工具包 https://www.geehy.com/product/fifth/APM32M3514#info 打开SDK下的GPIO工程 一开始用J-link没有找到芯片, 板上的LED灯是连接PA12引脚;把对应的引脚初始化下: 用示波器观察GPIO的翻转情况如下; 这就是我的APM32M3514初步入门,后面会继续测评板子其他功能;

  • 2024-11-27
  • 回复了主题帖: 测评入围名单:极海APM32M3514电机通用评估板

    个人信息无误,确认可以完成测评分享计划。

  • 2024-08-08
  • 回复了主题帖: >>征集 | 使用 MCU,哪些问题最令你头大?

    在使用(MCU)进行项目开发时,以下是一些我总结令人头疼的问题:       1/硬件兼容性和稳定性问题: 不同批次的MCU之间可能存在微小的差异,这可能导致在某些硬件上工作正常的代码在另一批次的MCU上无法正常工作。 MCU的稳定性问题;MCU产品的成熟性;样品没问题到量产时出现偏差过大,能否量产问题 2/电源管理: 低功耗设计是许多嵌入式应用的关键,但正确管理MCU的电源状态(如睡眠、唤醒、低功耗模式等)往往很复杂,并且容易出错。 供电电压的波动和噪声也可能对MCU的稳定性和性能产生负面影响。 抗干扰能力不够担心MCU突然失效,程序跑飞。 3/调试困难: 由于MCU的运行环境和PC机截然不同,调试过程可能相当复杂,特别是在没有适当的调试工具或调试接口的情况下。 实时系统的问题可能难以复现,增加了调试的难度。 能有好的调试工具就能快速找到软件问题 4/电磁兼容性(EMC)和电磁干扰(EMI):  在嵌入式系统中,EMC和EMI问题可能导致设备性能下降或完全失效。这些问题可能由多种因素引起,包括电路设计、PCB布局、电源质量等 5/资料例程是否完善 在嵌入式系统中,快速的上手也是MCU考虑的一方面;资料和例程的齐全,说明文档的存在,能够让工程师快速的熟悉一款新的MCU;加速产品的开发进度。 例程的注解能够更方便的了解例程的功能和外设的使用

  • 2024-02-27
  • 发表了主题帖: 【复旦微车规MCU FM33FT0A 系列】+ 移植FreeRTOS系统

    本帖最后由 kjsm 于 2024-2-27 14:45 编辑 FreeRTOS简介         FreeRTOS是一个迷你的实时操作系统内核。作为一个轻量级的操作系统,功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等,可基本满足较小系统的需要。 其功能特点如下: (1)用户可配置内核功能( 可裁剪 ) (2)多平台的支持 (3)提供一个高层次的信任代码的完整性 (4)目标代码小,简单易用 (5)遵循MISRA-C 标准的编程规范 (6)强大的执行跟踪功能 (7)堆栈溢出检测 (8)没有限制的任务数量 (9)没有限制的任务优先级 (10)多个任务可以分配相同的优先权队列,二进制信号量,计数信号灯和递归通信和同步的任务 (11)优先级继承 (12) 免费开源的源代码 我参考了复旦微的FM33LG0XX的FreeRTOS例程。 例程地址:https://www.fmdevelopers.com.cn/forum.php?mod=viewthread&tid=1749 将例程的FreeROTS文件拷贝到自己的工程里 添加头文件支持 在头文件中找到FreeRTOSConfig.h文件,将其复制过来; 在FreeRTOSConfig.h中把时钟改成单片机的时钟;否则task时间会不对; 在主函数上添加头文件和两个Task的任务优先级 添加两个TASK任务,PC1每1 s 翻转一次; PC3每3 s翻转一次 初始化IO做为输出 创建一个Task任务: xTaskCreate(Led1Task,"Led1",configMINIMAL_STACK_SIZE,NULL, TASK_LED1_PRIORITY, NULL);//创建任务函数 vTaskStartScheduler();//任务调度器开启函数 把PC1和PC3接入示波器可以看到了程序正常运行了;PC1每1 s 翻转一次; PC3每3 s翻转一次 附件程序:

  • 发表了主题帖: 【复旦微车规MCU FM33FT0A 系列】+ 硬件SPI驱动LCD屏幕

    本帖最后由 kjsm 于 2024-2-27 14:49 编辑 接上一篇点亮LCD屏幕后,发现使用IO口模拟SPI模式;在LCD的屏幕更新是相对较慢的。复旦微的FD33FT0A是支持使用内置硬件的SPI,所以使用硬件的SPI大大提高SPI的写入速度。屏幕更新的速度也比IO口模拟的更快; FT33FT0A的参考规格书内部SPI模块图;对于屏幕显示暂时不需要读取;所以主要是SPI-MOSI 和SPI-SCK两个引脚;进行SPI操作。 规格书上对于SPI的描述: 初始化中初始化SPI0,屏幕是单片机发送数据到LCD,SPI主要使用了主机模式发送数据给屏幕 通过硬件SPI写一个字节数据,通过busy标志位看发送是否完成 结合之前的屏幕程序,可以将屏幕的程序进行移植; 附上一个SPI刷屏的小视频: [localvideo]80e5d757263aa3ca4a5f61c195127e26[/localvideo]  

  • 2024-02-23
  • 发表了主题帖: 【复旦微车规MCU FM33FT0A 系列】+ 点亮LCD屏幕

    开发板上附带了一块LCD屏幕;现在移植程序点亮LCD屏幕 硬件上查看原理图有相对应得IO引脚如下 总结硬件对应关系: SCL    PE0        SPI的时钟线 SDA   PB14      SPI的数据线 RES   PB15      LCD复位 DC     PE2          LCD数据/命令选择引脚 CS     PE1          LCD显示屏片选信号,低电平有效 BLK   PB9        背光控制开关 屏幕是1.47 172X320的彩色LCD,控制芯片是ST7789v3; 认识SPI 目前是使用IO 口模拟SPI 方式点亮屏幕 配置I/O 模拟SPI写一个字节数据 初始化LCD void LCD_Init(void) { LCD_GPIO_Init();//初始化GPIO LCD_RES_Clr();//复位 FL_DelayMs(30); LCD_RES_Set(); FL_DelayMs(100); LCD_BLK_Set();//打开背光 FL_DelayMs(100); // LCD_WR_REG(0x11); LCD_WR_REG(0x36); if(USE_HORIZONTAL==0)LCD_WR_DATA8(0x00); else if(USE_HORIZONTAL==1)LCD_WR_DATA8(0xC0); else if(USE_HORIZONTAL==2)LCD_WR_DATA8(0x70); else LCD_WR_DATA8(0xA0); LCD_WR_REG(0x3A); LCD_WR_DATA8(0x05); LCD_WR_REG(0xB2); LCD_WR_DATA8(0x0C); LCD_WR_DATA8(0x0C); LCD_WR_DATA8(0x00); LCD_WR_DATA8(0x33); LCD_WR_DATA8(0x33); LCD_WR_REG(0xB7); LCD_WR_DATA8(0x35); LCD_WR_REG(0xBB); LCD_WR_DATA8(0x35); LCD_WR_REG(0xC0); LCD_WR_DATA8(0x2C); LCD_WR_REG(0xC2); LCD_WR_DATA8(0x01); LCD_WR_REG(0xC3); LCD_WR_DATA8(0x13); LCD_WR_REG(0xC4); LCD_WR_DATA8(0x20); LCD_WR_REG(0xC6); LCD_WR_DATA8(0x0F); LCD_WR_REG(0xD0); LCD_WR_DATA8(0xA4); LCD_WR_DATA8(0xA1); LCD_WR_REG(0xD6); LCD_WR_DATA8(0xA1); LCD_WR_REG(0xE0); LCD_WR_DATA8(0xF0); LCD_WR_DATA8(0x00); LCD_WR_DATA8(0x04); LCD_WR_DATA8(0x04); LCD_WR_DATA8(0x04); LCD_WR_DATA8(0x05); LCD_WR_DATA8(0x29); LCD_WR_DATA8(0x33); LCD_WR_DATA8(0x3E); LCD_WR_DATA8(0x38); LCD_WR_DATA8(0x12); LCD_WR_DATA8(0x12); LCD_WR_DATA8(0x28); LCD_WR_DATA8(0x30); LCD_WR_REG(0xE1); LCD_WR_DATA8(0xF0); LCD_WR_DATA8(0x07); LCD_WR_DATA8(0x0A); LCD_WR_DATA8(0x0D); LCD_WR_DATA8(0x0B); LCD_WR_DATA8(0x07); LCD_WR_DATA8(0x28); LCD_WR_DATA8(0x33); LCD_WR_DATA8(0x3E); LCD_WR_DATA8(0x36); LCD_WR_DATA8(0x14); LCD_WR_DATA8(0x14); LCD_WR_DATA8(0x29); LCD_WR_DATA8(0x32); LCD_WR_REG(0x21); LCD_WR_REG(0x11); FL_DelayMs(120); LCD_WR_REG(0x29); }   参照网上的进行屏幕代码的移植,成功点亮了屏幕;  

  • 2024-02-07
  • 发表了主题帖: 【复旦微车规MCU FM33FT0A 系列】+ ADC 的使用

    ADC 的使用 选用了ADC的慢速通道单端输入;板上连接了滑动电位器连接ADC_IN6 ADC转换时序 ADC的输入通道 ADC单次转换全自动触发模式 1/配置ADC的时钟源、参考源选择VDDA 芯片的供电电源 2/配置GPIO口的ADC功能 3/获取ADC通道的值 如果使用VDDA作为基准时,为了采样更准确FM33FT0A还提供了内部的基准源,防止电源电压的变化而产生的采样偏差。 利用之前的UART4串口打印,可以在串口调试助手打印出ADC的采样值

最近访客

< 1/3 >

统计信息

已有49人来访过

  • 芯积分:15
  • 好友:--
  • 主题:16
  • 回复:7

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言