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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 22342|回復: 35
打印 上一主題 下一主題
收起左側

兩個限位開關如何通過51單片機控制一個直流電機正反轉

  [復制鏈接]
跳轉到指定樓層
樓主
現有兩個限位開關,想通過51/52單片機控制一個直流電機的正反轉,請問各位高手有什么思路嗎
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

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

評分

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

查看全部評分

回復

使用道具 舉報

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

然后你的單片機另外用兩個管腳感知兩個行程開關 在一邊的時候 開關A導通開板B斷開 端口就是10 這是驅動電機往一個方向移動 端口狀態就應該是00 到另一頭就是01

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

評分

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

查看全部評分

回復

使用道具 舉報

地板
ID:47286 發表于 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)                //正轉
        {
                P1.1=1;
                P1.2=0;
        }
        if(m==2)                //反轉
        {
                P1.1=0;
                P1.2=1;
        }
        if(m==3)                //剎車
        {
                P1.1=0;
                P1.2=0;
        }
}

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

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

評分

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

查看全部評分

回復

使用道具 舉報

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



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

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

sbit K3=P3^2;//停止鍵    對應實驗板上的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;  // 關閉直流電機

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);

   }

  }

}

}

評分

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

查看全部評分

回復

使用道具 舉報

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

使用道具 舉報

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

搭建H橋后,程序該怎么寫呢
回復

使用道具 舉報

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

評分

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

查看全部評分

回復

使用道具 舉報

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

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

使用道具 舉報

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

使用道具 舉報

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

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

使用道具 舉報

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

首先有限位開關2個,直流電機1個,L298N電機驅動模塊,假設:當擋板碰到限位開關1,電機停止,并當有正轉信號收入時,電機正轉,當碰到限位開關2時,電機停止,并且當有反轉信號收入時,電機反轉,往返期間可以通過按鍵使電機立即停止轉動
回復

使用道具 舉報

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

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

使用道具 舉報

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

再請教一個哈,就是你是只用了一個限位開關嗎
回復

使用道具 舉報

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

你好,控制端指的是限位開關的端口嗎?
回復

使用道具 舉報

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

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

使用道具 舉報

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

m是個變量 通過它改變電機狀態

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

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

大概思路是按你說的兩個限位開關K1 K2控制正反轉 K3控制系統是否工作

K3為1 系統開始工作

默認開始時電機位置在key1的地方 就是key1導通狀態 當然也可以寫成任意位置 這就是個思路不是成品 沒寫那么細

其它邏輯你讀程序 不復雜的

評分

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

查看全部評分

回復

使用道具 舉報

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

哦哦,對的
回復

使用道具 舉報

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

剎車是電機工作中的一種狀態 直流電機帶負載后斷電還會繼續轉一點角度  ...

好的,我試試看看行不行
回復

使用道具 舉報

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

好,謝謝啦
回復

使用道具 舉報

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

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

評分

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

查看全部評分

回復

使用道具 舉報

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

使用道具 舉報

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

大神啊,我的基礎差,看不懂
回復

使用道具 舉報

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

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


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

使用道具 舉報

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

補充

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

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

sbit ENA=PX^X;

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

回復

使用道具 舉報

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

我覺得接上限位開關后,還是不行,試過挺多方式還是不行
回復

使用道具 舉報

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

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

給你簡單說一下步驟吧

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

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

使用道具 舉報

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

代碼有點問題,現在有點像自己要的結果了
回復

使用道具 舉報

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

請問如果再加上點觸開關控制正反轉,碰到限位就停,思路又是怎樣的呢
回復

使用道具 舉報

30#
ID:327273 發表于 2018-5-11 00:45 來自手機 | 只看該作者
萌新一個,怎樣將限位開關接在51單片機控制的控制電路上。控制電路接驅動器控制步進電機正反轉的
回復

使用道具 舉報

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

請問知道了嗎。我也是萌新
回復

使用道具 舉報

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

我也是萌新請問你會了嗎
回復

使用道具 舉報

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

我也是萌新請問你會了嗎
回復

使用道具 舉報

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

不知道你什么電機
回復

使用道具 舉報

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

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

使用道具 舉報

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

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品高潮呻吟 | 最近日韩中文字幕 | 中文字幕一页二页 | av免费网站在线观看 | 色资源av| av在线天堂 | 伊人激情网 | 久久这里只有精品首页 | 色黄视频在线 | 日韩精品久久久久 | 亚洲精品中文字幕在线观看 | 成人久久网 | 日韩精品久久一区 | 亚洲人精品午夜 | 欧美国产日韩在线观看成人 | 国产黄色电影 | 国精久久 | 成人精品鲁一区一区二区 | 午夜av成人 | 一区二区不卡 | 一级黄色影片在线观看 | 国产精品国产 | 国产一区二区在线播放 | 日本不卡一区二区三区在线观看 | 久久久久成人精品亚洲国产 | 国产高清性xxxxxxxx | 午夜免费看视频 | 国产91综合一区在线观看 | 一区二区三区日韩精品 | 日韩一级欧美一级 | 欧美亚洲在线 | 国产精品久久av | 国产不卡一区 | 国产精品资源在线 | 中文字幕视频一区 | www.男人天堂.com | 四虎成人免费电影 | 中文字幕在线观看av | 国产精品亚洲一区 | 久久久久成人精品 | 日韩视频在线免费观看 |