提高自行车能见度的LED灯

由T.K. Hareendran

229

选择LED自行车前灯是相当划算的,当它涉及到提高你的能见度在道路上。它使别人知道你的存在,并为你提供一个清晰的能见度,使你可以避免危险,注意道路。单独骑一辆带车灯的自行车常常很麻烦!

你现在可以做这个便宜和易于制作的LED自行车灯(主要是支持股票头灯),也有一个频闪灯的选择。频闪灯,也被称为频闪镜灯,因为它连续不断地产生有规律的闪光,使骑自行车的人在夜晚或雾天的旅途安全。它也可以用来警告其他车辆和行人,并在紧急情况下清理道路。作者的原型如图1所示。

作者的原型
图1:作者的原型

电路和工作

LED自行车灯的电路图如图2所示。该设计中的关键硬件是Digispark ATtiny85微控制器开发板(Board1),它使用9V USB电池工作。它是一个基于Attiny85的微控制器开发板,类似于Arduino系列,只是更便宜、更小、功能更弱。

LED自行车灯电路图
图2:LED自行车灯电路图

如果您想知道为什么使用稍微昂贵的Digispark而不是更便宜的离散组件,原因是光的两种模式稳定的发光和频闪。这意味着当10K POT VR1的旋钮处于其最小位置时,LED充分亮度,并且当其最大位置时,LED熄灭。在这两个位置之间,光源用作以25Hz(快速频闪)和2Hz(慢频率)之间的频率波动的频闪光线。该罐由Digispark的板载5V直流调节器提供动力,其刮水器(中间端子)连接到Digispark的模拟输入A1(P2)。

同样,Digispark的P1 I/O引脚到达灯驱动器MOSFET IRL520N (IRF1)的门。100欧姆电阻R1是IRF1的门电阻,而10k电阻R2作为一个下拉电阻工作。这两个电阻是必不可少的,因为MOSFET的栅极基本上是一个电容器。因此,当一个电压被施加到没有栅极电阻的栅极上时,如果微控制器不能快速地产生那么大的电流,那么由此产生的涌入电流会损害微控制器的I/O。这里R1限制最大电流,R2保证IRF1始终处于已知状态。图3显示了插入TP1时捕捉到的临时示波器snap。

示波器按SNAP(参见文字)
图3:示波器SNAP(参见文字)

如果您使用的是非USB版本的9V电池,则可以使用2针接头CON1连接其外部充电器,为电池充电。值得注意的是,大多数可充电9V LiPo电池的标称输出仅为7.4V(最大8.2V)。因此,当大功率灯通电时,Digispark板可能会因功率下降而复位。220µF电解电容器C1缓解了这种偶发性打嗝。由于Digispark具有车载电压调节器,因此您可以安全地使用2S、3S或4S LiPo电池组,而不是建议使用的9V USB电池。

你的自行车灯需要多少流明并没有固定的规则,但通常情况下,你需要大约500流明的前灯来看清你要去的地方,而不是仅仅被看到。所以,使用一对一瓦的“星白色”led作为光源,并尝试在一些道路试验后调整它。包括一个合适的镇流器电阻来限制工作电流,如图4所示。

镇流器电阻
图4:镇流器电阻

LED灯需要一些光学器件来改善来自它的光。如今,LED反射器/镜头加上一把套件作为套件。但是,在选择它的同时,检查其“光束角度”规格 - 光线将分配的角度。窄光束角(例如40°)具有紧密的光束,宽光束角(大约120°)具有更大的宽面积照明的覆盖范围。

另请注意,透明镜头提供清晰的光束光束,并且扩散透镜提供更均匀的光输出,特别是当使用多个灯时。

警告。有时频闪灯可以在患有光敏癫痫的人中触发癫痫发作(https://psychology.wikia.org/wiki/PhotoSpensitive_epilepsy)!
建造

如果您考虑构建了这款LED自行车灯的真实模式,请使用刚性,防水外壳。一些参考模型如图5所示。5。

拟议附件(a)及(b)
图5:提出的外壳(a)和(b)

为了快速功能测试,大型白色LED武器头可以从旧卷尺清除以充当光源,如图2所示。6。

白色LED火炬头进行测试
图6:白色LED割炬头用于测试

下载源代码

软件

这里给出了Arduino的漂亮简单的草图(代码),在此处介绍了Digispark。它通过连接到模拟输入A1(P2)的罐设置的延迟,将灯驱动引脚(P1)打开和关闭。然而,为了获得更好的闪光灯,有点复杂的数学以有趣的方式应用于微调时间延迟函数。

/* LED自行车灯v1
*关键硬件:Digispark Attiny85
发展委员会
* Arduino IDE:1.8.13(Windows10x64)
*作者:T.K.Hareendran
*适应开源代码。谢谢
www.bukovac.si * /
int headLamp = 1;
int val = 0;
int同步= 0;
int关闭时间= 0;
无效的设置(){
pinMode(照明灯、输出);
}
无效循环(){
val = analogread(1);
在一起= val;
非实时=(-2000000/(实时+1000))+
2000;
onTime = onTime / 4;
offTime = offTime / 4;
if (onTime > 12) {
DigitalWrite(头灯,高);}
延迟(定时);
if(在第<250){
DigitalWrite(头灯,低);}
延迟(次);


T.K. Hareendran是一位电子设计师、硬件测试员、作者和产品评论家

分享你的想法和评论

请输入您的评论!
请在这里输入你的名字