“第八课--0-5V量程的电压表/zh”的版本间的差异
(Created page with "{| style="width: 800px;" |- | ==目的== 之前我们介绍过模拟口的读取,然后对应返回0-1024的数值,今天我们就要利用Microduino模拟口,来制作...") |
|||
(未显示1个用户的5个中间版本) | |||
第1行: | 第1行: | ||
+ | {{Language|Maple Lesson 08 - A multimeter with the range of 0 to 5 volts}} | ||
{| style="width: 800px;" | {| style="width: 800px;" | ||
|- | |- | ||
第19行: | 第20行: | ||
==原理图== | ==原理图== | ||
[[File:stm32-less0n9-schematic.jpg|center|600px|thumb]] | [[File:stm32-less0n9-schematic.jpg|center|600px|thumb]] | ||
− | |||
− | |||
==程序== | ==程序== | ||
<source lang="cpp"> | <source lang="cpp"> | ||
− | float | + | const int analogInPin = 14; |
− | void setup() | + | |
− | { | + | float sensorValue = 0; // value read from the pot |
− | + | float Voltage=0; | |
+ | |||
+ | void setup() { | ||
+ | pinMode(analogInPin, INPUT_PULLDOWN); | ||
+ | //采用内部下拉,将GND的基准电平引导到测量口,避免接口悬空受到干扰。 | ||
+ | |||
} | } | ||
− | |||
− | |||
− | + | void loop() { | |
− | // | + | // read the analog in value: |
− | + | sensorValue = analogRead(analogInPin); | |
− | // | + | // map it to the range of the analog out: |
− | + | Voltage = sensorValue*5/4095; | |
− | / | + | |
− | + | SerialUSB.print("Voltage = "); | |
− | + | SerialUSB.print(Voltage); | |
− | + | SerialUSB.println("V "); | |
− | + | delay(500); | |
− | |||
− | |||
− | |||
− | |||
− | delay( | ||
− | |||
} | } | ||
</source> | </source> | ||
+ | |||
+ | |||
+ | ==串口监视== | ||
+ | |||
+ | 用于Maple与STM32之间的通讯。 | ||
+ | |||
+ | *点击串口监视监视器按钮,弹出串口监视界面。 | ||
+ | [[File:stm32-serialmonitor.jpg|600px|center|thumb]] | ||
+ | [[File:stm32-serialwindow.jpg|600px|center|thumb]] | ||
+ | |||
+ | *SerialUSB可将你需要的值打印出来,便于调试。 | ||
+ | **如果你需要打印指定的字符,你可以参考:'''“SerialUSB.print("XXX");”''',XXX为你要打印的字符; | ||
+ | **如果你需要打印变化的字符,你可以参考:'''“SerialUSB.print(XXX);”''',XXX为你要打印的字符; | ||
+ | **如果你需要换行打印,你可以参考:'''“SerialUSB.println(XXX);”'''。 | ||
==结果== | ==结果== | ||
− | + | 当被测电压值有改变时每隔500ms刷新一次数据,2次的电压值有波动是正常的,因为这毕竟是低精度的测试。 | |
[[File:stm32-lesson9Result.jpg|600px|center|thumb]] | [[File:stm32-lesson9Result.jpg|600px|center|thumb]] |
2014年11月5日 (三) 07:22的最新版本
Language | English |
---|
目的之前我们介绍过模拟口的读取,然后对应返回0-1024的数值,今天我们就要利用Microduino模拟口,来制作一个0-5V的电压表。 注意:本实验电路设计没有相对复杂的保护电路,所以,千万别使用超过两节以上的AA电池,并且不要用来测量锂电池或者其他电源!! 设备Microduino-CoreSTM32是采用 STM32F103CBT6芯片的ARM开发板,采用独特的Upin7接口,大小与一枚一元硬币差不多大,完全兼容Microduino其他扩展模块。
原理图程序const int analogInPin = 14;
float sensorValue = 0; // value read from the pot
float Voltage=0;
void setup() {
pinMode(analogInPin, INPUT_PULLDOWN);
//采用内部下拉,将GND的基准电平引导到测量口,避免接口悬空受到干扰。
}
void loop() {
// read the analog in value:
sensorValue = analogRead(analogInPin);
// map it to the range of the analog out:
Voltage = sensorValue*5/4095;
SerialUSB.print("Voltage = ");
SerialUSB.print(Voltage);
SerialUSB.println("V ");
delay(500);
}
串口监视用于Maple与STM32之间的通讯。
结果当被测电压值有改变时每隔500ms刷新一次数据,2次的电压值有波动是正常的,因为这毕竟是低精度的测试。 视频 |