色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

    文章

    1012

    瀏覽量

    66767
  • 直流電機
    +關注

    關注

    36

    文章

    1710

    瀏覽量

    70157
  • 51單片機
    +關注

    關注

    274

    文章

    5702

    瀏覽量

    123494
  • PWM控制
    +關注

    關注

    7

    文章

    194

    瀏覽量

    26280
  • 舵機
    +關注

    關注

    17

    文章

    268

    瀏覽量

    41014
收藏 人收藏

    評論

    相關推薦

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

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

    51單片機控制舵機程序

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

    51單片機控制舵機

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

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

    單片機按鍵控制程序【匯編版】單片機按鍵控制程序【匯編版】單片機按鍵控制程序【匯編版】
    發表于 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 ?7183次閱讀

    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 ?6次下載

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

    單片機是一種集成電路,它可以被編程以控制外部電子設備的運行。舵機是一種能夠轉動到特定位置的電動機,常用于模型、機器人以及其他需要精確控制位置
    的頭像 發表于 12-29 10:15 ?1716次閱讀
    主站蜘蛛池模板: 亚洲欧美中文字幕网站大全| 在线综合 亚洲 欧美| 91久久偷偷做嫩草影院免| 成人免费小视频| 亚洲无吗视频| 99久久精品6在线播放| 国产网红主播精品福利大秀专区| 久久青青无码AV亚洲黑人| 色琪琪无码成人AV视频| 伊人久久中文大香线蕉综合| 东北嫖妓对白粗口| 久久一级视频| 亚州综人网| jizzjizz3d动漫| 精品亚洲永久免费精品| 日日操夜夜摸| 5G在线观看免费年龄确认| 国产精品自产拍在线观看网站| 擼擼擼麻豆密臀AV| 亚洲m男在线中文字幕| 白嫩美女直冒白浆| 久久毛片基地| 亚洲 欧美无码原创区| WWW久久只有这里有精品| 久草热在线| 先锋资源av| 抽插的日日液液H| 美女网站免费久久久久久久| 亚洲国产AV精品一区二区蜜芽| 草莓视频在线播放视频| 久久伊人免费| 亚洲精品伊人久久久久| 高h浪荡文辣文神奇宝贝| 欧美激情性AAAAA片欧美| 在线 中文字幕| 国产一卡在线观看完整版| 日韩人妻无码精品久久中文字幕| 2022久久精品国产色蜜蜜麻豆| 狠狠色香婷婷久久亚洲精品| 四虎永久在线精品国产| 超碰在线视频|