該文主要研究了以TI公司的16位定點TMS320F240型DSP為控制核心的全數字交流變頻調速系統硬件、軟件的設計理論和設計方法.該系統主要由主電路、系統保護電路、控制回路和采樣回路組成.主電路部分包括整流、濾波、逆變器(IPM)、IPM驅動電路等;系統保護電路包括過壓欠壓保護、限流啟動、IPM故障保護、過流保護等;控制回路包括DSP最小系統電路、與PC機通訊接口電路、仿真接口電路、PWM信號發生電路、A/D、D/A轉換電路等;采樣電路包括電流采樣、電壓采樣、轉速采樣.在軟件方面,考慮到SVPWM相對于SPWM具有較高的直流電壓利用率,以及更適合于數字控制系統,該文在研究SVPWM控制原理的基礎上,編制了基于SVPWM的開環控制程序.該文最后給出了試驗結果,開環運行試驗結果表明,該系統可以在0-50Hz范圍內平滑調速,在10Hz以上具有較強的帶負載能力,以及抗干擾能力.
上傳時間: 2013-05-21
上傳用戶:fyerd
隨著功率開關器件的進步,大量的電力電子變流裝置在國民經濟各領域獲得了廣泛應用,但是這些變流裝置大部分都需要整流環節。傳統的不控整流或相控整流存在網側功率因數低、電流畸變嚴重等缺點。PWM整流器可實現正弦的網側電流、單位或可調的功率因數、能量的雙向流動,是一種真正意義上的“綠色環保”電力電子裝置。PWM整流器可分為電壓型PWM整流器(Voltage—SourceRectifier,VSR)和電流型PWM整流器(Current—SourceRectifier,CSR)。CSR具有直接控制輸出電流、動態響應快、限流能力強等特點,在一些中、大功率應用場合,較之VSR,在經濟和技術上更具優勢。 本文針對電網電壓平衡、不平衡情況、多模塊直接并聯幾個方面,對三相CSR及其控制策略展開了深入研究,論文的主要工作和取得的創新性成果如下: 1、在電網電壓平衡情況下,提出了三相CSR的直流電流非線性解耦控制策略和交流電流非線性解耦控制策略,實現了有功功率和無功功率的獨立、解耦控制,獲得了線性的動態響應。直流電流非線性解耦控制策略是直流電流控制和網側無功電流控制并行的控制策略,具有較快的直流電流響應速度;交流電流非線性解耦控制策略是直流電流(或電壓)控制和網側電流控制級聯的控制策略,具有結構簡單,便于獨立設計直流和交流控制器的特點。 2、考慮了電網電壓不平衡和濾波器參數三相不對稱的情況,提出了基于瞬時有功功率調節的三相CSR的不平衡補償策略,消除了直流電流脈動分量,實現了網側可控的功率因數和正弦的交流電流;提出了基于滑模控制的交流電流控制策略,簡化了控制器結構,實現了對網側電流的無差跟蹤。 3、建立了多模塊直接并聯CSR的環流模型;對任一并聯模塊,提出了總直流電流控制器外加2個均流控制器的直流側控制器結構,保證了流過各模塊上、下橋臂的電流均相等,并且各模塊僅共享總直流電流控制器輸出信號,最大可能地保證了各模塊控制的獨立性。 4、建立了三相CSR實驗系統,進行了初步的實驗研究。
上傳時間: 2013-04-24
上傳用戶:極客
電流型PWM整流器因其良好的功率因數和直流電流源特性,可望在某些場合取代產生大量諧波的二極管或晶閘管相控整流裝置,但是由于其本身的強耦合非線性特性,使得變流器常采用復雜的直接電流控制策略,從而使控制器的設計非常復雜。文中提出一種改進的基于d-q坐標系的間接電流控制方法,在電網電壓平衡情況下,通過解耦控制,能獲得線性的動態響應。
上傳時間: 2014-12-24
上傳用戶:asaqq
分析了將TSMC(雙級矩陣變換器)作為直驅式永磁同步風力發電系的全功率變流器,并且分別對TSMC的整流級的PWM調制和逆變級空間矢量調制進行了推導和計算,簡要分析了TSMC的換流方法。然后運用MATLAB對整流級和逆變級調制方法和對直驅式風力發電系統的要求進行仿真驗證,仿真結果驗證了本文的理論分析和調制方法的正確型,說明了TSMC具有調制方法簡單、輸出電能質量高等優點,同時也說明TSMC非常適合用于直驅式風力發電系統中,并且為進一步地研究TSMC提供了理論基礎。
上傳時間: 2014-01-02
上傳用戶:ouyangtongze
移相全橋零電壓PWM軟開關變換器是目前中大功率開關電源的主流,本文對功率變換部分,輸出整流濾波部分在時域上進行了詳細分析,并且重點介紹了超前臂和知滯后臂的諧振過程,分析占空比丟失的原因,及其關鍵元件參數對電路的影響。
上傳時間: 2013-11-16
上傳用戶:www240697738
摘要:本文詳細的介紹了基于施耐德Modicon Premium T PCX 57 PLC在郵政自動化分揀系統中控制系統的應用,系統的網絡拓撲結構,工藝流程和信息采集等。關鍵詞:T PCX57 PLC FIPIO總線 OPC Momentum I/O模塊 分揀系統
上傳時間: 2013-11-10
上傳用戶:kristycreasy
基于單片機PWM控制逆變電源的設計:設計了一種基于AT89C51 控制SA4828 的逆變電源,它采用IGBT 作為功率器件, IR2110 作為IGBT 的驅動芯片,并采用恒 U/F 的控制策略。關鍵詞:單片機 脈寬調制 逆變電源 本論文主要目的是設計一種全數字化三相PWM 逆變電源。三相SPWM 發生器是逆變電源的核心部分,它的性能好壞,直接關系到整個逆變電源的工作狀況。鑒于以80C196MC或TMS320LF240 為核心組成的控制電路,能實現電源的全數字化控制,但系統較復雜,軟件工作量大,研制周期長。在本設計中,我們選用了AT89C51 控制MITEL 公司的SA4828芯片作為波形發生器。 二、系統結構功率流程:市電輸入經輸入保護電路濾除噪聲后,進行整流、濾波變成直流電壓,然后這個直流電壓輸入到橋式逆變電路。PWM 發生器在單片機的控制下,通過驅動電路對輸出脈沖進行調制就可改變輸出電壓和頻率,再經輸出變壓器隔離后供給負載。主電路中根據磁路集成原理,將變壓器和濾波電感集成為一個磁性元件,再在變壓器的次級并以適當的電容,組成濾波網絡以獲得正弦波形輸出。整個電路分為五大部分:整流濾波、全橋逆變電路、驅動電路以及將單片機控制PWM 產生器的控制電路和保護電路。另外在輸入和輸出端還有輸入濾波和輸出濾波電路。
上傳時間: 2013-11-07
上傳用戶:xyipie
注:1.這篇文章斷斷續續寫了很久,畫圖技術也不精,難免錯漏,大家湊合看.有問題可以留言. 2.論壇排版把我的代碼縮進全弄沒了,大家將代碼粘貼到arduino編譯器,然后按ctrl+T重新格式化代碼格式即可看的舒服. 一、什么是PWM PWM 即Pulse Wavelength Modulation 脈寬調制波,通過調整輸出信號占空比,從而達到改 變輸出平均電壓的目的。相信Arduino 的PWM 大家都不陌生,在Arduino Duemilanove 2009 中,有6 個8 位精度PWM 引腳,分別是3, 5, 6, 9, 10, 11 腳。我們可以使用analogWrite()控 制PWM 腳輸出頻率大概在500Hz 的左右的PWM 調制波。分辨率8 位即2 的8 次方等于 256 級精度。但是有時候我們會覺得6 個PWM 引腳不夠用。比如我們做一個10 路燈調光, 就需要有10 個PWM 腳。Arduino Duemilanove 2009 有13 個數字輸出腳,如果它們都可以 PWM 的話,就能滿足條件了。于是本文介紹用軟件模擬PWM。 二、Arduino 軟件模擬PWM Arduino PWM 調壓原理:PWM 有好幾種方法。而Arduino 因為電源和實現難度限制,一般 使用周期恒定,占空比變化的單極性PWM。 通過調整一個周期里面輸出腳高/低電平的時間比(即是占空比)去獲得給一個用電器不同 的平均功率。 如圖所示,假設PWM 波形周期1ms(即1kHz),分辨率1000 級。那么需要一個信號時間 精度1ms/1000=1us 的信號源,即1MHz。所以說,PWM 的實現難點在于需要使用很高頻的 信號源,才能獲得快速與高精度。下面先由一個簡單的PWM 程序開始: const int PWMPin = 13; int bright = 0; void setup() { pinMode(PWMPin, OUTPUT); } void loop() { if((bright++) == 255) bright = 0; for(int i = 0; i < 255; i++) { if(i < bright) { digitalWrite(PWMPin, HIGH); delayMicroseconds(30); } else { digitalWrite(PWMPin, LOW); delayMicroseconds(30); } } } 這是一個軟件PWM 控制Arduino D13 引腳的例子。只需要一塊Arduino 即可測試此代碼。 程序解析:由for 循環可以看出,完成一個PWM 周期,共循環255 次。 假設bright=100 時候,在第0~100 次循環中,i 等于1 到99 均小于bright,于是輸出PWMPin 高電平; 然后第100 到255 次循環里面,i 等于100~255 大于bright,于是輸出PWMPin 低電平。無 論輸出高低電平都保持30us。 那么說,如果bright=100 的話,就有100 次循環是高電平,155 次循環是低電平。 如果忽略指令執行時間的話,這次的PWM 波形占空比為100/255,如果調整bright 的值, 就能改變接在D13 的LED 的亮度。 這里設置了每次for 循環之后,將bright 加一,并且當bright 加到255 時歸0。所以,我們 看到的最終效果就是LED 慢慢變亮,到頂之后然后突然暗回去重新變亮。 這是最基本的PWM 方法,也應該是大家想的比較多的想法。 然后介紹一個簡單一點的。思維風格完全不同。不過對于驅動一個LED 來說,效果與上面 的程序一樣。 const int PWMPin = 13; int bright = 0; void setup() { pinMode(PWMPin, OUTPUT); } void loop() { digitalWrite(PWMPin, HIGH); delayMicroseconds(bright*30); digitalWrite(PWMPin, LOW); delayMicroseconds((255 - bright)*30); if((bright++) == 255) bright = 0; } 可以看出,這段代碼少了一個For 循環。它先輸出一個高電平,然后維持(bright*30)us。然 后輸出一個低電平,維持時間((255-bright)*30)us。這樣兩次高低就能完成一個PWM 周期。 分辨率也是255。 三、多引腳PWM Arduino 本身已有PWM 引腳并且運行起來不占CPU 時間,所以軟件模擬一個引腳的PWM 完全沒有實用意義。我們軟件模擬的價值在于:他能將任意的數字IO 口變成PWM 引腳。 當一片Arduino 要同時控制多個PWM,并且沒有其他重任務的時候,就要用軟件PWM 了。 多引腳PWM 有一種下面的方式: int brights[14] = {0}; //定義14個引腳的初始亮度,可以隨意設置 int StartPWMPin = 0, EndPWMPin = 13; //設置D0~D13為PWM 引腳 int PWMResolution = 255; //設置PWM 占空比分辨率 void setup() { //定義所有IO 端輸出 for(int i = StartPWMPin; i <= EndPWMPin; i++) { pinMode(i, OUTPUT); //隨便定義個初始亮度,便于觀察 brights[ i ] = random(0, 255); } } void loop() { //這for 循環是為14盞燈做漸亮的。每次Arduino loop()循環, //brights 自增一次。直到brights=255時候,將brights 置零重新計數。 for(int i = StartPWMPin; i <= EndPWMPin; i++) { if((brights[i]++) == PWMResolution) brights[i] = 0; } for(int i = 0; i <= PWMResolution; i++) //i 是計數一個PWM 周期 { for(int j = StartPWMPin; j <= EndPWMPin; j++) //每個PWM 周期均遍歷所有引腳 { if(i < brights[j])\ 所以我們要更改PWM 周期的話,我們將精度(代碼里面的變量:PWMResolution)降低就行,比如一般調整LED 亮度的話,我們用64 級精度就行。這樣速度就是2x32x64=4ms。就不會閃了。
上傳時間: 2013-10-08
上傳用戶:dingdingcandy
注:1.這篇文章斷斷續續寫了很久,畫圖技術也不精,難免錯漏,大家湊合看.有問題可以留言. 2.論壇排版把我的代碼縮進全弄沒了,大家將代碼粘貼到arduino編譯器,然后按ctrl+T重新格式化代碼格式即可看的舒服. 一、什么是PWM PWM 即Pulse Wavelength Modulation 脈寬調制波,通過調整輸出信號占空比,從而達到改 變輸出平均電壓的目的。相信Arduino 的PWM 大家都不陌生,在Arduino Duemilanove 2009 中,有6 個8 位精度PWM 引腳,分別是3, 5, 6, 9, 10, 11 腳。我們可以使用analogWrite()控 制PWM 腳輸出頻率大概在500Hz 的左右的PWM 調制波。分辨率8 位即2 的8 次方等于 256 級精度。但是有時候我們會覺得6 個PWM 引腳不夠用。比如我們做一個10 路燈調光, 就需要有10 個PWM 腳。Arduino Duemilanove 2009 有13 個數字輸出腳,如果它們都可以 PWM 的話,就能滿足條件了。于是本文介紹用軟件模擬PWM。 二、Arduino 軟件模擬PWM Arduino PWM 調壓原理:PWM 有好幾種方法。而Arduino 因為電源和實現難度限制,一般 使用周期恒定,占空比變化的單極性PWM。 通過調整一個周期里面輸出腳高/低電平的時間比(即是占空比)去獲得給一個用電器不同 的平均功率。 如圖所示,假設PWM 波形周期1ms(即1kHz),分辨率1000 級。那么需要一個信號時間 精度1ms/1000=1us 的信號源,即1MHz。所以說,PWM 的實現難點在于需要使用很高頻的 信號源,才能獲得快速與高精度。下面先由一個簡單的PWM 程序開始: const int PWMPin = 13; int bright = 0; void setup() { pinMode(PWMPin, OUTPUT); } void loop() { if((bright++) == 255) bright = 0; for(int i = 0; i < 255; i++) { if(i < bright) { digitalWrite(PWMPin, HIGH); delayMicroseconds(30); } else { digitalWrite(PWMPin, LOW); delayMicroseconds(30); } } } 這是一個軟件PWM 控制Arduino D13 引腳的例子。只需要一塊Arduino 即可測試此代碼。 程序解析:由for 循環可以看出,完成一個PWM 周期,共循環255 次。 假設bright=100 時候,在第0~100 次循環中,i 等于1 到99 均小于bright,于是輸出PWMPin 高電平; 然后第100 到255 次循環里面,i 等于100~255 大于bright,于是輸出PWMPin 低電平。無 論輸出高低電平都保持30us。 那么說,如果bright=100 的話,就有100 次循環是高電平,155 次循環是低電平。 如果忽略指令執行時間的話,這次的PWM 波形占空比為100/255,如果調整bright 的值, 就能改變接在D13 的LED 的亮度。 這里設置了每次for 循環之后,將bright 加一,并且當bright 加到255 時歸0。所以,我們 看到的最終效果就是LED 慢慢變亮,到頂之后然后突然暗回去重新變亮。 這是最基本的PWM 方法,也應該是大家想的比較多的想法。 然后介紹一個簡單一點的。思維風格完全不同。不過對于驅動一個LED 來說,效果與上面 的程序一樣。 const int PWMPin = 13; int bright = 0; void setup() { pinMode(PWMPin, OUTPUT); } void loop() { digitalWrite(PWMPin, HIGH); delayMicroseconds(bright*30); digitalWrite(PWMPin, LOW); delayMicroseconds((255 - bright)*30); if((bright++) == 255) bright = 0; } 可以看出,這段代碼少了一個For 循環。它先輸出一個高電平,然后維持(bright*30)us。然 后輸出一個低電平,維持時間((255-bright)*30)us。這樣兩次高低就能完成一個PWM 周期。 分辨率也是255。 三、多引腳PWM Arduino 本身已有PWM 引腳并且運行起來不占CPU 時間,所以軟件模擬一個引腳的PWM 完全沒有實用意義。我們軟件模擬的價值在于:他能將任意的數字IO 口變成PWM 引腳。 當一片Arduino 要同時控制多個PWM,并且沒有其他重任務的時候,就要用軟件PWM 了。 多引腳PWM 有一種下面的方式: int brights[14] = {0}; //定義14個引腳的初始亮度,可以隨意設置 int StartPWMPin = 0, EndPWMPin = 13; //設置D0~D13為PWM 引腳 int PWMResolution = 255; //設置PWM 占空比分辨率 void setup() { //定義所有IO 端輸出 for(int i = StartPWMPin; i <= EndPWMPin; i++) { pinMode(i, OUTPUT); //隨便定義個初始亮度,便于觀察 brights[ i ] = random(0, 255); } } void loop() { //這for 循環是為14盞燈做漸亮的。每次Arduino loop()循環, //brights 自增一次。直到brights=255時候,將brights 置零重新計數。 for(int i = StartPWMPin; i <= EndPWMPin; i++) { if((brights[i]++) == PWMResolution) brights[i] = 0; } for(int i = 0; i <= PWMResolution; i++) //i 是計數一個PWM 周期 { for(int j = StartPWMPin; j <= EndPWMPin; j++) //每個PWM 周期均遍歷所有引腳 { if(i < brights[j])\ 所以我們要更改PWM 周期的話,我們將精度(代碼里面的變量:PWMResolution)降低就行,比如一般調整LED 亮度的話,我們用64 級精度就行。這樣速度就是2x32x64=4ms。就不會閃了。
上傳時間: 2013-10-23
上傳用戶:mqien
Training embedded apps to process speech may be as easy as finding the right 8-bit micro. Don t let what Rodger has to say about using an ADPCM algorithm and PWM output to generate speech to go in one ear and out the other
標簽: Training embedded process finding
上傳時間: 2014-01-26
上傳用戶:plsee