51單片機STC89C52RC——19.1 SG90舵機(伺服電機)

目的/效果

獨立按鍵K1,K2? 實現加舵機減角度增減,LCD1602顯示舵機轉角度數(上電默認90度)

一,STC單片機模塊

二,SG90舵機?

2.1 簡介

舵機只是我們通俗的叫法,它的本質是一個伺服電機,也可以叫做位置(角度)伺服驅動器。一般被應用在那些需要控制角度變化的系統中,可以方便的實現轉動任意的角度,實現控制角度的變化。

應用場景航模、智能小車的轉向

航模:在很多的航模中,sg90舵機都被用于兩翼的位置控制,從而實現航模的轉向,傾斜之類的。因為航模本身的要求,需要盡量的控制航模的自重,而sg90舵機的重量本身就很輕,扭矩也大,所以能很好的滿足要求。?

智能小車的轉向:因為sg90舵機的精準角度控制,所以在很多的智能小車類中被用作轉向控制。

2.2 舵機的工作原理

SG90舵機模塊內有控制電路,控制信號通過信號線輸入到內部的控制電路中,調制芯片將輸入的信號進行調制,獲得直流偏置電壓。然后再由內部的基準電路產生周期為20ms,寬度為1.5ms的基準信號,將直流偏置電壓和電位器電壓進行比較,從而獲得輸出的電壓差。由電壓差控制舵機的轉動,這個電壓差的正負控制舵機正反轉。?

舵機的控制需要MCU產生一個周期為20ms的脈沖信號,以0.5ms到2.5ms的高電平來控制舵機轉動的角度。

?以180度角度伺服為例,那么對應的控制關系是這樣的:
0.5ms--------------0度;
1.0ms------------45度;
1.5ms------------90度;
2.0ms-----------135度;
2.5ms-----------180度;

占空比: 一個脈沖周期內,高電平的時間與整個周期時間的比例
單位:?%?(0%-100%)
表示方式:20%?

?控制通斷時間比例,占空比。如下圖

我在這里用定時計數器來控制占空比

/*** 函    數:定時器0初始化,100微秒 @12.000MHz* 參    數:無* 返 回 值:無*/
void Timer0_Init(void)
{TMOD |= 0x01;		//設置定時器模式TL0 = 0xB0;			//設置定時初始值TH0 = 0xFF;			//設置定時初始值TF0 = 0;			//清除TF0標志TR0 = 1;			//定時器0開始計時ET0=1;				//允許時鐘1中斷EA=1;				//打開總中斷
}

?有關定時器和系統中斷請參考

《51單片機STC89C52RC——6.1 中斷系統_stc89c52rc的中斷系統-CSDN博客》

《51單片機STC89C52RC——6.2 定時器_stc89c52rc定時器-CSDN博客》

《51單片機STC89C52RC——6.3 定時器/計數器 實現計時功能》

注意:為了真實項目控制得更精準,我們可以將定時器的中斷設置為1us一次,極值寬度設置為500us-2500us,把每次按鍵加減值控制的更細。

2.3 接線方法


紅-------------------------VCC
棕色----------------------GND
橙色----------------------信號線 ,我這里選用P20針腳

2.4 轉角度數計算

舵機的角度控制是通過改變舵機脈沖寬度來實現的。舵機脈沖寬度與舵機角度之間的關系如下:

角度 = 180/(最大脈沖寬度 - 最小脈沖寬度)*(脈沖寬度 - 最小脈沖寬度) ?
?? ??? ?

脈沖寬度為 500 微秒時,舵機角度為 0 度。

脈沖寬度為 1500 微秒時,舵機角度為 90 度。

脈沖寬度為 2500 微秒時,舵機角度為 180 度。?

(180/(Max-Min))*(Compare-Min)

三,創建Keil項目

詳細參考:51單片機STC89C52RC——創建Keil項目-CSDN博客

四,代碼?

完整代碼參考《https://gitee.com/oopxiajun/STC89C52》

main.c

#include <REGX52.H>
#include "Timer0.h" 
#include "key.h"
#include "LCD1602.h"
#include "Delay.h"
int Min=5,Max=25;//定義極值時長
unsigned char Counter,//計數器KeyNum,//按鍵值Compare=15;//占空比 7.5%
/*** 函    數:主函數* 參    數:無* 返 回 值:無*/
void main()
{   Timer0_Init();	//初始化定時器 LCD_Init();			while(1){LCD_ShowNum(1,1,(180/(Max-Min))*(Compare-Min),3);KeyNum=GetKey();if(KeyNum==1){Compare-=1;}else if(KeyNum==2){Compare+=1;}if(Compare<Min)Compare=Min;if(Compare>Max)Compare=Max;	}
}
/*** 函    數:定時器0中斷函數* 參    數:無* 返 回 值:無*/
void Timer0_Routine() interrupt 1
{TL0 = 0xB0;				//設置定時初始值  每0.1毫秒中斷一次TH0 = 0xFF;				//設置定時初始值Counter++;Counter%=200;			//20ms的脈沖周期if(Counter>=Compare){P2_0=0;//電機斷電}else {P2_0=1;//電機通電}
}

五,代碼編譯、下載到51單片機

代碼編譯請參考

《51單片機STC89C52RC——代碼編譯-CSDN博客》

代碼下載請參考

《51單片機STC89C52RC——STCAI-ISP代碼下載-CSDN博客》

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/45487.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/45487.shtml
英文地址,請注明出處:http://en.pswp.cn/web/45487.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

react 案例的實現

先看一下如下效果 效果 這是一個 簡單的 效果 左邊是用戶名進行登錄 右邊是一個答題還有遮罩 相信大家還有剛剛創建好的 react 腳手架了&#xff0c;沒有的話可以運行以下命令 creact-react-app 項目名稱 把項目名稱四個字 改成 自己想要的一個名字 最好是英文的在 App.js中去…

python xpath常用代碼功能

1、從文件中讀取html內容&#xff0c;然后xpath加載 with open(FilePath, r,encodingutf8) as file:html file.read() tree etree.HTML(html) 2、基本定位語法 / 從根節點開始選取 /html/div/span // 從任意節點開始選取 //input . 選取當前節點 .…

Web開發:<br>標簽的作用

br作用 介紹基本用法常見用途注意事項使用CSS替代 介紹 在Web開發中&#xff0c;<br> 標簽是一個用于插入換行符的HTML標簽。它是“break”的縮寫&#xff0c;常用于需要在文本中強制換行的地方。<br> 標簽是一個空標簽&#xff0c;這意味著它沒有結束標簽。 基本…

Python小工具—txt轉excel和word

1.txt轉excel import openpyxl# 創建一個新的Excel工作簿 wb = openpyxl.Workbook() sheet = wb.active# 題干和答案的標題 sheet[A1] = 題干 sheet[B1] = 答案# 打開txt文件并讀取內容 with open(xiti.txt, r, encoding=utf-8) as file:lines = file.readlines()# 初始變量 c…

VisualTreeHelper.GetChildrenCount

在WPF&#xff08;Windows Presentation Foundation&#xff09;中&#xff0c;VisualTreeHelper.GetChildrenCount 是一個非常有用的方法&#xff0c;用于獲取指定視覺對象的子元素數量。這對于遍歷復雜的用戶界面樹結構以進行查找、操作或檢查特定元素是非常有幫助的。 Visu…

【java深入學習第7章】用 Spring Boot 和 Java Mail 輕松實現郵件發送功能

引言 在現代的企業應用中&#xff0c;郵件發送是一個非常常見的功能。無論是用戶注冊后的驗證郵件&#xff0c;還是系統通知郵件&#xff0c;郵件服務都扮演著重要的角色。本文將介紹如何在Spring Boot項目中整合Java Mail&#xff0c;實現發送郵件的功能。 一、準備工作 在…

【Ubuntu】安裝使用pyenv - Python版本管理

當我們在Ubuntu上使用Python進行開發的時候&#xff0c;可能會遇到版本不兼容的問題&#xff0c;當然你可以選擇使用apt的方式安裝不同版本的python環境 但是存在一定的問題&#xff1a;安裝不同版本的Python通常不會改變默認的python3命令指向的版本&#xff0c;而且就算你進行…

分布式對象存儲minio

本教程minio 版本&#xff1a;RELEASE.2021-07-*及以上 1. 分布式文件系統應用場景 互聯網海量非結構化數據的存儲需求 電商網站&#xff1a;海量商品圖片視頻網站&#xff1a;海量視頻文件網盤 : 海量文件社交網站&#xff1a;海量圖片 1.1 Minio介紹 MinIO 是一個基于Ap…

ubuntu服務器部署vue springboot前后端分離項目

上傳構建好的vue前端文件 vscode構建vue項目&#xff0c;會生成dist目錄 npm run build在服務器root目錄新建/projects/www目錄&#xff0c;把dist目錄下的所有文件&#xff0c;上傳到此目錄中 上傳ssl證書 上傳ssl證書到/projects目錄中 配置nginx 編輯 /etc/nginx/site…

微服務邊界守衛:Eureka中服務隔離策略的實現

微服務邊界守衛&#xff1a;Eureka中服務隔離策略的實現 在微服務架構中&#xff0c;服務隔離是一項關鍵策略&#xff0c;用于確保服務之間的故障不會相互影響&#xff0c;同時提供更加安全和穩定的運行環境。Eureka作為Netflix開源的服務發現框架&#xff0c;提供了一些機制來…

Java 網絡協議面試題答案整理,最新面試題

TCP和UDP的主要區別是什么? TCP(傳輸控制協議)和UDP(用戶數據報協議)的主要區別在于TCP是面向連接的協議,而UDP是無連接的協議。這導致了它們在數據傳輸方式、可靠性、速度和使用場景方面的不同。 1、連接方式: TCP是面向連接的協議,數據傳輸前需要三次握手建立連接。U…

區塊鏈與云計算的融合:新時代數據安全的挑戰與機遇

隨著信息技術的迅猛發展&#xff0c;云計算和區塊鏈技術作為兩大前沿技術在各自領域內展示出了巨大的潛力。而它們的結合&#xff0c;即區塊鏈與云計算的融合&#xff0c;正在成為數據安全領域的新趨勢。本文將探討這一融合對數據安全帶來的挑戰和機遇&#xff0c;以及其在企業…

平替ChatGPT的多模態智能體來了

在人工智能領域&#xff0c;多模態技術的融合與應用已成為推動技術革新的關鍵。今天&#xff0c;我們用智匠AI實現了完全由國產模型驅動的多模態智能體——智醬v0.1.0&#xff0c;它不僅能夠媲美ChatGPT的多模態能力&#xff0c;更在聯網搜索、圖片識別、畫圖及圖表生成等方面展…

redis原理之底層數據結構(二)-壓縮列表

1.緒論 壓縮列表是redis最底層的結構之一&#xff0c;比如redis中的hash&#xff0c;list在某些場景下使用的都是壓縮列表。接下來就讓我們看看壓縮列表結構究竟是怎樣的。 2.ziplist 2.1 ziplist的組成 在低版本中壓縮列表是由ziplist實現的&#xff0c;我們來看看他的結構…

Stable Diffusion AI繪畫全攻略:從理論到實戰,解鎖創意圖畫的魔法之門

在科技的飛速發展中&#xff0c;Stable Diffusion AI繪畫技術為藝術創作帶來了前所未有的革命性變化。這項技術由CompVis、Stability AI和LAION聯合研發&#xff0c;通過深度學習模型&#xff0c;將文字描述轉化為生動的藝術作品&#xff0c;極大地拓寬了創意與想象的邊界。本文…

大數據面試SQL題-筆記01【運算符、條件查詢、語法順序、表連接】

大數據面試SQL題復習思路一網打盡&#xff01;(文檔見評論區)_嗶哩嗶哩_bilibiliHive SQL 大廠必考常用窗口函數及相關面試題 大數據面試SQL題-筆記01【運算符、條件查詢、語法順序、表連接】大數據面試SQL題-筆記02【...】 目錄 01、力扣網-sql題 1、高頻SQL50題&#xff08…

TCP、UDP、TCP與UDP的區別及聯系

目錄 TCP和UDP區別1.連接2.交互個數3.可靠性4.傳輸方式5.適用場景 怎么實現一個可靠的UDP傳輸TCP詳解UDP詳解 TCP和UDP區別 1.連接 TCP 面向連接的&#xff0c;傳輸數據前先要建立連接。 UDP 是不需要連接&#xff0c;即刻傳輸數據。 2.交互個數 TCP 是一對一通信。 UDP 支…

數據結構——hash(hashmap源碼探究)

hash是什么&#xff1f; hash也稱為散列&#xff0c;就是把任意長度的輸入&#xff0c;通過散列算法&#xff0c;變成固定長度的輸出&#xff0c;這個輸出值就是散列值。 舉例來說明一下什么是hash&#xff1a; 假設我們要把1~12存入到一個大小是5的hash表中&#xff0c;我們…

礦產資源潛力預測不確定性評價

研究目的&#xff1a; 不確定性評估&#xff1a; 到底什么叫不確定性&#xff0c;簡單來說就是某區域內的礦產資源量&#xff0c;并不確定到底有多少&#xff0c;你需要給出一個評估或者分布。 研究方法&#xff1a; 1.以模糊集來表示某些量&#xff1a; 關于什么是模糊集&am…

信通院全景圖發布 比瓴科技領跑軟件供應鏈安全,多領域覆蓋數字安全服務

近日&#xff0c;中國信息通信研究院在2024全球數字經濟大會—數字安全生態建設專題論壇正式發布首期《數字安全護航技術能力全景圖》&#xff08;以下簡稱全景圖&#xff09;。 比瓴科技入選軟件供應鏈安全賽道“開發流程安全管控、交互式安全測試、靜態安全測試、軟件成分分…