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

QQ登錄

只需一步,快速開始

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

求助關(guān)于模擬舵機(jī)的連續(xù)轉(zhuǎn)向問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:630001 發(fā)表于 2019-11-29 08:37 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
之前一直在搞舵機(jī)(stc89c52rc芯片),遇到了不少問題,還望大神相助
問題1,模擬舵機(jī)是不是只有0,45,90,135,180這幾個(gè)角度可以定位,如果不是,如何通過控制pwm信號(hào)使得舵機(jī)轉(zhuǎn)到某個(gè)角度(不要求精確)
       2,如何在僅使用一個(gè)定時(shí)器的情況下實(shí)現(xiàn)舵機(jī)在兩不同角度內(nèi)轉(zhuǎn)動(dòng)。
       3,不同舵機(jī)即使在相同程序測(cè)試情況下,轉(zhuǎn)動(dòng)穩(wěn)定性并不一致,如何對(duì)于舵機(jī)進(jìn)行參數(shù)調(diào)整
       4,一直有看到對(duì)于雙舵機(jī)同角度轉(zhuǎn)動(dòng)程序,那么若使用兩個(gè)舵機(jī)實(shí)現(xiàn)不同角度轉(zhuǎn)動(dòng),51單片機(jī)的輸出能力是否足夠。
問題不是太難,但希望大神們能給一些具體一點(diǎn)的回答,我雖然在百度等處搜索了一些資料,但仍覺不能太清楚地理解。無(wú)他物相與,唯有謝謝二字奉上,謝謝。
注:舵機(jī)型號(hào)mg996r,sg90.
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:638524 發(fā)表于 2019-11-29 12:48 | 只看該作者
1.舵機(jī)不是只有那幾個(gè)角度?梢酝ㄟ^pwm給舵機(jī)周期20ms的高電平時(shí)間為1ms到2ms的范圍來(lái)控制。我在網(wǎng)上看到說是1ms的占空比,往左邊極限位置轉(zhuǎn)動(dòng),1.5ms時(shí)保持不動(dòng),2ms時(shí)往右邊位置轉(zhuǎn)動(dòng)。但是我也不太清楚如何具體精確控制轉(zhuǎn)動(dòng)多少,但是你可以在論壇看看,我記得我看到過的
2.額,具體我也不太懂,我沒控制過。
3.
4.輸出能力不用太考慮,因?yàn)橹皇墙o信號(hào),不是像電機(jī)需要很大的電流一直驅(qū)動(dòng),只要供上電源,給pwm信號(hào)就行了吧我覺得

評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

板凳
ID:638524 發(fā)表于 2019-11-29 13:00 | 只看該作者
3.我看了網(wǎng)上幾個(gè)舵機(jī),好像他的占空比范圍不一樣,就是一個(gè)周期內(nèi)高電平最低持續(xù)時(shí)間有0.5ms的,,只是這個(gè)范圍不一樣,對(duì)應(yīng)的都是0到180度,所以可以在程序里加個(gè)中間變量自動(dòng)轉(zhuǎn)換,pwm變量里面是角度,里面自動(dòng)按照比例轉(zhuǎn)換成相應(yīng)占空比。我想大概就是這樣。
我室友有個(gè)舵機(jī),我下午可以做做實(shí)驗(yàn),貼上代碼

評(píng)分

參與人數(shù) 1黑幣 +40 收起 理由
admin + 40 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

地板
ID:630001 發(fā)表于 2019-11-29 15:01 來(lái)自手機(jī) | 只看該作者
liaojiaao 發(fā)表于 2019-11-29 13:00
3.我看了網(wǎng)上幾個(gè)舵機(jī),好像他的占空比范圍不一樣,就是一個(gè)周期內(nèi)高電平最低持續(xù)時(shí)間有0.5ms的,,只是這 ...

感謝大佬
回復(fù)

使用道具 舉報(bào)

5#
ID:638524 發(fā)表于 2019-11-29 15:03 | 只看該作者
不好意思,我也沒搞懂。我看了這位的51單片機(jī)控制MG996R舵機(jī)源程序。
  1. #include<reg52.h>
  2. sbit pwm = P0^0;
  3. unsigned char jd;
  4. unsigned char count = 0;
  5. void t0_init()
  6. {
  7.         TMOD = 0x01;
  8.         TH0 = (65536 - 500)/256;  //我是12m的晶振500us
  9.         TL0 = (65536 - 500)%256;
  10.         EA = 1;
  11.         ET0 = 1;
  12.         TR0 = 1;       
  13. }

  14. void t0_interrupt() interrupt 1
  15. {
  16.         TH0 = (65536 - 500)/256;
  17.         TL0 = (65536 - 500)%256;
  18.        
  19.         if(count < jd)
  20.                 pwm = 1;
  21.         else
  22.                 pwm = 0;
  23.         count++;
  24.         count = count%40;
  25. }
  26. void delay()
  27. {
  28.         unsigned char tt=100;
  29.         unsigned char dd=250;
  30.         while(tt--)
  31.         {
  32.                 dd = 250;
  33.                 while(dd--);
  34.         }
  35. }
  36. void main()
  37. {
  38.         jd = 2;
  39.         t0_init();
  40.         delay();
  41.         jd = 3;
  42.         delay();
  43.         jd = 4;
  44.         while(1);
  45.        
  46. }
復(fù)制代碼

我也迷惑了
回復(fù)

使用道具 舉報(bào)

6#
ID:630001 發(fā)表于 2019-11-30 08:37 來(lái)自手機(jī) | 只看該作者
liaojiaao 發(fā)表于 2019-11-29 15:03
不好意思,我也沒搞懂。我看了這位的51單片機(jī)控制MG996R舵機(jī)源程序。

我也迷惑了

中斷函數(shù)應(yīng)該控制的是pwm信號(hào),延時(shí)函數(shù)寫的是為了延長(zhǎng)對(duì)應(yīng)時(shí)間,保證舵機(jī)在此時(shí)間內(nèi)可以轉(zhuǎn)到某個(gè)位置,jd(角度)變量則是控制轉(zhuǎn)動(dòng)角度的變量。按照一定占空比算出來(lái)的。這樣看來(lái),只需要控制jd count的比例即可轉(zhuǎn)動(dòng)不同角度。前提就是定時(shí)器的賦值問題了。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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