第三十一课--Microduino与Buck电路/zh

来自Microduino Wikipedia
跳转至: 导航搜索
Language English

Microduino与Buck电路

目的

本教程通过Microduino的D10脚输出PWM波形,进而驱动P沟道场效应管,使读者了解buck电路的实现原理,掌握Microduino输出PWM波形的实现方法。

设备

Microduino-Core 是以 Atmel ATmega328P为核心的8位单片机开发核心板,是一个开源的、与 Arduino UNO 兼容的控制器模块。

下载程序模块,可直接与 Microduino-Core 或者Microduino-Core+ 相连,让他们与计算机通讯。它的下载接口用的是MicUSB,这也是Microduino小巧的一部分。Microduino大小与一枚一元硬币差不多大。下载线与绝大多数智能手机usb数据线是一样的,方便实用。

  • 其他硬件设备
相关硬件 数量 功能
电感56uH 1A 1个 buck电路储能器件。
二极管1N5819 1个 续流作用。工作频率比1N4007等普通整流管高。
电容10uF 16V 1个 输出端滤波。
电阻100欧姆 若干 场效应管门极驱动电阻,LED限流电阻。
场效应管AO3401 1个 P沟道场效应管,此示例工作于开关工作状态。
USB数据连接线 1条 连通Microduino模块与计算机。
面包板 1块 用于搭建电路。
面包板跳线 1盒 电气连接线。

场效应管

  • 简介
    • 场效应管分为N沟道与P沟道两种类型,类比于三极管的NPN与PNP两种类型。三个极分别是G(门极),D(漏极),S(源极),类比于三极管的B,C,E。 场效应管属于电压控制型器件,开关频率可以做的比三极管高,用于高频开关电路时开关损耗小。该示例应用的AO3401属于P沟道小功率场效应管。
  • 测量
    • 用数字万用表测量场效应管时,可依据下图图中的二极管来判断场效应管的三个极,万用表打到二极管档(有蜂鸣器的那个档位)。对于P沟道场效应管来说,当万用表中的示数为4百多或5百多时,黑表笔接的是S(源极),红表笔接的是D(漏极),未接表笔的那个引脚是G(门极)。如果所测为N沟道场效应管,那么红表笔所接为源极,黑表笔所接为漏极。如果测量时万用表中显示示数不规律(测量6次,表中不止一次有示数),可先短接一下三个引脚再测量,目的是释放掉门极存储的电荷。场效应管损坏时最多的情况是击穿短路,三个引脚内部好像用导线连接在一起,万用表非常容易测得。
A03401.jpg

N沟道场效应管(AO3400)与P沟道场效应管(AO3401)的PDF资料见下面链接,读者可对比分析。

N沟道场效应管AO3400文档下载:文件:AO3400.pdf

P沟道场效应管AO3401文档下载:文件:AO3401.pdf

buck电路

BuckSch.jpg
  • 按键按下,即开关管导通时,Vin经开关把能量输入电感,同时也有一部分能量到了输出端(负载端)。
  • 按键断开,即开关管断开时,电感中存储的能量通过二极管(这也解释了为啥叫续流二极管)传递给输出端。此时Vin不给负载提供能量。
  • 有了电容的存在,输出端可以获得直流电。
  • 不考虑二极管的压降,Vout=Vin*D (D代表占空比)。例如,占空比为0.2,输入Vin=12V,则输出电压为Vout=2.4V,即buck降压电路。调节占空比,可得到所需Vout。
  • buck电路属于开关电源电路,开关管工作于开关状态(非线性调整管状态),所以效率比线性调整式电源高。打个比方:如果输入是12V电压,需要输出5V,负载电流为0.1A。如果用7805(线性三端稳压器)来实现,那么电源消耗的功率约为1.2W,如果用buck电路来实现,那么电源消耗的功率约为0.5W。在实际工程应用中,如果PCB板供电是24V或是12V,要取得5V电压或是3.3V给MCU供电,采用buck电路是一种很好的选择。
  • 注意:本示例中,D10脚输出高电平时,开关管处于截止状态。理论输出电压值Vout=Vin*(1-D)。D=OCR1B/OCR1A。

实验原理图

BuckProtelSch.jpg

程序

void setup()
{
  Serial.begin(9600);
  pinMode(10, OUTPUT);   
  TCCR1A =_BV(COM1A0) | _BV(COM1B1) | _BV(WGM11) | _BV(WGM10);   
  TCCR1B =_BV(WGM12) |_BV(WGM13) | _BV(CS10);   
  OCR1A=400;//change this value to get diff period   OCR1A=400  F=40K
  OCR1B=300;//this value  need  modify to get diff duty cycle
}
void loop()
{
  int myAnaValue=analogRead(A0);
  float myAnaVol=myAnaValue/1023.0*5;
  Serial.println(myAnaVol);
  delay(1000);	
}

调试

Buck realConnect.jpg
  • 参考上图用导线连接完毕并确认无误。
  • 把程序复制到Arduino IDE中。
  • 编译程序,选择正确的板卡与相应串口。
  • 点击Upload,下载完毕后打开Arduino IDE自带的串口监视器,观察数据。
  • 更改OCR1B的数值,重新烧写程序,再打开Arduino IDE自带的串口监视器,观察数据。
  • 下图为笔者实测数据(OCR1A均为400),供参考。实际输出电压与理论公式对比偏差很大,原因在于续流二极管存在压降,电感以及负载等参数不是很合理,电路搭建是依据笔者手头现有元器件而成。Microduino的D10脚占空比改变时,输出电压的变化趋势符合常理。
Buck comOutput.jpg
  • 再贴下示波器测量波形图,供参考。

D10脚波形 OCR1B=300 OCR1A=400 10uS/div 2V/div

Modify OCR1B=300 10uS 2V D10 Output.jpg


去掉输出端电容 波形图 OCR1B=300 OCR1A=400 10uS/div 2V/div

OCR1B=300 10uS 2V OUT CapaLess.jpg

结果

该buck电路可在占空比改变时改变输出电压值。该示例仅用于Microduino的D10脚输出PWM矩形波来实现buck电路的演示,实际应用时需根据负载电压电流,输入电压等选择合适的元器件参数。对于开关管的驱动电路,实际应用时也会比该示例复杂,该文算是抛砖引玉,希望读者指正。

视频