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

来自Microduino Wikipedia
Pkj讨论 | 贡献2014年8月27日 (三) 17:03的版本 (Created page with "Microduino与Buck电路 {| style="width: 800px;" |- | ==目的== 本教程通过Microduino的D10脚输出PWM波形,进而驱动P沟道场效应管,使读者了解buck电...")
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

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 续流作用。工作频率比1N4007等普通整流管高。
电容10uF 16V 1个 输出端滤波。
若干 场效应管门极驱动电阻,LED限流电阻。
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次,表中不止一次有示数),可先短接一下三个引脚再测量,目的是释放掉门极存储的电荷。场效应管损坏时最多的情况是击穿短路,三个引脚内部好像用导线连接在一起,万用表非常容易测得。N沟道场效应管(AO3400)与P沟道场效应管(AO3401)的PDF资料见下面链接,读者可对比分析。
A03401.jpg

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);	
}

调试

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

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

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

OCR1B=300 10uS 2V OUT CapaLess.jpg

结果

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

视频