久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 23007|回復(fù): 35
打印 上一主題 下一主題
收起左側(cè)

兩個限位開關(guān)如何通過51單片機控制一個直流電機正反轉(zhuǎn)

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:183120 發(fā)表于 2017-4-10 21:41 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
現(xiàn)有兩個限位開關(guān),想通過51/52單片機控制一個直流電機的正反轉(zhuǎn),請問各位高手有什么思路嗎
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報

沙發(fā)
ID:188246 發(fā)表于 2017-4-10 23:04 | 只看該作者
先說硬件電路,電機正反轉(zhuǎn)需要用晶體管搭一個H橋,并用單片機的四個輸出口驅(qū)動,剩下的選兩個口作為開關(guān)檢測端。程序應(yīng)該不復(fù)雜,就兩個開關(guān)的判斷,然后根據(jù)需求驅(qū)動電機就行

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

板凳
ID:47286 發(fā)表于 2017-4-11 01:23 | 只看該作者
不知道你什么電機 小電機用9110片子直接就可以了 那個片子用兩個管腳 1高1低正轉(zhuǎn) 1低1高就是翻轉(zhuǎn) 其它的H橋也是類似道理 就是功率大些 實驗的話這種小驅(qū)動片子足夠了

然后你的單片機另外用兩個管腳感知兩個行程開關(guān) 在一邊的時候 開關(guān)A導(dǎo)通開板B斷開 端口就是10 這是驅(qū)動電機往一個方向移動 端口狀態(tài)就應(yīng)該是00 到另一頭就是01

如果你只是表面提的這些需求 就是這樣了 很簡單 非常簡單

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

地板
ID:47286 發(fā)表于 2017-4-11 02:13 | 只看該作者
本帖最后由 dzbj 于 2017-4-11 09:48 編輯

困了 隨便弄了一下 可能有很多錯誤 電路圖畫的不細 不能直接用 缺一些下拉電阻什么的 程序沒仔細想 按思路大致寫的 大概是個意思 僅供參考

電路圖



程序

uchar m=0;
bit flag_moto=0;

void moto()
{
        if(m==0)                //停止
        {
                P1.1=1;
                P1.2=1;
        }
        if(m==1)                //正轉(zhuǎn)
        {
                P1.1=1;
                P1.2=0;
        }
        if(m==2)                //反轉(zhuǎn)
        {
                P1.1=0;
                P1.2=1;
        }
        if(m==3)                //剎車
        {
                P1.1=0;
                P1.2=0;
        }
}

void main()
{
        while(1)
        {
                moto();        //電機驅(qū)動 電機啟動后在兩點之間時設(shè)這個函數(shù)獨立控制電機繼續(xù)運動

                if(key3==1)                        //如果 啟動開關(guān)開啟
                {
                        if(flag_moto==0)        //如果 電機工作標(biāo)記為0
                        {
                                if(key1==1)                        //如果 一端開關(guān)閉合
                                {
                                        m=3;                                //剎車 這個是為了自動回程后再反復(fù)
                                        moto();                                //調(diào)用 電機驅(qū)動函數(shù)
                                        Delay(xx);                        //延時50~100ms 這個函數(shù)太簡單了 沒寫出來
                                        m=1;                                //正轉(zhuǎn)
                                        moto();                                //調(diào)用 電機驅(qū)動函數(shù)
                                        flag_moto=1;                //電機工作標(biāo)記置1
                                }
                        }
                        else                                //否則 即 電機工作標(biāo)記為1
                        {
                                if(key2==1)                        //如果 另一端開關(guān)閉合
                                {
                                        m=3;                                //剎車
                                        moto();                                //調(diào)用 電機驅(qū)動函數(shù)
                                        Delay(xx);                        //延時50~100ms 這個函數(shù)太簡單了 沒寫出來
                                        m=2;                                //反轉(zhuǎn)
                                        moto();                                //調(diào)用 電機驅(qū)動函數(shù)
                                        flag_moto=0;                //電機工作標(biāo)記清零
                                }
                        }
                        
                }
                else                                //否則 即 啟動開關(guān)關(guān)閉
                {
                        m=0;                                //停止
                        moto();                                //調(diào)用 電機驅(qū)動函數(shù)
                }
        }
}

評分

參與人數(shù) 1黑幣 +80 收起 理由
admin + 80 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

5#
ID:94554 發(fā)表于 2017-4-11 13:24 | 只看該作者
#include<reg52.h>



sbit K1=P3^6;   //正轉(zhuǎn)(逆時針)按鍵 對應(yīng)實驗板上的K1

sbit K2=P3^7;//反轉(zhuǎn)(順時針)按鍵  對應(yīng)實驗板上的K2

sbit K3=P3^2;//停止鍵    對應(yīng)實驗板上的K3



sbit P10=P0^0;//控制端

sbit P11=P0^1;//控制端



sbit BEEP = P2^2; //蜂鳴器控制端口P22



void delay(unsigned int n)

{

unsigned char i;

while(n--)

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

}



void beep()       //500HZ的聲音

{

unsigned char i;

for(i=0;i<100;i++){

  BEEP=~BEEP;

  delay(1);

}

BEEP=1;

}



void main()

{

P10=1;  // 關(guān)閉直流電機

P11=1;

while(1){

  if(K1==0){

   delay(15);  //消陡

   if(K1==0){

    beep();

    P10=0;

    P11=1;

    while(K1==0);  //等待按鍵釋放

   }

  }

  if(K2==0){

   delay(15);

   if(K2==0){

    beep();

    P10=1;

    P11=0;

    while(K2==0);

   }

  }

  if(K3==0){

   delay(15);

   if(K3==0){

    beep();

    P10=1;

    P11=1;

    while(K3==0);

   }

  }

}

}

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

6#
ID:7485 發(fā)表于 2017-4-11 14:18 | 只看該作者
你自己是什么思路?有什么樣的基礎(chǔ)?
回復(fù)

使用道具 舉報

7#
ID:183120 發(fā)表于 2017-4-11 18:26 | 只看該作者
網(wǎng)上漁翁 發(fā)表于 2017-4-10 23:04
先說硬件電路,電機正反轉(zhuǎn)需要用晶體管搭一個H橋,并用單片機的四個輸出口驅(qū)動,剩下的選兩個口作為開關(guān)檢 ...

搭建H橋后,程序該怎么寫呢
回復(fù)

使用道具 舉報

8#
ID:188246 發(fā)表于 2017-4-11 19:10 | 只看該作者
代碼這個真不是我的強項,且也有6、7年沒有搞了,最近忽然心血來潮想搞個數(shù)控的備用電源,所以我也還在學(xué)習(xí)中。
樓上已經(jīng)有現(xiàn)成的代碼,二樓的用了專用驅(qū)動電路,硬件電路就更簡單了,思路都差不多。要是你用全分離件的驅(qū)動電路,樓上的代碼稍微修改一下也能用,只要是H橋的對角功率管導(dǎo)通就可以了。其他都一樣

評分

參與人數(shù) 1黑幣 +30 收起 理由
admin + 30 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

9#
ID:183120 發(fā)表于 2017-4-11 19:35 | 只看該作者
dzbj 發(fā)表于 2017-4-11 02:13
困了 隨便弄了一下 可能有很多錯誤 電路圖畫的不細 不能直接用 缺一些下拉電阻什么的 程序沒仔細想 按思路 ...

請問,m 代表的是什么,  剎車又是什么意思
回復(fù)

使用道具 舉報

10#
ID:183120 發(fā)表于 2017-4-11 19:36 | 只看該作者
使用的是L298N電機驅(qū)動模塊
回復(fù)

使用道具 舉報

11#
ID:183120 發(fā)表于 2017-4-11 19:38 | 只看該作者

按您的意思就是說沒有使用什么電機驅(qū)動模塊了?
回復(fù)

使用道具 舉報

12#
ID:183120 發(fā)表于 2017-4-11 19:43 | 只看該作者
ahshmj 發(fā)表于 2017-4-11 14:18
你自己是什么思路?有什么樣的基礎(chǔ)?

首先有限位開關(guān)2個,直流電機1個,L298N電機驅(qū)動模塊,假設(shè):當(dāng)擋板碰到限位開關(guān)1,電機停止,并當(dāng)有正轉(zhuǎn)信號收入時,電機正轉(zhuǎn),當(dāng)碰到限位開關(guān)2時,電機停止,并且當(dāng)有反轉(zhuǎn)信號收入時,電機反轉(zhuǎn),往返期間可以通過按鍵使電機立即停止轉(zhuǎn)動
回復(fù)

使用道具 舉報

13#
ID:183120 發(fā)表于 2017-4-11 21:22 | 只看該作者
dzbj 發(fā)表于 2017-4-11 02:13
困了 隨便弄了一下 可能有很多錯誤 電路圖畫的不細 不能直接用 缺一些下拉電阻什么的 程序沒仔細想 按思路 ...

圖二之后的四張看不清,不知key1,key2,key3代表的是什么
回復(fù)

使用道具 舉報

14#
ID:183120 發(fā)表于 2017-4-11 22:14 | 只看該作者
dzbj 發(fā)表于 2017-4-11 02:13
困了 隨便弄了一下 可能有很多錯誤 電路圖畫的不細 不能直接用 缺一些下拉電阻什么的 程序沒仔細想 按思路 ...

再請教一個哈,就是你是只用了一個限位開關(guān)嗎
回復(fù)

使用道具 舉報

15#
ID:183120 發(fā)表于 2017-4-11 22:18 | 只看該作者

你好,控制端指的是限位開關(guān)的端口嗎?
回復(fù)

使用道具 舉報

16#
ID:47286 發(fā)表于 2017-4-11 23:09 | 只看該作者
彬Lsl 發(fā)表于 2017-4-11 21:22
圖二之后的四張看不清,不知key1,key2,key3代表的是什么

k1和k2是你說的兩個開關(guān) 一個正程一個反程 k3是我加上去的 我想你總需要有個開關(guān)控制整體是否工作吧 總不會靠插拔電源決定是否工作 對么
回復(fù)

使用道具 舉報

17#
ID:47286 發(fā)表于 2017-4-11 23:23 | 只看該作者
彬Lsl 發(fā)表于 2017-4-11 19:35
請問,m 代表的是什么,  剎車又是什么意思

m是個變量 通過它改變電機狀態(tài)

剎車是電機工作中的一種狀態(tài) 直流電機帶負載后斷電還會繼續(xù)轉(zhuǎn)一點角度 如果直接反轉(zhuǎn)容易燒片子 嚴重了可以燒電機

我出的圖和程序只是核心內(nèi)容 缺周邊的東西 比如單片機的晶振沒畫 開關(guān)防抖也沒寫

大概思路是按你說的兩個限位開關(guān)K1 K2控制正反轉(zhuǎn) K3控制系統(tǒng)是否工作

K3為1 系統(tǒng)開始工作

默認開始時電機位置在key1的地方 就是key1導(dǎo)通狀態(tài) 當(dāng)然也可以寫成任意位置 這就是個思路不是成品 沒寫那么細

其它邏輯你讀程序 不復(fù)雜的

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

18#
ID:183120 發(fā)表于 2017-4-12 15:05 | 只看該作者
dzbj 發(fā)表于 2017-4-11 23:09
k1和k2是你說的兩個開關(guān) 一個正程一個反程 k3是我加上去的 我想你總需要有個開關(guān)控制整體是否工作吧 總不 ...

哦哦,對的
回復(fù)

使用道具 舉報

19#
ID:183120 發(fā)表于 2017-4-12 15:07 | 只看該作者
dzbj 發(fā)表于 2017-4-11 23:23
m是個變量 通過它改變電機狀態(tài)

剎車是電機工作中的一種狀態(tài) 直流電機帶負載后斷電還會繼續(xù)轉(zhuǎn)一點角度  ...

好的,我試試看看行不行
回復(fù)

使用道具 舉報

20#
ID:183120 發(fā)表于 2017-4-12 15:10 | 只看該作者
網(wǎng)上漁翁 發(fā)表于 2017-4-11 19:10
代碼這個真不是我的強項,且也有6、7年沒有搞了,最近忽然心血來潮想搞個數(shù)控的備用電源,所以我也還在學(xué)習(xí) ...

好,謝謝啦
回復(fù)

使用道具 舉報

21#
ID:183120 發(fā)表于 2017-4-13 22:19 | 只看該作者
dzbj 發(fā)表于 2017-4-11 02:13
困了 隨便弄了一下 可能有很多錯誤 電路圖畫的不細 不能直接用 缺一些下拉電阻什么的 程序沒仔細想 按思路 ...

大師啊還是不行啊,你是有用H橋驅(qū)動電機的嗎?我用的是L298N,你看看你還能寫下代碼參考參考嗎

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

22#
ID:189542 發(fā)表于 2017-4-14 14:53 | 只看該作者
在多機通信中,主機必須要能對各個從機進行識別,在51系列單片機中可以通過SCON寄存器的SM2位來實現(xiàn)。當(dāng)串口以方式2或方式3發(fā)送數(shù)據(jù)時,每一幀信息都是11位,第9位是數(shù)據(jù)可編程位,通過給TB8置1或置0來區(qū)別地址幀和數(shù)據(jù)幀,當(dāng)該位為1時,發(fā)送地址幀;該位為0時,發(fā)送數(shù)據(jù)幀。 在多機通信過程中,主機先發(fā)送某一從機的地址,等待從機的應(yīng)答,所有的從機接收到地址幀后與本機地址進行比較,若相同,則將SM2置0準(zhǔn)備接收數(shù)據(jù);若不同,則丟棄當(dāng)前數(shù)據(jù),SM2位不變。
回復(fù)

使用道具 舉報

23#
ID:183120 發(fā)表于 2017-4-14 14:58 | 只看該作者
XIN_XIN 發(fā)表于 2017-4-14 14:53
在多機通信中,主機必須要能對各個從機進行識別,在51系列單片機中可以通過SCON寄存器的SM2位來實現(xiàn)。當(dāng)串 ...

大神啊,我的基礎(chǔ)差,看不懂
回復(fù)

使用道具 舉報

24#
ID:47286 發(fā)表于 2017-4-14 15:26 | 只看該作者
彬Lsl 發(fā)表于 2017-4-13 22:19
大師啊還是不行啊,你是有用H橋驅(qū)動電機的嗎?我用的是L298N,你看看你還能寫下代碼參考參考嗎[em3 ...

我現(xiàn)在在上班 沒法給你寫 看了一下L298N的手冊 和我用的9110基本上是一樣的控制方法 多兩個EN使能端 見下圖


你控制一個電機 那么L298N的2 3腳接你的電機 ENA接到單片機上 在我上面寫的程序里 電機驅(qū)動函數(shù)中 進入時加個ENA=1; 退出時加個ENA=0; 應(yīng)該就可以了 其它的 你照這個線路圖接 省掉下面那路電機即可
回復(fù)

使用道具 舉報

25#
ID:47286 發(fā)表于 2017-4-14 15:33 | 只看該作者
彬Lsl 發(fā)表于 2017-4-14 14:58
大神啊,我的基礎(chǔ)差,看不懂

補充

原來的IA到298的IN1 原來的IB到298的IN2

程序里 你另外定義一個端口是ENA

sbit ENA=PX^X;

void moto()
{
ENA=1;
...........//原來的程序
ENA=0;
}

回復(fù)

使用道具 舉報

26#
ID:183120 發(fā)表于 2017-4-14 19:44 | 只看該作者
dzbj 發(fā)表于 2017-4-14 15:26
我現(xiàn)在在上班 沒法給你寫 看了一下L298N的手冊 和我用的9110基本上是一樣的控制方法 多兩個EN使能端 見下 ...

我覺得接上限位開關(guān)后,還是不行,試過挺多方式還是不行
回復(fù)

使用道具 舉報

27#
ID:47286 發(fā)表于 2017-4-14 19:55 | 只看該作者
彬Lsl 發(fā)表于 2017-4-14 19:44
我覺得接上限位開關(guān)后,還是不行,試過挺多方式還是不行

那就不是我這么臆測能解決了 需要你自己一步一步檢查 至少 你要描述出每一步的狀況才能幫你了 一切皆有可能 看不見摸不著的無從下手啊 一句不行解決不了任何問題 天天念叨不行它也不會行

給你簡單說一下步驟吧

1. 確保編譯沒問題 給你的程序不是成品 你需要把缺的補上 可以把你寫好的發(fā)上來看下
2. 確保下載正確 程序和硬件端口對應(yīng)關(guān)系沒問題
3. 給系統(tǒng)上電但不帶電機 萬用表 按邏輯模擬狀態(tài) 測量你定義的每個管腳是否正常 不正常找片子 電路板 程序的原因 正常 則檢查電機情況 機械結(jié)構(gòu) 電源帶載能力等

我自己做東西都要搭實驗臺 模擬使用環(huán)境的 也不是一次成功 上去不行太正常了 肯定哪有問題唄
回復(fù)

使用道具 舉報

28#
ID:183120 發(fā)表于 2017-4-15 09:04 | 只看該作者
dzbj 發(fā)表于 2017-4-14 19:55
那就不是我這么臆測能解決了 需要你自己一步一步檢查 至少 你要描述出每一步的狀況才能幫你了 一切皆有可 ...

代碼有點問題,現(xiàn)在有點像自己要的結(jié)果了
回復(fù)

使用道具 舉報

29#
ID:183120 發(fā)表于 2017-4-22 10:20 | 只看該作者
dzbj 發(fā)表于 2017-4-11 02:13
困了 隨便弄了一下 可能有很多錯誤 電路圖畫的不細 不能直接用 缺一些下拉電阻什么的 程序沒仔細想 按思路 ...

請問如果再加上點觸開關(guān)控制正反轉(zhuǎn),碰到限位就停,思路又是怎樣的呢
回復(fù)

使用道具 舉報

30#
ID:327273 發(fā)表于 2018-5-11 00:45 來自觸屏版 | 只看該作者
萌新一個,怎樣將限位開關(guān)接在51單片機控制的控制電路上。控制電路接驅(qū)動器控制步進電機正反轉(zhuǎn)的
回復(fù)

使用道具 舉報

31#
ID:324786 發(fā)表于 2018-8-13 17:30 | 只看該作者
sxxy 發(fā)表于 2018-5-11 00:45
萌新一個,怎樣將限位開關(guān)接在51單片機控制的控制電路上。控制電路接驅(qū)動器控制步進電機正反轉(zhuǎn)的

請問知道了嗎。我也是萌新
回復(fù)

使用道具 舉報

32#
ID:324786 發(fā)表于 2018-8-13 17:30 | 只看該作者
sxxy 發(fā)表于 2018-5-11 00:45
萌新一個,怎樣將限位開關(guān)接在51單片機控制的控制電路上。控制電路接驅(qū)動器控制步進電機正反轉(zhuǎn)的

我也是萌新請問你會了嗎
回復(fù)

使用道具 舉報

33#
ID:324786 發(fā)表于 2018-8-13 17:31 | 只看該作者
sxxy 發(fā)表于 2018-5-11 00:45
萌新一個,怎樣將限位開關(guān)接在51單片機控制的控制電路上。控制電路接驅(qū)動器控制步進電機正反轉(zhuǎn)的

我也是萌新請問你會了嗎
回復(fù)

使用道具 舉報

34#
ID:393142 發(fā)表于 2018-9-15 21:10 | 只看該作者

不知道你什么電機
回復(fù)

使用道具 舉報

35#
ID:444385 發(fā)表于 2020-5-29 05:44 | 只看該作者

這個程序是按下一次開關(guān)電機正轉(zhuǎn)馬上就停止,怎么改程序才能讓它一直轉(zhuǎn),直到按下反向鍵呢?
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 三级视频国产 | 中文在线一区二区 | 亚洲国产视频一区 | 国产午夜精品理论片a大结局 | 亚洲精品久久久久久久久久久久久 | 欧美视频免费在线 | 中文字幕在线视频网站 | www.色午夜.com| 国产成人精品一区二区三区网站观看 | 国产999精品久久久 午夜天堂精品久久久久 | 久久久久久久电影 | 人人玩人人干 | 国产精品视频网 | 在线播放国产一区二区三区 | 亚洲天堂网站 | 国产成人99久久亚洲综合精品 | 色888www视频在线观看 | 欧美伊人| 久草综合在线 | 欧美午夜在线 | 久久蜜桃av一区二区天堂 | 亚洲国产精品99久久久久久久久 | 黄色免费网址大全 | 色婷婷一区二区三区四区 | 黄色一级大片在线免费看产 | 亚洲伊人精品酒店 | 91综合在线视频 | 欧美在线高清 | 亚洲综合久久久 | 久久久网| 国产96在线 | 国产成人免费视频网站高清观看视频 | 亚洲精品电影网在线观看 | 性色在线 | 欧美视频二区 | 亚洲高清av | 五月激情综合 | 免费看一区二区三区 | 欧美日韩视频 | 91在线电影 | 国产第一亚洲 |