導航:首頁 > 操作系統 > 不用單片機的電機轉速顯示電路圖

不用單片機的電機轉速顯示電路圖

發布時間:2024-10-24 05:59:59

1. 霍爾感測器在測量電機轉速時,它如何與單片機連接啊 求個電路圖 謝謝

2基於霍爾感測器的電機轉速測量系統硬體設計

2.1電機轉速測量系統的硬體電路設計

2.1.1總體硬體設計

使用單片機測量電機轉速的基本結構如圖2-1所示。該系統包括霍爾感測器、隔離整形電路、主CPU、顯示電路、報警電路及電源等部分。

圖2-1系統總體結構圖

其測量過程是測量轉速的霍爾感測器和電機機軸同軸連接,機軸每轉一周,產生一定量的脈沖個數,由霍爾器件電路輸出。經過電耦合器後,即經過隔離整形電路後,成為轉數計數器的計數脈沖。同時霍爾感測器電路輸出幅度為12V的脈沖經光電耦合後降為5V,保持同單片機AT89C51邏輯電平相一致,控制計數時間,即可實現計數器的計數值對應機軸的轉速值。主CPU將該值數據處理後,在LCD液晶顯示器上顯示出來。一旦超速,CPU通過喇叭和轉燈發出聲、光報警信號。

1.感測器部分

主要分為兩個部分。第一部分是利用霍爾器件將電機的轉速轉化為脈沖信號。霍爾測速模塊由鐵質的測速齒輪和帶有霍爾元件的支架構成。測速齒輪如圖2-2所示,齒輪厚度大約2mm,將其固定在待測電機的轉軸上。將霍爾元件固定在距齒輪外圓1mm的探頭上,霍爾元件的對面粘貼小磁鋼,當測速齒輪的每個齒經過探頭正前方時,改變了磁通密度,霍爾元件就輸出一個脈沖信號。第二部分是使用六反相器和光耦,將感測器輸出的信號進行整形隔離,減少計數的干擾。

測速齒輪霍爾元件

圖2-2轉速變換裝置

2.處理器

採用AT89C51單片機作為系統的處理器。

3.顯示部分

該部分有兩個功能,在正常情況下,通過LCD液晶顯示器顯示當前的頻率數值,當電機的轉速超出一定的范圍後,通過蜂鳴器進行報警。蜂鳴器是一種一體化結構的電子訊響器,採用直流電壓供電,廣泛應用於計算機、列印機、復印機、報警器、電子玩具、汽車電子設備、電話機、定時器等電子產品中作發聲器件。

2.1.2系統電路設計

實際測量時,要把霍爾感測器固定在直流測速電機的底板上,與霍爾探頭相對的電機的軸上固定著一片磁鋼塊,電機每轉一周,霍爾感測器便發出一個脈沖信號,將此脈沖信號接到開發的多功能實驗板上的P3.2[]上,設定T0定時,每分鍾所計的進入P3.2的脈沖個數即為直流電機的轉速。

由於在虛擬模擬電路圖中,沒有電機及感測器,所以就直接用一個脈沖信號代替,電路圖如圖2-3所示。

圖2-3總體硬體電路圖

2.2霍爾感測器測量電路設計

2.2.1霍爾元件

根據霍爾效應,人們用半導體材料製成的元件叫霍爾元件。它具有對磁場敏感、結構簡單、體積小、頻率響應寬、輸出電壓變化大和使用壽命長等優點,因此,在測量、自動化、計算機和信息技術等領域得到廣泛的應用。

霍爾感測器A3144是AllegroMicroSystems公司生產的寬溫、開關型霍爾效應感測器,其工作溫度范圍可達-40℃~150℃。它由電壓調整電路、反相電源保護電路、霍爾元件、溫度補償電路、微信號放大器、施密特觸發器和OC門輸出極構成,通過使用上拉電阻可以將其輸出接入CMOS邏輯電路。該晶元具有尺寸小、穩定性好、靈敏度高等特點,有兩種封裝形式,一種是3腳貼片微小型封裝,後綴為「LH」;另一種是3腳直插式封裝,後綴為「UA」[5]。

A3144E系列單極高溫霍爾效應集成感測器是由穩壓電源,霍爾電壓發生器,差分放大器,施密特觸發器和輸出放大器組成的磁敏感測電路,其輸入為磁感應強度,輸出是一個數字電壓訊號。它是一種單磁極工作的磁敏電路,適用於矩形或者柱形磁體下工作。可應用於汽車工業和軍事工程中。

霍爾感測器的外形圖和與磁場的作用關系如圖2-4所示。磁場由磁鋼提供,所以霍爾感測器和磁鋼需要配對使用。

霍爾元件和磁鋼管腳圖

圖2-4霍爾感測器的外形圖

該霍爾感測器的接線圖如圖2-5所示。

圖2-5霍爾感測器的接線圖

2.2.2霍爾感測器測量原理

測量電機轉速的第一步就是要將電機的轉速表示為單片機可以識別的脈沖信號,從而進行脈沖計數。霍爾器件作為一種轉速測量系統的感測器,它有結構牢固、體積小、重量輕、壽命長、安裝方便等優點,因此選用霍爾感測器檢測脈沖信號,其基本的測量原理如圖2-6所示,當電機轉動時,帶動感測器運動,產生對應頻率的脈沖信號,經過信號處理後輸出到計數器或其他的脈沖計數裝置,進行轉速的測量[6]。

2. 鍩轟簬51鍗曠墖鏈虹殑杞閫熸祴閲忚捐★紝紼嬪簭緙栧啓錛佺數璺浠跨湡鍥

嫻嬮噺杞閫燂紝浣跨敤鍏夌數浼犳劅鍣錛岃嫻嬬數鏈哄甫鍔ㄧ焊鐗囨棆杞錛屾垜浠鍦ㄧ焊鐗囦笂寮浜10灝忓瓟錛岀數鏈烘瘡鏃嬭漿涓鍛ㄥ氨浼氫駭鐢10涓鑴夊啿錛屼駭鐢12涓鑴夊啿錛岃佹眰灝嗚漿閫熷礆紙杞/鍒嗭級鏄劇ず鍦ㄦ暟鐮佺′笂銆

瀹為獙紼嬪簭濡備笅錛

#include<REG52.H>

#defineucharunsignedchar

#defineuintunsignedint

#defineulongunsignedlong

#defineLED_DATP1

sbitLED_SEG0=P0^3;

sbitLED_SEG1=P0^2;

sbitLED_SEG2=P0^1;

sbitLED_SEG3=P0^0;

//sbitpin_SpeedSenser=P3^5;//鍏夌數浼犳劅鍣ㄤ俊鍙鋒帴鍦═1涓

#defineTIME_CYLC100//12M鏅舵尟錛屽畾鏃跺櫒10ms涓鏂涓嬈鎴戜滑1縐掕$畻涓嬈¤漿閫//1000ms/10ms=100

#definePLUS_PER10//鐮佺洏鐨勯嬌鏁錛岃繖閲屽亣瀹氱爜鐩樹笂鏈10涓榻匡紝鍗充紶鎰熷櫒媯嫻嬪埌10涓鑴夊啿錛岃や負1鍦

#defineK100.0//鏍″噯緋繪暟

unsignedcharcodetable[]=

{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

uchardataDisbuf[4];//鏄劇ず緙撳啿鍖

uintTcounter=0;//鏃墮棿璁℃暟鍣

bitFlag_Fresh=0;//鍒鋒柊鏍囧織

bitFlag_clac=0;//璁$畻杞閫熸爣蹇

bitFlag_Err=0;//瓚呴噺紼嬫爣蹇

//鍦ㄦ暟鐮佺′笂鏄劇ず涓涓鍥涗綅鏁

voidDisplayFresh();

//璁$畻杞閫燂紝騫舵妸緇撴灉鏀懼叆鏁扮爜綆$紦鍐插尯

voidClacSpeed();

//鍒濆嬪寲瀹氭椂鍣═0

voidinit_timer0();

//鍒濆嬪寲瀹氭椂鍣═1

voidinit_timer1();

//寤舵椂鍑芥暟

voidDelay(uintms);

voidit_timer0()interrupt1/*interruptaddressis0x000b*/

{

TF0=0;//d瀹氭椂鍣T0鐢ㄤ簬鏁扮爜綆$殑鍔ㄦ佸埛鏂

//

TH0=0xC0;/*initvalues*/

TL0=0x00;

Flag_Fresh=1;

Tcounter++;

if(Tcounter>TIME_CYLC)

{Flag_clac=1;//鍛ㄦ湡鍒幫紝璇ラ噸鏂拌$畻杞閫熶簡

}

}

voidit_timer1()interrupt3/*interruptaddressis0x001b*/

{

TF1=0;//瀹氭椂鍣═1鐢ㄤ簬鍗曚綅鏃墮棿鍐呮敹鍒扮殑鑴夊啿鏁

//瑕侀熷害涓嶆槸寰堝揩錛孴1姘歌繙涓嶄細鐩婂

Flag_Err=1;//濡傛灉閫熷害寰堥珮錛屾垜浠搴旇冭檻鍙﹀栦竴縐嶆祴閫熸柟娉曪紝錛氳剦鍐插藉害綆楄漿閫

}

voidmain(void)

{

Disbuf[0]=0;//寮鏈烘椂錛屽垵濮嬪寲涓0000

Disbuf[1]=0;

Disbuf[2]=0;

Disbuf[3]=0;

init_timer0();

init_timer1();

while(1)

{

if(Flag_Fresh)

{Flag_Fresh=0;

DisplayFresh();//瀹氭椂鍒鋒柊鏁扮爜綆℃樉紺

}

if(Flag_clac)

{Flag_clac=0;

ClacSpeed();//璁$畻杞閫燂紝騫舵妸緇撴灉鏀懼叆鏁扮爜綆$紦鍐插尯

Tcounter=0;//鍛ㄦ湡瀹氭椂娓呴浂

TH1=TL1=0x00;//鑴夊啿璁℃暟娓呴浂

}

if(Flag_Err)//瓚呴噺紼嬪勭悊

{

//鏁扮爜綆℃樉紺哄瓧姣'EEEE'

Disbuf[0]=0x9e;//寮鏈烘椂錛屽垵濮嬪寲涓0000

Disbuf[1]=0x9e;

Disbuf[2]=0x9e;

Disbuf[3]=0x9e;

while(1)

{DisplayFresh();//涓嶅啀嫻嬮絳夊緟澶嶄綅i

}

}

}

}

//鍦ㄦ暟鐮佺′笂鏄劇ず涓涓鍥涗綅鏁

voidDisplayFresh()

{

P2|=0xF0;

LED_SEG0=0;

LED_DAT=table[Disbuf[0]];

Delay(1);

P2|=0xF0;

LED_SEG1=0;

LED_DAT=table[Disbuf[1]];

Delay(1);

P2|=0xF0;

LED_SEG2=0;

LED_DAT=table[Disbuf[2]];

Delay(1);

P2|=0xF0;

LED_SEG3=0;

LED_DAT=table[Disbuf[3]];

Delay(1);

P2|=0xF0;

}

//璁$畻杞閫燂紝騫舵妸緇撴灉鏀懼叆鏁扮爜綆$紦鍐插尯

voidClacSpeed()

{

uintspeed;

uintPlusCounter;

PlusCounter=TH1*256+TL1;

speed=K*(PlusCounter/PLUS_PER)/60;//K鏄鏍″噯緋繪暟錛屽傞熷害涓嶅噯錛岃皟鑺侹鐨勫ぇ灝

Disbuf[0]=(speed/1000)%10;

Disbuf[1]=(speed/100)%10;

Disbuf[2]=(speed/10)%10;

Disbuf[3]=speed%10;

}

//鍒濆嬪寲瀹氭椂鍣═0

voidinit_timer0()

{

TMOD&=0xf0;//瀹氭椂10姣縐/*Timer0mode1withsoftwaregate*/

TMOD|=0x01;/*GATE0=0;C/T0#=0;M10=0;M00=1;*/

TH0=0xC0;/*initvalues*/

TL0=0x00;

ET0=1;/*enabletimer0interrupt*/

EA=1;/*enableinterrupts*/

TR0=1;/*timer0run*/

}

//寤舵椂鍑芥暟

voidDelay(uintms)

{

uchari;

while(ms--)

for(i=0;i<100;i++);

}

//鍒濆嬪寲瀹氭椂鍣═1

voidinit_timer1()

{

TMOD&=0x0F;/*Counter1mode1withsoftwaregate*/

TMOD|=0x50;/*GATE0=0;C/T0#=1;M10=0;M00=1;*/

TH1=0x00;/*initvalues*/

TL1=0x00;

ET1=1;/*enabletimer1interrupt*/

EA=1;/*enableinterrupts*/

TR1=1;/*timer1run*/

}

3. 單片機pwm控制電機轉速

單片機控制電機轉速:
如果只有一個轉向的話就比較容易了,如果要有正反兩個轉向,就需要一個H橋,並且兩個I/O口輸出高低電頻控制。
比如用P1口的P1.0,P1.1,P1.2三個I/O口接按鍵,P3.4口接電頻輸出,編個定時程序及按鍵程序,如果是快(全速運行),那就P3.4口直接輸出高電頻「1」;中(50%),那就讓P3.4口0—50ms輸出高電頻「1」,50ms—100ms輸出低電頻「0」,後面就一直以50ms進行一次取反;慢(就用10%吧),0—40ns輸出高電頻「1」,41ns—400ns輸出低電頻「0」,這樣為一個周期,後面就一直循環吧。
如果按鍵P1.0按下,執行方式1,全速運行,否則以默認方式運行;按鍵P1.1按下,執行方式2,改變占空比,以50%的速度運行,否則,不作改變;按鍵P1.2按下,執行方式3,改變占空比,以10%的速度運行,否則,不作改變。

4. 51單片機控制電機轉速

前天幫別人做了一個,還可以顯示當前速度,和設置的速度, 4X4鍵盤(16個按鍵),設置速度可直接輸入,有正轉,反轉,啟動,停止,和加速,減速功能



5. 步進電機的單片機控制

步進電機的單片機控制

通過IO口輸出的具有時序的方波作為步進電機的控制信號,信號經過晶元L298N驅動步進電機;同時,用 4X4的鍵盤來對電機的狀態進行控制,並用數碼管顯示電機的轉速,採用74LS164作為4位單個數碼管的顯示驅動,從單片機輸入信號;

采通過IO口輸出的具有時序的方波作為步進電機的控制信號,信號經過晶元L298N驅動步進電機;同時,用 4X4的鍵盤來對電機的狀態進行控制,並用數碼管顯示電機的轉速,採用74LS164作為4位單個數碼管的顯示驅動

1、對步進電機的控制和驅動,設計中受控電機為四相六線制的步進電機(內阻33歐,步進1.8度,額定電壓12V)

使用L298N晶元驅動電機

L298N晶元可以驅動兩個二相電機(如圖1-1),也可以驅動一個四相電機,輸出電壓最高可達50V,可以直接通過電源來調節輸出電壓;可以直接用單片機的IO口提供信號;而且電路簡單,使用比較方便。 而使用L298N時,可以用L297來提供時序信號,可以節省單片機IO口的使用;也可以直接用單片機模擬出時序信號,由於控制並不復雜,故選用後者。

2、 數碼管顯示電路的設計

串列接法

設計中要顯示4位數字,用74LS164作為顯示驅動,其中帶鎖存,使用串列接法可以節約IO口資源,但要使用SIO,發送數據時容易控制。

二、步進電機控制原理

步進電機是數字控制電機,它將脈沖信號轉變成角位移,即給一個脈沖信號,步進電機就轉動一個角度,因此非常適合於單片機控制。步進電機可分為反應式步進電機(簡稱VR)、永磁式步進電機(簡稱PM)和混合式步進電機(簡稱HB)。

步進電機區別於其他控制電機的最大特點是,它是通過輸入脈沖信號來進行控制的,即電機的總轉動角度由輸入脈沖數決定,而電機的轉速由脈沖信號頻率決定。

步進電機的驅動電路根據控制信號工作,控制信號由單片機產生。其基本原理作用如下:

(1)控制換相順序

通電換相這一過程稱為脈沖分配。例如:三相步進電機的三拍工作方式,其各相通電順序為A-B-C-D,通電控制脈沖必須嚴格按照這一順序分別控制A,B,C,D相的通斷。

(2)控制步進電機的轉向

如果給定工作方式正序換相通電,步進電機正轉,如果按反序通電換相,則電機就反轉。

(3)控制步進電機的速度

如果給步進電機發一個控制脈沖,它就轉一步,再發一個脈沖,它會再轉一步。兩個脈沖的間隔越短,步進電機就轉得越快。調整單片機發出的脈沖頻率,就可以對步進電機進行調速。

三、理論設計

1、步進電機驅動電路

通過L298N構成步進電機的驅動電路,電路圖如圖3-2所示。

通過單片機的IOB8~IOB13對L298N的IN1~IN4口和ENA、ENB口發送方波脈沖信號,2、數碼管顯示電路的設計

數碼管的顯示驅動使用74LS164,通過的IOB0和IOB1口對DATA和CLK發送數據。

3、4x4鍵盤電路

使用了標準的4x4鍵盤,單片機的A口低8位為鍵盤的介面。盡管設計要求中只需要4個鍵對步進電機的狀態進行控制,但考慮到對控制功能的擴展,我們使用了4x4的鍵盤。

6. 用單片機控制風扇的轉速希望提供具體電路,我是新手希望大家多多幫助!!!

直流電機調速的技術是很常見的。。

不過當然不是用電阻,那樣會有巨大的損耗。

一般直流電機調速都採用PWM(即脈寬調制)技術。
即,首先在電源和電機之間串聯一個開關電子器件(比如mosfet管、達林頓管),這種器件可以以極高的速度控制電路通斷。然後,我利用模擬電路或者數字電路(現在多用單片機)來控制這個開關管就能控制電機的電功率。比如,我想讓電機工作電壓只有電源電壓的一半,我可以以1毫秒為周期,讓開關管通0.5毫秒,斷0.5毫秒,這樣快速的電壓波動在經過電機轉子電樞這一有慣性的元件後就被「抹平」了,而且平均下來電壓正好是電源的1/2,這就達到了控制電機輸出功率的目的。[1]

開關元件可以在淘寶上買到現成的模塊。其中最常用的是L298N做的電機控制板(樓上圖中上方的那個就是),有兩路雙向調速(用H橋實現)的輸出,單路最大電流2A,工作電壓是12V以下(記不清是12還是24,你查一下。。)。如果需要更大功率,可以找BTS7960做的模塊,容量是40A。。。

至於單片機,如果你有51可以用,學學定時器中斷和IO操作,然後網上51 PWM的資料很多。。當然arino更不錯(樓上圖中下方的那個就是,不過是山寨的,正版是藍色的,淘寶搜),除了AVR性能更好之外,IDE自帶的驅動函數也挺方便。我記得51是沒有硬體PWM埠的,而AVR有,在Arino IDE中直接調現成函數就能用。。。

參考資料:[1]來自我以前的原創回答

閱讀全文

與不用單片機的電機轉速顯示電路圖相關的資料

熱點內容
梁的箍筋加密區可以使用套筒嗎 瀏覽:531
java覆蓋父類方法 瀏覽:989
不需要命令方塊的教程 瀏覽:571
程序員開的發票 瀏覽:805
如何壓縮tiff 瀏覽:9
ubuntu開啟命令行 瀏覽:955
androidheadfirst 瀏覽:304
單片機串列介面控制寄存器 瀏覽:311
什麼叫伺服器的ip地址 瀏覽:496
首維app怎麼樣 瀏覽:15
安卓系統維護用什麼軟體最強 瀏覽:890
編譯器lattice偏序 瀏覽:106
機器視覺圖像處理演算法 瀏覽:734
倒計時秒數什麼app 瀏覽:364
局部優化與擴展演算法 瀏覽:872
軍事程序員能編游戲嗎 瀏覽:449
python某某函數什麼意思 瀏覽:496
程序員在山間養老 瀏覽:890
android概要設計 瀏覽:607
linux進程優先順序查看 瀏覽:97