本帖最后由 meiyao 于 2024-11-26 18:27 编辑
今年有幸参加了野火的第二期瑞萨RA MCU创意氛围赛,我这边主要是驱动步进电机工作。
下面正式开始我的具体参赛制作流程。
一、概述
使用野火的6T2控制步进电机驱动工作,根据瑞萨RA MCU的特点和步进电机驱动的基本原理,实现野火RA6T2开发板驱动步进电机。步进电机驱动器是一种将电脉冲转化为角位移的执行机构。它通过控制步进电机的各相绕组按合适的时序通电,使步进电机步进转动。步进电机驱动器通常由环行分配器、保护电路和传感器等组成,能够实现对步进电机的精确控制。使用瑞萨RA MCU可以通过其内部定时器或PWM模块生成精确的控制脉冲信号,用于驱动步进电机。这些脉冲信号的频率和占空比可以根据需要进行调整,以实现步进电机的精确调速和定位。
二、准备工作 了解瑞萨RA MCU的特点: RA6T2是一款由瑞萨电子(Renesas Electronics)推出的电机控制微控制器(MCU),它集成了高性能的Arm Cortex-M33处理器和多种专用外设,特别适用于高动态性能的电机控制应用。
主要特性 高性能CPU: 集成Arm Cortex-M33处理器,提供240MHz的实时性能。 支持TrustZone安全功能,增强系统的安全性。 高精度模拟外设: 内置两个16位模数转换器(ADC),支持高精度电流检测。 每个ADC单元都有三个通道的同步采样和保持功能,可用于检测电机的三相电流。 高级定时器功能: 提供多个PWM定时器,支持七种互补的PWM载波生成方式。 PWM定时器支持最小156皮秒的高分辨率输出,满足高精度和高效率的要求。 硬件加速器: 配备专用的硬件加速器(如三角函数单元TFU、无限脉冲响应IIR滤波器),加速电机控制算法的执行。 丰富的通信接口: 支持CAN FD、SCI(UART)、SPI/I2C等多种通信协议,方便与外部设备通信。 灵活的内存配置: 提供256KB至512KB的闪存和带ECC的64KB SRAM,以及16KB的数据闪存。 支持多种封装选项,包括48引脚到100引脚。
应用场景 RA6T2特别适用于以下电机控制应用场景: 家用电器:如吸尘器、烘干机和清洁机器人等,需要高效、精确的电机控制。 伺服驱动器:用于电动自行车、电动工具和泵等设备的驱动控制。 工业自动化:包括工业机器人、电动和园林工具等领域的电机控制。 新能源应用:如充电桩中的充电模块、光伏逆变器中的逆变控制等。
技术特点 高性能与低功耗:结合高性能CPU和优化的电源管理功能,实现高效能的同时降低功耗。 高精度控制:通过高精度的ADC和PWM定时器,实现对电机电流的精确检测和控制。 安全性:支持TrustZone安全功能,增强系统的安全性和可靠性。 易于集成:提供灵活的内存配置和多种封装选项,方便集成到各种电机控制系统中。
了解驱动器: 主要特点高性能:TB6600驱动器具有较高的驱动能力和控制精度,能够实现对步进电机的精确控制。其驱动电流可达到一定范围(4.5A等,不同型号或版本可能有所不同),满足各种步进电机的驱动需求。多种细分设置:TB6600驱动器支持多种细分方式,整步、半步、1/4步、1/8步、1/16步等,用户可以根据实际需求选择合适的细分方式,以获得更平滑的电机运动和更高的控制精度。自动半流功能:该驱动器具有自动半流功能,当电机不工作时,会自动减小输出电流,降低功耗和发热量,延长电机和驱动器的使用寿命。保护功能:TB6600驱动器内置了多种保护功能,如过热保护、过流保护、短路保护等,确保电机在安全可靠的环境下运行。易于使用:驱动器提供了简单的接口和拨码开关设置,用户可以方便地调整输出电流、细分方式等参数,满足不同应用需求。
电气参数输入电压:TB6600驱动器的输入电压范围通常在DC9V至DC40V(或DC45V,不同型号可能有所不同)之间,建议用户根据步进电机的额定电压和驱动器的规格选择合适的输入电压。输出电流:输出电流可根据实际需求通过拨码开关进行调整,通常在0.5A至4.0A(或4.5A等,不同型号可能有所不同)之间可调。最大功耗:最大功耗通常为160W左右(具体数值可能因型号而异),用户在选择和使用时应确保不超过驱动器的最大功耗。
三、硬件与连接示意图
开发板的具体功能与实际端口功能:
下面我主要说步进电进部分的:
步进电机驱动器的具体功能:
步进电机的接线图:
电机接线:
连接示意图:
四、软件的配置与框图
使用的是PWM8通道配置如下:
端口引脚是PE14IO口:
系统框图:
五、部分代码
- // /* 判断中断通道 */
- void key1_external_irq_callback(external_irq_callback_args_t *p_args)
- {
- FSP_PARAMETER_NOT_USED(p_args);
- LED2_ON ;
-
- R_GPT_Start(&g_timer8_PWM_ctrl);
- bPcflag =1 ;
- }
- // /* 判断中断通道 */
- void key2_external_irq_callback(external_irq_callback_args_t *p_args)
- {
- FSP_PARAMETER_NOT_USED(p_args);
- LED2_OFF ;
-
- R_GPT_Stop(&g_timer8_PWM_ctrl);
- bPcflag = 0 ;
复制代码- if(bPcflag ==1)
-
- printf("当前电机运行正在运行\r\n");
- else
- printf("当前电机运行停止\r\n");
复制代码
六、视频
https://www.bilibili.com/video/B ... id_from=333.999.0.0
<iframe src="//player.bilibili.com/player.html?isOutside=true&aid=113544305709420&bvid=BV1vwzKY5EWk&cid=27009352280&p=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe>
|