国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于STM32 SG90 9g舵機控制

這篇具有很好參考價值的文章主要介紹了基于STM32 SG90 9g舵機控制。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


一、什么是舵機?

sg90舵機參數(shù),STM32的簡單應(yīng)用,stm32,單片機,嵌入式硬件,c語言,物聯(lián)網(wǎng)

產(chǎn)品參數(shù)
名稱:9克舵機180度
尺寸:23mm X 12.2mm X 29mm
重量:9克
扭矩:1.5kg/cm
工作電壓:4.2 - 6V
溫度范圍:0 - 55℃
運行速度:0.3s/60℃
死帶寬:10ms

舵機有三條線定義:

  • 暗灰:GND
  • 紅色:VCC 4.8V - 7.2V
  • 橙黃線:脈沖輸入

在機器人機電控制系統(tǒng)中,舵機控制效果是性能的重要影響因素。舵機可以在微機電系統(tǒng)和航模中作為基本的輸出執(zhí)行機構(gòu),其簡單的控制和輸出使得單片機系統(tǒng)非常容易與之接口。

舵機是一種位置(角度)伺服的驅(qū)動器,適用于那些需要角度不斷變化并可以保持的控制系統(tǒng)。目前在高檔遙控玩具,如航模,包括飛機模型,潛艇模型;遙控機器人中已經(jīng)使用得比較普遍。舵機是一種俗稱,其實是一種伺服馬達。

舵機是一種位置伺服的驅(qū)動器,適用于那些需要角度不斷變化并可以保持的控制系統(tǒng)。其工作原理是:控制信號由接收機的通道進入信號調(diào)制芯片,獲得直流偏置電壓。它內(nèi)部有一個基準電路,產(chǎn)生周期為20ms,寬度為1.5ms的基準信號,將獲得的直流偏置電壓與電位器的電壓比較,獲得電壓差輸出。最后,電壓差的正負輸出到電機驅(qū)動芯片決定電機的正反轉(zhuǎn)。當電機轉(zhuǎn)速一定時,通過級聯(lián)減速齒輪帶動電位器旋轉(zhuǎn),使得電壓差為0,電機停止轉(zhuǎn)動。

二、工作原理

控制信號由接收機的通道進入信號調(diào)制芯片,獲得直流偏置電壓。它內(nèi)部有一個基準電路,產(chǎn)生周期為20ms,寬度為1.5ms的基準信號,將獲得的直流偏置電壓與電位器的電壓比較,獲得電壓差輸出。最后,電壓差的正負輸出到電機驅(qū)動芯片決定電機的正反轉(zhuǎn)。當電機轉(zhuǎn)速一定時,通過級聯(lián)減速齒輪帶動電位器旋轉(zhuǎn),使得電壓差為0,電機停止轉(zhuǎn)動。當然我們可以不用去了解它的具體工作原理,知道它的控制原理就夠了。就象我們使用晶體管一樣,知道可以拿它來做開關(guān)管或放大管就行了,至于管內(nèi)的電子具體怎么流動是可以完全不用去考慮的。

舵機控制:
舵機的控制一般需要一個20ms左右的時基脈沖,該脈沖的高電平部分一般為0.5ms~2.5ms范圍內(nèi)的角度控制脈沖部分。以180度角度伺服為例,那么對應(yīng)的控制關(guān)系是這樣的:
0.5ms--------------0度;
1.0ms------------45度;
1.5ms------------90度;
2.0ms-----------135度;
2.5ms-----------180度;

sg90舵機參數(shù),STM32的簡單應(yīng)用,stm32,單片機,嵌入式硬件,c語言,物聯(lián)網(wǎng)
這只是一種參考數(shù)值,具體的參數(shù),請參見舵機的技術(shù)參數(shù)。
小型舵機的工作電壓一般為4.8V或6V,轉(zhuǎn)速也不是很快,一般為0.22/60度或0.18/60度,所以假如你更改角度控制脈沖的寬度太快時,舵機可能反應(yīng)不過來。如果需要更快速的反應(yīng),就需要更高的轉(zhuǎn)速了。

要精確的控制舵機,其實沒有那么容易,很多舵機的位置等級有1024個,那么,如果舵機的有效角度范圍為180度的話,其控制的角度精度是可以達到180/1024度約0.18度了,從時間上看其實要求的脈寬控制精度為2000/1024us約2us。如果你拿了個舵機,連控制精度為1度都達不到的話,而且還看到舵機在發(fā)抖。在這種情況下,只要舵機的電壓沒有抖動,那抖動的就是你的控制脈沖了。而這個脈沖為什么會抖動呢?當然和你選用的脈沖發(fā)生器有關(guān)了。

使用傳統(tǒng)單片機控制舵機的方案也有很多,多是利用定時器和中斷的方式來完成控制的,這樣的方式控制1個舵機還是相當有效的,但是隨著舵機數(shù)量的增加,也許控制起來就沒有那么方便而且可以達到約2微秒的脈寬控制精度了。

為什么FPPA就可以很方便地將脈寬的精度精確地控制在2微秒甚至2微秒一下呢。主要還是 delay memory這樣的具有創(chuàng)造性的指令發(fā)揮了功效。該指令的延時時間為數(shù)據(jù)單元中的立即數(shù)的值加1個指令周期(數(shù)據(jù)0出外,詳情請參見delay指令使用注意事項)因為是8位的數(shù)據(jù)存儲單元,所以memory中的數(shù)據(jù)為(0~255),記得前面有提過,舵機的角度級數(shù)一般為1024級,所以只用一個存儲空間來存儲延時參數(shù)好像還不夠用的,所以我們可以采用2個內(nèi)存單元來存放舵機的角度伺服參數(shù)了。所以這樣一來,我們可以采用這樣的軟件結(jié)構(gòu)了:sg90舵機參數(shù),STM32的簡單應(yīng)用,stm32,單片機,嵌入式硬件,c語言,物聯(lián)網(wǎng)

三、利用PWM控制

舵機的控制信號是PWM信號,利用占空比的變化改變舵機的位置。一般舵機的控制要求如下圖所示
sg90舵機參數(shù),STM32的簡單應(yīng)用,stm32,單片機,嵌入式硬件,c語言,物聯(lián)網(wǎng)
單片機實現(xiàn)舵機轉(zhuǎn)角控制
可以使用FPGA、模擬電路、單片機來產(chǎn)生舵機的控制信號,但FPGA成本高且電路復(fù)雜。對于脈寬調(diào)制信號的脈寬變換,常用的一種方法是采用調(diào)制信號獲取有源濾波后的直流電壓,但是需要50Hz(周期是20ms)的信號,這對運放器件的選擇有較高要求,從電路體積和功耗考慮也不易采用。5mV以上的控制電壓的變化就會引起舵機的抖動,對于機載的測控系統(tǒng)而言,電源和其他器件的信號噪聲都遠大于5mV,所以濾波電路的精度難以達到舵機的控制精度要求。

也可以用單片機作為舵機的控制單元,使PWM信號的脈沖寬度實現(xiàn)微秒級的變化,從而提高舵機的轉(zhuǎn)角精度。單片機完成控制算法,再將計算結(jié)果轉(zhuǎn)化為PWM信號輸出到舵機,由于單片機系統(tǒng)是一個數(shù)字系統(tǒng),其控制信號的變化完全依靠硬件計數(shù),所以受外界干擾較小,整個系統(tǒng)工作可靠。

單片機系統(tǒng)實現(xiàn)對舵機輸出轉(zhuǎn)角的控制,必須首先完成兩個任務(wù):首先是產(chǎn)生基本的PWM周期信號,本設(shè)計是產(chǎn)生20ms的周期信號;其次是脈寬的調(diào)整,即單片機模擬PWM信號的輸出,并且調(diào)整占空比。

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

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

為保證軟件在定時中斷里采集其他信號,并且使發(fā)生PWM信號的程序不影響中斷程序的運行(如果這些程序所占用時間過長,有可能會發(fā)生中斷程序還未結(jié)束,下次中斷又到來的后果),所以需要將采集信號的函數(shù)放在長定時中斷過程中執(zhí)行,也就是說每經(jīng)過兩次中斷執(zhí)行一次這些程序,執(zhí)行的周期還是20ms。軟件流程如下圖所示。
sg90舵機參數(shù),STM32的簡單應(yīng)用,stm32,單片機,嵌入式硬件,c語言,物聯(lián)網(wǎng)
如果系統(tǒng)中需要控制幾個舵機的準確轉(zhuǎn)動,可以用單片機和計數(shù)器進行脈沖計數(shù)產(chǎn)生PWM信號。

脈沖計數(shù)可以利用單片機的內(nèi)部計數(shù)器來實現(xiàn),但是從軟件系統(tǒng)的穩(wěn)定性和程序結(jié)構(gòu)的合理性看,宜使用外部的計數(shù)器,還可以提高CPU的工作效率。實驗后從精度上考慮,對于FUTABA系列的接收機,當采用1MHz的外部晶振時,其控制電壓幅值的變化為0.6mV,而且不會出現(xiàn)誤差積累,可以滿足控制舵機的要求。最后考慮數(shù)字系統(tǒng)的離散誤差,經(jīng)估算誤差的范圍在±0.3%內(nèi),所以采用單片機和8253、8254這樣的計數(shù)器芯片的PWM信號產(chǎn)生電路是可靠的。下圖是硬件連接圖。
sg90舵機參數(shù),STM32的簡單應(yīng)用,stm32,單片機,嵌入式硬件,c語言,物聯(lián)網(wǎng)

四、stm32舵機控制

1. PWM設(shè)計
TIM1 -> CH1 PA8

	GPIO_InitTypeDef GPIO_InitStructure;
    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
    TIM_OCInitTypeDef  TIM_OCInitStructure;
	
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);// 
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);  //使能GPIO外設(shè)時鐘使能
   //設(shè)置該引腳為復(fù)用輸出功能,輸出TIM1 CH1的PWM脈沖波形
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //TIM_CH1
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //復(fù)用推挽輸出
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
	
  TIM_TimeBaseStructure.TIM_Period = arr; //設(shè)置在下一個更新事件裝入活動的自動重裝載寄存器周期的值  80K
  TIM_TimeBaseStructure.TIM_Prescaler =psc; //設(shè)置用來作為TIMx時鐘頻率除數(shù)的預(yù)分頻值  不分頻
  TIM_TimeBaseStructure.TIM_ClockDivision = 0; //設(shè)置時鐘分割:TDTS = Tck_tim
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上計數(shù)模式
  TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); //根據(jù)     TIM_TimeBaseInitStruct中指定的參數(shù)初始化TIMx的時間基數(shù)單位
  
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //選擇定時器模式:TIM脈沖寬度調(diào)制模式2
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比較輸出使能
  TIM_OCInitStructure.TIM_Pulse = 0; //設(shè)置待裝入捕獲比較寄存器的脈沖值
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //輸出極性:TIM輸出比較極性高
  TIM_OC1Init(TIM1, &TIM_OCInitStructure);  //根據(jù)TIM_OCInitStruct中指定的參數(shù)初始化外設(shè)TIMx
 
  TIM_CtrlPWMOutputs(TIM1,ENABLE);  //MOE 主輸出使能 
  TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);  //CH1預(yù)裝載使能     
  TIM_ARRPreloadConfig(TIM1, ENABLE); //使能TIMx在ARR上的預(yù)裝載寄存器
  TIM_Cmd(TIM1, ENABLE);  //使能TIM1

2.steering engine文章來源地址http://www.zghlxwxcb.cn/news/detail-628740.html

TIM1_PWM_Init(1999,719);	//  72000000/720/2000=20ms
IM_SetCompare1(TIM1,1950); //對應(yīng)0度		2.5%
delay_ms(1000);	
TIM_SetCompare1(TIM1, 1900); //對應(yīng)45度		5%		
delay_ms(1000);
TIM_SetCompare1(TIM1, 1850); //對應(yīng)90度		7.5%
delay_ms(1000);
TIM_SetCompare1(TIM1, 1800); //對應(yīng)135度		10%
delay_ms(1000);
TIM_SetCompare1(TIM1,1750); //對應(yīng)180度		12.5%
delay_ms(1000);

到了這里,關(guān)于基于STM32 SG90 9g舵機控制的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 關(guān)于四足行走機器人步態(tài)分析STM32+SG90舵機控制

    關(guān)于四足行走機器人步態(tài)分析STM32+SG90舵機控制

    最近逛某站看了很多國賽大佬的賽車,下面評論區(qū)一堆大佬在感嘆“老師看到賽車都搖頭?!弊鳛橐粋€初入STM32坑的萌新,我在某些站上查閱了相關(guān)資料后,確定給我自己的機器人搞成四足行走(ps,其實是L298N燒了)。 目前手上的板子是C8T6,學(xué)習(xí)的視頻是江科協(xié),主要代碼

    2024年01月21日
    瀏覽(24)
  • STM32F103RCT6驅(qū)動SG90舵機-完成正反轉(zhuǎn)角度控制

    STM32F103RCT6驅(qū)動SG90舵機-完成正反轉(zhuǎn)角度控制

    SG90是一種微型舵機,也被稱為伺服電機。它是一種小型、低成本的直流電機,通常用于模型和機器人控制等應(yīng)用中。SG90舵機可以通過電子信號來控制其精確的位置和速度。它具有體積小、重量輕、響應(yīng)快等特點,因此在各種小型機械設(shè)備上得到了廣泛應(yīng)用。 SG90舵機通常用于

    2024年02月03日
    瀏覽(106)
  • 【STM32】 SG90舵機

    【STM32】 SG90舵機

    目錄 一:介紹 二:傳感器參數(shù) 三:接口說明 四:SG90舵機模塊接口原理圖 五:SG90舵機模塊實物圖 舵機是一種位置(角度)伺服的驅(qū)動器,適用于那些需要角度不斷變化并可以保持的控制系統(tǒng)。 目前,在高檔遙控玩具,如飛機、潛艇模型,遙控機器人中已經(jīng)得到了普遍應(yīng)用

    2024年02月06日
    瀏覽(17)
  • STM32驅(qū)動SG90舵機

    STM32驅(qū)動SG90舵機

    SG90是一種小型伺服電機,通常用于模型制作和小型機械應(yīng)用中: 問題 答案 SG90的工作電壓是多少 SG90的工作電壓通常為3V至7.2V SG90最大扭矩是多少 SG90的最大扭矩約為1.5kg/cm SG90的工作溫度范圍是多少 SG90的工作溫度范圍通常為0°C至55°C SG90的控制方式是什么 SG90的控制方式通常為

    2024年02月12日
    瀏覽(20)
  • STM32外設(shè)系列—sg90(舵機)

    STM32外設(shè)系列—sg90(舵機)

    ?? 文章作者:二土電子 ?? 關(guān)注文末公眾號獲取其他資料和工程文件! ?? 期待大家一起學(xué)習(xí)交流! 首先介紹說一下什么是舵機。舵機是一種位置(角度)伺服的驅(qū)動器。適用于一些需要角度不斷變化的,可以保持的控制系統(tǒng)。sg90就是舵機的一種。 舵機的工作原理比較簡

    2024年02月15日
    瀏覽(15)
  • STM32+SG90舵機詳解(詳細)

    STM32+SG90舵機詳解(詳細)

    上一次使用舵機只是草草了解,只大概知道是pwm控制的,這次又使用到了舵機,本以為復(fù)制上次代碼就可以調(diào)試成功,沒想到卻弄了很久。 我使用的是STM32f103c8t6,用的是定時器4。這個f1板子的定時器各個通道io口如下圖所示: 在開始之前我們要了解控制舵機需要的一個周期

    2024年02月08日
    瀏覽(17)
  • SG90舵機的使用--STM32F103C8T6

    SG90舵機的使用--STM32F103C8T6

    SG90帶有一個3P的接頭 根據(jù)顏色分為 黃線(信號線) 紅線(電源線) 棕色 (地線) 舵機的 工作電壓 在 4.8V-6V ,接在STM32系統(tǒng)板上驅(qū)動不了,所以需要接電源模塊單獨的5V供電,我使用的是如圖所示的電源模塊 注: 如果STM32系統(tǒng)板供電和舵機供電不為同一模塊,則需要共地,

    2024年02月03日
    瀏覽(22)
  • 搖桿按鍵+SG90 實現(xiàn)舵機云臺(STM32F103C8T6)

    搖桿按鍵+SG90 實現(xiàn)舵機云臺(STM32F103C8T6)

    STM32F103C8T6最小系統(tǒng)板*1 SG90舵機(180°)*2 搖桿按鍵*1 舵機支架*1 面包板*1(非必須) 杜邦線若干 類似這種的支架,不過需要自己裁切嵌入的部分 代碼很簡單,主要使用ADC雙通道讀取兩個電位器的值(實際上就是電壓),通過獲取到的值的范圍來確定上下左右,從而來改變兩

    2024年02月14日
    瀏覽(21)
  • SG90舵機的原理和控制方式

    SG90舵機的原理和控制方式

    前言 做過機器人、智能車或者玩航模的朋友應(yīng)該對舵機不會陌生,這種舵機也是很常用的。 舵機只是我們通俗的叫法,它的本質(zhì)是一個 伺服電機 ,也可以叫做位置(角度)伺服驅(qū)動器。一般被應(yīng)用在那些需要控制角度變化的系統(tǒng)中,可以方便的實現(xiàn)轉(zhuǎn)動任意的角度,實現(xiàn)控制

    2023年04月17日
    瀏覽(25)
  • 【Proteus仿真】【Arduino單片機】SG90舵機控制

    【Proteus仿真】【Arduino單片機】SG90舵機控制

    本項目使用Proteus8仿真Arduino單片機控制器,使用SG90舵機等。 主要功能: 系統(tǒng)運行后,舵機開始運行。 B站演示視頻:https://space.bilibili.com/444388619 視頻地址:https://space.bilibili.com/444388619/video 專注于51單片機、STM32、國產(chǎn)32、DSP、Proteus、arduino、ESP32、物聯(lián)網(wǎng)軟件開發(fā),PCB設(shè)計,

    2024年02月07日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包