1、修改main.c程序,修改pwm_dir的赋值语句,即只控制COUT60,不再控制CC60:
2、设置adc1为500,adc2为1000
因为CC61信号为常高,即GH2常通,所以adc2参数设置为多少,GH2都一直保持常通,所以adc2的值对功能没有任何影响,此处设置为1000.
此时GH2常通、GL1在PWM控制下进行开关,GH1仅仅只能保持导通状态
各引脚电压为:
V(gh1) = 5V, V(gh2) = 24V, V(gl1) = 5V, V(gl2) = 0V
V(sh1) = 5V, V(sh2) = 12V, V(sl) = 0V
各引脚的电压波形为:
GH2:
SH2:
GL2:
SL:
GL1:
GL1引脚的电压峰值为10V,但是高电平的时间占信号所有的时间为50%,所以用万用表量出来GL1引脚电压为5V。
adc1值设置为500,占空比的总周期为1000,所以设置的占空比为50%,程序参数与示波器采集到的波形相符合。
SH1:
SH1引脚的电压峰值为12V,但是高电平的时间占信号所有的时间为50%,且这50%的时间并不都是维持在12V,所以用万用表量出来SH1引脚电压为5V。
GH1:
GH1引脚的电压峰值为12V,但是高电平的时间占信号所有的时间为50%,且这50%的时间并不都是维持在12V,所以用万用表量出来GH1引脚电压为5V。
3、分析测试结果,可以看出将
pwm_dir = CCU6_MASK_COUT60 | CCU6_MASK_CC60;
修改为:
pwm_dir = CCU6_MASK_COUT60;
即PWM只控制GL1的导通和关闭,而不再控制GH1的导通和关闭,会导致GH1、SH1的引脚电压维持在5V,而不是原来的GH1为12V,SH1为6V。
因为只是想要控制GH2、GL1通路的导通,所以GH1的通路打开并没有必要,而且还有可能造成GH1和GL1的同时导通,导致MOSFET管子短路,所以只用PWM控制GL1的导通和关闭,而不再控制GH1的导通和关闭,一定程度上避免了该问题,且可以降低GH1端的电压,从而降低MOSFET的整体功耗,且不会对MOSFET的GH2、GL1通路的导通造成任何影响,所以建议实际项目使用PWM控制MOSFET时使用该方案。
另一个方向也是类似的。