2018年12月18日 星期二

DIY - ESP32:ESP32 LEDC 控制模塊介紹(五十三)

DIY - ESP32:ESP32 LEDC 控制模塊介紹(五十三):

LED 控制(LEDC)模塊主要用於控制 LED 的強度,儘管它也可用於生成 PWM(Pulse Width Modulation)信號,用於其他控制。 它有 16個通道可以產生獨立的波形,PWM 控制器還能夠逐漸自動增加或減少佔空比(Duty Cycle),允許在沒有任何處理器干擾的情況下衰減,可以用來驅動例如 RGB LED 設備和其他。所有 LEDC 通道中有一半提供高速操作模式。 該模式提供硬件實現,自動和無干擾的 PWM 佔空比改變。 另一半通道在低速模式下運行,其中變化的時刻取決於應用軟件。 每組通道也能夠使用不同的時鐘源,但 API 中未實現此功能。

ESP32 LED PWM 控制
功能概述:
  • 讓 LEDC 在高速或低速模式下在特定通道上工作分三步完成:
  • 配置定時器以確定 PWM 信號的頻率和數字(佔空比分辨率)。
  • 通過將通道與定時器和 GPIO 相關聯來配置通道,以輸出 PWM 信號。
  • 更改 PWM 信號,驅動輸出以改變 LED 的強度。 這可以在軟件的完全控制下或在硬件衰落功能的幫助下完成。
  • 在可選步驟中,還可以在淡入淡出端設置中斷。

ESP32 LED PWM 架構
配置定時器(Configure Timer):
通過調用函數 ledc_timer_config()來完成定時器的設置。 應為此函數提供包含以下配置設置的數據結構 ledc_timer_config_t:
定時器號 ledc_timer_t 和速度模式 ledc_mode_t。
PWM 信號的頻率和 PWM佔 空比值的分辨率會發生變化。
頻率和任務分辨率是相互依賴的。 PWM 頻率越高,可提供更低的佔空比分辨率,反之亦然。 如果您計劃將此 API 用於其他改變 LED 強度的目的,這種關係可能會變得很重要。 有關更多詳細信息,請查看支持的頻率範圍和占空比分辨率。

配置頻道(Configure Channel):
設置定時器後,下一步是配置所選通道(ledc_channel_t中的一個)。 這是通過調用函數 ledc_channel_config()來完成的。
以類似的方式,與定時器配置類似,應為通道設置功能提供特定結構 ledc_channel_config_t,其中包含通道的配置參數。
此時,通道應開始工作,並開始生成由定時器設置和所選 GPIO 上的佔空比確定的頻率 PWM 信號,如 ledc_channel_config_t中所配置。 可以通過調用函數 ledc_stop()隨時暫停通道操作/信號生成。

改變 PWM 信號(Change PWM Signal):
一旦通道工作並產生恆定佔空比和頻率的 PWM 信號,有幾種方法可以改變這個信號。 在驅動 LED 時,我們主要改變了改變光強度的職責。 請參閱下面的兩部分,了解如何通過軟件或硬件衰減來更改佔空比。 如果需要,我們也可以更改信號的頻率,這將在更改 PWM 頻率部分中介紹。 

ESP32 LED PWM 高速通道框圖
LEDC 高低速模式:
LED PWM 控制器中共有 8個定時器和 16個通道,其中一半專用於高速模式,另一半專用於低速模式。選擇低速或高速“有能力”定時器或通道是通過適用的函數調用中存在的參數ledc_mode_t 來完成的。

高速模式的優點是支持 h / w,定時器設置無故障切換。這意味著如果修改了定時器設置,則在定時器的下一個溢出中斷後將自動應用更改。相反,在更新低速定時器時,應特別由軟件觸發設置更改。 LEDC API 正在“幕後”進行,例如,當調用 ledc_timer_config()或ledc_timer_set()時。

頻率和占空比分辨率範圍的支持:
LED PWM 控制器主要用於驅動 LED,並提供寬泛的 PWM 佔空比設置。 例如,對於 5kHz 的 PWM 頻率,最大佔空比分辨率為 13位。 這意味著佔空比可以設置在 0 到 100% 之間,分辨率為 ~0.012%(13 ** 2 = 8192 LED 強度的離散電平)。

LEDC 可以用於以更高的頻率提供信號以對其他設備進行計時,例如, 數碼相機模塊。 在這種情況下,最大可用頻率為 40 MHz,佔空比分辨率為 1位。 這意味著稅率固定在 50%,無法調整。

API 用於在嘗試設置超出 LEDC 硬件範圍的頻率和占空比分辨率時報告錯誤。 例如,嘗試將頻率設置為 20MHz 且佔空比分辨率為 3位將導致串行監視器上報告以下錯誤。

在這種情況下,應降低佔空比分辨率或頻率。 例如,將佔空比分辨率設置為 2將解決該問題,並提供以 25% 步長設置佔空比的可能性,即25%,50% 或 75%。

LEDC API 還將捕獲並報告嘗試配置低於支持的最小值的頻率/任務分辨率組合,例如:通常使用 ledc_timer_bit_t 來設置佔空比分辨率。 該枚舉涵蓋 10 到 15 位的範圍。 如果需要較小的佔空比分辨率(低於 10 至 1),請直接輸入等效數值。

相關網址:
※ DIY - ESP32:ESP32 頻率產生器 Frequency Generator 電路(五十四)
※ DIY - ESP32:ESP32 頻率產生器 Frequency Generator 程式(五十五)
※ DIY - ESP32:ESP32 LEDC 控制 API 函數(五十六)
※ DIY - ESP32:ESP32 LEDC 控制 API 函數結構件及其它(五十七)

2018年 12月 18日 天氣報告
氣溫:18.6@ 19:20
相對濕度:百分之 48%
天氣:大致多雲

沒有留言:

張貼留言