首页
/
每日頭條
/
生活
/
stm32f103電源電壓範圍
stm32f103電源電壓範圍
更新时间:2024-09-29 12:22:31

幾乎每個嵌入式應用程序中都使用的一個常見功能是 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(212即 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

STM32F103C8T6 中的 ADC 引腳

STM32 中有 10 個ADC引腳,從 PA0 到 PB1。

stm32f103電源電壓範圍(如何在STM32F103C8中使用)1

電路圖及說明

stm32f103電源電壓範圍(如何在STM32F103C8中使用)2

LCD與STM32連接

stm32f103電源電壓範圍(如何在STM32F103C8中使用)3

1602 LCD根據上表進行連接。電路中有兩個電位器,第一個用于分壓器,用于改變電壓并為 STM32 提供模拟輸入。該電位器的左側引腳從 STM32(3.3V)獲得輸入正電壓,右側引腳接地,電位器的中心引腳連接到 STM32 的模拟輸入引腳(PA7)。另一個電位器用于改變 LCD 顯示屏的對比度。STM32 的電源由 PC的 USB 電源提供。

stm32f103電源電壓範圍(如何在STM32F103C8中使用)4

對 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); //初始化LCD const int analogip = PA7;//模拟輸入引腳 void setup() { lcd.begin(16, 2); //我們使用的是 16*2 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);//顯示電壓 }

本文到此結束,錯誤之處歡迎指出。

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
Copyright 2023-2024 - www.tftnews.com All Rights Reserved