这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 【Let'sdo2025年第1期】功率监测与控制系统DIY活动成果帖——电机自锁

共3条 1/1 1 跳转至

【Let'sdo2025年第1期】功率监测与控制系统DIY活动成果帖——电机自锁模式和打嗝模式

高工
2025-06-14 09:47:15     打赏

之前几篇完成OLED驱动、INA219采集电路功率信息、电机过流自锁、串口控制电机功能。

【Let'sdo2025年第1期】功率监测与控制系统DIY活动开箱帖和单片机时基准确性检测

【Let'sdo2025年第1期】功率监测与控制系统DIY活动基础任务——OLED屏幕显示信息

【Let'sdo2025年第1期】功率监测与控制系统DIY活动基础任务——INA219读取功率信息

【Let'sdo2025年第1期】功率监测与控制系统DIY活动进阶任务,串口控制电机工作

在此基础上,通过添加额外的过流后计时检测功能,实现电机的打嗝功能,即在电机过流后,等待一段时间重新启动电机。
# 打嗝模式实现

在电机过载后,获取当前MCU的Tick时钟信息,作为计时参考,并设定计时检测标记,开始计时。

if(CTR_Mode == Hiccup_Mode)
{
	if(Power_Info.current >=Power_Info.Cur_Threshold)
	{
		HAL_GPIO_WritePin(Relay_GPIO_Port,Relay_Pin,GPIO_PIN_RESET);
		OverCurrent_Flag = 1;
		Hiccup_Signal=Hiccup_Start;
		Hiccup_Time = HAL_GetTick();
		printf("Hiccup_Mode Current Overflow!\r\n");
	}
}

后续检测计时是否完成,设置相应的标志变量。

while(1)
{
	if((HAL_GetTick()-Hiccup_Time)>=3000 && Hiccup_Signal==Hiccup_Start && CTR_Mode==Hiccup_Mode)
	{
		Hiccup_Signal = Hiccup_Finish;
		Hiccup_Time = HAL_GetTick();
	}
	...//其余控制代码
}

当计时超过设定值时,重新接通电路运转电机。

if(CTR_Mode == Hiccup_Mode)
{
...
	if(Hiccup_Signal == Hiccup_Finish && OverCurrent_Flag ==1)
	{
		Hiccup_Signal=Hiccup_Start;
		OverCurrent_Flag=0;
		if(Can_Run_Status==1)
		{
			HAL_GPIO_WritePin(Relay_GPIO_Port,Relay_Pin,GPIO_PIN_SET);
			HAL_Delay(1000);
		}
		printf("Hiccup Overflow Release!\r\n");
	}
}

通过对电机过流后的时间计时即可完成打嗝功能。

打嗝效果演示视频如下

https://www.bilibili.com/video/BV1PzTezgEjj/?vd_source=c3c72f263ba4f17695f3ce613d1d0024


# 总结

这次DIY使用STM32F411RE搭配OLED、INA219实现对电机功率的检测和过流控制,项目对系统的响应要求高,对代码的执行效率的要求高,在开发过程中,使用现有的u8g2显示库和INA219驱动库虽然方便,但在代码执行效率上有延迟,对于电机类的应用,实时性的要求更高,这或许也是电机类的产品开发的难点。
通过这次活动,搭建电机功率检测的模型,对电机过流的应用原理有了解,是一期很不错的活动,期待下一期活动能带来更多的惊喜。




关键词: 功率     进阶    

专家
2025-06-14 20:05:24     打赏
2楼

感谢分享


工程师
2025-06-15 09:21:01     打赏
3楼

感谢分享


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]