Arduino ESP32使用U3115S芯片控制H桥驱动有刷直流电机

问题提出

直流有刷电机控制使用U3115S芯片。芯片是电压高达300V的半H桥驱动电路,管脚说明:

NumberSymbolDescription
1VCC低侧固定逻辑电源输入
2HIN逻辑输入端,控制门电路驱动输出(HO), 同相
3LIN#逻辑输入端,控制门电路驱动输出(LO), 异相
4COM低侧电源返回
5LO低侧门驱动输出
6VS高侧浮动电源返回
7HO高侧门驱动输出
8VB高侧浮动电源

其实上面的表中的信息量很大。要能够实现对该模块的控制,需要注意的地方很多,最主要的是在HIN和LIN#端输入互补的PWM控制信号

半桥驱动电路

半桥驱动电路的一个注意事项是电容自举升压。

必须是PWM互补输入才能工作

在这里插入图片描述

如上图,输出的电位可以通过示波器查看。因为使用了自举升压的电路,在VB和VS之间有一个电容,这个电容在Q1关闭,Q2导通时会被充电,电压接近VCC,我们的例子中是12V左右。当要打开Q1时,这个12V的电压就会为Q1的G-S端提供电压,使其导通。Q1导通后,S端的电压被抬升,在我们的电路里电压值抬升到24V,VB端的电压是35.4V。但要注意,这个电压不会保持很长时间,经过一定的时间,电压会降低,最终停留在接近电源电压值。所以,在使用这个半桥驱动电路时一定要用互补的PWM来驱动。即在控制输入的HIN和LIN#端输入互补的PWM。如果是按我们想象的给控制Q1管的控制端输入一个3.3V的高电平,给控制Q2管的控制输入加一个0.0V的话,在输出端得不到24V的输出。必须采用PWM,而且是互补的PWM输入。下面的图是能够正常工作的电压给定:
在这里插入图片描述
上面的图是在网上找打的。这样就可以形成一个单极有刷直流电机的驱动。实际测量的波形输出:
在这里插入图片描述

Arduino ESP32的互补PWM控制

要实现互补PWM,需要MCPWM,但Arduino好像不支持MCPWM,在库管理中只找到了一个MCPWM库,好像还不是为Arduino准备的,应该是为ESP-IDF准备的,也没有例子程序。为快速实现样机,对PWM进行配置

  1. 采用ledc PWM对H桥的上臂进行控制,实现一个PWM
  2. 采用对上臂的PWM端连接中断,当上臂控制端变化时产生中断,根据输出的高低来控制下臂的输出。
  3. 由于采用了中断,对下臂就可以采用常规的方法进行控制。
    这里应该注意到,因为U3115S的内部已经实现了同时打开上下臂开关管的保护,我们的外部控制程序可以不必考虑其它的保护措施。
void setup()
{
	attachInterrupt(motorLU, isrLU, CHANGE);
    attachInterrupt(motorRU, isrRU, CHANGE);
}

上面的程序将电机控制的左上臂和右上臂的信号变化用isrLU和isrRU中断处理程序关联。

void IRAM_ATTR isrLU(void)
{
    if ( digitalRead(motorLU) && PWMN)   // UP close DOWN open
    {
        digitalWrite(motorLD, HIGH);      // UP 1, DOWN 0
        return;
    }
    if ( !digitalRead(motorLU) && PWMN)   // UP open DOWN close
    {
        digitalWrite(motorLD, LOW);       // UP 0, DOWN 1
        return;
    }  
}

void IRAM_ATTR isrRU(void)
{
    if ( digitalRead(motorRU) && PWMN)   // UP close DOWN open
    {
        digitalWrite(motorRD, HIGH);      // UP 1, DOWN 0
        return;
    }
    if ( !digitalRead(motorRU) && PWMN)   // UP open DOWN close
    {
        digitalWrite(motorRD, LOW);       // UP 0, DOWN 1
        return;
    }  
}

上面是中断处理程序。

通过中断处理,实现下臂的互补PWM输出。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值