本廠儲料棚區有一8m*6m大門,電機為三相1.5kw,渦輪減速傳動,主軸配上下限位開關。開始安裝的按鈕和遙控開關大門,感覺不便,配上微波雷達感應和光感應開關,51單片機控制,現在一直在用。自動門大致要求都差不多:1有人車在雷達范圍內,則自動開門。2無人車延時6s左右關門。3防夾人車。本電路用到6個io口,其中限位開關2個,光感和雷達用2個,輸出正反轉2個。接口用光電隔離器,一是電氣隔離,再一電位易于匹配,用的24v直流繼電器。以下是仿真圖,代碼等。其中第二代碼是實戰的,第一個參考狀態機思想來的,也已仿真。
電路原理圖如下:
自動門.png (27.09 KB, 下載次數: 58)
下載附件
2022-1-12 10:45 上傳
單片機源程序如下:
- #include <reg51.h>
- #include <stdio.h>
- sbit upsw =P2^4;
- sbit downsw =P2^3;
- sbit radar =P2^2;
- sbit lightinduct =P2^1;
- sbit uprelay=P2^7;
- sbit downrelay=P2^6;
- void DelayMS(unsigned int x)
- {
- unsigned char i;
- while(x--) for(i=0;i<120;i++);
- }
- void main(void)
- {
- uprelay=1;
- downrelay=1;
- while(1)
- {
- if(downsw==0) //在下限
- {
- if(radar==1) //無雷光
- {
- uprelay=1; //保持
- downrelay=1;
- }
- else if(radar==0) //有雷光
- {
- uprelay=0; //上行開
- }
- }
- if(uprelay==0)
- {
- if(upsw==0) //上限到
- {
- uprelay=1; //上行停
- }
- }
- if(upsw==0&&downrelay==1) //上位
- {
- if(lightinduct==0|| radar==0) //有雷光
- {
- uprelay=1; downrelay=1; //保持
- }
- else
- {
- DelayMS(5000);
- downrelay=0; //下行
- }
- }
- if( downrelay==0) //下行
- {
- if(downsw==0) //若到下限
- {
- downrelay=1; //下行停
- }
- else if(lightinduct==0|| radar==0) //有雷光
- {
- downrelay=1; //下行停
- DelayMS(100);
- uprelay=0; //上行開
- if(upsw==0) //上限到
- {
- uprelay=1; //上行停
- }
- }
- }
- if(upsw==1&&downsw==1&& downrelay==1&& uprelay==1)
- downrelay=0;
- }
- }
復制代碼 |