A. 可控硅是怎樣控制輸出電壓的(詳細達)
朋友,比如可控硅是P1N1P2N2四層三端結構元件,可控硅共有三個PN結,分析原理時,可以把可控硅看作由一個PNP管和一個NPN管所組成。 當可控硅陽極A加上正向電壓時,BG1和BG2管均處於放大狀態。此時,如果從控制極G輸入一個正向觸發信號,BG2便有基流ib2流過,經BG2放大,其集電極電流ic2=β2ib2。因為BG2的集電極直接與BG1的基極相連,所以ib1=ic2。此時,電流ic2再經BG1放大,於是BG1的集電極電流ic1=β1ib1=β1β2ib2。這個電流又流回到BG2的基極,表成正反饋,使ib2不斷增大,如此正向饋循環的結果,兩個管子的電流劇增,可控硅使飽和導通。 由於可控硅BG1和BG2所構成的正反饋作用,所以一旦可控硅導通後,即使控制極G的電流消失了,可控硅仍然能夠維持導通狀態,由於觸發信號只起觸發作用,沒有關斷功能,所以這種可控硅是不可關斷的。 由於可控硅只有導通和關斷兩種工作狀態,所以它具有開關特性,這種特性需要一定的條件才能轉化,條件如下:
A、從關斷到導通 1、陽極電位高於是陰極電位,2、控制極有足夠的正向電壓和電流,兩者缺一不可。
B、維持導通 1、陽極電位高於陰極電位,2、陽極電流大於維持電流,兩者缺一不可。
C、從導通到關斷 1、陽極電位低於陰極電位,2、陽極電流小於維持電流,任一條件即可 你不妨參考參考。也許對你有所幫助啊。
B. 雙向可控硅觸發的c語言程序————————急急急
程序應建立在硬體之上,沒有你的電路連接圖,真還好寫程序
C. 誰能幫我用C語言寫電焊機的六相半波可控硅驅動程序
沒你想像的這么簡單!
寫程序必須結合硬體寫!單片機選哪個型號?
A+、A-、B+、B-、C+、C-的觸發脈沖都在哪腳輸出 ? 輸出脈沖是正向的?反向的?
同步信號從哪腳輸入?
反饋電流、反饋電壓多大?進單片機的哪腳?
有什麼設置?電流大小,和起弧電壓,這些電路是什麼樣的?怎麼與單片機連接?
......
D. 單片機控制PWM,用到雙向可控硅。怎樣設計相關電路圖和程序(C語言的)
這個我經常用,電機調速控制,嚴格說這不是PWM,是可控硅移相觸發。
電路很簡單,一個可控硅觸發電路,一個過零檢測電路,配合一段中斷服務程序就能完成。
不知道你應用的一些詳情,簡單說一下思路。
可控硅觸發一般使用MOC3021,相關手冊上有典型電路,CPU端接一個GPIO就可以。
閉環控制時過零檢測不需要很精確,一般用一個雙向光耦就足夠,光耦輸入接交流電輸入,輸出接CPU中斷,用史密特整形一下輸出信號最好。
中斷程序的結構分成兩部分,過零中斷與延時中斷。
過零中斷做兩件事,輸出復位,開始延時。如果定時器有外部管腳復位啟動功能,可以不要這段。
延時中斷做一件事,觸發輸出。如果定時器有觸發輸出功能,可以沒有這段中斷程序。
具體的延時時間,由主程序控制,一般是根據PID的計算結果進行設置。注意,延時時間越長,輸出電壓越小。
E. 可控硅電路原理
一、可控硅的概念和結構?
晶閘管又叫可控硅(Silicon Controlled Rectifier, SCR)。自從20世紀50年代問世以來已經發展成了一個大的家族,它的主要成員有單向晶閘管、雙向晶閘管、光控晶閘管、逆導晶閘管、可關斷晶閘管、快速晶閘管,等等。今天大家使用的是單向晶閘管,也就是人們常說的普通晶閘管,它是由四層半導體材料組成的,有三個PN結,對外有三個電極〔圖2(a)〕:第一層P型半導體引出的電極叫陽極A,第三層P型半導體引出的電極叫控制極G,第四層N型半導體引出的電極叫陰極K。從晶閘管的電路符號〔圖2(b)〕可以看到,它和二極體一樣是一種單方向導電的器件,關鍵是多了一個控制極G,這就使它具有與二極體完全不同的工作特性。
可控硅
二、晶閘管的主要工作特性
為了能夠直觀地認識晶閘管的工作特性,大家先看這塊示教板(圖3)。晶閘管VS與小燈泡EL串聯起來,通過開關S接在直流電源上。注意陽極A是接電源的正極,陰極K接電源的負極,控制極G通過按鈕開關SB接在3V直流電源的正極(這里使用的是KP5型晶閘管,若採用KP1型,應接在1.5V直流電源的正極)。晶閘管與電源的這種連接方式叫做正向連接,也就是說,給晶閘管陽極和控制極所加的都是正向電壓。現在我們合上電源開關S,小燈泡不亮,說明晶閘管沒有導通;再按一下按鈕開關SB,給控制極輸入一個觸發電壓,小燈泡亮了,說明晶閘管導通了。這個演示實驗給了我們什麼啟發呢?可控硅
這個實驗告訴我們,要使晶閘管導通,一是在它的陽極A與陰極K之間外加正向電壓,二是在它的控制極G與陰極K之間輸入一個正向觸發電壓。晶閘管導通後,松開按鈕開關,去掉觸發電壓,仍然維持導通狀態。
晶閘管的特點: 是「一觸即發」。但是,如果陽極或控制極外加的是反向電壓,晶閘管就不能導通。控制極的作用是通過外加正向觸發脈沖使晶閘管導通,卻不能使它關斷。那麼,用什麼方法才能使導通的晶閘管關斷呢?使導通的晶閘管關斷,可以斷開陽極電源(圖3中的開關S)或使陽極電流小於維持導通的最小值(稱為維持電流)。如果晶閘管陽極和陰極之間外加的是交流電壓或脈動直流電壓,那麼,在電壓過零時,晶閘管會自行關斷。
怎樣測試晶閘管的好壞
三、用萬用表可以區分晶閘管的三個電極嗎?怎樣測試晶閘管的好壞呢?
普通晶閘管的三個電極可以用萬用表歐姆擋R×100擋位來測。大家知道,晶閘管G、K之間是一個PN結〔圖2(a)〕,相當於一個二極體,G為正極、K為負極,所以,按照測試二極體的方法,找出三個極中的兩個極,測它的正、反向電阻,電阻小時,萬用表黑表筆接的是控制極G,紅表筆接的是陰極K,剩下的一個就是陽極A了。測試晶閘管的好壞,可以用剛才演示用的示教板電路(圖3)。接通電源開關S,按一下按鈕開關SB,燈泡發光就是好的,不發光就是壞的。
四、晶閘管在電路中的主要用途是什麼?
普通晶閘管最基本的用途就是可控整流。大家熟悉的二極體整流電路屬於不可控整流電路。如果把二極體換成晶閘管,就可以構成可控整流電路、逆變、電機調速、電機勵磁、無觸點開關及自動控制等方面。現在我畫一個最簡單的單相半波可控整流電路〔圖4(a)〕。在正弦交流電壓U2的正半周期間,如果VS的控制極沒有輸入觸發脈沖Ug,VS仍然不能導通,只有在U2處於正半周,在控制極外加觸發脈沖Ug時,晶閘管被觸發導通。現在,畫出它的波形圖〔圖4(c)及(d)〕,可以看到,只有在觸發脈沖Ug到來時,負載RL上才有電壓UL輸出(波形圖上陰影部分)。Ug到來得早,晶閘管導通的時間就早;Ug到來得晚,晶閘管導通的時間就晚。通過改變控制極上觸發脈沖Ug到來的時間,就可以調節負載上輸出電壓的平均值UL(陰影部分的面積大小)。在電工技術中,常把交流電的半個周期定為180°,稱為電角度。這樣,在U2的每個正半周,從零值開始到觸發脈沖到來瞬間所經歷的電角度稱為控制角α;在每個正半周內晶閘管導通的電角度叫導通角θ。很明顯,α和θ都是用來表示晶閘管在承受正向電壓的半個周期的導通或阻斷范圍的。通過改變控制角α或導通角θ,改變負載上脈沖直流電壓的平均值UL,實現了可控整流。
可控硅
五、在橋式整流電路中,把二極體都換成晶閘管是不是就成了可控整流電路了呢?
在橋式整流電路中,只需要把兩個二極體換成晶閘管就能構成全波可控整流電路了。現在畫出電路圖和波形圖(圖5),就能看明白了。
六、晶閘管控制極所需的觸發脈沖是怎麼產生的呢?
晶閘管觸發電路的形式很多,常用的有阻容移相橋觸發電路、單結晶體管觸發電路、晶體三極體觸發電路、利用小晶閘管觸發大晶閘管的觸發電路,等等。今天大家製作的調壓器,採用的是單結晶體管觸發電路。
七、什麼是單結晶體管?它有什麼特殊性能呢?
單結晶體管又叫雙基極二極體,是由一個PN結和三個電極構成的半導體器件(圖6)。我們先畫出它的結構示意圖〔圖7(a)〕。在一塊N型矽片兩端,製作兩個電極,分別叫做第一基極B1和第二基極B2;矽片的另一側靠近B2處製作了一個PN結,相當於一隻二極體,在P區引出的電極叫發射極E。為了分析方便,可以把B1、B2之間的N型區域等效為一個純電阻RBB,稱為基區電阻,並可看作是兩個電阻RB2、RB1的串聯〔圖7(b)〕。值得注意的是RB1的阻值會隨發射極電流IE的變化而改變,具有可變電阻的特性。如果在兩個基極B2、B1之間加上一個直流電壓UBB,則A點的電壓UA為:若發射極電壓UE<UA,二極體VD截止;當UE大於單結晶體管的峰點電壓UP(UP=UD+UA)時,二極體VD導通,發射極電流IE注入RB1,使RB1的阻值急劇變小,E點電位UE隨之下降,出現了IE增大UE反而降低的現象,稱為負阻效應。發射極電流IE繼續增加,發射極電壓UE不斷下降,當UE下降到谷點電壓UV以下時,單結晶體管就進入截止狀態。
八、怎樣利用單結晶體管組成晶閘管觸發電路呢?
單結晶體管組成的觸發脈沖產生電路在今天大家製作的調壓器中已經具體應用了。為了說明它的工作原理,我們單獨畫出單結晶體管張弛振盪器的電路(圖8)。它是由單結晶體管和RC充放電電路組成的。合上電源開關S後,電源UBB經電位器RP向電容器C充電,電容器上的電壓UC按指數規律上升。當UC上升到單結晶體管的峰點電壓UP時,單結晶體管突然導通,基區電阻RB1急劇減小,電容器C通過PN結向電阻R1迅速放電,使R1兩端電壓Ug發生一個正跳變,形成陡峭的脈沖前沿〔圖8(b)〕。隨著電容器C的放電,UE按指數規律下降,直到低於谷點電壓UV時單結晶體管截止。這樣,在R1兩端輸出的是尖頂觸發脈沖。此時,電源UBB又開始給電容器C充電,進入第二個充放電過程。這樣周而復始,電路中進行著周期性的振盪。調節RP可以改變振盪周期。
九、在可控整流電路的波形圖中,發現晶閘管承受正向電壓的每半個周期內,發出第一個觸發脈沖的時刻都相同,也就是控制角α和導通角θ都相等,那麼,單結晶體管張弛振盪器怎樣才能與交流電源准確地配合以實現有效的控制呢?
為了實現整流電路輸出電壓「可控」,必須使晶閘管承受正向電壓的每半個周期內,觸發電路發出第一個觸發脈沖的時刻都相同,這種相互配合的工作方式,稱為觸發脈沖與電源同步。
怎樣才能做到同步呢?大家再看調壓器的電路圖(圖1)。請注意,在這里單結晶體管張弛振盪器的電源是取自橋式整流電路輸出的全波脈沖直流電壓。在晶閘管沒有導通時,張弛振盪器的電容器C被電源充電,UC按指數規律上升到峰點電壓UP時,單結晶體管VT導通,在VS導通期間,負載RL上有交流電壓和電流,與此同時,導通的VS兩端電壓降很小,迫使張弛振盪器停止工作。當交流電壓過零瞬間,晶閘管VS被迫關斷,張弛振盪器得電,又開始給電容器C充電,重復以上過程。這樣,每次交流電壓過零後,張弛振盪器發出第一個觸發脈沖的時刻都相同,這個時刻取決於RP的阻值和C的電容量。調節RP的阻值,就可以改變電容器C的充電時間,也就改變了第一個Ug發出的時刻,相應地改變了晶閘管的控制角,使負載RL上輸出電壓的平均值發生變化,達到調壓的目的。
雙向晶閘管的T1和T2不能互換。否則會損壞管子和相關的控制電路。
十、可控硅元件的工作原理及基本特性電路
可控硅是P1N1P2N2四層三端結構元件,共有三個PN結,分析原理時,可以把它看作由一個PNP管和一個NPN管所組成,其等效圖解如圖1所示
圖1 可控硅等效圖解圖
當陽極A加上正向電壓時,BG1和BG2管均處於放大狀態。此時,如果從控制極G輸入一個正向觸發信號,BG2便有基流ib2流過,經BG2放大,其集電極電流ic2=β2ib2。因為BG2的集電極直接與BG1的基極相連,所以ib1=ic2。此時,電流ic2再經BG1放大,於是BG1的集電極電流ic1=β1ib1=β1β2ib2。這個電流又流回到BG2的基極,表成正反饋,使ib2不斷增大,如此正向饋循環的結果,兩個管子的電流劇增,可控硅使飽和導通。
由於BG1和BG2所構成的正反饋作用, 可控硅導通後,即使控制極G的電流消失了,可控硅仍然能夠維持導通狀態,由於觸發信號只起觸發作用,沒有關斷功能,所以這種可控硅是不可關斷c 所以一旦的。
由於可控硅只有導通和關斷兩種工作狀態,所以它具有開關特性,這種特性需要一定的條件才能轉化,此條件見表1
表1 可控硅導通和關斷條件
狀態 條件 說明
從關斷到導通 1、陽極電位高於是陰極電位
2、控制極有足夠的正向電壓和電流
兩者缺一不可
維持導通 1、陽極電位高於陰極電位
2、陽極電流大於維持電流
兩者缺一不可
從導通到關斷 1、陽極電位低於陰極電位
2、陽極電流小於維持電流
任一條件即可
2、基本伏安特性
可控硅的基本伏安特性見圖2
圖2 可控硅基本伏安特性
(1)反向特性
當控制極開路,陽極加上反向電壓時(見圖3),J2結正偏,但J1、J2結反偏。此時只能流過很小的反向飽和電流,當電壓進一步提高到J1結的雪崩擊穿電壓後,接差J3結也擊穿,電流迅速增加,圖3的特性開始彎曲,如特性OR段所示,彎曲處的電壓URO叫「反向轉折電壓」。此時,可控硅會發生永久性反向擊穿。
圖3 陽極加反向電壓
(2)正向特性
當控制極開路,陽極上加上正向電壓時(見圖4),J1、J3結正偏,但J2結反偏,這與普通PN結的反向特性相似,也只能流過很小電流,這叫正向阻斷狀態,當電壓增加,圖3的特性發生了彎曲,如特性OA段所示,彎曲處的是UBO叫:正向轉折電壓
圖4 陽極加正向電壓
由於電壓升高到J2結的雪崩擊穿電壓後,J2結發生雪崩倍增效應,在結區產生大量的電子和空穴,電子時入N1區,空穴時入P2區。進入N1區的電子與由P1區通過J1結注入N1區的空穴復合,同樣,進入P2區的空穴與由N2區通過J3結注入P2區的電子復合,雪崩擊穿,進入N1區的電子與進入P2區的空穴各自不能全部復合掉,這樣,在N1區就有電子積累,在P2區就有空穴積累,結果使P2區的電位升高,N1區的電位下降,J2結變成正偏,只要電流稍增加,電壓便迅速下降,出現所謂負阻特性,見圖3的虛線AB段。
這時J1、J2、J3三個結均處於正偏,可控硅便進入正向導電狀態---通態,此時,它的特性與普通的PN結正向特性相似,見圖2中的BC段
3、觸發導通
在控制極G上加入正向電壓時(見圖5)因J3正偏,P2區的空穴時入N2區,N2區的電子進入P2區,形成觸發電流IGT。在可控硅的內部正反饋作用(見圖2)的基礎上,加上IGT的作用,使可控硅提前導通,導致圖3的伏安特性OA段左移,IGT越大,特性左移越快。
圖5 陽極和控制極均加正向電壓
十一、可控硅參數符號
參數符號說明:
IT(AV)--通態平均電流
VRRM--反向重復峰值電壓
IDRM--斷態重復峰值電流
ITSM--通態一個周波不重復浪涌電流
VTM--通態峰值電壓
IGT--門極觸發電流
VGT--門極觸發電壓
IH--維持電流
dv/dt--斷態電壓臨界上升率
di/dt--通態電流臨界上升率
Rthjc--結殼熱阻
VISO--模塊絕緣電壓
Tjm--額定結溫
VDRM--通態重復峰值電壓
IRRM--反向重復峰值電流
IF(AV)--正向平均電流
十二、如何鑒別可控硅的三個極
鑒別可控硅三個極的方法很簡單,根據P-N結的原理,只要用萬用表測量一下三個極之間的電阻值就可以。
陽極與陰極之間的正向和反向電阻在幾百千歐以上,陽極和控制極之間的正向和反向電阻在幾百千歐以上(它們之間有兩個P-N結,而且方向相反,因此陽極和控制極正反向都不通)。
控制極與陰極之間是一個P-N結,因此它的正向電阻大約在幾歐-幾百歐的范圍,反向電阻比正向電阻要大。可是控制極二極體特性是不太理想的,反向不是完全呈阻斷狀態的,可以有比較大的電流通過,因此,有時測得控制極反向電阻比較小,並不能說明控制極特性不好。另外,在測量控制極正反向電阻時,萬用表應放在R*10或R*1擋,防止電壓過高控制極反向擊穿。
若測得元件陰陽極正反向已短路,或陽極與控制極短路,或控制極與陰極反向短路,或控制極與陰極斷路,說明元件已損壞。
可控硅是可控硅整流元件的簡稱,是一種具有三個PN 結的四層結構的大功率半導體器件。實際上,可控硅的功用不僅是整流,它還可以用作無觸點開關以快速接通或切斷電路,實現將直流電變成交流電的逆變,將一種頻率的交流電變成另一種頻率的交流電,等等。可控硅和其它半導體器件一樣,其有體積小、效率高、穩定性好、工作可靠等優點。它的出現,使半導體技術從弱電領域進入了強電領域,成為工業、農業、交通運輸、軍事科研以至商業、民用電器等方面爭相採用的元件。
一、 可控硅的結構和特性
■可控硅從外形上分主要有螺旋式、平板式和平底式三種(見圖表-25)。螺旋式的應用較多。
■可控硅有三個電極----陽極(A)陰極(C)和控制極(G)。它有管芯是P 型導體和N 型導體交迭組成的四層結構,共有三個PN 結。其結構示意圖和符號見圖表-26。
■從圖表-26中可以看到,可控硅和只有一個PN 結的硅整流二極度管在結構上迥然不同。可控硅的四層結構和控制極的引用,為其發揮「以小控大」的優異控制特性奠定了基礎。在應用可控硅時,只要在控制極加上很小的電流或電壓,就能控制很大的陽極電流或電壓。目前已能製造出電流容量達幾百安培以至上千安培的可控硅元件。一般把5安培以下的可控硅叫小功率可控硅,50安培以上的可控硅叫大功率可控硅。
■可控硅為什麼其有「以小控大」的可控性呢?下面我們用圖表-27來簡單分析可控硅的工作原理。
■首先,我們可以把從陰極向上數的第一、二、三層看面是一隻NPN 型號晶體管,而二、三四層組成另一隻PNP 型晶體管。其中第二、第三層為兩管交迭共用。這樣就可畫出圖表-27(C)的等效電路圖來分析。當在陽極和陰極之間加上一個正向電壓Ea ,又在控制極G和陰極C之間(相當BG1 的基一射間)輸入一個正的觸發信號,BG1 將產生基極電流Ib1 ,經放大,BG1 將有一個放大了β1 倍的集電極電流IC1 。因為BG1 集電極與BG2 基極相連,IC1 又是BG2 的基極電流Ib2 。BG2 又把比Ib2 (Ib1 )放大了β2 的集電極電流IC2 送回BG1 的基極放大。如此循環放大,直到BG1 、BG2 完全導通。實際這一過程是「一觸即發」的過程,對可控硅來說,觸發信號加入控制極,可控硅立即導通。導通的時間主要決定於可控硅的性能。
■可控硅一經觸發導通後,由於循環反饋的原因,流入BG1 基極的電流已不只是初始的Ib1 ,而是經過BG1 、BG2 放大後的電流(β1 *β2 *Ib1 )這一電流遠大於Ib1 ,足以保持BG1 的持續導通。此時觸發信號即使消失,可控硅仍保持導通狀態只有斷開電源Ea 或降低Ea ,使BG1 、BG2 中的集電極電流小於維持導通的最小值時,可控硅方可關斷。當然,如果Ea 極性反接,BG1 、BG2 由於受到反向電壓作用將處於截止狀態。這時,即使輸入觸發信號,可控硅也不能工作。反過來,Ea 接成正向,而觸動發信號是負的,可控硅也不能導通。另外,如果不加觸發信號,而正向陽極電壓大到超過一定值時,可控硅也會導通,但已屬於非正常工作情況了。
■可控硅這種通過觸發信號(小的觸發電流)來控制導通(可控硅中通過大電流)的可控特性,正是它區別於普通硅整流二極體的重要特徵。
[編輯本段]二、可控硅的主要參數
可控硅的主要參數有:
1、 額定通態平均電流IT在一定條件下,陽極---陰極間可以連續通過的50赫茲正弦半波電流的平均值。
2、 正向阻斷峰值電壓VPF 在控制極開路未加觸發信號,陽極正向電壓還未超過導能電壓時,可以重復加在可控硅兩端的正向峰值電壓。可控硅承受的正向電壓峰值,不能超過手冊給出的這個參數值。
3、 反向陰斷峰值電壓VPR當可控硅加反向電壓,處於反向關斷狀態時,可以重復加在可控硅兩端的反向峰值電壓。使用時,不能超過手冊給出的這個參數值。
4、 控制極觸發電流Ig1 、觸發電壓VGT在規定的環境溫度下,陽極---陰極間加有一定電壓時,可控硅從關斷狀態轉為導通狀態所需要的最小控制極電流和電壓。
5、 維持電流IH在規定溫度下,控制極斷路,維持可控硅導通所必需的最小陽極正向電流。
■近年來,許多新型可控硅元件相繼問世,如適於高頻應用的快速可控硅,可以用正或負的觸發信號控制兩個方向導通的雙向可控硅,可以用正觸發信號使其導通,用負觸發信號使其關斷的可控硅等等。
可控硅
可控硅是硅可控整流元件的簡稱,亦稱為晶閘管。具有體積小、結構相對簡單、功能強等特點,是比較常用的半導體器件之一。該器件被廣泛應用於各種電子設備和電子產品中,多用來作可控整流、逆變、變頻、調壓、無觸點開關等。家用電器中的調光燈、調速風扇、空調機、電視機、電冰箱、洗衣機、照相機、組合音響、聲光電路、定時控制器、玩具裝置、無線電遙控、攝像機及工業控制等都大量使用了可控硅器件。
可控硅的分類
按其工作特性,可控硅(THYRISTOR)可分為普通可控硅(SCR)即單向可控硅、雙向可控硅(TRIAC)和其它特殊可控硅。
可控硅的觸發
過零觸發-一般是調功,即當正弦交流電交流電電壓相位過零點觸發,必須是過零點才觸發,導通可控硅。
非過零觸發-無論交流電電壓在什麼相位的時候都可觸發導通可控硅,常見的是移相觸發,即通過改變正弦交流電的導通角(角相位),來改變輸出百分比。
可控硅的主要參數:
1. 額定通態電流(IT)即最大穩定工作電流,俗稱電流。常用可控硅的IT一般為一安到幾十安。
2. 反向重復峰值電壓(VRRM)或斷態重復峰值電壓(VDRM),俗稱耐壓。常用可控硅的VRRM/VDRM一般為幾百伏到一千伏。
3. 控制極觸發電流(IGT),俗稱觸發電流。常用可控硅的IGT一般為幾微安到幾十毫安。
可控硅的常用封裝形式
常用可控硅的封裝形式有TO-92、TO-126、TO-202AB、TO-220、TO-220AB、TO-3P、SOT-89、TO-251、TO-252等。
可控硅的主要廠家
主要廠家品牌:ST,NXP/PHILIPS,NEC,ON/MOTOROLA,RENESAS/MITSUBISHI,LITTELFUSE/TECCOR,TOSHIBA,JX ,SANREX,SANKEN ,SEMIKRON ,EUPEC,IR迪昌科技,北京瑞田達技貿有限責任公司等。
F. 可控硅調速電路分析
R1A多大? C1的耐壓值多少?原圖在S2斷開的時候,C1電壓容易升高,C1容易壞。
老燒可控硅的原因,極可能是你的可控硅的電壓值太低,一般至少選1200V的!起碼不能低於600V。電流也應該選大一些!要留有充足的裕度!例如電動機額定電流是2A,那可控硅至少得5A的,最好是10A的!
可控硅在尖波時功耗比較大,發熱嚴重。電動機等電感迴路的感應電壓也很高,容易造成感應電壓擊穿可控硅。
G. 用bt136等雙向可控硅製作的交流調壓電路,究竟是怎樣實現電壓的調整
雙向可控硅製作的交流調壓電路主要是控制雙向可控硅導通角實現調壓的。
工作原理:R、RP、C、D 組成脈沖形成網路觸發雙向可控硅BT, 使BT在市電正負半周均保持相應正反向導通。調節RP阻值,即可改變BT的導通角,達到調節負載RL,上電壓的目的。可用於家庭台燈調光、電熨斗、電熱毯的調溫及電風扇調速等。
H. 有師兄用單片機控制可控硅調壓的嗎電壓從0V到220V可調節..求助相關的程序例子 和原理,謝謝..
原理很簡單,用可控硅的調光台燈電路到處都有,把上邊電位器那一部分換成單片機的一個輸出端,使用單片機輸出PWM信號,即可得到不同的控制電壓,以控制可控硅的導通情況。
復雜一點的需要做閉環系統,也就是通過ADC輸入後,形成一個閉環的電壓監測,依據此值來控制輸出,使輸出電壓與預設的電壓一致。
I. 8位單片機PID控制PWM的演算法如何實現,C語言計算
PID控制在8位單片機中仍然有廣泛的應用,比如溫度控制,利用比例、積分、微分補償來做恆溫補償控制,當然由於有這些數學處理,用C語言相對方便一些,以下是一個具體的實例。
#include<reg51.h>
#include<intrins.h>
#include<math.h>
#include<string.h>
struct PID {
unsigned int SetPoint; // 設定目標 Desired Value
unsigned int Proportion; // 比例常數 Proportional Const
unsigned int Integral; // 積分常數 Integral Const
unsigned int Derivative; // 微分常數 Derivative Const
unsigned int LastError; // Error[-1]
unsigned int PrevError; // Error[-2]
unsigned int SumError; // Sums of Errors
};
struct PID spid; // PID Control Structure
unsigned int rout; // PID Response (Output)
unsigned int rin; // PID Feedback (Input)
sbit data1=P1^0;
sbit clk=P1^1;
sbit plus=P2^0;
sbit subs=P2^1;
sbit stop=P2^2;
sbit output=P3^4;
sbit DQ=P3^3;
unsigned char flag,flag_1=0;
unsigned char high_time,low_time,count=0;//占空比調節參數
unsigned char set_temper=35;
unsigned char temper;
unsigned char i;
unsigned char j=0;
unsigned int s;
/***********************************************************
延時子程序,延時時間以12M晶振為准,延時時間為30us×time
***********************************************************/
void delay(unsigned char time)
{
unsigned char m,n;
for(n=0;n<time;n++)
for(m=0;m<2;m++){}
}
/***********************************************************
寫一位數據子程序
***********************************************************/
void write_bit(unsigned char bitval)
{
EA=0;
DQ=0; /*拉低DQ以開始一個寫時序*/
if(bitval==1)
{
_nop_();
DQ=1; /*如要寫1,則將匯流排置高*/
}
delay(5); /*延時90us供DA18B20采樣*/
DQ=1; /*釋放DQ匯流排*/
_nop_();
_nop_();
EA=1;
}
/***********************************************************
寫一位元組數據子程序
***********************************************************/
void write_byte(unsigned char val)
{
unsigned char i;
unsigned char temp;
EA=0;
TR0=0;
for(i=0;i<8;i++) /*寫一位元組數據,一次寫一位*/
{
temp=val>>i; /*移位操作,將本次要寫的位移到最低位*/
temp=temp&1;
write_bit(temp); /*向匯流排寫該位*/
}
delay(7); /*延時120us後*/
// TR0=1;
EA=1;
}
/***********************************************************
讀一位數據子程序
***********************************************************/
unsigned char read_bit()
{
unsigned char i,value_bit;
EA=0;
DQ=0; /*拉低DQ,開始讀時序*/
_nop_();
_nop_();
DQ=1; /*釋放匯流排*/
for(i=0;i<2;i++){}
value_bit=DQ;
EA=1;
return(value_bit);
}
/***********************************************************
讀一位元組數據子程序
***********************************************************/
unsigned char read_byte()
{
unsigned char i,value=0;
EA=0;
for(i=0;i<8;i++)
{
if(read_bit()) /*讀一位元組數據,一個時序中讀一次,並作移位處理*/
value|=0x01<<i;
delay(4); /*延時80us以完成此次都時序,之後再讀下一數據*/
}
EA=1;
return(value);
}
/***********************************************************
復位子程序
***********************************************************/
unsigned char reset()
{
unsigned char presence;
EA=0;
DQ=0; /*拉低DQ匯流排開始復位*/
delay(30); /*保持低電平480us*/
DQ=1; /*釋放匯流排*/
delay(3);
presence=DQ; /*獲取應答信號*/
delay(28); /*延時以完成整個時序*/
EA=1;
return(presence); /*返回應答信號,有晶元應答返回0,無晶元則返回1*/
}
/***********************************************************
獲取溫度子程序
***********************************************************/
void get_temper()
{
unsigned char i,j;
do
{
i=reset(); /*復位*/
} while(i!=0); /*1為無反饋信號*/
i=0xcc; /*發送設備定位命令*/
write_byte(i);
i=0x44; /*發送開始轉換命令*/
write_byte(i);
delay(180); /*延時*/
do
{
i=reset(); /*復位*/
} while(i!=0);
i=0xcc; /*設備定位*/
write_byte(i);
i=0xbe; /*讀出緩沖區內容*/
write_byte(i);
j=read_byte();
i=read_byte();
i=(i<<4)&0x7f;
s=(unsigned int)(j&0x0f); //得到小數部分
s=(s*100)/16;
j=j>>4;
temper=i|j; /*獲取的溫度放在temper中*/
}
/*====================================================================================================
Initialize PID Structure
=====================================================================================================*/
void PIDInit (struct PID *pp)
{
memset ( pp,0,sizeof(struct PID)); //全部初始化為0
}
/*====================================================================================================
PID計算部分
=====================================================================================================*/
unsigned int PIDCalc( struct PID *pp, unsigned int NextPoint )
{
unsigned int dError,Error;
Error = pp->SetPoint - NextPoint; // 偏差
pp->SumError += Error; // 積分
dError = pp->LastError - pp->PrevError; // 當前微分
pp->PrevError = pp->LastError;
pp->LastError = Error;
return (pp->Proportion * Error // 比例項
+ pp->Integral * pp->SumError // 積分項
+ pp->Derivative * dError); // 微分項
}
/***********************************************************
溫度比較處理子程序
***********************************************************/
void compare_temper()
{
unsigned char i;
if(set_temper>temper) //是否設置的溫度大於實際溫度
{
if(set_temper-temper>1) //設置的溫度比實際的溫度是否是大於1度
{
high_time=100; //如果是,則全速加熱
low_time=0;
}
else //如果是在1度范圍內,則運行PID計算
{
for(i=0;i<10;i++)
{
get_temper(); //獲取溫度
rin = s; // Read Input
rout = PIDCalc ( &spid,rin ); // Perform PID Interation
}
if (high_time<=100)
high_time=(unsigned char)(rout/800);
else
high_time=100;
low_time= (100-high_time);
}
}
else if(set_temper<=temper)
{
if(temper-set_temper>0)
{
high_time=0;
low_time=100;
}
else
{
for(i=0;i<10;i++)
{
get_temper();
rin = s; // Read Input
rout = PIDCalc ( &spid,rin ); // Perform PID Interation
}
if (high_time<100)
high_time=(unsigned char)(rout/10000);
else
high_time=0;
low_time= (100-high_time);
}
}
// else
// {}
}
/*****************************************************
T0中斷服務子程序,用於控制電平的翻轉 ,40us*100=4ms周期
******************************************************/
void serve_T0() interrupt 1 using 1
{
if(++count<=(high_time))
output=1;
else if(count<=100)
{
output=0;
}
else
count=0;
TH0=0x2f;
TL0=0xe0;
}
/*****************************************************
串列口中斷服務程序,用於上位機通訊
******************************************************/
void serve_sio() interrupt 4 using 2
{
/* EA=0;
RI=0;
i=SBUF;
if(i==2)
{
while(RI==0){}
RI=0;
set_temper=SBUF;
SBUF=0x02;
while(TI==0){}
TI=0;
}
else if(i==3)
{
TI=0;
SBUF=temper;
while(TI==0){}
TI=0;
}
EA=1; */
}
void disp_1(unsigned char disp_num1[6])
{
unsigned char n,a,m;
for(n=0;n<6;n++)
{
// k=disp_num1[n];
for(a=0;a<8;a++)
{
clk=0;
m=(disp_num1[n]&1);
disp_num1[n]=disp_num1[n]>>1;
if(m==1)
data1=1;
else
data1=0;
_nop_();
clk=1;
_nop_();
}
}
}
/*****************************************************
顯示子程序
功能:將占空比溫度轉化為單個字元,顯示占空比和測得到的溫度
******************************************************/
void display()
{
unsigned char code number[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};
unsigned char disp_num[6];
unsigned int k,k1;
k=high_time;
k=k%1000;
k1=k/100;
if(k1==0)
disp_num[0]=0;
else
disp_num[0]=0x60;
k=k%100;
disp_num[1]=number[k/10];
disp_num[2]=number[k%10];
k=temper;
k=k%100;
disp_num[3]=number[k/10];
disp_num[4]=number[k%10]+1;
disp_num[5]=number[s/10];
disp_1(disp_num);
}
/***********************************************************
主程序
***********************************************************/
void main()
{
unsigned char z;
unsigned char a,b,flag_2=1,count1=0;
unsigned char phil[]={2,0xce,0x6e,0x60,0x1c,2};
TMOD=0x21;
TH0=0x2f;
TL0=0x40;
SCON=0x50;
PCON=0x00;
TH1=0xfd;
TL1=0xfd;
PS=1;
EA=1;
EX1=0;
ET0=1;
ES=1;
TR0=1;
TR1=1;
high_time=50;
low_time=50;
PIDInit ( &spid ); // Initialize Structure
spid.Proportion = 10; // Set PID Coefficients 比例常數 Proportional Const
spid.Integral = 8; //積分常數 Integral Const
spid.Derivative =6; //微分常數 Derivative Const
spid.SetPoint = 100; // Set PID Setpoint 設定目標 Desired Value
while(1)
{
if(plus==0)
{
EA=0;
for(a=0;a<5;a++)
for(b=0;b<102;b++){}
if(plus==0)
{
set_temper++;
flag=0;
}
}
else if(subs==0)
{
for(a=0;a<5;a++)
for(b=0;a<102;b++){}
if(subs==0)
{
set_temper--;
flag=0;
}
}
else if(stop==0)
{
for(a=0;a<5;a++)
for(b=0;b<102;b++){}
if(stop==0)
{
flag=0;
break;
}
EA=1;
}
get_temper();
b=temper;
if(flag_2==1)
a=b;
if((abs(a-b))>5)
temper=a;
else
temper=b;
a=temper;
flag_2=0;
if(++count1>30)
{
display();
count1=0;
}
compare_temper();
}
TR0=0;
z=1;
while(1)
{
EA=0;
if(stop==0)
{
for(a=0;a<5;a++)
for(b=0;b<102;b++){}
if(stop==0)
disp_1(phil);
// break;
}
EA=1;
}
}