導航:首頁 > 編程語言 > 變頻器單片機編程實例

變頻器單片機編程實例

發布時間:2022-12-12 01:11:11

單片機和變頻器的modbus通信

變頻器是用標准modbus協議的,他提供有數據格式,變頻器不用編程,只作為通用設備和你單片機通訊,單片機需要編寫程序實現modbus協議。

❷ 如何用單片機控制變頻器

建議去致遠變頻器網看看,裡面資料很多很全。如果從問題來看,還是很簡單的,讓單片機發出正反轉觸點信號,以及給出一個模擬量控制信號即可,為何用單片機做,也許是為了鍛煉設計吧。

❸ 單片機c語言編程100個實例

51單片機C語言編程實例 基礎知識:51單片機編程基礎 單片機的外部結構: 1. DIP40雙列直插; 2. P0,P1,P2,P3四個8位準雙向I/O引腳;(作為I/O輸入時,要先輸出高電平) 3. 電源VCC(PIN40)和地線GND(PIN20); 4. 高電平復位RESET(PIN9);(10uF電容接VCC與RESET,即可實現上電復位) 5. 內置振盪電路,外部只要接晶體至X1(PIN18)和X0(PIN19);(頻率為主頻的12倍) 6. 程序配置EA(PIN31)接高電平VCC;(運行單片機內部ROM中的程序) 7. P3支持第二功能:RXD、TXD、INT0、INT1、T0、T1 單片機內部I/O部件:(所為學習單片機,實際上就是編程式控制制以下I/O部件,完成指定任務) 1. 四個8位通用I/O埠,對應引腳P0、P1、P2和P3; 2. 兩個16位定時計數器;(TMOD,TCON,TL0,TH0,TL1,TH1) 3. 一個串列通信介面;(SCON,SBUF) 4. 一個中斷控制器;(IE,IP) 針對AT89C52單片機,頭文件AT89x52.h給出了SFR特殊功能寄存器所有埠的定義。 C語言編程基礎: 1. 十六進製表示位元組0x5a:二進制為01011010B;0x6E為01101110。 2. 如果將一個16位二進數賦給一個8位的位元組變數,則自動截斷為低8位,而丟掉高8位。 3. ++var表示對變數var先增一;var—表示對變數後減一。 4. x |= 0x0f;表示為 x = x | 0x0f; 5. TMOD = ( TMOD & 0xf0 ) | 0x05;表示給變數TMOD的低四位賦值0x5,而不改變TMOD的高四位。 6. While( 1 ); 表示無限執行該語句,即死循環。語句後的分號表示空循環體,也就是{;} 在某引腳輸出高電平的編程方法:(比如P1.3(PIN4)引腳) 代碼 1. #include <AT89x52.h> //該頭文檔中有單片機內部資源的符號化定義,其中包含P1.3 2. void main( void ) //void 表示沒有輸入參數,也沒有函數返值,這入單片機運行的復位入口 3. { 4. P1_3 = 1; //給P1_3賦值1,引腳P1.3就能輸出高電平VCC 5. While( 1 ); //死循環,相當 LOOP: goto LOOP; 6. } 注意:P0的每個引腳要輸出高電平時,必須外接上拉電阻(如4K7)至VCC電源。 在某引腳輸出低電平的編程方法:(比如P2.7引腳) 代碼 1. #include <AT89x52.h> //該頭文檔中有單片機內部資源的符號化定義,其中包含P2.7 2. void main( void ) //void 表示沒有輸入參數,也沒有函數返值,這入單片機運行的復位入口 3. { 4. P2_7 = 0; //給P2_7賦值0,引腳P2.7就能輸出低電平GND 5. While( 1 ); //死循環,相當 LOOP: goto LOOP; 6. } 在某引腳輸出方波編程方法:(比如P3.1引腳) 代碼 1. #include <AT89x52.h> //該頭文檔中有單片機內部資源的符號化定義,其中包含P3.1 2. void main( void ) //void 表示沒有輸入參數,也沒有函數返值,這入單片機運行的復位入口 3. { 4. While( 1 ) //非零表示真,如果為真則執行下面循環體的語句 5. { 6. P3_1 = 1; //給P3_1賦值1,引腳P3.1就能輸出高電平VCC 7. P3_1 = 0; //給P3_1賦值0,引腳P3.1就能輸出低電平GND 8. } //由於一直為真,所以不斷輸出高、低、高、低……,從而形成方波 9. } 將某引腳的輸入電平取反後,從另一個引腳輸出:( 比如 P0.4 = NOT( P1.1) ) 代碼 1. #include <AT89x52.h> //該頭文檔中有單片機內部資源的符號化定義,其中包含P0.4和P1.1 2. void main( void ) //void 表示沒有輸入參數,也沒有函數返值,這入單片機運行的復位入口 3. { 4. P1_1 = 1; //初始化。P1.1作為輸入,必須輸出高電平 5. While( 1 ) //非零表示真,如果為真則執行下面循環體的語句 6. { 7. if( P1_1 == 1 ) //讀取P1.1,就是認為P1.1為輸入,如果P1.1輸入高電平VCC 8. { P0_4 = 0; } //給P0_4賦值0,引腳P0.4就能輸出低電平GND 2 51單片機C語言編程實例 9. else //否則P1.1輸入為低電平GND 10. //{ P0_4 = 0; } //給P0_4賦值0,引腳P0.4就能輸出低電平GND 11. { P0_4 = 1; } //給P0_4賦值1,引腳P0.4就能輸出高電平VCC 12. } //由於一直為真,所以不斷根據P1.1的輸入情況,改變P0.4的輸出電平 13. } 將某埠8個引腳輸入電平,低四位取反後,從另一個埠8個引腳輸出:( 比如 P2 = NOT( P3 ) ) 代碼 1. #include <AT89x52.h> //該頭文檔中有單片機內部資源的符號化定義,其中包含P2和P3 2. void main( void ) //void 表示沒有輸入參數,也沒有函數返值,這入單片機運行的復位入口 3. { 4. P3 = 0xff; //初始化。P3作為輸入,必須輸出高電平,同時給P3口的8個引腳輸出高電平 5. While( 1 ) //非零表示真,如果為真則執行下面循環體的語句 6. { //取反的方法是異或1,而不取反的方法則是異或0 7. P2 = P3^0x0f //讀取P3,就是認為P3為輸入,低四位異或者1,即取反,然後輸出 8. } //由於一直為真,所以不斷將P3取反輸出到P2 9. } 注意:一個位元組的8位D7、D6至D0,分別輸出到P3.7、P3.6至P3.0,比如P3=0x0f,則P3.7、P3.6、P3.5、P3.4四個引腳都輸出低電平,而P3.3、P3.2、P3.1、P3.0四個引腳都輸出高電平。同樣,輸入一個埠P2,即是將P2.7、P2.6至P2.0,讀入到一個位元組的8位D7、D6至D0。 第一節:單數碼管按鍵顯示 單片機最小系統的硬體原理接線圖: 1. 接電源:VCC(PIN40)、GND(PIN20)。加接退耦電容0.1uF 2. 接晶體:X1(PIN18)、X2(PIN19)。注意標出晶體頻率(選用12MHz),還有輔助電容30pF 3. 接復位:RES(PIN9)。接上電復位電路,以及手動復位電路,分析復位工作原理 4. 接配置:EA(PIN31)。說明原因。 發光二極的控制:單片機I/O輸出 將一發光二極體LED的正極(陽極)接P1.1,LED的負極(陰極)接地GND。只要P1.1輸出高電平VCC,LED就正向導通(導通時LED上的壓降大於1V),有電流流過LED,至發LED發亮。實際上由於P1.1高電平輸出電阻為10K,起到輸出限流的作用,所以流過LED的電流小於(5V-1V)/10K = 0.4mA。只要P1.1輸出低電平GND,實際小於0.3V,LED就不能導通,結果LED不亮。 開關雙鍵的輸入:輸入先輸出高 一個按鍵KEY_ON接在P1.6與GND之間,另一個按鍵KEY_OFF接P1.7與GND之間,按KEY_ON後LED亮,按KEY_OFF後LED滅。同時按下LED半亮,LED保持後松開鍵的狀態,即ON亮OFF滅。 代碼 1. #include <at89x52.h> 2. #define LED P1^1 //用符號LED代替P1_1 3. #define KEY_ON P1^6 //用符號KEY_ON代替P1_6 4. #define KEY_OFF P1^7 //用符號KEY_OFF代替P1_7 5. void main( void ) //單片機復位後的執行入口,void表示空,無輸入參數,無返回值 6. { 7. KEY_ON = 1; //作為輸入,首先輸出高,接下KEY_ON,P1.6則接地為0,否則輸入為1 8. KEY_OFF = 1; //作為輸入,首先輸出高,接下KEY_OFF,P1.7則接地為0,否則輸入為1 9. While( 1 ) //永遠為真,所以永遠循環執行如下括弧內所有語句 10. { 11. if( KEY_ON==0 ) LED=1; //是KEY_ON接下,所示P1.1輸出高,LED亮 12. if( KEY_OFF==0 ) LED=0; //是KEY_OFF接下,所示P1.1輸出低,LED滅 13. } //松開鍵後,都不給LED賦值,所以LED保持最後按鍵狀態。 14. //同時按下時,LED不斷亮滅,各佔一半時間,交替頻率很快,由於人眼慣性,看上去為半亮態 15. } 數碼管的接法和驅動原理 一支七段數碼管實際由8個發光二極體構成,其中7個組形構成數字8的七段筆畫,所以稱為七段數碼管,而餘下的1個發光二極體作為小數點。作為習慣,分別給8個發光二極體標上記號:a,b,c,d,e,f,g,h。對應8的頂上一畫,按順時針方向排,中間一畫為g,小數點為h。 我們通常又將各二極與一個位元組的8位對應,a(D0),b(D1),c(D2),d(D3),e(D4),f(D5),g(D6),h(D7),相應8個發光二極體正好與單片機一個埠Pn的8個引腳連接,這樣單片機就可以通過引腳輸出高低電平控制8個發光二極的亮與滅,從而顯示各種數字和符號;對應位元組,引腳接法為:a(Pn.0),b(Pn.1),c(Pn.2),d(Pn.3),e(Pn.4),f(Pn.5),g(Pn.6),h(Pn.7)。 如果將8個發光二極體的負極(陰極)內接在一起,作為數碼管的一個引腳,這種數碼管則被稱為共陰數碼管,共同的引腳則稱為共陰極,8個正極則為段極。否則,如果是將正極(陽極)內接在一起引出的,則稱為共陽數碼管,共同的引腳則稱為共陽極,8個負極則為段極。 以單支共陰數碼管為例,可將段極接到某埠Pn,共陰極接GND,則可編寫出對應十六進制碼的七段碼表位元組數據

❹ 如何實現PIC單片機控制變頻器以及需要什麼

變頻調速作為交流電機調速的主要手段已經在工業領域中應用的十分廣泛,其具有的調速范圍寬、穩速精度高、動態響應快、適用范圍廣、運行可靠等技術性能,已逐步取代直流電機調速系統。變頻器的控制方式主要有三種:1.通過變頻器面板操作,即通過操作面板改變頻率的輸出和其他運行參數;2.在變頻器模擬量輸入端輸入0~10V或4~20mA信號,通過改變輸入模擬量的大小控制變頻器的輸出頻率;3.通過變頻器的通訊口(多為RS485)進行控制。第一種方式一般用於現場手動調節和參數設定,後二種方式多用於自動調節和遠程式控制制。工控領域中常用的PLC、DCS等控制系統都具有適用於變頻器介面條件的控制模塊,可以方便的實現變頻器的閉環自動控制,在大中型的控制系統中使用較為普遍。而對於一些小型實驗裝置和嵌入式控制裝置,處理器在控制變頻器之外,一般還需要處理鍵盤輸入、顯示屏、數據採集和其它過程式控制制等工作,這種控制要求更適合採用單片機系統作為控制核心,而以PLC加操作面板的形式,雖能實現功能但成本過高,不宜採用。
使用單片機控制變頻器可以選擇後二種方式,採用通訊口方式控制,其優點是控制功能全面,通過相應的電平轉換電路適合變頻器的通訊口形式(RS484/RS232/CAN等),就可與變頻器進行通訊,硬體簡單,二者間的連線數量少連接方便。缺點是需要了解掌握變頻器的通訊協議才能進行控制編程,軟體設計復雜。由於不同品牌的變頻器通訊介面和通訊協議各不相同,目前尚沒有統一的標准,只能針對一種變頻器進行開發,縮小了變頻器品種的選擇范圍,適用性受到限制。而對於模擬量輸入控制方式,則幾乎在所有的變頻器中都能支持,雖然在功能上比較單一,但可實現調速的主要功能,能滿足多數場合的使用要求,具有普遍性。
最常用的模擬量輸入調速方法是通過電位器來調節頻率,即改變模擬量輸入的電壓值,達到調節轉速的目的。採用機械式電位器雖簡單易行,但易磨損,長期使用不夠穩定,同時還有一個最大的缺陷是只適合手動調節,不能實現自動調節。筆者採用數字電位器替代機械式電位器,在單片機的控制下,不但能進行簡單的手動變頻調速,還能根據控制要求實現PID閉環自動控制,不失為一種功能全面的單片機控制變頻器的好方法。原文位置
數字電位器
筆者採用美國Xicor公司的X9221雙E2POT非易失性數控電位器,電阻陣列端電壓±5V,分為64個抽頭。X9211包含二個電阻陣列,每個陣列包含有63個電阻單元。在每個單元之間和二個端點都有可以被訪問的抽頭點。滑動單元在陣列中的位置由用戶通過二線制串列匯流排介面控制。每個電阻陣列與一個滑動端計數寄存器和四個8位數據寄存器聯系在一起,這四個數據寄存器可以由用戶直接寫入和讀出,滑動端計數寄存器的內容控制滑動端在電阻陣列中的位置。功能框圖如圖1 所示。原文位置

圖1 功能框圖

原文位置

X9211的寫入單元為8位元組的E2PROM存儲器,寫入次數105次,數據保存時間100年,亦即電位器抽頭位置具有掉電保持功能,不會因為失電而改變。X9211共有3種電阻陣列值:2KΩ、10KΩ、50KΩ,可根據實際需要選擇;解析度為每個電位器64個抽頭;採用20引腳DIP和SOIC封裝。本文所以選擇使用雙組電位器X9221,是因為控制對象除變頻器外,還有一組由可控硅調壓控溫的電加熱器,同樣可以採用數字電位器的方法進行調控,這樣使用一片X9221就可實現對二個對象的控制,對二者可以分別進行調節和控制,互不影響,因此非常適合雙路輸出的控制要求,方便簡捷,一舉兩得。
單片機與數字電位器介面
X9221支持I2C二線制串列匯流排規約,與單片機的介面只需要2根I/O線。單片機作為主機可按照規約規定的時序啟動數據的傳輸,並為發送和接收操作提供時鍾,X9221作為從機響應主機的操作,從匯流排上接收數據或將數據送至匯流排上,從而實現單片機對X9221的讀寫操作,硬體介面電路如圖2所示。

圖2中X9221的二組電阻陣列分別連接變頻器調節端子和電熱器調節端子,在變頻器介面端子中還有一個控制變頻器啟停的干接點,由單片機P3.2口經驅動控制繼電器實現。與變頻器模擬控制介面連接需要注意的是,一般變頻器的輸入介面的提供的電壓是0-10V,X9221電阻陣列的端電壓相對於Vss是±5V,如果按一般習慣將變頻器控制介面的負極 0V與Vss連接作為公共端時,那麼電位器的VH端電壓相對Vss將會是10V,超出了允許范圍,會造成器件損壞。因此二者連接時應將變頻器控制介面的正極10V與X9211的正電源Vcc電源連接作為公共端,即共正極連接,這樣就可以保證電位器的VH和VL的 端電壓會在±5V的正常工作范圍內。由於變頻器採用的是整流—PWM逆變輸出的工作原理,在工作過程中必然會產生許多高次諧波,對單片機系統的干擾較大,因此二者間的連接應使用屏蔽電纜,並將屏蔽層一端可靠接地;同時在X9221的輸出端增加濾波電容,減少高頻信號的引入。
軟體設計
X9221包括二個滑動端計數寄存器(WCR),每個E2POT電位器各對應一個。WCR可以被認為是一個6位並行和串列裝載的帶有輸出解碼的計數器,用來選擇沿著電阻陣列的六十四選一的開關。WCR的內容可以有4種方法來改變:1.可以由主機通過Write WCR指令來直接寫入(串列載入);2.可以通過XFR Data Register指令把四個輔助數據寄存器之一的內容直接寫入(並行裝載);3.可以通過Increment/Decrement指令一步一步地修改;4.可以在上電時裝入它的數據寄存器0(R0)的內容。
送給X9221所有的命令都由開始條件為引導,這個條件就是當SCL為高時,SDA由高至低的跳變。X9221連續監視SCL和SDA線上的開始條件,在遇到這個條件前將不響應任何命令。接著單片機必須輸出要訪問的X9221的8位地址。其中高4位為器件類型辨識符,固定為0101,低4位是該器件地址,由X9221的A0-A3輸入端的狀態來定義。在本設計中A0-A3全部接地,故地址為50H。 X9221在比較地址成功後會作出一個應答響應,以表示數據接收成功。接著單片機可以送出一個位元組包括指令和寄存器指針的信息,格式如下:
其中高4位決定操作指令,P0位選擇二個電位器中的一個,最低2位(R1 R0)選擇4個寄存器中的一個。最後以SCL為高時SDA由低到高的跳變為一個終止條件來結束。終止條件一旦發出,則X9221開始內部的寫周期,典型的寫周期時間為10ms,如果單片機在X9221寫操作周期內訪問,則沒有應答返回,此時可以採用輪詢的方式等待應答信息。詳細的時序及指令說明請參閱器件手冊。

原文位置

結語
採用數字電位器控制變頻器調速,可適用於各種規格型號的變頻器,硬體組成簡單,不需要價格較高外圍電路復雜的D/A晶元,在單片機的控制下可進行閉環迴路的自動跟蹤調節,性價比高,易於實現。筆者所設計的電路實際應用於微型噴霧乾燥實驗機的電腦控制器中,已小批量生產。噴霧乾燥實驗機是將液體溶液乾燥加工成為固體粉末,多用於醫葯、食品、化工和實驗室等進行樣品的制備和實驗。在實驗中要求能夠根據物料的特性選擇不同的乾燥風量和加熱溫度,該功能的實現就是通過51 單片機控制一片數字電位器X9221,分別調節風機變頻器和加熱器可控硅調壓模塊控制風機轉速和加熱功率,採用模糊控制結合PID調節的控制方法,根據用戶設定的溫度和風量值,實現了風量和加熱溫度的自動調節,取得了滿意的結果。因此,使用單片機系統控制變頻器調速時,採用數字電位器作為輸出調節介面,是一個簡單實用、適用范圍廣、具有較高性價比的好方法。

❺ 如何實現變頻器的自動控制

單片機不太熟,但我知知道PLC輸出可以直接接到變頻器上。最簡單的比如一個正反轉的控制,
plc編程
道有2個輸出量,
正轉
和反轉分別接到變頻器專的的多功能輸入端,變頻器再接到電機上,就可以通過外屬部的開關
直接控制
電機。

❻ 如何用單片機控制變頻器

用51。AVR。PIC都可以如果你要用比較多的I0的話。我建議你採用AVR的ATMEGA128L單片機,它具有64個腿,從A-E口各8,再加PINF口的5個口。總共具有40多個腿。但是如果用在你這個課題上,一片AT89S51或者你說的80C51也是足夠的。很簡單。你可以採用預制的外部端子來控制變頻器,由光藕來控制變頻器的外部端子,而光藕由51單片機來控制就okay了。如果你想採用無級調速,你可以採用變頻器的模擬通道。不過需要A/D採集而已。那種方法基本差不多。隨意採用。至於LCD。你可以採用1602液晶屏來實現。正反轉直接在外部由單片機控制接觸器來實現就okay了。

❼ 單片機控制變頻器

學電子的弄變頻器應該沒有問題,只是你還沒弄清變頻器的工作原理,不要單片機只用變頻器就能控制電機的轉速,加入單片機是來控制變頻器何時啟動、加速、減速、停止。變頻器有控制埠,跟你的單片機來通信,你把變頻器看成好多接觸器就行了,用你的單片機來控制其吸合,選變頻器要由你的負載來定,跟輸入電壓沒關系。

閱讀全文

與變頻器單片機編程實例相關的資料

熱點內容
怎麼批量有順序的命名文件夾 瀏覽:209
杭州程序員健身 瀏覽:17
dvd光碟存儲漢子演算法 瀏覽:758
蘋果郵件無法連接伺服器地址 瀏覽:963
phpffmpeg轉碼 瀏覽:672
長沙好玩的解壓項目 瀏覽:145
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:737
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:486
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:383
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:350
風翼app為什麼進不去了 瀏覽:779
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:151