能否使用普通IO口模擬PWM波?該怎麼做?

2020-12-02 技術閒聊

普通IO埠模擬PWM,其實是有局限的,尤其是要輸出高頻率的PWM波形時,更不適合,建議不要選用普通埠模擬PWM,而建議選用定時器復用硬體PWM輸出。

什麼是PWM

PWM其實就是電平有周期的高低電平變化。PWM輸出是由兩個參數:佔空比和周期頻率決定的。

在電子產品控制領域,PWM控制是一項運用非常廣泛的技術,有很多行業都需要使用到它。

普通埠如何模擬PWM

有些單片機內部擁有帶PWM輸出功能的定時器,只需要簡單的配置參數和使能,就能夠在特定的復用IO引腳,輸出想要的PWM波形。

但當設計電路當中,單片機引腳沒有PWM功能時,如果想要實現模擬PWM信號的功能,則可以與內部普通定時器去實現。

假設實現1Khz,50%佔空比的波形,即實現周期為1ms的pwm輸出,需要設定一個0.5ms的定時器中斷,每次進入一次定時器,則對普通的IO埠輸出電平進行一次翻轉,以達到PWM輸出波形的作用。

模擬PWM優點:

普通IO埠模擬PWM,可以增加硬體引腳的適配程度,並不受單片機特定限制。

模擬PWM缺點

模擬PWM的輸出頻率越高,進入定時器中斷的次數就越快,中斷間隔的時間越短,如果再有其他類型的中斷也要處理時,會因為中斷的優先級嵌套等待響應,影響控制精度,PWM輸出誤差增大,也會影響其他如ADC等中斷處理,甚至會較出現單片機邏輯出錯,死機或者跑飛的情況。

模擬PWM,適用範圍

模擬pwm,適合低頻率,固定周期和固定佔空比的場合, 複雜的高頻率的PWM控制應用,需要專用的pwm輸出硬體來進行。

哪些行業需要使用PWM

舞檯燈光RGB

舞檯燈光控制RGB顏色漸變和亮滅控制,都是通過單片機發出PWM信號,驅MOS管,配合PWM專用控制晶片,再調節佔空比,達到對RGB燈珠的供電電流大小變化,而實現強弱變化,並且控制各種不同的顏色燈珠的色度來混合成各種不同的顏色和效果。

無人機控制/六軸機器人/智慧機器人

無人機控制/六軸機器人/智慧機器人,都是經過Pwm控制電路,控制電機轉速,同時單片機不斷採集相關數據,如三軸加速度傳感器和角速度傳感器,確定機身的姿態,再用pwm的佔空比進行增加或者降低,改變舵機轉速,達到調整姿態和高度,或者完成控制肢體動作的目的.

總結

普通IO模擬PWM,可以在某一些低頻率周期的應用場合使用,高頻率的PWM,需要使用特定的硬體PWM輸出控制器。PWM控制是單片機編程的一個重要利器,學好PWM控制算法,那麼高薪工作唾手可得。

相關焦點

  • PWM原理
    本文引用地址:http://www.eepw.com.cn/article/275890.htm  脈寬調製(PWM,Pulse Width Modulation)是一種模擬控制方脈衝寬度調製,利用微處理器的數字輸出來對模擬電路進行控制的一種非常有效的技術,廣泛應用在從測量、通信到功率控制與變換的許多領域中。  PWM就是脈衝寬度調製,也就是佔空比可變的脈衝波形。
  • 你足夠了解pwm嗎?搞清楚pwm控制技術
    pwm是現代重要技術之一,在各種電子設備中,均存在pwm的身影。在往期文章中,小編對pwm原理、pwm佔空比、pwm頻率均有所介紹。為增進大家對pwm的認識,本文將對pwm控制技術予以闡述。如果你對pwm抑或本文即將介紹的內容具有興趣,不妨繼續往下閱讀哦。
  • stm32單片機中使用GPIO口模擬PWM輸出解析
    gpio   General Purpose Input Output (通用輸入/輸出)簡稱為GPIO,或總線擴展器,人們利用工業標準I2C、SMBus或SPI接口簡化了I/O口的擴展。當微控制器或晶片組沒有足夠的I/O埠,或當系統需要採用遠端串行通信或控制時,GPIO產品能夠提供額外的控制和監視功能。
  • PWM是什麼
    根據衝量相等效果相同的原理,PWM波形和正弦半波是等效的。對於正弦的負半周,也可以用同樣的方法得到PWM波形。  在PWM波形中,各脈衝的幅值是相等的,要改變等效輸出正弦波的幅值時,只要按同一比例係數改變各脈衝的寬度即可,因此在交-直-交變頻器中,PWM逆變電路輸出的脈衝電壓就是直流側電壓的幅值。
  • 大佬帶你深入pwm殿堂,搞明白pwm頻率是咋回事
    對於pwm,想必很多朋友都有所耳聞。但是,大家對於pwm真的了解嗎?譬如,pwm頻率是如何被確定下來的?pwm頻率和pwm值是同一個東西嗎?如果不是,pwm頻率和pwm值有什麼區別呢?如果你對這些問題存在疑惑,或者是對本文涉及的pwm相關知識具有興趣,不妨繼續往下閱讀哦。
  • 通過pwm方式控制電機-L298N-Java版本
    實際上在精度要求不是非常高的情況下,普通引腳也可以通過軟體模擬來控制電機,實現pwm一樣的功能。二.電路連接示意圖 使用方式如下> 電路連接設計思路:使用If not, see * <http://www.gnu.org/licenses/lgpl-3.0.html>. * #L% */ import com.pi4j.io.gpio.
  • 利用PWM原理,實現呼吸燈功能
    PWM波可以由GPIO口產生,通過GPIO口輸出高電平,延時,輸出低電平,延時來產生PWM波。還可以使用定時器,利用比較寄存器形成PWM。本實驗就是利用PWM信號這一特性控制LED產生不同亮度,從而實現呼吸燈的效果。
  • STM32——PWM輸出總結
    學習後發現stm32的定時器功能確實很強大,小總結一下方便以後使用的時候做參考。今天我主要是用定時器做pwm輸出,所以總結也主要是針對pwm方面的。 先大致說下通用和高級定時器的區別。通用的可以輸出四路pwm信號互不影響。高級定時器可以輸出三對互補pwm信號外加ch4通道,也就是一共七路。所以這樣算下來stm32一共可以生成4*5+7*2=30路pwm信號。
  • Gate.io上線DOT、OMG永續合約交易(USDT結算)
    DOT永續合約實盤交易連結:https://www.gatecn.io/futures_trade/USDT/DOT_USDTDOT永續合約模擬盤交易連結:https://www.gatecn.io/testnet/futures_trade/USDT/DOT_USDTOMG永續合約實盤交易連結:https://www.gatecn.io
  • 脈寬調製原理- -PWM原理
    趕緊跟隨小編來了解一下脈寬調製原理吧~本文引用地址:http://www.eepw.com.cn/article/278262.htm一、脈寬調製原理- -簡介  脈寬調製技術,全稱為脈衝寬度調製,英文名稱為Pulse Width Modulation,簡寫為PWM,是一種利用微處理器來完成對模擬電路控制的一種技術,其具有操作簡單、靈活性好、反應速度快等諸多特點,現已在通信、測量、功率變換
  • 51單片機 普通IO口模擬IIC(I2C)接口通訊的程序代碼
    因為使用傳統的並行總線在IC器件之間連接,往往會使得IC之間連線較多,顯得非常複雜。而I2C總線 則使IC器件之間只需SDA、SCL兩條連線就可以傳送數據,因而十分方便。由於I2C在印刷體中不容易書寫(需要上標),所以實際書寫時,還常見到 IIC、I2C等書寫方法,本文採用IIC的寫法,敬請注意。關於IIC總線的知識,請參閱相關書籍,此處不再做進一步介紹。
  • PWM在ARM Linux中的原理和蜂鳴器驅動實例開發
    由此可以看到,PWM的輸出頻率跟比較緩存寄存器和計數緩存寄存器的取值有關,而比較緩存寄存器和計數緩存寄存器的值又跟預分頻器和時鐘分頻器的值有關;要使用PWM功能其實也就是對定時器的相關寄存器進行操作。手冊上也有一個公式:定時器輸出頻率 = PCLK / {預分頻器值 + 1} / 時鐘分頻值。下面我們來通過一個蜂鳴器的實例來說明PWM功能的使用。
  • PWM和SB
    我知道L298N是可以PWM的(pulse width modulation).就是說驅動板的輸出並不是只能有無,而是可以從小到大有一個範圍(就是說電路的輸出並不是直流,而是所謂的方波:就是時間片很小的直流的通斷組成的波,通斷時間的比例用佔空比來度量!
  • 一文匯總STM32單片機的八種IO口模式
    STM32八種IO口模式區別本文引用地址:http://www.eepw.com.cn/article/201812/396059.htm  (1)GPIO_Mode_AIN模擬輸入  (2
  • 濾波器對PWM變頻調速電動機端子上電壓波形的影響分析
    本文主要研究在不同電纜長度下,濾波器的參數對電機端電壓特性的影響,確定電纜長度、濾波器的電阻和電容與電機端子過電壓幅值及脈衝上升沿時間的關係,找出濾波器參數的選擇範圍,為變頻調速驅動系統的製造和使用提供試驗依據和理論基礎。
  • Elmos 單/雙通道PWM恆流模式LED驅動解決方案
    該晶片主要適用於汽車領域,可用於汽車LED燈驅動,如前大燈(High beam, Low Beam)、日間行車燈(DRL)、轉向指示燈(Turn Signal Indicator)、霧燈以及尾燈的應用中。
  • 正點原子-戰艦V3第十四章 PWM 輸出實驗
    上一章,我們介紹了 STM32 的通用定時器 TIM3,用該定時器的中斷來控制 DS1 的閃爍,這一章,我們將向大家介紹如何使用 STM32 的 TIM3 來產生 PWM 輸出。該寄存器的各位描述如圖 14.1.3 所示:圖 14.1.3 TIMx_ CCER 寄存器各位描述該寄存器比較簡單,我們這裡只用到了 CC2E 位,該位是輸入/捕獲 2 輸出使能位,要想PWM 從 IO 口輸出,這個位必須設置為 1,所以我們需要設置該位為 1。
  • 基於Cortex-A9的pwm詳解——PWM信號輸出輸出和作用
    一、什麼是PWMPWM,英文名Pulse Width Modulation,是脈衝寬度調製縮寫,它是通過對一系列脈衝的寬度進行調製,等效出所需要的波形(包含形狀以及幅值),對模擬信號電平進行數字編碼,也就是說通過調節佔空比的變化來調節信號、能量等的變化,佔空比就是指在一個周期內,信號處於高電平的時間佔據整個信號周期的百分比
  • Stm32的io口模擬spi例程分析
    本文引用地址:http://www.eepw.com.cn/article/201611/322268.htm貼上代碼void SPI_FLASH_Init1(void)//ioGPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOC, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 ; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //MOSI要用模擬輸入
  • STM32的IO口如何配置
    _AIN5)開漏輸出_OUT_OD6)推輓輸出_OUT_PP7)復用功能的推輓輸出_AF_PP8)復用功能的開漏輸出_AF_OD1.1I/O口的輸出模式下,有3種輸出速度可選(2M,10M,50MHz),這個速度是指I/O口驅動電路的響應速度而不是輸出信號的速度。