在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

51單片機控制舵機的教程 按鍵控制舵機轉動的程序代碼

冬至子 ? 來源:鬧鬧的小破站 ? 作者:廣軟彭于晏 ? 2023-10-31 16:49 ? 次閱讀

舵機:

舵機一般由舵盤、減速齒輪組、位置反饋電位器、直流電機控制電路板等組成。一般情況下舵機的信號線為黃色或者白色,電源主要常見為4.2-7.4V,不同的供電將直接影響舵機的扭矩標準。

控制方法-PWM

PWM通過占空比來控制舵機,所謂PWM就是通過程序控制單片機IO口按照一定的時間規律輸出高電平或低電平,具體可以上網查閱資料了解一下。

以下為不同的占空比時間對應的舵機角度:

圖片

對于t=0.5 - 2.5ms的產生,寫程序時我們可以采用全局變量。讓全局變量等于525之間,因為舵機的一個計數周期是0.1ms,這樣全局變量的525正好就是0.5~2.5ms

PWM波產生思路:將信號管腳線初始化為低電平,然后寫一個while循環,在循環中將該管腳置為為高電平,延時,再拉低為低電平,如此循環產生PWM波,以高電平產生時間來控制舵機轉動角度。

注意:5mv以上的控制電壓的變化就會引起電機的抖動。

基于單片機的控制:

單片機系統實現對舵機輸出轉角的控制,必須先完成兩個任務:

1、產生PWM周期信號,本設計產生一個20ms的周期信號;
2、脈寬的調整,即單片機模擬PWM信號的輸出,并調整占空比。

當系統中只需要實現一個舵機的控制,采用的控制方式是改變單片機的一個定時器中斷的初值,將20ms分為兩次中斷執行,一次短定時中斷和一次長定時中斷。這樣既節省了硬件電路,也減少了軟件開銷,控制系統工作效率和控制精度都很高。

具體的設計過程:例如想讓舵機轉向左極限的角度,它的正脈沖為2ms,則負脈沖為20ms-2ms=18ms,所以開始時在控制口發送高電平,然后設置定時器在2ms后發生中斷,中斷發生后,在中斷程序里將控制口改為低電平,并將中斷時間改為18ms,再過18ms進入下一次定時中斷,再將控制口改為高電平,并將定時器初值改為2ms,等待下次中斷到來,如此往復實現PWM信號輸出到舵機。用修改定時器中斷初值的方法巧妙形成了脈沖信號,調整時間段的寬度便可使伺服機靈活運動。

為保證軟件在定時中斷里采集其他信號,并且使發生PWM信號的程序不影響中斷程序的運行(如果這些程序所占用時間過長,有可能會發生中斷程序還未結束,下次中斷又到來的后果),所以需要將采集信號的函數放在長定時中斷過程中執行,也就是說每經過兩次中斷執行一次這些程序,執行的周期還是20ms。

如果系統中需要控制幾個舵機的準確轉動,可以用單片機和計數器進行脈沖計數產生PWM信號。

脈沖計數可以利用51單片機的內部計數器來實現,但是從軟件系統的穩定性和程序結構的合理性看,宜使用外部的計數器,還可以提高CPU的工作效率。

下面列舉一個按鍵控制舵機轉動的程序代碼

#include

#include

typedef unsigned char uchar;

typedef unsigned int uint;

sbit KEY1=P3^4;

//按鍵1

sbit KEY2=P3^5;

//按鍵2

sbit PWM_OUT=P2^7;

//PWM輸出口

uint PWM_Value;

//定義pwm值

uchar order=0;

void Delay(unsigned int s);

//延時函數聲明

uchar flag;

//舵機按鍵標志

/ 延時函數 /
void Delay(unsigned int s)

{

unsigned int i;

for(i=0; i

for(i=0; i

}

/ 定時器初始化 /
void Init_Timer0()

{

TMOD=0x11;

TH0=(65536-1500)/256;

TL0=(65536-1500)%256;

EA = 1;

ET0 = 1;

TR0 = 1;

PT0=1;

}

/ 主函數 /
void main(void)

{

Delay(6000);

PWM_Value = 1500;

//pwm初值為1500

Init_Timer0();

while(1)

{

if((KEY1 ==0 )|(KEY2 ==0 ))

//按鍵1或按鍵2被按下

{

if(KEY1 ==0 )

//確認按鍵1被按下

{

flag = 1;

//標志位賦值1

}

if(KEY2 ==0 )

//確認按鍵2被按下

{
flag = 2;

//標志位賦值2
}

}
else

{

flag = 0;

//否則標志位為0

}

Delay(20);

//延時20ms

}
}

/ 中斷程序 **/
void timer0(void) interrupt 1
{

if(flag==1) PWM_Value += 1;

//如果標志位1時,pwm的值加1

if(flag==2) PWM_Value -= 1;

//如果標志位為2時,pwm減1

if(PWM_Value>=2500)

//如果pwm的值大于2500

PWM_Value = 2500;

//則保持在2500

if(PWM_Value<=500)

//如果pwm的值小于500

PWM_Value=500;

//則保持在500

switch(order)

{

case 1:PWM_OUT=1;

TH0=(65536-PWM_Value) > >8;

       TL0=(uchar)(65536-PWM_Value);

       break;                          

case 2:PWM_OUT=0;

       TH0=(65536-(5000-PWM_Value)) > >8;    

       TL0=(uchar)(65536-(5000-PWM_Value));

       break;                          

case 3:

       TH0=60536 > >8;   

       TL0=(uchar)60536;

       break;

case 4:

       TH0=60536 > >8;   

       TL0=(uchar)60536;

       order=0;

       break;

default: order=0;

break;

}
order++;
}

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 電位器
    +關注

    關注

    14

    文章

    1017

    瀏覽量

    67673
  • 直流電機
    +關注

    關注

    36

    文章

    1733

    瀏覽量

    71428
  • 51單片機
    +關注

    關注

    277

    文章

    5710

    瀏覽量

    126661
  • PWM控制
    +關注

    關注

    7

    文章

    195

    瀏覽量

    26991
  • 舵機
    +關注

    關注

    17

    文章

    294

    瀏覽量

    41718
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    51單片機舵機控制系統的相關資料分享

    51單片機舵機控制系統概述硬件設計程序設計概述在這篇博客中,將介紹一個基于51
    發表于 11-10 07:46

    51單片機控制舵機程序

    51單片機控制舵機程序,希望對你有幫助,謝謝頂一下
    發表于 11-02 17:35 ?103次下載

    51單片機控制舵機

    利用簡單的51單片機的PWM的脈沖控制信號來很方便的控制舵機
    發表于 11-10 15:25 ?104次下載

    單片機按鍵控制程序【匯編版】

    單片機按鍵控制程序【匯編版】單片機按鍵控制程序【匯編版】單片機按鍵控制程序【匯編版】
    發表于 12-29 11:04 ?0次下載

    單片機實現舵機轉角控制

    單片機實現舵機轉角控制單片機實現舵機轉角控制單片機實現舵機轉角
    發表于 04-28 14:57 ?24次下載

    51單片機控制舵機程序

    僅提供參考 51單片機控制機器人數字舵機的示例程序程序比較簡單,但演示了
    發表于 06-23 18:14 ?171次下載

    c51舵機轉動仿真

    89c52單片機按鍵控制舵機精確轉動
    發表于 01-28 20:01 ?14次下載

    使用51單片機按鍵直接控制舵機旋轉的程序免費下載

    本文檔的主要內容詳細介紹的是使用51單片機按鍵直接控制舵機旋轉的程序免費下載。
    發表于 06-25 17:43 ?23次下載
    使用<b class='flag-5'>51</b><b class='flag-5'>單片機</b><b class='flag-5'>按鍵</b>直接<b class='flag-5'>控制</b><b class='flag-5'>舵機</b>旋轉的<b class='flag-5'>程序</b>免費下載

    如何使用51單片機按鍵控制舵機旋轉

    本文檔的主要內容詳細介紹的是如何使用51單片機按鍵控制舵機旋轉主要內容包括了:1.舵機的與單片機
    發表于 06-18 17:44 ?23次下載
    如何使用<b class='flag-5'>51</b><b class='flag-5'>單片機</b><b class='flag-5'>按鍵控制</b><b class='flag-5'>舵機</b>旋轉

    基于51單片機舵機控制器設計

    在上一期免費51單片機舵機開源項目中:最簡單DIY基于51單片機舵機
    的頭像 發表于 11-19 09:35 ?7533次閱讀

    51單片機舵機控制

    51單片機舵機控制系統概述硬件設計程序設計概述在這篇博客中,將介紹一個基于51
    發表于 11-05 11:06 ?21次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b><b class='flag-5'>舵機</b><b class='flag-5'>控制</b>

    基于51單片機的紅外遙控舵機例程源代碼

    基于51單片機的紅外遙控舵機例程源代碼
    發表于 05-16 11:16 ?14次下載

    基于51單片機的利用S2和S3按鍵控制舵機正反轉例程

    基于51單片機的利用S2和S3按鍵控制舵機正反轉例程
    發表于 05-16 11:13 ?2次下載

    基于89C51單片機舵機按鍵控制程序程序

    基于89C51單片機舵機按鍵控制程序程序
    發表于 05-16 09:09 ?8次下載

    如何使用單片機控制舵機轉動

    單片機是一種集成電路,它可以被編程以控制外部電子設備的運行。舵機是一種能夠轉動到特定位置的電動機,常用于模型、機器人以及其他需要精確控制位置
    的頭像 發表于 12-29 10:15 ?2330次閱讀
    主站蜘蛛池模板: 久久久免费精品 | 久久精品网站免费观看 | 亚洲综合色丁香婷婷六月图片 | 轻点灬大ji巴太粗太长了h | 手机看片www xiao2b cm | 巨臀中文字幕一区二区翘臀 | 51午夜| 日韩一级视频免费观看 | 99热色| 色多多视频在线观看 | 色黄网站| 久国产精品久久精品国产四虎 | 亚洲一区二区三区免费 | 国产午夜精品福利久久 | 欧美三级黄视频 | 国产成人久视频免费 | 亚洲射图| 精品一区二区国语对白 | 你懂得的在线观看免费视频 | 啪啪网视频 | 亚洲视频在线观看一区 | 天天综合网在线 | 大香伊人网 | 欧美人与牲动交xxxxbbbb | 亚洲精品在线不卡 | 一级做a爰片久久毛片图片 一级做a爰片久久毛片鸭王 | 综合亚洲色图 | 亚洲国产成人精彩精品 | 在线亚洲精品中文字幕美乳 | 四虎新网址| 天天精品 | 日本不卡在线视频 | 四虎影院一区二区 | 69pao强力打造免费高清 | haose16在线永久免费 | 看全色黄大色大片免费久久 | 免费国产午夜在线观看 | 扒开末成年粉嫩的流白浆视频 | 天天躁夜夜躁狠狠躁 | 久久精品国产福利 | 欧美美女一区二区三区 |