欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

單片機+舵機不能控制速度嗎?轉的太快了,能不能慢慢的轉?

查看數: 5439 | 評論數: 21 | 收藏 1
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2021-8-14 10:18

正文摘要:

舵機不能控制速度嗎?轉的太快了,一按不到1秒時間就轉到位了。能不能慢慢的轉?轉它割10秒鐘到位

回復

ID:960619 發表于 2021-11-5 22:15
本帖最后由 baobao125 于 2021-11-5 22:26 編輯

剛接觸舵機,這是延時減速旋轉的,調整a和PWM_count可以實現更平滑旋轉
#include <STC15F2K60S2.H>
sbit SG_PWM=P1^1;
unsigned int count=0;
unsigned int PWM_count=115;                  
unsigned int a=0;






void Timer_Init()        //5微秒@11.0592MHz
{
        AUXR |= 0x80;                //定時器時鐘1T模式
        TMOD &= 0xF0;                //設置定時器模式
        TL0 = 0xC9;                //設置定時初始值
        TH0 = 0xFF;                //設置定時初始值
        TF0 = 0;                //清除TF0標志
        TR0 = 1;                //定時器0開始計時
        ET0=1;          //打開定時器0的中斷
        EA=1;           //開總中斷
}

void Timer() interrupt 1   
{

TR0 = 0;
  if(count<=PWM_count)
  {
    SG_PWM=1;
  }
  else
  {
    SG_PWM=0;
  }
  count++;
  if(count>=4000)
  {
    count=0;
    a++;
  }
  TR0 = 1;
}
void main()
{
  Timer_Init();
  while(1)
  {
      
      if(a>=10)
      {
              PWM_count+=5;
        a=0;
    }
  }
}
ID:916499 發表于 2021-8-17 15:35
一步一步的走,或者對轉矩要求不大的時候,加個電阻
ID:161164 發表于 2021-8-16 13:55
Jiang_YY 發表于 2021-8-16 11:11
你這個的調速函數里應該就是平滑變化的,樓主的調速函數在中斷內直接跳到了最后需要的角度,所以你們說不 ...

對啊~但樓主好像看不到
ID:959346 發表于 2021-8-16 11:11
lkc8210 發表于 2021-8-15 00:24
呵呵,不是不可能,只是你不能以下片段示范了-90/0/+90 及 快慢速控制
Key1 = -90, Key2 = 0, Key3 = +9 ...

你這個的調速函數里應該就是平滑變化的,樓主的調速函數在中斷內直接跳到了最后需要的角度,所以你們說不到一處
ID:959346 發表于 2021-8-16 11:07

你這個沒有說明,是啥情況?跟你最開始的比較,應該會有點變化了吧。你的 delay_ms(100); 時間要大于你定時器中斷count從0到最大值(你程序內是40吧)一個循環用的時間,這樣你調起來才會根據你的設想變化。
ID:475031 發表于 2021-8-15 12:21
Jiang_YY 發表于 2021-8-14 22:39
你在開始的時候EA=0; 都不進中斷了,一直到 EA=1; 之前,這段時間都沒有進中斷,舵機都沒有操作,直到EA= ...
  1. void main()
  2. {
  3.   Timer_Init();
  4.   while(1)
  5.   {
  6.    if(Key_1==0)
  7.    {
  8.      delay(10);
  9.      EA=1;
  10.      if(Key_1==0)
  11.      {
  12.         delay_ms(100);//1000ms毫秒=1s秒
  13.                          PWM_count=5;//0度  角度
  14.                                  delay_ms(100);//1000ms毫秒=1s秒
  15.                          PWM_count=4.9;//0度  角度
  16.                                  delay_ms(100);//1000ms毫秒=1s秒
  17.                          PWM_count=4.8;//0度  角度
  18.                                  delay_ms(100);//1000ms毫秒=1s秒
  19.                          PWM_count=4.7;//0度  角度
  20.                          delay_ms(100);//1000ms毫秒=1s秒
  21.                          PWM_count=4.6;//0度  角度
  22.                          
  23.                          delay_ms(100);//1000ms毫秒=1s秒
  24.                          PWM_count=4.5;//0度  角度
  25.                          delay_ms(100);//1000ms毫秒=1s秒
  26.                          PWM_count=4.4;//0度  角度
  27.                          delay_ms(100);//1000ms毫秒=1s秒
  28.                          PWM_count=4.3;//0度  角度
  29.                          delay_ms(100);//1000ms毫秒=1s秒
  30.                          PWM_count=4.2;//0度  角度
  31.                          delay_ms(100);//
  32.                          PWM_count=4.1;//45度  角度
  33.                                                                                                                    delay_ms(100);//
  34.                          PWM_count=4;//45度  角度
  35.                                                                                                                    delay_ms(100);//
  36.                          PWM_count=3.9;//45度  角度
  37.                                                                                                                    delay_ms(100);//
  38.                          PWM_count=3.8;//45度  角度
  39.                                                                                                                    delay_ms(100);//
  40.                          PWM_count=3.7;//45度  角度
  41.                          delay_ms(100);//1000ms毫秒=1s秒
  42.                          PWM_count=3.6;//0度  角度
  43.                           delay_ms(100);//1000ms毫秒=1s秒
  44.                          PWM_count=3.5;//0度  角度
  45.                                                                                                   delay_ms(100);//1000ms毫秒=1s秒
  46.                          PWM_count=3.4;//0度  角度
  47.                                                                                                   delay_ms(100);//1000ms毫秒=1s秒
  48.                          PWM_count=3.3;//0度  角度
  49.                                                                                                   delay_ms(100);//1000ms毫秒=1s秒
  50.                          PWM_count=3.2;//0度  角度
  51.                                                                                                  
  52.                          delay_ms(100);//
  53.                          PWM_count=3.1;//90度  角度
  54.                                                                                                  delay_ms(100);//
  55.                          PWM_count=3;//90度  角度
  56.                                                                                                  delay_ms(100);//
  57.                          PWM_count=2.9;//90度  角度
  58.                                                                                                  delay_ms(100);//
  59.                          PWM_count=2.8;//90度  角度
  60.                                                                                                  delay_ms(100);//
  61.                          PWM_count=2.7;//90度  角度
  62.                          delay_ms(100);//1000ms毫秒=1s秒
  63.                          PWM_count=2.6;//0度  角度
  64.                          delay_ms(100);//
  65.                          PWM_count=2.5;//90度  角度
  66.                                                                                                  delay_ms(100);//
  67.                          PWM_count=2.4;//90度  角度
  68.                                                                                                  delay_ms(100);//
  69.                          PWM_count=2.3;//90度  角度
  70.                                                                                                  delay_ms(100);//
  71.                          PWM_count=2.2;//90度  角度
  72.                                                                                                  
  73.                                                                                                  
  74.                          delay_ms(100);//
  75.                          PWM_count=2.1;//135度  角度
  76.                                                                                                  delay_ms(100);//
  77.                          PWM_count=2;//135度  角度
  78.                                                                                                  delay_ms(100);//
  79.                          PWM_count=1.9;//135度  角度
  80.                                                                                                  delay_ms(100);//
  81.                          PWM_count=1.8;//135度  角度
  82.                                                                                                  delay_ms(100);//
  83.                          PWM_count=1.7;//135度  角度
  84.                          delay_ms(100);//1000ms毫秒=1s秒
  85.                          PWM_count=1.6;//0度  角度
  86.                          delay_ms(100);//
  87.                          PWM_count=1.5;//135度  角度
  88.                                                                                                  delay_ms(100);//
  89.                          PWM_count=1.4;//135度  角度
  90.                                                                                                  delay_ms(100);//
  91.                          PWM_count=1.3;//135度  角度
  92.                                                                                                  delay_ms(100);//
  93.                          PWM_count=1.2;//135度  角度
  94.                          delay_ms(100);//
  95.                          PWM_count=1.1;//180度  角度
  96.                                                                                                                           delay_ms(100);//
  97.                          PWM_count=1;//180度  角度
  98.                
  99.       count=0;
  100.       EA=1;
  101.      }
  102.      while(!Key_1);
  103.    }
  104.    if(Key_2==0)
  105.    {
  106.      delay(10);
  107.      EA=1;
  108.      if(Key_2==0)
  109.      {
  110.         delay_ms(100);//1000ms毫秒=1s秒
  111.                          PWM_count=1.1;//0度  角度
  112.                                  delay_ms(100);//1000ms毫秒=1s秒
  113.                          PWM_count=1.2;//0度  角度
  114.                                  delay_ms(100);//1000ms毫秒=1s秒
  115.                          PWM_count=1.3;//0度  角度
  116.                                  delay_ms(100);//1000ms毫秒=1s秒
  117.                          PWM_count=1.4;//0度  角度
  118.                          delay_ms(100);//1000ms毫秒=1s秒
  119.                          PWM_count=1.5;//0度  角度
  120.                          
  121.                          delay_ms(100);//1000ms毫秒=1s秒
  122.                          PWM_count=1.6;//0度  角度
  123.                          delay_ms(100);//1000ms毫秒=1s秒
  124.                          PWM_count=1.7;//0度  角度
  125.                          delay_ms(100);//1000ms毫秒=1s秒
  126.                          PWM_count=1.8;//0度  角度
  127.                          delay_ms(100);//1000ms毫秒=1s秒
  128.                          PWM_count=1.9;//0度  角度
  129.                          delay_ms(100);//
  130.                          PWM_count=2;//45度  角度
  131.                                                                                                                    delay_ms(100);//
  132.                          PWM_count=2.1;//45度  角度
  133.                                                                                                                    delay_ms(100);//
  134.                          PWM_count=2.2;//45度  角度
  135.                                                                                                                    delay_ms(100);//
  136.                          PWM_count=2.3;//45度  角度
  137.                                                                                                                    delay_ms(100);//
  138.                          PWM_count=2.4;//45度  角度
  139.                          delay_ms(100);//1000ms毫秒=1s秒
  140.                          PWM_count=2.5;//0度  角度
  141.                           delay_ms(100);//1000ms毫秒=1s秒
  142.                          PWM_count=2.6;//0度  角度
  143.                                                                                                   delay_ms(100);//1000ms毫秒=1s秒
  144.                          PWM_count=2.7;//0度  角度
  145.                                                                                                   delay_ms(100);//1000ms毫秒=1s秒
  146.                          PWM_count=2.8;//0度  角度
  147.                                                                                                   delay_ms(100);//1000ms毫秒=1s秒
  148.                          PWM_count=2.9;//0度  角度
  149.                                                                                                  
  150.                          delay_ms(100);//
  151.                          PWM_count=3;//90度  角度
  152.                                                                                                  delay_ms(100);//
  153.                          PWM_count=3.1;//90度  角度
  154.                                                                                                  delay_ms(100);//
  155.                          PWM_count=3.2;//90度  角度
  156.                                                                                                  delay_ms(100);//
  157.                          PWM_count=3.3;//90度  角度
  158.                                                                                                  delay_ms(100);//
  159.                          PWM_count=3.4;//90度  角度
  160.                          delay_ms(100);//1000ms毫秒=1s秒
  161.                          PWM_count=3.5;//0度  角度
  162.                          delay_ms(100);//
  163.                          PWM_count=3.6;//90度  角度
  164.                                                                                                  delay_ms(100);//
  165.                          PWM_count=3.7;//90度  角度
  166.                                                                                                  delay_ms(100);//
  167.                          PWM_count=3.8;//90度  角度
  168.                                                                                                  delay_ms(100);//
  169.                          PWM_count=3.9;//90度  角度
  170.                                                                                                  
  171.                                                                                                  
  172.                          delay_ms(100);//
  173.                          PWM_count=4;//135度  角度
  174.                                                                                                  delay_ms(100);//
  175.                          PWM_count=4.1;//135度  角度
  176.                                                                                                  delay_ms(100);//
  177.                          PWM_count=4.2;//135度  角度
  178.                                                                                                  delay_ms(100);//
  179.                          PWM_count=4.3;//135度  角度
  180.                                                                                                  delay_ms(100);//
  181.                          PWM_count=4.4;//135度  角度
  182.                          delay_ms(100);//1000ms毫秒=1s秒
  183.                          PWM_count=4.5;//0度  角度
  184.                          delay_ms(100);//
  185.                          PWM_count=4.6;//135度  角度
  186.                                                                                                  delay_ms(100);//
  187.                          PWM_count=4.7;//135度  角度
  188.                                                                                                  delay_ms(100);//
  189.                          PWM_count=4.8;//135度  角度
  190.                                                                                                  delay_ms(100);//
  191.                          PWM_count=4.9;//135度  角度
  192.                          delay_ms(100);//
  193.                          PWM_count=5;//180度  角度
  194.                
  195.       count=0;
  196.       EA=1;
  197.      }
  198.      while(!Key_2);
  199.    }   
  200.   }
  201. }
復制代碼

ID:420836 發表于 2021-8-15 09:04
這是個好信息,謝謝分享。
ID:939710 發表于 2021-8-15 06:37
自己設個目標值,可以用pid或者其他方法平滑增加或減少到目標值
ID:161164 發表于 2021-8-15 00:24
鬼推磨 發表于 2021-8-14 21:25
大師,你說的根本不可能實現。資料網上找遍了,。
沒有一例能成功控制舵機速度的,
都是只是停留在紙上 ...

呵呵,不是不可能,只是你不能以下片段示范了-90/0/+90 及 快慢速控制
Key1 = -90, Key2 = 0, Key3 = +90, Key4 = 快慢速
示波器顯示了PWM轉換速度


ID:959346 發表于 2021-8-14 22:39
鬼推磨 發表于 2021-8-14 18:55
這樣嗎?試過了; 。沒有效果。依然快速旋轉的,

你在開始的時候EA=0; 都不進中斷了,一直到 EA=1; 之前,這段時間都沒有進中斷,舵機都沒有操作,直到EA=1; 開中斷后,舵機才開始操作,這時候你的角度已經是直接到最后的角度了,中間的操作根本沒有起到作用。你先把EA=0 改成 EA=1; 簡單點看看效果,再自己細調吧。
ID:161164 發表于 2021-8-14 22:04
鬼推磨 發表于 2021-8-14 18:55
這樣嗎?試過了; 。沒有效果。依然快速旋轉的,

你知道EA=0;和EA=1;代表什么嗎?
ID:475031 發表于 2021-8-14 21:25
lkc8210 發表于 2021-8-14 12:50
你的角度分辨率太低了
而且角度改變又太突然,沒有緩沖
以下是舵機控制信號

大師,你說的根本不可能實現。資料網上找遍了,。
沒有一例能成功控制舵機速度的,
都是只是停留在紙上談兵理論,,,
根本不可能實現速度控制, 是我多想了。
ID:424598 發表于 2021-8-14 21:24
uchar最大才支持255,你輸1000有啥用,要換成uint
ID:475031 發表于 2021-8-14 18:55
szb314 發表于 2021-8-14 11:23
把180度分解開,每間隔一定時間轉一個角度。。這種問題哪怕自己動腳趾頭想一想也就知道了。。非得動手發帖 ...

你這個方案不行,我試過
ID:475031 發表于 2021-8-14 18:55
Jiang_YY 發表于 2021-8-14 12:10
不要一次轉180度,慢慢加到180度試一下。
  1. if(Key_2==0)
  2.    {
  3.      delay(10);
  4.      EA=0;
  5.      if(Key_2==0)
  6.      {
  7.        delay_ms(1000);//1000ms毫秒=1s秒
  8.                          PWM_count=1;/0度  角度
  9.                          delay_ms(1000);/
  10.                          PWM_count=2;//45度  角度
  11.                          delay_ms(1000);/
  12.                          PWM_count=3;//90度  角度
  13.                          delay_ms(1000);/
  14.                          PWM_count=4;//135度  角度
  15.                          delay_ms(1000);//
  16.                          PWM_count=5;//180度  角度
  17.        
  18.                
  19.       count=0;
  20.       EA=1;
  21.      }
復制代碼
這樣嗎?試過了; 。沒有效果。依然快速旋轉的,
ID:960487 發表于 2021-8-14 13:50
舵機一步高電平, 一步低電平, 然后等待一個時間段, 再循環如此, 就可以慢了
ID:161164 發表于 2021-8-14 12:50
你的角度分辨率太低了
而且角度改變又太突然,沒有緩沖
以下是舵機控制信號


可以見到由0到90度之間的高電平時間差為500us
即5.55us一度
如不需太細分角度,可把定時器設為55us
count的最大值為:20000us / 55us = 363
而PWM_count對應各角度的值就自己算吧


緩沖問題可以在按鍵時不直接對PWM_count賦值
而是另開一個暫存變數如PWM_count_buff
再另加程序
if(PWM_count_buff > PWM_count){
PWM_count++;
}
if(PWM_count_buff < PWM_count){
PWM_count--;
}
以上兩個If的更新速度就是轉動速度

ID:951194 發表于 2021-8-14 12:41
控制pwm的占空比來調速
ID:342822 發表于 2021-8-14 12:38
計數初值設置為0.5ms每次步進0.1ms暫停?直到2.5ms試試看
ID:959346 發表于 2021-8-14 12:10
不要一次轉180度,慢慢加到180度試一下。
ID:807591 發表于 2021-8-14 11:23
把180度分解開,每間隔一定時間轉一個角度。。這種問題哪怕自己動腳趾頭想一想也就知道了。。非得動手發帖。。

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表