<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于51單片機的調光控制器設計

          基于51單片機的調光控制器設計

          作者: 時間:2011-11-29 來源:網(wǎng)絡 收藏

          1 設計
          在日常生活中,我們常常需要對燈光的亮度進行調節(jié)。本通過控制雙向可控硅的導通來實現(xiàn)白熾燈(純阻負載)亮度的調整。雙向可控硅的特點是導通后即使觸發(fā)信號去掉,它仍將保持導通;當負載電流為零(交流電壓過零點)時,它會自動關斷。所以需要在交流電的每個半波期間都要送出觸發(fā)信號,觸發(fā)信號的送出時間就決定了燈泡的亮度。
          調光的實現(xiàn)方式就是在過零點后一段時間才觸發(fā)雙向可控硅開關導通,這段時間越長,可控硅導通的時間越短,燈的亮度就越低;反之,燈就越亮。
          這就要求要提取出交流電壓的過零點,并以此為基礎,確定觸發(fā)信號的送出時間,達到調光的目的。
          1.1 硬件部分
          的框圖如下:


          控制部分:為了便于靈活設計,選擇可多次寫入的可編程器件,這里選用的是ATMEL的AT89C51
          驅動部分:由于要驅動的是交流,所以可以用繼電器或光耦+可控硅(晶閘管SCR)來驅動。繼電器由于是機械動作,響應速度慢,不能滿足其需要??煽毓柙陔娐分心軌驅崿F(xiàn)交流電的無觸點控制,以小電流控制大電流,并且不象繼電器那樣控制時有火花產生,而且動作快、壽命長、可靠性高。所以這里選用的是可控硅。
          負載部分:本電路只能控制白熾燈(純阻負載)的亮度。
          1.2 軟件部分
          要控制的對象是50Hz的正弦交流電,通過光耦取出其過零點的信號(同步信號),將這個信號送至的外中斷,單片機每接收到這個同步信號后啟動一個延時程序,延時的具體時間由按鍵來改變。當延時結束時,單片機產生觸發(fā)信號,通過它讓可控硅導通,電流經過可控硅流過白熾燈,使燈發(fā)光。延時越長,亮的時間就越短,燈的亮度越暗(并不會有閃爍的感覺,因為重復的頻率為100Hz,且人的視覺有暫留效應)。由于延時的長短是由按鍵決定的,所以實際上就是按鍵控制了光的強弱。
          理論上講,延時時間應該可以是0~10ms內的任意值。在程序中,將一個周期均分成N等份,每次按鍵只需要去改變其等份數(shù),在這里,N越大越好,但由于受到單片機本身的限制和基于實際必要性的考慮,只需要分成大約100份左右即可,實際采用的值是95。
          可控硅的觸發(fā)脈沖寬度要根據(jù)具體的光耦結合示波器觀察而定,在本設計中取20 μs。程序中使用T1來控制這個時間。
          對兩個調光按鍵的處理有兩種方式:一種是每次按鍵,無論時間的長短,都只調整一個臺階(亮或暗);另一種是隨按鍵時間的不同,調整方法不同:短按只調整一個臺階,長按可以連續(xù)調整。如前面所述,由于本設計中的臺階數(shù)為95(N=95),如果使用前一種方式,操作太麻煩,所以用后者較為合理。

          光控開關相關文章:光控開關原理
          聲光控開關相關文章:聲光控開關原理

          上一頁 1 2 3 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();