51單片機STC89C52RC——14.1 直流電機調速

目錄

目的/效果

1:電機轉速同步LED呼吸燈

2 通過獨立按鍵 控制直流電機轉速。

一,STC單片機模塊

二,直流電機?

2.1 簡介

2.2 驅動電路

2.2.1 大功率器件直接驅動

2.2.2 H橋驅動

正轉

反轉

2.2.3 ULN2003D 引腳、電路

2.3 PWM(脈沖寬度調制)

?2.3.1 什么是PWM

2.3.2 PWM的頻率

2.3.3 PWM的周期

2.3.4 占空比

2.3.5 PWM的主要用途?

2.4 控制流程

2.4.1 模擬LED呼吸燈控制電機轉速

2.4.2 獨立按鍵控制電機轉速(類似于電風扇檔位切換)

三,創建Keil項目

四,代碼?

4.1 電機轉速同步LED呼吸燈

4.2 獨立按鍵對電機調速?

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

?


目的/效果

1:電機轉速同步LED呼吸燈

2 通過獨立按鍵 控制直流電機轉速。

K1:降低速度

K2:增大速度

一,STC單片機模塊

二,直流電機?

2.1 簡介

直流電機是指能將直流電能轉換成機械能(直流電動機)或將機械能轉換成直流電能(直流發電機)的旋轉電機。一般的直流電機有兩個電極,當電極正接時,電機正轉,當電極反接時,電機反轉 。直流電機主要由永磁體(定子)、線圈(轉子)和換向器組成 。除直流電機外,常見的電機還有步進電機、舵機、無刷電機、空心杯電機等。

2.2 驅動電路

2.2.1 大功率器件直接驅動

電路圖

這種只能朝一個方向轉。

電路導通圖

這里為什么有個續流二極管,因為電機、繼電器 都是電感(物理慣性導致電路電壓超過電源電壓)元件 。

在斷開電路瞬間,會產生很高的電壓。對晶體管有擊穿損傷。我們來看斷開瞬間的電流方向。

有了這個續流二極管,可以形成回路,降低對晶體管的擊穿損害

2.2.2 H橋驅動

形狀像“H”所以稱為H橋,可以實現程序控制電機正傳和反轉

正轉

反轉

2.2.3 ULN2003D 引腳、電路

這里我們將VCC接電機一個引腳,P10引腳對應OUT1,

將P10引腳輸出0? (高電平)電機轉動

將P10引腳輸出1? (低電平)電機停止轉動

斷開瞬間電流方向

其內部基本電路是達林頓管?

?

2.3 PWM(脈沖寬度調制)

?本節與《51單片機STC89C52RC——10.1 LED呼吸燈-CSDN博客》保持一致。

?2.3.1 什么是PWM

?脈沖寬度調制(PWM),是英文“Pulse Width Modulation”的縮寫,簡稱脈寬調制,是利用微處理器的數字輸出來對模擬電路進行控制的一種非常有效的技術,廣泛應用在從測量、通信到功率控制與變換的許多領域中。 ?

2.3.2 PWM的頻率

是指1秒鐘內信號從高電平到低電平再回到高電平的次數(一個周期);

也就是說一秒鐘PWM有多少個周期
單位: Hz
表示方式: 50Hz 100Hz

2.3.3 PWM的周期

T=1/f
周期=1/頻率
50Hz = 20ms 一個周期

如果頻率為50Hz ,也就是說一個周期是20ms 那么一秒鐘就有 50次PWM周期

2.3.4 占空比


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

周期為T
T1為高電平時間
T2 為低電平時間

假設周期T為 1s 那么頻率就是 1Hz 那么高電平時間0.5s ,低電平時間0.5s 總的占空比就是 0.5 /1 =50%

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

2.3.5 PWM的主要用途?

PWM對電機轉速的控制
占空比可以實現對電機轉速的調節,我們知道,占空比是高電平在一個周期之中的比值,高電平的所占的比值越大,占空比就越大,對于直流電機來講,電機輸出端引腳是高電平電機就可以轉動,當輸出端高電平時,電機會轉動,但是是一點一點的提速,在高電平突然轉向低電平時,電機由于電感有防止電流突變的作用是不會停止的,會保持這原有的轉速,以此往復,電機的轉速就是周期內輸出的平均電壓值,所以實質上我們調速是將電機處于一種,似停非停,似全速轉動又非全速轉動的狀態,那么在一個周期的平均速度就是我們占空比調出來的速度了,

在電機控制中,電壓越大,電機轉速越快,而通過PWM輸出不同的模擬電壓,便可以使電機達到不同的輸出轉速

當然,在電機控制中,不同的電機都有其適應的頻率 頻率太低會導致運動不穩定,如果頻率剛好在人耳聽覺范圍,有時還會聽到呼嘯聲。頻率太高的電機可能反應不過來

正常的電機頻率在 6-16kHZ之間為好

PWM對舵機的控制
舵機的控制就是通過一個固定的頻率,給其不同的占空比的,來控制舵機不同的轉角

舵機的頻率一般為頻率為50HZ,也就是一個20ms左右的時基脈沖,而脈沖的高電平部分一般為0.5ms-2.5ms范圍。來控制舵機不同的轉角
?
500-2500us的PWM高電平部分對應控制180度舵機的0-180度

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

2.4 控制流程

2.4.1 模擬LED呼吸燈控制電機轉速

與LED呼吸燈控制方式相同,分為兩個階段:
第一階段:由暗到亮。就是輸出占空比由0%到100%以1%為間隔遞增,共100個周期。
第二階段:由亮到暗。就是輸出占空比由100%到0%以1%為間隔遞減,共100個周期。

這里我們直接復用LED呼吸燈的代碼。加一個電機供電引腳的輸出。

        for(Time=0;Time<100;Time++)		//改變亮滅時間,由暗到亮{for(i=0;i<20;i++)			//計次延時{LED=0;					//LED亮Motor=1;				//電機轉Delay(Time);			//延時TimeLED=1;					//LED滅Motor=0;				//電機停Delay(100-Time);		//延時100-Time}}for(Time=100;Time>0;Time--)		//改變亮滅時間,由亮到暗{for(i=0;i<20;i++)			//計次延時{LED=0;					//LED亮Motor=1;				//電機轉Delay(Time);			//延時TimeLED=1;					//LED滅Motor=0;				//電機停Delay(100-Time);		//延時100-Time}}

2.4.2 獨立按鍵控制電機轉速(類似于電風扇檔位切換)

通過獨立按鍵調整占空比,每個檔位固定一個占空比,實現電風扇檔位切換。

三,創建Keil項目

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

四,代碼?

代碼詳情 請參考?STC89C52RC: 51單片機學習資料、代碼

4.1 電機轉速同步LED呼吸燈

#include <REGX52.H>sbit LED=P2^0;		//LED 呼吸燈
sbit Motor=P1^0;	//電機供電
/*** 函    數:延時函數* 參    數:無* 返 回 值:無*/
void Delay(unsigned int t)
{while(t--);
}
/*** 函    數:主函數* 參    數:無* 返 回 值:無*/
void main()
{unsigned char Time,i;while(1){for(Time=0;Time<100;Time++)		//改變亮滅時間,由暗到亮{for(i=0;i<20;i++)			//計次延時{LED=0;					//LED亮Motor=1;				//電機轉Delay(Time);			//延時TimeLED=1;					//LED滅Motor=0;				//電機停Delay(100-Time);		//延時100-Time}}for(Time=100;Time>0;Time--)		//改變亮滅時間,由亮到暗{for(i=0;i<20;i++)			//計次延時{LED=0;					//LED亮Motor=1;				//電機轉Delay(Time);			//延時TimeLED=1;					//LED滅Motor=0;				//電機停Delay(100-Time);		//延時100-Time}}}
}

4.2 獨立按鍵對電機調速?

#include <REGX52.H>
#include "Timer0.h" 
#include "key.h"
#include "LCD1602.h"
#include "Delay.h"
unsigned char Counter,//計數器KeyNum,//按鍵值Speed=1,//檔位Compare=35;//占空比
/*** 函    數:主函數* 參    數:無* 返 回 值:無*/
void main()
{ Timer0_Init();	//初始化定時器 LCD_Init();			while(1){LCD_ShowNum(1,1,Speed,3);KeyNum=GetKey();if(KeyNum==1){Speed--;}else if(KeyNum==2){Speed++;}Speed=Speed%5;if(Speed==0)Compare=0;if(Speed==1)Compare=35;if(Speed==2)Compare=50;if(Speed==3)Compare=75;if(Speed==4)Compare=100; }
}
/*** 函    數:定時器0中斷函數* 參    數:無* 返 回 值:無*/
void Timer0_Routine() interrupt 1
{TL0 = 0x91;			//設置定時初值TH0 = 0xFF;			//設置定時初值Counter++;Counter%=100;if(Counter>=Compare){P2_0=1;//led 熄滅P1_0=0;//電機斷電}else {P2_0=0;//led 亮起P1_0=1;//電機通電}
}

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

代碼編譯請參考

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

代碼下載請參考

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

?

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

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

相關文章

智能光伏開發都能用到什么軟件和工具?

隨著全球對可再生能源的日益重視和光伏技術的快速發展&#xff0c;智能光伏開發已成為推動能源轉型的重要力量。在光伏項目的全生命周期中&#xff0c;從設計、建設到運營管理&#xff0c;各種軟件和工具的應用發揮著至關重要的作用。 一、光伏系統設計軟件 1、PVsyst PVsyst…

Linux 端口

什么是虛擬端口 計算機程序之間的通訊&#xff0c;通過IP只能鎖定計算機&#xff0c;但是無法鎖定具體的程序。通過端口可以鎖定計算機上具體的程序&#xff0c;確保程序之間進行溝通。 IP地址相當于小區地址&#xff0c;在小區內可以有許多用戶&#xff08;程序&#xff09;&…

java并發編程 JUC-基礎篇 快速入門

1.進程與線程的概念 &#xff08;1&#xff09;進程 程序有指令與數據組成&#xff0c;指令要運行&#xff0c;數據要讀寫&#xff0c;就必須指令加載到CPU。數據加載到內容&#xff0c;指令運行需要用到磁盤。 當一個程序被運行時&#xff0c;從磁盤加載這個程序的代碼至內…

探索Vue Router:構建高效單頁面應用的指南

引言 Vue Router&#xff0c;作為Vue.js的官方路由管理器&#xff0c;為構建SPA提供了強大的支持 Vue Router 基礎 Vue Router 的基本概念和作用 Vue Router 是一個用于構建單頁面應用的 Vue.js 插件。它允許我們通過定義路由規則來將不同的 URL 映射到不同的組件&#xff…

1023記錄

米哈游二面 自動化測試中自動化驅動的能力&#xff1f; pytest的驅動能力&#xff1a; 1&#xff0c;自動發現測試用例&#xff1a;以"test_"開頭的Python文件、以"Test"開頭的類和以"test_"開頭的函數&#xff0c;將它們識別為測試用例 2&…

植物大戰僵尸融合版最新版1.0下載及安裝教程

《植物大戰僵尸融合版》最新版1.0已經發布&#xff0c;為粉絲們帶來了全新的游戲體驗。這個版本由B站UP主藍飄飄fly精心打造&#xff0c;引入了創新的植物融合玩法&#xff0c;讓玩家可以享受策略和創意的結合。以下是游戲的詳細介紹和安裝指南&#xff1a; 游戲特色介紹 全新…

基于深度學習的圖像背景剔除

在過去幾年的機器學習領域&#xff0c;我一直想打造真正的機器學習產品。 幾個月前&#xff0c;在參加了精彩的 Fast.AI 深度學習課程后&#xff0c;似乎一切皆有可能&#xff0c;我有機會&#xff1a;深度學習技術的進步使許多以前不可能實現的事情成為可能&#xff0c;而且開…

Java--繼承

1.繼承的本質是對某一批類的抽象&#xff0c;從而實現對世界更好的建模 2.extends的意思是“擴展”&#xff0c;子類是父親的擴展 3.Java中只有單繼承&#xff0c;沒有多繼承 4.繼承關系的兩個類&#xff0c;一個為子類&#xff08;派生類&#xff09;&#xff0c;一個為父類…

QML-Grid和OpacityMask

一個格子條&#xff0c;點擊縮短 import QtQuick 2.0 import QtQuick.Window 2.12 import QtQuick.Controls 2.5 //導入 import QtGraphicalEffects 1.12Window {id:windowwidth: 600height: 500color: "white"visible: trueGrid {visible: falseid:gridwidth:405he…

STAR 命令參數解釋

以這個為例子解釋STAR參數含義 STAR 命令參數解釋 STAR \ --outFilterType BySJout \ --runThreadN 8 \ --outFilterMismatchNmax 2 \ --genomeDir <hg19_STARindex> \ --readFilesIn <un_aligned.fastq> \ --outFileNamePrefix <HEK293> \ --outSAMtype B…

歐科云鏈大咖對話:Web3原生創新靜默期,科技巨頭卻在兩極化發展

出品&#xff5c;OKG Research 作者&#xff5c;Hedy Bi 上周末&#xff0c;歐科云鏈研究院接受FT中文的邀請&#xff0c;作為圓桌嘉賓參與了由FT中文網與上海交通大學上海高級金融學院聯合主辦的金融大師課。在圓桌環節&#xff0c;筆者與各位教授和金融行業科技創新前沿實踐…

案例精選 | 聚銘網絡助力南京市玄武區教育局構建內網日志審計合規體系

南京市玄武區教育局作為江蘇省教育領域的先鋒機構&#xff0c;其工作重點涵蓋了教育政策的實施、教育現代化與信息化的融合、教育資源的優化、教育質量的提升以及教育公平的促進。在這一背景下&#xff0c;網絡安全管理成為了確保教育信息化順利推進的關鍵環節之一。 根據玄武…

Nacos單機部署、集群部署以及Nacos默認持久化derby數據庫和配置mysql數據庫

1. Nacos Windows 下載 1.1 去nacos官網下載nacos-server 發布歷史 | Nacos 官網https://nacos.io/download/release-history/ 下載版本為 nacos-server-2.3.1.zip 2. Derby數據庫 2.1 默認使用Derby數據庫 官網下載Derby數據庫即可。 Apache Derby數據庫https://db.apac…

昇思25天學習打卡營第9天|MindSpore使用靜態圖加速(基于context的開啟方式)

在Graph模式下&#xff0c;Python代碼并不是由Python解釋器去執行&#xff0c;而是將代碼編譯成靜態計算圖&#xff0c;然后執行靜態計算圖。 在靜態圖模式下&#xff0c;MindSpore通過源碼轉換的方式&#xff0c;將Python的源碼轉換成中間表達IR&#xff08;Intermediate Repr…

VSCode遠程服務器

一、安裝VSCode Windows安裝Visual Studio Code(VS Code)-CSDN博客 二、VSCode中安裝Remote-SSH插件 1、在應用商店中搜索Remote - SSH并安裝 2、安裝后會出現下面標注的圖標 三、開始SSH連接 1、點擊加號&#xff0c;創建SSH連接 2、輸入地址&#xff0c;格式是&#xff1a;…

服務器部署 tomcat mysql nginx配置安裝

一、安裝配置tomcat 下載并解壓 Tomcat 首先,從 Apache Tomcat 官方網站下載最新版本的 Tomcat。以 Tomcat 9 為例:下載慢的話,也可以本地上傳到root目錄下進行解壓 sudo wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.58/bin/apache-tomcat-9.0.58.tar.gz sudo tar …

文件打開的系統錯誤分析流程

當用戶出現“Open file failed”錯誤時&#xff0c;手動產生dump文件。 &#xff08;1&#xff09;打開資源管理器&#xff0c;選擇AppNameXXX.exe進程&#xff0c;右擊鼠標選擇“創建轉儲文件” (2) 生成轉儲文件 3.獲取用戶轉儲文件 4.用Visual studio2015打開dump文件分析…

人工智能系列-numpy(三)

&#x1f308;個人主頁&#xff1a;羽晨同學 &#x1f4ab;個人格言:“成為自己未來的主人~” 副本和視圖 副本 副本是一個數據的完整的拷貝&#xff0c;如果我們對副本進行修改&#xff0c;它不會影響到原始數據&#xff0c;物理內存不再同一位置。副本一般發生在Pytho…

MySQL——statement對象詳解

JDBC中的statement對象用于向數據庫發送SQL語句&#xff0c;想完成對數據庫的增刪改查&#xff0c;只需要通過這個對象向數據庫發送增刪改查語句即可。 Statement對象的executeUpdate方法&#xff0c;用于向數據庫發送增、刪、改的sql語句&#xff0c;executeUpdate執行完成后…

Vue前端打包

關于NGINX 介紹:Nginx是一款輕量級的Web服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器。其特點是占有內存少&#xff0c;并發能力強&#xff0c;在各大型互聯網公司都有非常廣泛的使用。 NGiMx 官網:https://nginx.org/ conf 配置文件目錄 html靜態資源文件目錄 lo…