找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3205|回復(fù): 7
收起左側(cè)

關(guān)于單片機(jī)控制繼電器的問題求助

[復(fù)制鏈接]
ID:347070 發(fā)表于 2018-6-7 23:26 | 顯示全部樓層 |閱讀模式
50黑幣
想用單片機(jī)控制繼電器
買的現(xiàn)成的繼電器模塊,已經(jīng)成功用按鍵控制繼電器的開關(guān)動作,
現(xiàn)在想請問各位大神,繼電器最終是控制電機(jī)的
想用光電傳感器和碼盤來控制  按下按鍵電機(jī)轉(zhuǎn)一圈或兩圈繼電器關(guān)閉
或者是定時關(guān)閉  設(shè)定一個時間  按下按鍵繼電器工作  倒計(jì)時開始  到零時繼電器關(guān)閉
不需要數(shù)碼管或其他的顯示
只要能工作就行了
本人小白一個  
請各位大神指教
#include<reg51.h>
sbit S4=P3^2;
sbit S3=P3^1;
sbit in=P1^0;

void main()
{
        while(1)                  
        {
                if(S3==0)
                        in=0;
                if(S4==0)
                        in=1;
               
        }
}

這是參考別人案例寫出來的
買的成品開發(fā)板
繼電器模塊  光電模塊都是現(xiàn)成的
跪求各位大神們的指教

回復(fù)

使用道具 舉報(bào)

ID:347288 發(fā)表于 2018-6-8 00:29 | 顯示全部樓層
我是使用DAC0832的直通方式進(jìn)行數(shù)/模變換的,還加了一個按鍵來控制輸出電壓的大小
主要是通過控制時間來進(jìn)行開關(guān)控制的,當(dāng)設(shè)定的時間值(這里只是我個人隨便設(shè)定的)到了的時候就會停止工作,不然就會一直工作,希望可以幫到你

/*****************必要的變量定義***************** /
# include< reg51. h>
unsigned char t= 0;     //定義時間的電壓變量
/*****************主程序****************/
main()
{
EA= 1;         //開總中斷
EXO= 1;        //開外部中斷0
ITo= 1;         //設(shè)置外部中斷0為下降沿觸發(fā)方式
while(1)
{
P2=t;     //將速度變量從P2口輸出,讓DAC0832轉(zhuǎn)換成模擬電壓
}
}
/*****************外部中0斷子程序***************** /
void into()  interrupt 0
{
if (t== 255) ;       //將t控制在最大值255
else t= t+ 5;   //每次中斷以5為步長遞增
}
,
回復(fù)

使用道具 舉報(bào)

ID:347288 發(fā)表于 2018-6-8 00:31 | 顯示全部樓層
因?yàn)槟銢]有提供相關(guān)圖片,所以下面是我參照其他例子給出的答案,希望可以幫到你 /*****************必要的變量定義***************** / # include< reg51. h> unsigned char t= 0;     //定義時間的電壓變量 /*****************主程序****************/ main() { EA= 1;         //開總中斷 EXO= 1;        //開外部中斷0 ITo= 1;         //設(shè)置外部中斷0為下降沿觸發(fā)方式 while(1) { P2=t;     //將速度變量從P2口輸出,讓DAC0832轉(zhuǎn)換成模擬電壓 } } /*****************外部中0斷子程序***************** / void into()  interrupt 0 { if (t== 255) ;       //將t控制在最大值255 else t= t+ 5;   //每次中斷以5為步長遞增 }
回復(fù)

使用道具 舉報(bào)

ID:249349 發(fā)表于 2018-6-8 09:11 | 顯示全部樓層
根據(jù)你所講的要求,只用到2個IO口,一個按鍵輸入,一個是繼電器控制輸出。按鍵按一下,電機(jī)運(yùn)停止行一定時間后自動停止。程序這樣:
#include<reg51.h>
sbit S3=P3^1;
sbit in=P1^0;

void main()
{
uint a;
        while(1)                  
        {
                if(S3==0)
                        in=0;
                for(a=????,a>0,a--);//這里延時等待。根據(jù)實(shí)際需要設(shè)置a的初始值
                        in=1;
               
        }
}
回復(fù)

使用道具 舉報(bào)

ID:137261 發(fā)表于 2018-6-8 11:12 | 顯示全部樓層
你能收到傳感器傳回來的電機(jī)后,做一個判斷,然后就可以控制繼電器斷開了
回復(fù)

使用道具 舉報(bào)

ID:347070 發(fā)表于 2018-6-9 12:15 | 顯示全部樓層
27789111090 發(fā)表于 2018-6-8 00:29
我是使用DAC0832的直通方式進(jìn)行數(shù)/模變換的,還加了一個按鍵來控制輸出電壓的大小
主要是通過控制時間來進(jìn) ...

謝謝老大 但是你的這個方案不太適合我  還需要另外多加一個芯片  我這里買東西不太方便  買個開發(fā)板7天才到我這里  不過還是感謝回復(fù)
回復(fù)

使用道具 舉報(bào)

ID:347070 發(fā)表于 2018-6-9 12:20 | 顯示全部樓層
yesnotgo 發(fā)表于 2018-6-8 09:11
根據(jù)你所講的要求,只用到2個IO口,一個按鍵輸入,一個是繼電器控制輸出。按鍵按一下,電機(jī)運(yùn)停止行一定時 ...

非常感謝   
恩。。。。應(yīng)該是這樣  按一下按鍵  繼電器工作  從而電機(jī)工作   這個a的延時定義  應(yīng)該怎么寫   比方說定時5秒  a應(yīng)該等于多少   
回復(fù)

使用道具 舉報(bào)

ID:347070 發(fā)表于 2018-6-9 12:28 | 顯示全部樓層
淡然若夢 發(fā)表于 2018-6-8 11:12
你能收到傳感器傳回來的電機(jī)后,做一個判斷,然后就可以控制繼電器斷開了

感謝回復(fù)
這個判斷怎么編寫呢  
我把傳感器直接接到單片機(jī)IO上面   按鍵能啟動繼電器     光電傳感器上面一放上東西遮蓋上   繼電器就斷電了
傳感器變成感應(yīng)開關(guān)了
我也需要他是個開關(guān)   但是碼盤上一般不都好幾個遮擋口么(能明白我的意思吧)
這剛一轉(zhuǎn) 就遮上了  達(dá)不到我需要電機(jī)轉(zhuǎn)動的量
懇請?jiān)僭敿?xì)些  可以么
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表