智能小车21:电压检测模块设计
小车经常出现一个问题:玩着玩着,操作它前后左右动,但它不动。这时候就不知道到底是那儿的问题,是线断了还是电压不够了。经过我很多次的经验得出,这是因为没电了。因为我每次这时候都会拿电压表去测一下,发现电池电压都在6v以下了。根据这个线索我设计了一个小电路来测电压。
![](http://image.highersoft.net/che_21_0.jpg?d?imageView2/2/w/800)
我计划是用小led灯来报警,当电压不足时,灯就常亮。电压不够时(6v)一般小灯还是能够点亮的。经查资料,5mm小灯的工作电流是20ma,红、黄颜色电压是1.8-2.4之间,蓝、白、绿的电压则是3.0-3.6之间.我现在有一个白灯,那么需要的电阻上的电压是2v(5v-3v),而电阻是20ma,那么电阻值就应该是100欧(2/0.02)。上面是计算出的理论值,而我实际测试发现220欧的太亮,用10k欧的亮度还比较合适,电压是2.6v。我就用这个电阻了。
![](http://image.highersoft.net/che_21_1.jpg?imageView2/2/w/800)
测试的电压需小于5v,那么最小电阻是250欧(5/0.02)。因为这两电阻要直接串到电源两端,相当于放电,那么电阻要足够大,这样电流比较小才不会很快放完电。我用两个440k的,这样电流是2微安,应该可以了。
![](http://image.highersoft.net/che_21_2.jpg?imageView2/2/w/800)
最终搭建电路效果如图:
![](http://image.highersoft.net/che_21_3.jpg?imageView2/2/w/800)
最后是写代码来测试电压与控制小灯的开和关。代码如下:
文/程忠 浏览次数:0次 2017-08-28 08:17:19
![](http://image.highersoft.net/che_21_0.jpg?d?imageView2/2/w/800)
我计划是用小led灯来报警,当电压不足时,灯就常亮。电压不够时(6v)一般小灯还是能够点亮的。经查资料,5mm小灯的工作电流是20ma,红、黄颜色电压是1.8-2.4之间,蓝、白、绿的电压则是3.0-3.6之间.我现在有一个白灯,那么需要的电阻上的电压是2v(5v-3v),而电阻是20ma,那么电阻值就应该是100欧(2/0.02)。上面是计算出的理论值,而我实际测试发现220欧的太亮,用10k欧的亮度还比较合适,电压是2.6v。我就用这个电阻了。
![](http://image.highersoft.net/che_21_1.jpg?imageView2/2/w/800)
测试的电压需小于5v,那么最小电阻是250欧(5/0.02)。因为这两电阻要直接串到电源两端,相当于放电,那么电阻要足够大,这样电流比较小才不会很快放完电。我用两个440k的,这样电流是2微安,应该可以了。
![](http://image.highersoft.net/che_21_2.jpg?imageView2/2/w/800)
最终搭建电路效果如图:
![](http://image.highersoft.net/che_21_3.jpg?imageView2/2/w/800)
最后是写代码来测试电压与控制小灯的开和关。代码如下:
float tVoltage=0;//ao读取电压值 float tCurrent; //电流 float tResistance=500000;//电阻 int tVcc=5;//电压换算单位,最大5v int limitVoltage=3;//电压在这个数以下就报警 int time=0;//计数 int lightFlagPin=3;//电灯开头引脚 void setup() { pinMode(lightFlagPin,OUTPUT); digitalWrite(lightFlagPin,LOW); Serial.begin(9600); //定义串口波特率为9600 } void loop() { time=time+1; tVoltage = analogRead(A0); //读取A0口值 tVoltage=tVoltage/1023*tVcc; //换算为电压值 if(tVoltage<limitVoltage){ digitalWrite(lightFlagPin,HIGH); }else{ digitalWrite(lightFlagPin,LOW); } tCurrent=tVoltage/tResistance; delay(3000); // 3秒刷新一次 }
相关阅读
评论:
↓ 广告开始-头部带绿为生活 ↓
↑ 广告结束-尾部支持多点击 ↑