我们今天要涉及两个新的内容,arduino的串口通讯与模拟口的使用,模拟口之前我们介绍过就是可以测量0-5V的电压,然后对应返回0-1024的数值,今天我们就要利用arduino模拟口这个功能,来制作一个0-5V的电压表
注意:本实验电路设计没有相对复杂的保护电路,所以,千万别使用超过两节以上的AA电池,并且不要用来测量锂电池或者其他电源!!
需要准备的电子元件清单
ocrobot mango控制板(Arduino兼容) | 一块 |
面包板 | 一块 |
面包板专用跳线 | 一盒 |
1KΩ电阻 | 一枚 |
USB连接线 | 一根 |
下面我们来看设计的电路连接图
图上使用1K电阻的目的是在测量端悬空的情况下,将GND的基准电平引导到测量口,避免接口悬空受到干扰,
我们按照电路连接图搭建对应的实物电路
然后就去下载我们的程序,程序源代码如下,会涉及到一些串口的语句和模拟口的语句,具体语法请参考arduino语法手册
float temp; //创建一个浮点型变量temp作为存储空间准备存放数据 void setup() { Serial.begin(9600); //使用9600的波特率进行串口通讯 } void loop() { int V1 = analogRead(A0); //从A0口读取电压数据存入刚刚创建整数型变量V1,模拟口的电压测量范围为0-5V 返回的值为0-1024 float vol = V1*(5.0 / 1023.0); //我们将 V1的值换算成实际电压值存入浮点型变量 vol if (vol == temp) //这部分的判断是用来过滤重复的数据,只有本次的电压值和上次不一时才进行输出 { temp = vol; //比较完成后,将这次的值存入比对比用的变量temp } else { Serial.print(vol); //串口输出电压值,并且不换行 Serial.println(" V"); //串口输出字符V,并且换行 temp = vol; delay(1000); //输出完成后等待1秒钟,用于控制数据的刷新速度。 } }
与以前不同的是,这次我们要用电脑来接收arduino传回的数据,所以我们不能像以前那样下载完程序就把编译器给关了,而是如下图,点击打开串口监视器
然后用红色的线测量电池正极,黑色的线测量电池负极串口监视器里就会以1秒一次的速度刷新电压值,2次的电压值有波动是正常的,因为我们毕竟是低精度的测试。
转自:http://www.geek-workshop.com/forum.php?mod=viewthread&tid=1220