先放实物图。MCU型号为FT32F030K6AT7。该模块的控制功能比较少,其实一般的8位单片机已经足够用了。这里只是为了方便开源,所以选择32位用库函数开发。
再来几张运行时的图片。?
下面简述一下工作原理。
其实原理很简单,就是把直流电源经全桥逆变后输入变压器初级绕组。
驱动加入了一个纽子开关控制开关状态,以及一个电位器调节输出功率。
还有一个数码管用来显示输出强度,为什么说输出强度呢?因为这里它显示的不是功率,也不是电流。而是类似档位,比如范围设为0-100,显示100就表示全功率输出,显示50表示输出半功率。为什么不让它显示电流呢?会在下文解释。
开关打开时,数码管会开始3秒倒计时,然后才会输出高压,这样我们可以在高压输出前3秒再次确认环境及自身安全。
经测试,这个变压器全功率输出时电流为3A多,不到4A。4A电流对于该驱动模块是没有问题的。变压器参数如图,来自某宝商家的简介。
根据商家推荐,全桥逆变的频率为28kHz。
模块原理图如下。
?全桥就是两个半桥,所以这里用了两个半桥栅极驱动IC,单片机输出一对互补方波分别送到两个驱动IC,然后再去驱动全桥MOS管。
这里需要注意驱动IC的选型,为了方便,选择下桥输入为低电平有效的驱动IC,简单说就是,给它一个矩形波,它就能输出一对互补矩形波。这样的话单片机只用输出一对互补方波就可以了。
如果选择下图所示的驱动IC,那么需要给它一对互补方波,它才能输出一对互补方波,这样的话单片机就需要输出两对互补方波,这样增加了电路复杂程度。?
稳压部分使用了AMS1117-3.3来给单片机供电,所以整个模块的输入电压不能超过其耐压——18V,留有2V裕量,最大输入就定为16V;最低输入要保证栅极驱动IC能够正常工作,这里选用的IC需要使用6-20V范围内的电压,留有1V裕量,所以最低输入就定为7V。
下面解释一下是如何实现调节输出功率的。
这里的全桥逆变电路肯定是不能用脉宽调制的,所以只能想别的办法,我这里使用的方法是控制全桥逆变的工作时间。
如果让它一直不停工作,那么就是全功率输出,如果让它工作1毫秒,然后停1毫秒,如此循环,那么它的工作时间与停止时间之比为1:1,故输出功率降低了一半。这其实类似于脉宽调制,假如周期为T,工作时间与周期之比看做占空比D,调节占空比即可调节输出功率。
波形图如下,单片机输出的矩形波占空比不变,但是让它输出一会,停一会,然后再输出,再停止。
所以第一种控制方法就是,首先确定一个合适的周期,通过采样电位器电压来设定占空比。
周期的设置可以比较随意,只要保证调节占空比时不要断弧即可。
控制占空比的代码如下。
void Out_Ctrl(void)
{
TIM_SetAutoreload(TIM6, I_Ctrl);
TIM_SetCounter(TIM6, 0);
TIM_ClearFlag(TIM6, TIM_FLAG_Update);
while(!TIM_GetFlagStatus(TIM6, TIM_FLAG_Update));
Turn_Off();
TIM_SetAutoreload(TIM6, 20000-I_Ctrl);
TIM_SetCounter(TIM6, 0);
TIM_ClearFlag(TIM6, TIM_FLAG_Update);
while(!TIM_GetFlagStatus(TIM6, TIM_FLAG_Update));
Turn_On();
}
?I_Ctrl为经过电位器电压转换而来的全局变量,把它设为定时器的自动重装载值,等到定时器更新标志置位,关闭方波输出,然后把(周期-I_Ctrl)再设为该定时器的自动重装载值,等到定时器更新标志置位,再开启方波输出。
还有一种控制方法,那就是设定电流值,即全桥开始工作以后,开始对电流连续采样,当电流达到设定值,关闭全桥,等待一定时间再开启全桥。等待时间可以和工作时间相等,需要用一个定时器来计时。这里就不再详述了。
下图中的尖尖即电流波形,全桥导通时电流增加,关闭时电流下降,所以如果用数码管来显示电流的话,会是一个频繁来回波动的数字,参考价值不大,故我这里让数码管来显示输出强度。
变压器的输出除了可以拉弧,点火,我们还可以接倍压电路,用来制作离子发生器,接正倍压即正离子发生器,接负倍压即负离子发生器。
选择小一点的变压器,然后优化一下驱动板的尺寸(去掉数码管、电位器),我们自己也可以做像电蚊拍这类产品的驱动。
?如上图,如果要接倍压电路,红圈处有预留的焊盘,贴上一个10nF左右的电容,把变压器的次级地跳根线到黄圈处的焊盘即可。
结语:程序源码、原理图以及Gerber文件会上传,有需要的盆友可以下载,欢迎交流、讨论。