“第九课--Microduino 做0-5V量程的电压表(万用表的使用)/zh”的版本间的差异

来自Microduino Wikipedia
跳转至: 导航搜索
设备
 
第1行: 第1行:
{{Language|Lesson_9--Microduino_used_as_0-5V_range_voltmeter_(simulate_a_multimeter) }}
+
{{Language|Lesson_9--Microduino_"DIY_Multimeter"}}
 
{| style="width: 800px;"
 
{| style="width: 800px;"
 
|-
 
|-

2015年7月15日 (三) 05:54的最新版本

Language English

目的

之前我们介绍过模拟口的读取,然后对应返回0-1024的数值,今天我们就要利用Microduino模拟口,来制作一个0-5V的电压表。

注意:本实验电路设计没有相对复杂的保护电路,所以,千万别使用超过两节以上的AA电池,并且不要用来测量锂电池或者其他电源!!

设备

Lesson9All.jpg

原理图

Less0n9-schematic.jpg

图上使用1K电阻的目的是在测量端悬空的情况下,将GND的基准电平引导到测量口,避免接口悬空受到干扰。

程序

float temp;   //创建一个浮点型变量temp作为存储空间准备存放数据
void setup()
{
  Serial.begin(115200);     //使用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秒钟,用于控制数据的刷新速度。
  }
}

将模拟值转换成电压值没有使用map()函数,大家可以自行尝试。

结果

当被测电压值有改变时每隔1s刷新一次数据,2次的电压值有波动是正常的,因为这毕竟是低精度的测试。要想更加精度测试, 请参考:http://www.hacktronics.com/Tutorials/arduino-current-sensor.html

Lesson9Result.jpg

视频

http://v.youku.com/v_show/id_XNzEwMDA0NjYw.html