首页 » 科学 » 若安在 STM32F103C8 中运用 ADC 测量模拟电压_电压_引脚

若安在 STM32F103C8 中运用 ADC 测量模拟电压_电压_引脚

雨夜梧桐 2024-11-12 02:58:05 0

扫一扫用手机浏览

文章目录 [+]

这里的术语 10 通道意味着有 10 个 ADC 引脚可以用来丈量仿照电压。
术语 12 位表示ADC 的分辨率,表示000000000000-111111111111(212即 4096)。
这是我们 ADC 的采样步数,因此我们的 ADC 值的范围从 0 到 4095。
该值将从 0 增加到4095基于每步电压值,可通过方面办法打算

电压 / 步数 = 参考电压 / 4096 = (3.3/4096= 8.056mV) 每单位。

若安在 STM32F103C8 中运用 ADC 测量模拟电压_电压_引脚 科学

仿照旗子暗记如何转换为数字格式

由于打算机仅存储和处理二进制/数字值(1 和 0)。
因此,仿照旗子暗记(如传感器的伏特输出)必须转换为数字值以进行处理,并且转换须要准确。
当在仿照输入端向 STM32 供应输入仿照电压时,仿照值被读取并存储在整数变量中. 利用以下办法将存储的仿照值(0-3.3V)转换为整数值(0-4096):

输入电压 = (ADC 值 / ADC 分辨率) 参考电压

分辨率 = 4096

参考电压 = 3.3V

STM32F103C8T6 中的 ADC 引脚

STM32 中有 10 个ADC引脚,从 PA0 到 PB1。

电路图及解释

LCD与STM32连接

1602 LCD根据上表进行连接。
电路中有两个电位器,第一个用于分压器,用于改变电压并为 STM32 供应仿照输入。
该电位器的左侧引脚从 STM32(3.3V)得到输入正电压,右侧引脚接地,电位器的中央引脚连接到 STM32 的仿照输入引脚(PA7)。
另一个电位器用于改变 LCD 显示屏的比拟度。
STM32 的电源由 PC的 USB 电源供应。

对 STM32 进行编程以读取 ADC 值

通过 STM32 的 USB 端口将其连接到 PC 并开始利用 ARDUINO IDE 进行编程。
在程序中,读取仿照值并利用该值打算电压,然后在 LCD 屏幕上显示仿照值和数字值。

#include <LiquidCrystal.h> // LCD 库//首先 定义出 LCD 引脚。
这些定义了 LCD 引脚连接到 STM32 的哪个引脚。
//你可以根据自己的哀求进行修正。
const int rs = PB11, en = PB10, d4 = PB0, d5 = PB1, d6 = PC13, d7 = PC14;LiquidCrystal lcd(rs, en, d4, d5, d6, d7); //初始化LCDconst int analogip = PA7;//仿照输入引脚void setup(){ lcd.begin(16, 2); //我们利用的是 162 LCD lcd.clear(); //清屏 lcd.setCursor(0, 0); //设置光标在第一行第一列 lcd.print("Hello Wrold!"); //LCD显示这个 lcd.setCursor(0, 1); //设置光标在第二行第一列 lcd.print("STM32F103C8"); //LCD显示这个 delay(2000);//等待两秒 lcd.clear(); //清屏 lcd.setCursor(0, 0); //设置光标在第一行第一列 lcd.print("USING ADC IN");//打印这个 lcd.setCursor(0,1); //设置光标在第二行第一列 lcd.print("STM32F103C8");//打印这个 delay(2000); //等待两秒 lcd.clear(); //清屏}void loop(){ int val = analogRead(PA7); // 从引脚 A7 读取 ADC 值 float voltage = (float(val)/4096) 3.3; //将 ADC 值转换为电压值 lcd.setCursor(0, 0); // 将光标设置到第 0 列第 0 行 lcd.print("ADC Val:"); lcd.print(val); //显示ADC值 lcd.setCursor(0, 1); // 将光标设置到第 0 列第 1 行 lcd.print("Voltage:"); lcd.print(voltage);//显示电压}

本文到此结束,缺点之处欢迎指出。

标签:

相关文章