找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

51單片機(jī)控制舵機(jī)嘗試

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:424317 發(fā)表于 2020-2-21 10:14 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
本來(lái)想要寫(xiě)一篇關(guān)于如何用STC89C52來(lái)控制舵機(jī)的帖子,結(jié)果發(fā)現(xiàn)舵機(jī)一般有三根線
白色的是信號(hào)線,接單片機(jī)的一個(gè)IO口,
紅色的是電源線,接單片機(jī)的vcc,
黑色的也是電源線,接單片機(jī)的GND,
但是這三根線是并在一起的,因?yàn)槭谴髣?chuàng)項(xiàng)目有不好破壞性的拆開(kāi)。
現(xiàn)在在家因?yàn)橐咔橛植环奖愠鋈ィ鋈ヒ矝](méi)有杜邦線買(mǎi),現(xiàn)在物流也不是很方便。
所以想要控制舵機(jī)請(qǐng)務(wù)必準(zhǔn)備三根公對(duì)母的杜邦線,否則就會(huì)像我一樣嘗嘗失敗的滋味。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:679411 發(fā)表于 2020-2-24 22:01 | 只看該作者
舵機(jī)怎么控制呀,能分享一下程序嗎?
回復(fù)

使用道具 舉報(bào)

板凳
ID:679411 發(fā)表于 2020-2-24 22:02 | 只看該作者
舵機(jī)怎么控制,能分享一下程序嗎?
回復(fù)

使用道具 舉報(bào)

地板
ID:155507 發(fā)表于 2020-2-29 07:28 | 只看該作者
單片機(jī)源程序如下:

  1. #include <reg52.h>
  2. sbit SG_PWM=P0^0;
  3. unsigned char count=0;
  4. unsigned char PWM_count=3;                  //1--0度,2--45度,3--90度,4--135度,5--180度
  5. unsigned char a=0;
  6. void Timer_Init()
  7. {
  8.         TMOD|=0X01;      //T0定時(shí)方式1
  9.         TH0=0Xfe;
  10.         TL0=0X33;       //計(jì)數(shù)初值設(shè)置為0.5ms
  11.         ET0=1;          //打開(kāi)定時(shí)器0的中斷
  12.         TR0=1;          //打開(kāi)定時(shí)器0
  13.         EA=1;           //開(kāi)總中斷
  14. }
  15. void Timer() interrupt 1      //特別注意此處,0--外部中斷0,1--定時(shí)器中斷0,2--外部中斷1,3--定時(shí)器中斷1,4--串行口中斷1
  16. {
  17.         TR0=0;
  18.         TH0=0Xfe;
  19.         TL0=0X33;       //重新賦計(jì)數(shù)初值為0.5ms
  20.         if(count<=PWM_count)
  21.         {
  22.                 SG_PWM=1;
  23.         }
  24.         else
  25.         {
  26.                 SG_PWM=0;
  27.         }
  28.         count++;
  29.         if(count>=40)
  30.         {
  31.                 count=0;
  32.                 a++;
  33.         }
  34.         TR0=1;
  35. }
  36. void main()
  37. {
  38.         Timer_Init();
  39.         while(1)
  40.         {
  41.                 if(a==16)                             //20是比較舒服的連貫動(dòng)作,20以上動(dòng)作些許不連貫  10的時(shí)候出現(xiàn)打架情況,15的時(shí)候打架幾乎沒(méi)有,16比較完美
  42.                 {
  43.                         PWM_count=1;
  44.                 }
  45.                 if(a==32)
  46.                 {
  47.                         PWM_count=3;
  48.                         a=0;
  49.                 }
  50.         }
  51. }

復(fù)制代碼


這是51黑論壇里面別人分享類(lèi)似程序參考
http://www.torrancerestoration.com/bbs/dpj-156595-1.html

回復(fù)

使用道具 舉報(bào)

5#
ID:700124 發(fā)表于 2020-2-29 14:40 | 只看該作者
支持,來(lái)學(xué)習(xí)了!
回復(fù)

使用道具 舉報(bào)

6#
ID:321942 發(fā)表于 2020-3-1 15:43 | 只看該作者
舵機(jī)怎么控制呀,能分享一下程序嗎?
回復(fù)

使用道具 舉報(bào)

7#
ID:703826 發(fā)表于 2020-3-6 23:23 來(lái)自手機(jī) | 只看該作者
有教程嗎?分享下
回復(fù)

使用道具 舉報(bào)

8#
ID:704119 發(fā)表于 2020-3-7 16:39 | 只看該作者
舵機(jī)怎么控制呀,能分享一下程序嗎?
回復(fù)

使用道具 舉報(bào)

9#
ID:703745 發(fā)表于 2020-3-7 20:03 來(lái)自手機(jī) | 只看該作者
請(qǐng)問(wèn)樓主晶振是11.0592嗎
回復(fù)

使用道具 舉報(bào)

10#
ID:303735 發(fā)表于 2020-3-10 10:01 | 只看該作者
經(jīng)過(guò)我的測(cè)試舵機(jī)0度位置送信號(hào)50HZ1.5MS,向右轉(zhuǎn)45度送50HZ2MS,向左轉(zhuǎn)45度送信號(hào)50HZ1MS,準(zhǔn)備做個(gè)遙控船放長(zhǎng)線釣大魚(yú)。
回復(fù)

使用道具 舉報(bào)

11#
ID:298522 發(fā)表于 2020-3-12 23:50 | 只看該作者
可以的
回復(fù)

使用道具 舉報(bào)

12#
ID:708044 發(fā)表于 2020-3-14 07:29 | 只看該作者
能分享一下程序嗎?
回復(fù)

使用道具 舉報(bào)

13#
ID:284107 發(fā)表于 2020-3-15 21:12 來(lái)自手機(jī) | 只看該作者
中斷過(guò)程中為何丅R0關(guān)閉
回復(fù)

使用道具 舉報(bào)

14#
ID:716353 發(fā)表于 2020-3-26 17:25 | 只看該作者
謝謝樓主
回復(fù)

使用道具 舉報(bào)

15#
ID:717002 發(fā)表于 2020-3-27 16:14 | 只看該作者
能分享一下程序嗎
回復(fù)

使用道具 舉報(bào)

16#
ID:719302 發(fā)表于 2020-3-31 09:55 | 只看該作者
舵機(jī)怎么控制呀,能分享一下程序嗎?
回復(fù)

使用道具 舉報(bào)

17#
ID:639290 發(fā)表于 2020-4-14 09:05 | 只看該作者
Mr韓先森 發(fā)表于 2020-3-1 15:43
舵機(jī)怎么控制呀,能分享一下程序嗎?

51單片機(jī)舵機(jī)控制原理+程序(單個(gè)和多個(gè)的舵機(jī)控制都有)
http://www.torrancerestoration.com/bbs/dpj-184738-1.html
(出處: 單片機(jī)論壇)
回復(fù)

使用道具 舉報(bào)

18#
ID:639290 發(fā)表于 2020-4-14 09:06 | 只看該作者
tang1140461770 發(fā)表于 2020-3-31 09:55
舵機(jī)怎么控制呀,能分享一下程序嗎?

51單片機(jī)舵機(jī)控制原理+程序(單個(gè)和多個(gè)的舵機(jī)控制都有)
http://www.torrancerestoration.com/bbs/dpj-184738-1.html
(出處: 單片機(jī)論壇)
回復(fù)

使用道具 舉報(bào)

19#
ID:639290 發(fā)表于 2020-4-14 09:06 | 只看該作者
2409297096 發(fā)表于 2020-2-24 22:02
舵機(jī)怎么控制,能分享一下程序嗎?

51單片機(jī)舵機(jī)控制原理+程序(單個(gè)和多個(gè)的舵機(jī)控制都有)
http://www.torrancerestoration.com/bbs/dpj-184738-1.html
(出處: 單片機(jī)論壇)
回復(fù)

使用道具 舉報(bào)

20#
ID:333080 發(fā)表于 2020-4-14 09:30 | 只看該作者
點(diǎn)贊,漂亮
回復(fù)

使用道具 舉報(bào)

21#
ID:157113 發(fā)表于 2020-4-17 08:48 | 只看該作者
支持,謝謝分享
回復(fù)

使用道具 舉報(bào)

22#
ID:680646 發(fā)表于 2020-4-21 17:08 | 只看該作者
#include <reg52.h>
unsigned char count;      //0.5ms次數(shù)標(biāo)識(shí)
sbit pwm =P3^5;          //PWM信號(hào)輸出
sbit jia =P1^2;           //角度增加按鍵檢測(cè)IO口
sbit jan =P1^3;           //角度減少按鍵檢測(cè)IO口
unsigned char jd;         //角度標(biāo)識(shí)
void delay(unsigned char i)//延時(shí)
{
  unsigned char j,k;
  for(j=i;j>0;j--)
    for(k=125;k>0;k--);
}
void Time0_Init()          //定時(shí)器初始化
{
TMOD = 0x01;           //定時(shí)器0工作在方式1   
IE   = 0x82;
TH0  = 0xfe;
TL0  = 0x33;     //11.0592MZ晶振,0.5ms
    TR0=1;                 //定時(shí)器開(kāi)始
}
void Time0_Int() interrupt 1 //中斷程序
{
TH0  = 0xfe;             //重新賦值
TL0  = 0x33;
    if(count< jd)              //判斷0.5ms次數(shù)是否小于角度標(biāo)識(shí)
      pwm=1;                  //確實(shí)小于,PWM輸出高電平
    else
      pwm=0;                  //大于則輸出低電平
    count+=1;          //0.5ms次數(shù)加1
    count=count%40;     //次數(shù)始終保持為40 即保持周期為20ms
}
void keyscan()              //按鍵掃描
{
   if(jia==0)               //角度增加按鍵是否按下
  {
    delay(10);              //按下延時(shí),消抖
    if(jia==0)              //確實(shí)按下
     {
      jd++;                 //角度標(biāo)識(shí)加1
      count=0;              //按鍵按下 則20ms周期從新開(kāi)始
      if(jd==6)
        jd=5;               //已經(jīng)是180度,則保持
      while(jia==0);        //等待按鍵放開(kāi)
     }
  }
  if(jan==0)                //角度減小按鍵是否按下
  {
    delay(10);
    if(jan==0)
     {
      jd--;                 //角度標(biāo)識(shí)減1
      count=0;
      if(jd==0)
        jd=1;               //已經(jīng)是0度,則保持
      while(jan==0);
     }
  }
}
void main()
{
jd=1;
count=0;
Time0_Init();            
while(1)
{
  keyscan();               //按鍵掃描
  
}
}
這是我昨天 能控制舵機(jī)的代碼,其他網(wǎng)站拿的,用按鍵控制它轉(zhuǎn),有點(diǎn)舒服
回復(fù)

使用道具 舉報(bào)

23#
ID:739176 發(fā)表于 2020-4-27 11:45 | 只看該作者
沒(méi)看明白
回復(fù)

使用道具 舉報(bào)

24#
ID:818060 發(fā)表于 2020-9-11 23:30 | 只看該作者
wuzufeng 發(fā)表于 2020-4-21 17:08
#include
unsigned char count;      //0.5ms次數(shù)標(biāo)識(shí)
sbit pwm =P3^5;          //PWM信號(hào)輸出

有接線教程嗎,正極可直接接在芯片右上角的VCC管腳?
回復(fù)

使用道具 舉報(bào)

25#
ID:818060 發(fā)表于 2020-9-11 23:32 | 只看該作者
數(shù)字和模擬舵機(jī)都通用的代碼么?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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