在这个项目中,我们将使用Arduino和N沟道MOSFET制作一个降压转换器威廉希尔官方网站 ,最大电流容量为6安培。我们将把 12v DC 降压到 0 到 10v DC 之间的任何值。我们可以通过旋转电位器来控制输出电压值。
降压转换器是一种直流到直流转换器,可降低直流电压。它就像一个变压器,只有一个区别;变压器降压交流电压降压转换器降压直流电压。降压转换器的效率低于变压器。
降压转换器的关键元件是MOSFET;n沟道或p沟道和高频方波脉冲发生器(定时器IC或微控制器)。Arduino在这里用作脉冲发生器,555定时器IC也可以用于此目的。在这里,我们演示了这款降压转换器,通过使用电位计控制直流电机速度,还使用万用表测试了电压。
所需组件:
Arduino Uno
红外热镀膜仪540N
电感器(100Uh)
电容器 (100uf)
肖特基二极管
电位计
10k、100 欧姆电阻器
负荷
12v 电池
威廉希尔官方网站 图和连接:
如上图所示进行DC-DC降压转换器的连接。
将电感器的一个端子连接到 MOSFET 的源极,另一个端子连接到与 1k 电阻串联的 LED。负载与这种布置并联连接。
在栅极和源极之间连接 10k 电阻。
将电容器并联到负载。
将电池的正极连接到漏极,将负极连接到电容器的负极。
将二极管的p端连接到电池的负极,将n端直接连接到电源。
Arduino的PWM引脚进入MOSFET的栅极
Arduino的GND引脚连接到MOSFET的源头。请将其连接到那里,否则威廉希尔官方网站 将无法正常工作。
将电位计的极端端子分别连接到 Arduino 的 5v 引脚和 GND 引脚。而游标端子为模拟引脚A1。
Arduino的功能:
如前所述,Arduino将时钟脉冲发送到MOSFET的基座。这些时钟脉冲的频率约为65 Khz。这导致MOSFET的开关非常快,我们得到一个平均电压值。
场效应管的功能:
MOSFET有两个用途:
用于输出电压的高速切换。
提供高电流,散热少。
电感器功能:
电感器用于控制可能损坏MOSFET的电压尖峰。电感器在 MOSFET 导通时存储能量,并在 MOSFET 关闭时释放这些存储的能量。由于频率非常高,因此所需的电感值非常低(约100uH)。
肖特基二极管的功能:
当MOSFET关闭时,肖特基二极管完成电流环路,从而确保向负载平稳供应电流。除此之外,肖特基二极管的散热非常低,并且在比普通二极管更高的频率下工作良好。
LED功能:
LED亮度表示负载两端的降压电压。当我们旋转电位计时,LED的亮度会发生变化。
电位器功能:
当电位计的游标端子被甩到不同的位置时,它和地之间的电压会发生变化,进而改变 arduino 引脚 A1 接收的模拟值。然后将此新值映射到 0 和 255 之间,然后提供给 Arduino 的引脚 6 用于 PWM。
** 电容器平滑了给定负载的电压。
为什么栅极和源极之间有电阻?
即使是MOSFET栅极处最轻微的噪声也会将其导通,因此为了防止这种情况发生,始终建议在栅极和源极之间连接高值电阻器。
代码说明:
完整的Arduino代码,用于生成高频脉冲,在下面的代码部分中给出。
代码简单且不言自明,因此在这里我们只解释了代码的几个部分。
变量 x 被分配从 Arduino 的模拟引脚 A0 接收的模拟值
x= analogRead(A1) ;
变量 w 被分配在 0 到 255 之间的映射值。在这里,Arduino的ADC值使用Arduino中的map函数映射到2到255。
w= map(x,0,1023,0,255) ;
引脚 6 的 PWM 正常频率约为 1kHz。该频率不适用于降压转换器等用途。因此,必须将这种频率提高到非常高的水平。这可以在无效设置中使用一行代码来实现:
TCCR0B = TCCR0B & B11111000 | B00000001;// change frequency of pwm to 65 KHZ approx.
DC-DC降压转换器的工作原理:
当威廉希尔官方网站 导通时,MOSFET 以 65 kHz 的频率打开和关闭。这会导致电感器在 mosfet 导通时存储能量,然后在 mosfet 关断时将存储的能量提供给负载。由于这种情况发生在非常高的频率下,因此根据电位计的游标端子相对于5v端子的位置,我们得到脉冲输出电压的平均值。随着游标端子和接地之间的电压增加,Arduino的pwm引脚6上的映射值也会增加。
Let’s say this mapped value is 200. Then PWM voltage on pin 6 will be at: [ (200*5) / 255 ]= 3.921 volts
由于MOSFET是一个电压相关的器件,因此该PWM电压最终决定了负载两端的电压。
int x; // initialize variables
int w;
void setup() {
pinMode(6,OUTPUT);// pwm pin 6 as output pin
pinMode(A1,INPUT);// analog pin as input
TCCR0B = TCCR0B & B11111000 | B00000001;// change frequency of pwm to 65 KHZ approx( explained under code section)
Serial.begin(9600);// begin serial communication
}
void loop() {
x= analogRead(A1);
w= map(x,0,1023,0,255);
analogWrite(6,w); // write mapped value on pin 6
Serial.print("w "); //print mapped value on screen
Serial.println(w);
}
全部0条评论
快来发表一下你的评论吧 !