可以吹灭的LED
LED被广泛应用,可以说是现代社会如此色彩绚丽的最大功臣。虽然LED成本低,也没有火灾隐患。但它不能像蜡烛一样,被直接吹灭。
国外创客Paul Dietz展示了一种超级简单地方法让LED像蜡烛一样被吹灭。这种方法,不需要添加任何额外的传感器。
这种方法的原理很简单:
当电流通过LED时,其温度会升高。 上升量取决于冷却效率。 当你对着发热的LED吹气时,会降低LED温度。 我们可以检测到这一点,因为LED的压降随着温度的降低而增加。
整个电路非常简单,跟正常的LED驱动电路几乎一样。 唯一的区别是是多了一条额外的电线来测量LED的压降。 为了得到最优效果,最好使用一个非常小的LED(建议使用0402封装的贴片LED),用最细点电线连接。 这样能使LED非常快速地加热和冷却,并最大限度地减少热量在电线上的损失。 电压变化仅为毫伏 - 我们可以通过Arduino UNO的模拟引脚检测。
感兴趣的同学可以亲手试一试哦,代码如下:
// Blow Out LED Ave creates an LED that you can blow out. It automatically relights after 2 seconds
//
// Copyright 2018, Paul H. Dietz
// LED Connections
#define PLUS A1 // High side of the resistor
#define MEASURE A0 // Low side of resistor and anode of LED
// Cathode of LED goes to ground
#define NUMSAMPLES 10 // Number of samples to keep
#define MINJUMP 150 // Minimum jump for blow out
long int sensedata[NUMSAMPLES];
int dataptr = 0;
int buffull = 0;
void setup() {
Serial.begin(250000); // Initialize serial communication
pinMode(MEASURE, INPUT);
pinMode(PLUS, OUTPUT);
digitalWrite(PLUS, HIGH); // Turn on the LED
}
void loop() {
int cnt;
long int sum = 0;
// Sum 256 adc readings (to reduce adc noise)
for (cnt = 0; cnt < 256; cnt++) {
sum = sum + analogRead(MEASURE);
}
Serial.println(sum); // Output sum so we can watch with Serial Plotter
// Compare current measurement to oldest if buffer full
if (buffull && (sum > (sensedata[dataptr] + MINJUMP))) {
// Temperature drop exceeded minimum - turn off
digitalWrite(PLUS, LOW);
dataptr = 0; // Reinitialize the buffer
buffull = 0;
delay(2000); // off time for LED
digitalWrite(PLUS, HIGH);
}
else {
sensedata[dataptr] = sum; // Store the latest data in the buffer
dataptr++; // Update buffer pointer
if (dataptr == NUMSAMPLES) { // Check if dataptr went past end
dataptr = 0; // Reset the dataptr to beginning
buffull = 1; // Mark that buffer is full
}
}
}
--end--
声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com