如何在 STM32F103C8 中使用 ADC 测量模拟电压

几乎每个嵌入式应用程序中都使用的一个常见功能是 ADC 模块(模数转换器)。这些模数转换器可以从温度传感器、倾斜传感器、电流传感器、弯曲传感器等模拟传感器读取电压。现在,我们学习 如何使用 STM32F103C8 中的 ADC 读取模拟电压,我们将一个电位器连接到 STM32 Blue Pill 板,通过改变电位器阻值为ADC提供不同的电压,将读取的电压显示在 1602 LCD 上。

STM32F103C8 中的 ADC

在 STM32F103C8有 10 个通道、12 位 ADC,输入范围为 0V -3.3V。它将 0 到 3.3 伏之间的输入电压映射为 0 到 4095 之间的整数值。

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

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

模拟信号如何转换为数字格式

由于计算机仅存储和处理二进制/数字值(1 和 0)。因此,模拟信号(如传感器的伏特输出)必须转换为数字值以进行处理,并且转换需要准确。当在模拟输入端向 STM32 提供输入模拟电压时,模拟值被读取并存储在整数变量中. 使用以下方式将存储的模拟值(0-3.3V)转换为整数值(0-4096):

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

分辨率 = 4096

参考电压 = 3.3V

STM

  • 16
    点赞
  • 215
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
对于STM32F103单片机,它有多个ADC通道可以用于模拟信号采集。以下是一个简单的代码示例,可以帮助你采集ADC电压值: ```c #include "stm32f10x.h" int main(void) { // 初始化ADC ADC_InitTypeDef ADC_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; // 使能ADC1时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); // 配置ADC1通道16(DMA1_Channel1) GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; GPIO_Init(GPIOA, &GPIO_InitStructure); // ADC1配置 ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; ADC_InitStructure.ADC_ScanConvMode = DISABLE; ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; ADC_InitStructure.ADC_NbrOfChannel = 1; ADC_Init(ADC1, &ADC_InitStructure); // 配置ADC1通道16 ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_55Cycles5); // 使能ADC1 ADC_Cmd(ADC1, ENABLE); // 开始转换 ADC_SoftwareStartConvCmd(ADC1, ENABLE); // 等待转换完成 while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC)); // 读取转换结果 uint16_t adc_value = ADC_GetConversionValue(ADC1); // 计算电压 float voltage = adc_value * 3.3 / 4096; while(1); } ``` 在这个例子,我们使用ADC1的通道0来采集模拟信号,然后将结果转换为电压值。注意,这只是一个简单的示例,实际使用可能需要根据具体情况进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值