标签:limit src 颜色 计划 oop mit setup 测试 最大
小车经常出现一个问题:玩着玩着,操作它前后左右动,但它不动。这时候就不知道到底是那儿的问题,是线断了还是电压不够了。经过我很多次的经验得出,这是因为没电了。因为我每次这时候都会拿电压表去测一下,发现电池电压都在6v以下了。根据这个线索我设计了一个小电路来测电压。
我计划是用小led灯来报警,当电压不足时,灯就常亮。电压不够时(6v)一般小灯还是能够点亮的。经查资料,5mm小灯的工作电流是20ma,红、黄颜色电压是1.8-2.4之间,蓝、白、绿的电压则是3.0-3.6之间.我现在有一个白灯,那么需要的电阻上的电压是2v(5v-3v),而电阻是20ma,那么电阻值就应该是100欧(2/0.02)。上面是计算出的理论值,而我实际测试发现220欧的太亮,用10k欧的亮度还比较合适,电压是2.6v。我就用这个电阻了。
测试的电压需小于5v,那么最小电阻是250欧(5/0.02)。因为这两电阻要直接串到电源两端,相当于放电,那么电阻要足够大,这样电流比较小才不会很快放完电。我用两个440k的,这样电流是2微安,应该可以了。
最终搭建电路效果如图:
最后是写代码来测试电压与控制小灯的开和关。代码如下:
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秒刷新一次
}
标签:limit src 颜色 计划 oop mit setup 测试 最大
原文地址:http://www.cnblogs.com/chengzhong/p/7442337.html