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

標(biāo)題: 兩個(gè)限位開關(guān)如何通過51單片機(jī)控制一個(gè)直流電機(jī)正反轉(zhuǎn) [打印本頁]

作者: 彬Lsl    時(shí)間: 2017-4-10 21:41
標(biāo)題: 兩個(gè)限位開關(guān)如何通過51單片機(jī)控制一個(gè)直流電機(jī)正反轉(zhuǎn)
現(xiàn)有兩個(gè)限位開關(guān),想通過51/52單片機(jī)控制一個(gè)直流電機(jī)的正反轉(zhuǎn),請(qǐng)問各位高手有什么思路嗎

作者: 網(wǎng)上漁翁    時(shí)間: 2017-4-10 23:04
先說硬件電路,電機(jī)正反轉(zhuǎn)需要用晶體管搭一個(gè)H橋,并用單片機(jī)的四個(gè)輸出口驅(qū)動(dòng),剩下的選兩個(gè)口作為開關(guān)檢測端。程序應(yīng)該不復(fù)雜,就兩個(gè)開關(guān)的判斷,然后根據(jù)需求驅(qū)動(dòng)電機(jī)就行
作者: dzbj    時(shí)間: 2017-4-11 01:23
不知道你什么電機(jī) 小電機(jī)用9110片子直接就可以了 那個(gè)片子用兩個(gè)管腳 1高1低正轉(zhuǎn) 1低1高就是翻轉(zhuǎn) 其它的H橋也是類似道理 就是功率大些 實(shí)驗(yàn)的話這種小驅(qū)動(dòng)片子足夠了

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

如果你只是表面提的這些需求 就是這樣了 很簡單 非常簡單
作者: dzbj    時(shí)間: 2017-4-11 02:13
本帖最后由 dzbj 于 2017-4-11 09:48 編輯

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

電路圖



程序

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();        //電機(jī)驅(qū)動(dòng) 電機(jī)啟動(dòng)后在兩點(diǎn)之間時(shí)設(shè)這個(gè)函數(shù)獨(dú)立控制電機(jī)繼續(xù)運(yùn)動(dòng)

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


作者: 158640752    時(shí)間: 2017-4-11 13:24
#include<reg52.h>



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

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

sbit K3=P3^2;//停止鍵    對(duì)應(yīng)實(shí)驗(yàn)板上的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)閉直流電機(jī)

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

   }

  }

}

}

作者: ahshmj    時(shí)間: 2017-4-11 14:18
你自己是什么思路?有什么樣的基礎(chǔ)?
作者: 彬Lsl    時(shí)間: 2017-4-11 18:26
網(wǎng)上漁翁 發(fā)表于 2017-4-10 23:04
先說硬件電路,電機(jī)正反轉(zhuǎn)需要用晶體管搭一個(gè)H橋,并用單片機(jī)的四個(gè)輸出口驅(qū)動(dòng),剩下的選兩個(gè)口作為開關(guān)檢 ...

搭建H橋后,程序該怎么寫呢
作者: 網(wǎng)上漁翁    時(shí)間: 2017-4-11 19:10
代碼這個(gè)真不是我的強(qiáng)項(xiàng),且也有6、7年沒有搞了,最近忽然心血來潮想搞個(gè)數(shù)控的備用電源,所以我也還在學(xué)習(xí)中。
樓上已經(jīng)有現(xiàn)成的代碼,二樓的用了專用驅(qū)動(dòng)電路,硬件電路就更簡單了,思路都差不多。要是你用全分離件的驅(qū)動(dòng)電路,樓上的代碼稍微修改一下也能用,只要是H橋的對(duì)角功率管導(dǎo)通就可以了。其他都一樣

作者: 彬Lsl    時(shí)間: 2017-4-11 19:35
dzbj 發(fā)表于 2017-4-11 02:13
困了 隨便弄了一下 可能有很多錯(cuò)誤 電路圖畫的不細(xì) 不能直接用 缺一些下拉電阻什么的 程序沒仔細(xì)想 按思路 ...

請(qǐng)問,m 代表的是什么,  剎車又是什么意思
作者: 彬Lsl    時(shí)間: 2017-4-11 19:36
使用的是L298N電機(jī)驅(qū)動(dòng)模塊
作者: 彬Lsl    時(shí)間: 2017-4-11 19:38
158640752 發(fā)表于 2017-4-11 13:24
#include

按您的意思就是說沒有使用什么電機(jī)驅(qū)動(dòng)模塊了?

作者: 彬Lsl    時(shí)間: 2017-4-11 19:43
ahshmj 發(fā)表于 2017-4-11 14:18
你自己是什么思路?有什么樣的基礎(chǔ)?

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

作者: 彬Lsl    時(shí)間: 2017-4-11 21:22
dzbj 發(fā)表于 2017-4-11 02:13
困了 隨便弄了一下 可能有很多錯(cuò)誤 電路圖畫的不細(xì) 不能直接用 缺一些下拉電阻什么的 程序沒仔細(xì)想 按思路 ...

圖二之后的四張看不清,不知key1,key2,key3代表的是什么
作者: 彬Lsl    時(shí)間: 2017-4-11 22:14
dzbj 發(fā)表于 2017-4-11 02:13
困了 隨便弄了一下 可能有很多錯(cuò)誤 電路圖畫的不細(xì) 不能直接用 缺一些下拉電阻什么的 程序沒仔細(xì)想 按思路 ...

再請(qǐng)教一個(gè)哈,就是你是只用了一個(gè)限位開關(guān)嗎

作者: 彬Lsl    時(shí)間: 2017-4-11 22:18
158640752 發(fā)表于 2017-4-11 13:24
#include

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

作者: dzbj    時(shí)間: 2017-4-11 23:09
彬Lsl 發(fā)表于 2017-4-11 21:22
圖二之后的四張看不清,不知key1,key2,key3代表的是什么

k1和k2是你說的兩個(gè)開關(guān) 一個(gè)正程一個(gè)反程 k3是我加上去的 我想你總需要有個(gè)開關(guān)控制整體是否工作吧 總不會(huì)靠插拔電源決定是否工作 對(duì)么
作者: dzbj    時(shí)間: 2017-4-11 23:23
彬Lsl 發(fā)表于 2017-4-11 19:35
請(qǐng)問,m 代表的是什么,  剎車又是什么意思

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

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

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

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

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

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

其它邏輯你讀程序 不復(fù)雜的
作者: 彬Lsl    時(shí)間: 2017-4-12 15:05
dzbj 發(fā)表于 2017-4-11 23:09
k1和k2是你說的兩個(gè)開關(guān) 一個(gè)正程一個(gè)反程 k3是我加上去的 我想你總需要有個(gè)開關(guān)控制整體是否工作吧 總不 ...

哦哦,對(duì)的
作者: 彬Lsl    時(shí)間: 2017-4-12 15:07
dzbj 發(fā)表于 2017-4-11 23:23
m是個(gè)變量 通過它改變電機(jī)狀態(tài)

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

好的,我試試看看行不行
作者: 彬Lsl    時(shí)間: 2017-4-12 15:10
網(wǎng)上漁翁 發(fā)表于 2017-4-11 19:10
代碼這個(gè)真不是我的強(qiáng)項(xiàng),且也有6、7年沒有搞了,最近忽然心血來潮想搞個(gè)數(shù)控的備用電源,所以我也還在學(xué)習(xí) ...

好,謝謝啦
作者: 彬Lsl    時(shí)間: 2017-4-13 22:19
dzbj 發(fā)表于 2017-4-11 02:13
困了 隨便弄了一下 可能有很多錯(cuò)誤 電路圖畫的不細(xì) 不能直接用 缺一些下拉電阻什么的 程序沒仔細(xì)想 按思路 ...

大師啊還是不行啊,你是有用H橋驅(qū)動(dòng)電機(jī)的嗎?我用的是L298N,你看看你還能寫下代碼參考參考嗎
作者: XIN_XIN    時(shí)間: 2017-4-14 14:53
在多機(jī)通信中,主機(jī)必須要能對(duì)各個(gè)從機(jī)進(jìn)行識(shí)別,在51系列單片機(jī)中可以通過SCON寄存器的SM2位來實(shí)現(xiàn)。當(dāng)串口以方式2或方式3發(fā)送數(shù)據(jù)時(shí),每一幀信息都是11位,第9位是數(shù)據(jù)可編程位,通過給TB8置1或置0來區(qū)別地址幀和數(shù)據(jù)幀,當(dāng)該位為1時(shí),發(fā)送地址幀;該位為0時(shí),發(fā)送數(shù)據(jù)幀。 在多機(jī)通信過程中,主機(jī)先發(fā)送某一從機(jī)的地址,等待從機(jī)的應(yīng)答,所有的從機(jī)接收到地址幀后與本機(jī)地址進(jìn)行比較,若相同,則將SM2置0準(zhǔn)備接收數(shù)據(jù);若不同,則丟棄當(dāng)前數(shù)據(jù),SM2位不變。
作者: 彬Lsl    時(shí)間: 2017-4-14 14:58
XIN_XIN 發(fā)表于 2017-4-14 14:53
在多機(jī)通信中,主機(jī)必須要能對(duì)各個(gè)從機(jī)進(jìn)行識(shí)別,在51系列單片機(jī)中可以通過SCON寄存器的SM2位來實(shí)現(xiàn)。當(dāng)串 ...

大神啊,我的基礎(chǔ)差,看不懂
作者: dzbj    時(shí)間: 2017-4-14 15:26
彬Lsl 發(fā)表于 2017-4-13 22:19
大師啊還是不行啊,你是有用H橋驅(qū)動(dòng)電機(jī)的嗎?我用的是L298N,你看看你還能寫下代碼參考參考嗎[em3 ...

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


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

作者: dzbj    時(shí)間: 2017-4-14 15:33
彬Lsl 發(fā)表于 2017-4-14 14:58
大神啊,我的基礎(chǔ)差,看不懂

補(bǔ)充

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

程序里 你另外定義一個(gè)端口是ENA

sbit ENA=PX^X;

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


作者: 彬Lsl    時(shí)間: 2017-4-14 19:44
dzbj 發(fā)表于 2017-4-14 15:26
我現(xiàn)在在上班 沒法給你寫 看了一下L298N的手冊(cè) 和我用的9110基本上是一樣的控制方法 多兩個(gè)EN使能端 見下 ...

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

作者: dzbj    時(shí)間: 2017-4-14 19:55
彬Lsl 發(fā)表于 2017-4-14 19:44
我覺得接上限位開關(guān)后,還是不行,試過挺多方式還是不行

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

給你簡單說一下步驟吧

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

我自己做東西都要搭實(shí)驗(yàn)臺(tái) 模擬使用環(huán)境的 也不是一次成功 上去不行太正常了 肯定哪有問題唄
作者: 彬Lsl    時(shí)間: 2017-4-15 09:04
dzbj 發(fā)表于 2017-4-14 19:55
那就不是我這么臆測能解決了 需要你自己一步一步檢查 至少 你要描述出每一步的狀況才能幫你了 一切皆有可 ...

代碼有點(diǎn)問題,現(xiàn)在有點(diǎn)像自己要的結(jié)果了
作者: 彬Lsl    時(shí)間: 2017-4-22 10:20
dzbj 發(fā)表于 2017-4-11 02:13
困了 隨便弄了一下 可能有很多錯(cuò)誤 電路圖畫的不細(xì) 不能直接用 缺一些下拉電阻什么的 程序沒仔細(xì)想 按思路 ...

請(qǐng)問如果再加上點(diǎn)觸開關(guān)控制正反轉(zhuǎn),碰到限位就停,思路又是怎樣的呢
作者: sxxy    時(shí)間: 2018-5-11 00:45
萌新一個(gè),怎樣將限位開關(guān)接在51單片機(jī)控制的控制電路上。控制電路接驅(qū)動(dòng)器控制步進(jìn)電機(jī)正反轉(zhuǎn)的
作者: 喜士多    時(shí)間: 2018-8-13 17:30
sxxy 發(fā)表于 2018-5-11 00:45
萌新一個(gè),怎樣將限位開關(guān)接在51單片機(jī)控制的控制電路上。控制電路接驅(qū)動(dòng)器控制步進(jìn)電機(jī)正反轉(zhuǎn)的

請(qǐng)問知道了嗎。我也是萌新
作者: 喜士多    時(shí)間: 2018-8-13 17:30
sxxy 發(fā)表于 2018-5-11 00:45
萌新一個(gè),怎樣將限位開關(guān)接在51單片機(jī)控制的控制電路上。控制電路接驅(qū)動(dòng)器控制步進(jìn)電機(jī)正反轉(zhuǎn)的

我也是萌新請(qǐng)問你會(huì)了嗎
作者: 喜士多    時(shí)間: 2018-8-13 17:31
sxxy 發(fā)表于 2018-5-11 00:45
萌新一個(gè),怎樣將限位開關(guān)接在51單片機(jī)控制的控制電路上。控制電路接驅(qū)動(dòng)器控制步進(jìn)電機(jī)正反轉(zhuǎn)的

我也是萌新請(qǐng)問你會(huì)了嗎
作者: diy123    時(shí)間: 2018-9-15 21:10

不知道你什么電機(jī)
作者: wrl123456    時(shí)間: 2020-5-29 05:44
158640752 發(fā)表于 2017-4-11 13:24
#include

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




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 成人精品毛片 | 日日爱av| 神马影院一区二区三区 | 一级片在线观看 | 久久久123 | 女朋友的闺蜜3韩国三级 | 成人免费毛片在线观看 | 久久另类视频 | 天天艹天天干天天 | 国产精品久久久久久吹潮日韩动画 | 国产目拍亚洲精品99久久精品 | 精精国产xxxx视频在线野外 | 日韩精品免费在线观看 | 男人的天堂在线视频 | 亚洲色综合| 国产精品永久免费视频 | 电影午夜精品一区二区三区 | 欧洲性生活视频 | 亚洲欧美日韩精品久久亚洲区 | 亚洲成人999 | 欧美精品在线一区二区三区 | 青娱乐自拍 | 欧美在线高清 | 视频一区二区中文字幕日韩 | 亚洲午夜精品视频 | a级片www| 精品国产一区二区三区性色av | 日韩久草 | 精品国产欧美一区二区三区成人 | 亚洲天堂影院 | 91久久综合| 亚洲国产精品va在线看黑人 | 中文字幕一区二区三 | 在线欧美视频 | 国产精品久久久久久久久久免费看 | 一级在线观看 | 麻豆久久久久 | av一二三区 | 天天操天天干天天爽 | 日本成人午夜影院 | 免费观看a级毛片在线播放 黄网站免费入口 |