普通的IO口為什麼可以模擬PWM信號?

用戶2992346320282


單片機的GPIO口可以產生PWM信號,可以使用定時器來實現。使用定時器控制GPIO口的高電平和低電平的翻轉時間即可實現輸出方波的頻率控制和佔空比控制。

1

單片機輸出PWM信號的思路

所謂PWM信號是指脈衝寬度調製信號,通過改變高電平持續時間和低電平持續時間實現信號的調節。如果單片機的GPIO口輸出高電平持續的時間為1秒鐘,然後輸出低電平持續時間也是1秒鐘,則該信號的週期就為2秒鐘,佔空比為50%。所以只需要改變高電平持續的時間或者低電平持續的時間,就可以實現脈衝寬度的調製。這裡就需要用到定時器來控制GPIO口的定時翻轉。

假設單片機輸出高電平所持續的時間為T1,翻轉為低電平後持續的時間為T2,那麼週期就為T1+T2,佔空比就為T1/(T1+T2),所以如果保持頻率不變只改變佔空比,就只修改T1,且保證T1+T2不變。

2

PWM基本參數及用途

PWM在使用時,具有兩個非常重要的參數:頻率/週期,佔空比。前文提過佔空比就是在一個週期中高電平所佔用的比例,而頻率和週期是互為倒數的。PWM信號非常有用,平時所講的電機調速、電機驅動都是通過PWM來實現的。

在PWM調速時,佔空比越大電機轉速越快,佔空比越小電機轉速越慢。佔空比為100%時即為持續的高電平;為0%時即為持續的低電平。在BLDC驅動中,也通過PWM來控制電機的轉動和調速。

以上就是這個問題的回答,感謝留言、評論、轉發。更多電子設計、硬件設計、單片機等內容請關注本頭條號:玩轉嵌入式。感謝大家。


玩轉嵌入式


普通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我們稱之為脈衝寬度調製,這種調製技術在直流電機調速、變頻調速和燈具調光中用的很廣泛,現在有很多可以產生PWM波形的應用芯片可以產生PWM波形,有時候在一些以微處理器為控制核心的電子電路中需要PWM控制時,為了“挖掘”單片機的潛力節省產品的成本會看到常常用微處理器(MCU)的I/O(輸入與輸出口)來模擬輸出PWM控制信號。為什麼微處理器的I/O口可以模擬出PWM信號呢?下面我們一探究竟。

PWM信號產生的基本原理

顧名思義題目中的“PWM”信號其實就是就是一種模擬信號電平進行數字編碼的一種方法,也就是使用數字信號達到一個模擬信號的效果。為了更能說明問題我們看圖說話吧!以下面我所繪製的PWM波形為例子,從下面圖形示意圖看這是一個週期是10毫秒的矩形波圖,換算成頻率來說是100HZ。朋友們仔細觀看會發現在每個10毫秒的週期內其高低電平所佔的比例是不一樣的,也就是說高電平的佔空比是不同的。第一個週期佔空比是4/10、第二個週期佔空比是6/10、第三個週期佔空比是8/10。這樣只要能夠調節在每個週期的佔空比就能夠調節所控制目標的快慢或者亮滅,這就是PWM信號產生的基本原理,如下圖所示。

微控制器普通I/O口模擬PWM波形的方法

前面我們對PWM信號產生的基本原理已經清楚了,下面我們主要來談談用微處理器I/O口如何實現PWM的波形輸出的問題,我們從上圖可以很容易知道PWM波形就是由一系列高低電平構成的,只不過高電平佔整個週期的比例不同而已,因此對於高電平我們可以用“1”表示,對於低電平我們可以用“0”表示,因為由“1”和“0”組成的信息是微處理器處理這些信息的“強項”。所以我們把高低電平用“1“和”0”表示。

第二個問題是何時讓微處理器的I/O口“吐出”高低電平呢?這就牽扯到微處理器裡的軟件和特殊定時寄存器配置的問題。其實現的方法是通過在微處理器的定時寄存器中設置一個需要定時的初值,也就是通過定時器設置出高、低電平的初始值。然後利用微處理器的定時中斷函數對高電平和低電平進行自動的控制輸出,通過特殊寄存器的定時功能在當I/O口輸出為高電平的時候時,給寄定時存器裝載低電平值並使I/O輸出低電平;當I/O口輸出為低電平的時候時,給寄定時存器裝載高電平值並使I/O輸出高電平。就這樣在微處理器的I/O口就會輸出相應高低電平的PWM波形。

由此可見微處理器的I/O口之所以能夠輸出PWM波形是微處理器的硬件和軟件相互配合的結果,二者缺一不可。以上就是我對這個問題的解答,歡迎朋友們參與討論,敬請關注電子及工控技術,感謝點贊。


電子及工控技術


PWM英文全拼就是PlUSE WIDTH MODE也就是脈衝寬度調製。它的參數就是有頻率和佔空比,當然還有峰值電壓。

然而單片機的IO口,一般都具有高低電平輸出的功能。然而要控制輸出一個PWM信號,輸出變化的高低電平就可以。但是通過程序只能控制頻率和佔空比。脈衝的幅度單片機是控制不了的。只能通過外圍電路。如圖所示。單片機一般供電3.3V或5V如果要控制一個12V電壓驅動一個N溝道MOS就需要外圍電路了有用芯片驅動的,也有直接用MOS驅動的。

要控制輸出穩定的頻率和佔空比PWM信號有三種方法。

一、通過延時指令nop。也就是空指令,如圖所示。

二、用單片機定時器,如圖所示TIM1定時器中斷函數。在中段中處理IO口輸出。

三、有部分單片機的定時器有PWM輸出功能。如圖所示STM8S中間對齊輸出脈衝模式設置和PWM初始化函數設置。








電子芯庫


通過單片機定時器中斷實現軟件模擬而非硬件模塊實現的pwm。

具體的流程如下:

1.根據產品功能分析需要的pwm功能的頻率,以及佔空比可以調節的檔位數。

比如對led進行調光,為了讓人眼不感覺到閃爍,我們選擇100Hz的頻率,根據功能我們要提供10檔的亮度調節。

2.根據公式pwm/檔位數得到定時器的中斷頻率,以1中提到的例子,定時器中斷週期=1/100/10s=1ms。

3.將定時器的中斷週期設置為2所計算出的週期,定義兩個全局變量,一個對中斷次數進行計數。

在定時器中斷中,計算變量a++,當變量大於等於檔位數時,變量a清零,同時io口置高,當變量a大於變量b時,io口置低。

需要注意的是,輸出的佔空比會抖動,原因是程序中斷保護現場花費的時間每次進出中斷都有偏差,主程序為了做變量訪問互斥可能會關閉中斷,這裡也會導致偏差,另外當有多箇中斷時,特別是同級以及更高優先級的中斷不能打斷,當定時器中斷到來時,必須要等待其他同優先級正在執行的中斷執行完成,也會導致偏差。

所以必須計算所有這些導致的偏差,特別要注意要把所有同優先級以及更高優先級的中斷的執行時間,評估總的偏差是否會影響功能,比如led會不會閃爍。


IT自動化交流


PWM(Pulse Width Modulation)是脈衝寬度調製

PWM有兩個指標:佔空比和頻率,普通的IO只要能控制高低電平變化就可以模擬PWM信號了

什麼叫佔空比

高電平時間佔整個週期時間的比例叫佔空比,比如一個週期為100ms,高電平部分佔了40ms,那麼佔空比就是40%

什麼叫頻率

每秒種的週期數叫做頻率,假如每秒產生50個波形,那麼頻率就是50Hz

MCU怎麼用普通IO模擬PWM信號?

只要用定時器產生週期性的時間計數,按設計要求,讓IO循環輸出指定的高低電平信號就可以了。因為受MCU時鐘和IO電平轉換速度的限制,頻率很高的PWM信號是沒法用普通IO模擬,需要選用帶PWM外設的MCU。

歡迎關注@電子產品設計方案,一起享受分享與學習的樂趣!關注我,成為朋友,一起交流一起學習

  • 記得點贊和評論哦!非常感謝


分享到:


相關文章: