您现在的位置是:首页 > 科技前沿
神奇的Arduino(8):自制电压表
智慧创新站
2024-11-29【科技前沿】213人已围观
简介内容简介今天我们要做一个电压表,最主要是为了学习arduino模拟输入这个知识点。这张图片用红框圈起来的就是模拟出入引脚。什么是模拟输入?我们知道模拟输出可以控制一个引脚输出0-5V的电压。那模拟输入就是读取0-5V的电压。函数:analogRead(引脚位置);这个函数会返回一个0-1023之间的...
内容简介
今天我们要做一个电压表,最主要是为了学习arduino模拟输入这个知识点。
这张图片用红框圈起来的就是模拟出入引脚。
什么是模拟输入?我们知道模拟输出可以控制一个引脚输出0-5V的电压。那模拟输入就是读取0-5V的电压。函数:
analogRead(引脚位置);
这个函数会返回一个0-1023之间的数字,比如说你直接把5V连接到模拟输入引脚,那返回的就是1023,如果你把GUN连接到模拟输入引脚,就返回数字0。是不是很简单?
如果你用一个2.5V的电压正极连接到模拟输入引脚,那这个函数就会返回:512
0-5V和0-1023是一个对应关系。我们根据这个就能做一个0-5V量程的电压表了。
电路图原理说明把一个要测量的电池或电源正负极连接一个阻值很大的电阻,然后把正级连接到模拟输入的一个接口,把负极连接arduino的gun脚针。通过计算0-1023到0-5的映射,我们就能知道电池的电压了。
代码voidsetup(){
(9600);//使用9600的波特率进行串口通讯
floattemp;//创建一个浮点型变量temp作为存储空间准备存放数据
}
voidloop(){
intV1=analogRead(A0);//从A0口读取电压数据存入刚刚创建整数型变量V1,模拟口的电压测量范围为0-5V返回的值为0-1024
floatvol=V1*(5.0/1023.0);//我们将V1的值换算成实际电压值存入浮点型变量vol
if(vol==temp){//这部分的判断是用来过滤重复的数据,只有本次的电压值和上次不一时才进行输出
temp=vol;//比较完成后,将这次的值存入比对比用的变量temp
}else{
(vol);//串口输出电压值,并且不换行
("V");//串口输出字符V,并且换行
temp=vol;
delay(1000);//输出完成后等待1秒钟,用于控制数据的刷新速度。
}
}
改进你肯定会说,我测量的电压是6V怎么办?12V怎么办?24伏怎么办?!?其实方法是有的,看我怎么解决。在这里你可能要去了解以下物理的串联电路。
定义:
几个电路元件沿着单一路径互相连接,此种连接方式称为串联。
特点:
整条电路电流相等,电压与每个电路元件的电阻值成正比。
改进原理:
我用5个阻值一样大的电阻代替上图的一个电阻,这样电池的电压会被这5个电阻平均分配,然后我通过上述的办法测量一个电阻的电压,得出来的值乘电阻数量,就是那个电池的电压。看电路图
这个时候,4个电阻分担了这个电池的电压,就是每个电阻的电压是电池电压的4分之一。我们测出一个电阻的电压,并*电阻数电压就出来了!
改进代码Intnum=4;//定义电路中电阻的数量
voidsetup(){
(9600);//使用9600的波特率进行串口通讯
floattemp;//创建一个浮点型变量temp作为存储空间准备存放数据
}
voidloop(){
intV1=analogRead(A0);//从A0口读取电压数据存入刚刚创建整数型变量V1,模拟口的电压测量范围为0-5V返回的值为0-1024
floatvol=V1*(5.0/1023.0)*num;//我们将V1的值换算成实际电压值存入浮点型变量vol
if(vol==temp){//这部分的判断是用来过滤重复的数据,只有本次的电压值和上次不一时才进行输出
temp=vol;//比较完成后,将这次的值存入比对比用的变量temp
}else{
(vol);//串口输出电压值,并且不换行
("V");//串口输出字符V,并且换行
temp=vol;
delay(1000);//输出完成后等待1秒钟,用于控制数据的刷新速度。
}
}
很赞哦!(67)