農林漁牧網

您現在的位置是:首頁 > 農業

LED燈管的改造

2022-03-24由 略略略GaGa 發表于 農業

日光燈管怎麼改成led燈

今日閒得發慌,無事可做[吐舌]。發呆[呆無辜]間看到桌子邊上自己平時照明使用的LED燈管(類似於某寶的這種)

LED燈管的改造

想到平時上床睡覺經常忘記關燈,不得不跑下來關燈,就想著能不能動手改造下這燈管,放個遙控器在床邊,這樣忘記關燈時就可以直接用遙控器把燈管關了,不用再麻煩跑下床關燈。[呆無辜]

說幹就幹![機智]

首先是先確認需求

對於我來說,在平時的使用中,LED燈管的開啟,我可以動手開啟按鍵開關,對這裡不需要再去改進。主要改動在關LED燈這個步驟,我需要增加一個功能,能夠透過遙控器來對LED燈管進行斷電操作。

接著就是需求分析並確認方案

對於上述需求的分析,考慮到自己手頭閒置很久模組物料的最大化的利用(主要是為了省錢[看])

,最終定下來的方案如下(使用模組基本都是以前自學使用的,後面基本都閒置了[黑臉]):

主控晶片:

STC90C516RD+

LED燈管的改造

遙控:

紅外遙控器+紅外接收模組

LED燈管的改造

通斷電:

繼電器開關模組

LED燈管的改造

啟動開關:

無鎖開關

LED燈管的改造

東西都準備好了,接下來需要進行原理圖的設計和各模組之間的連線。原理圖大致如下(不會畫原理圖,所以有點潦草[看][看][看])

LED燈管的改造

模組連線圖如下所示:

LED燈管的改造

簡要分析

我們將繼電器的控制腳接到MCU的P0。0腳,再無鎖開關按下後,微控制器通電工作的時候,開啟繼電器,使得A B點由常開變為常閉,這個時候LED燈可以正常點亮。將紅外接收模組連線到MCU的P3。2腳,當紅外模組接收到遙控器傳送的訊號時,則MCU將繼電器斷開,從而斷開了LED燈的通電。

程式設計及燒錄

根據以上分析編寫微控制器程式,將程式編譯成。hex 檔案燒錄到MCU中。程式碼如下:

#include

#include

#define uchar unsigned char

#define uint unsigned int

sbit relay = P0^0;

sbit IRIN = P3^2;

uchar IR_value[6];

uint t = 0;

uint ir_recv = 0;

//函式宣告

void init();

void delayms(uchar j);

void Delay(int del);

void IR_init(void)

{

IE |= 0x81;

TCON |= 0x01;

IRIN = 1;

}

void IR_Delay(uchar t1) // t1*0。15ms

{

uchar t2;

while(t1——)

for(t2=0;t2<13;t2++);

}

void IR_Get(void)

{

uchar i,j,k=0;

IR_Delay(5);

if(IRIN == 1) return;

while(!IRIN);

while(IRIN);

for(i=0;i<4;i++)

{

for(j=0;j<8;j++)

{

while(!IRIN);

while(IRIN)

{

IR_Delay(1);

k++;

if(k>=30)

{

k=0;

return;

}

}

IR_value[i] = IR_value[i] >> 1;

if(k>=8)

IR_value[i] = IR_value[i] | 0x80;

k=0;

}

}

}

void main()

{

relay = 1;

IR_init();

while(1){

}

}

void IR_ISR(void) interrupt 0

{

EX0 = 0;

IR_value[0] = IR_value[1] = IR_value[2] = IR_value[3] = 0 ;

IR_Get();

if(IR_value[0]==~IR_value[1] && IR_value[2]==~IR_value[3]){

IR_value[5] = IR_value[2];

IR_value[4] = IR_value[0];

}

relay = 0;

IE0 = 0;

EX0 = 1;

}

實現效果

最後,LED燈管改進的效果如下

影片載入中。。。

效果基本可以滿足需要[奸笑][奸笑][奸笑]