小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

STM32脈寬調(diào)制(PWM)控制直流風扇的速度占空比

 山峰云繞 2022-04-08

https://m.toutiao.com/is/NG34368/?=STM32中的PWM 


在之前的文章中,我們已經(jīng)了解了使用 STM32 進行 ADC 轉(zhuǎn)換。現(xiàn)在,我們將了解STM32 中的 PWM(脈沖寬度調(diào)制)以及如何使用 PWM 技術(shù)控制 LED 的亮度或直流風扇的速度。

我們知道有兩種類型的電路信號:模擬和數(shù)字。模擬信號有3V、3.1V、2V...等電壓信號,而數(shù)字信號只有1 和 0。

傳感器輸出的是模擬信號,這些模擬信號使用 ADC 轉(zhuǎn)換為數(shù)字信號,因為微控制器只理解數(shù)字信號。處理完這些 ADC 值后,需要再次將輸出轉(zhuǎn)換為模擬形式以驅(qū)動模擬設備。為此,我們使用某些方法,如 PWM、數(shù)模 (DAC) 轉(zhuǎn)換器等。

什么是 PWM(脈沖寬度調(diào)制)?(前面的文章也有相關(guān)介紹)

PWM可以讓數(shù)字值控制模擬設備,例如控制電機的速度,LED的亮度等。我們知道電機和LED工作在模擬信號上。但是PWM不提供純模擬輸出,PWM看起來像是由短脈沖產(chǎn)生的模擬信號。

PWM 的占空比

PWM 信號保持高電平(ON Time)的時間百分比稱為占空比。如果信號始終打開,則占空比為 100%,如果始終關(guān)閉,則占空比為 0%。

占空比 = ON Time /(ON Time + OFF Time)

STM32中的PWM

STM32F103C8 有 15 個 PWM 引腳和 10 個 ADC 引腳。它具有 16 位 PWM 分辨率(2^16)。

所以 65535 的值為100% 占空比,平均電壓=總電壓;

同樣,32767 的值為50% 占空比,平均電壓=50%總電壓;

13107 的值為20% 占空比,平均電壓=20%總電壓。

這里我們使用電位器和 STM32 通過 PWM 技術(shù)來改變 LED 的亮度和直流風扇的速度。1602 LCD用于顯示 ADC 值 (0-4095) 和輸出的PWM 值 (0-65535) 。

直流風扇:這里使用的直流風扇是PC 的 BLDC 風扇。它需要額外提供電源,所以我們使用 9V 直流電池。

ULN2003電機驅(qū)動IC:用于單向驅(qū)動電機。下面是ULN2003的圖片圖:

引腳(IN1 到 IN7)是輸入引腳,(OUT 1 到 OUT 7)是相應的輸出引腳。COM 是負載的正極電壓。

電位器:使用兩個電位器,一個用于分壓器,用于模擬輸入到 ADC,另一個用于控制 LED 的亮度。

STM32的管腳細節(jié)

我們可以看到 PWM 引腳以波浪線(~) 表示,有 15 個這樣的引腳;有 10 個 ADC 引腳用于模擬輸入,ADC 引腳以綠色標出。

電路圖和連接

STM32 與各種組件的連接說明如下:

> STM32的模擬(ADC)輸入

靠近ST32開發(fā)板的電位器的中心引腳連接到STM32 的ADC引腳(PA4),該電位器用來調(diào)節(jié)輸入ADC的電壓。

>STM32連接LED

STM32 PWM 輸出引腳(PA9)通過串聯(lián)電阻連接到 LED 的正極引腳,LED并聯(lián)一個電容。

>STM32 連接ULN2003 和 ULN2003連接風扇

STM32 PWM 輸出引腳(PA8)連接到 ULN2003 IC 的輸入引腳(IN1),ULN2003 的相應輸出引腳(OUT1)連接到 直流風扇的負極線。

直流風扇的正極引腳連接到 ULN2003 IC 的 COM 引腳,外部電池(9V DC)也連接到 ULN2003 IC 的相同 COM 引腳。ULN2003 的GND、 STM32的GND、電池負極連接到電路相同的 GND。

>STM32 連接LCD (1602)

>整體電路

編程STM32

#include <LiquidCrystal.h> // 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 analoginput = PA4; //電位器輸入const int led = PA9; // LED PWM輸出const int fan = PA8; // 風扇 輸出void setup(){ lcd.begin(16,2); //16*2LCD lcd.clear(); //LCD清屏 lcd.setCursor(0,0); //將光標設置在第0行和第0列 lcd.print('Hello World'); lcd.setCursor(0,1); //設置光標在第二行第一列 lcd.print('PWM USING STM32'); //LCD顯示 PWM using STM32 delay(2000); // 延時2秒 lcd.clear(); // LCD清屏 pinMode(analoginput, INPUT); // 設置為模擬輸入 pinMode(led, PWM); // 設置為PWM輸出 控制led pinMode(fan, PWM); // 設置為PWM輸出 控制風扇}void loop(){ int valueadc = analogRead(analoginput); //從引腳 PA4 讀取 ADC 值 (電位 器值) int result = map(valueadc, 0, 4095, 0, 65535); //把valueadc 從0-4095映射轉(zhuǎn)為0-65535映射并存儲到result中 pwmWrite(led, result); //以PWM波控制LED pwmWrite(fan, result); lcd.setCursor(0,0); //設置光標位置 lcd.print('ADC value= '); // LCD 顯示ADC value= lcd.print(valueadc); //顯示電位器ADC值 lcd.setCursor(0,1); //設置光標位置 lcd.print('Output = '); //LCD 顯示Output = lcd.print(result); //顯示電位器映射0-65535的值}

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多