導航:首頁 > 操作系統 > 單片機測轉速

單片機測轉速

發布時間:2022-05-04 03:31:10

A. 單片機直流電機轉速測試

拿個圓盤,上面沿半徑切一條縫,夾在一個紅外收發器的凹槽中,紅外收發模塊的一端接地,一端接電阻接VCC,電阻和紅外模塊之間引一根線到單片機的外部中斷P3.2或P3.3上。
另一邊,單片機一個IO口接光耦一半的正極,光耦的另一半的正極接VCC負極接直流電機再接地。直流電機轉軸插在圓盤圓心,保證能帶動圓盤轉動而不打滑。
編程思想如下:一個一秒定時器函數,一個外部中斷函數,每中斷一次計數一次。每當即時到時,計數器中的數就是轉速
圈/S,然後清零。
至於控制轉速則是由IO口輸出PWM(占空比變化的方波)控制電流大小,以控制轉速。轉速通過上面說的程序測得,然後與設定值進行比較,快了就降低占空比,慢了就增加占空比。
程序由lilaozishiyan發到你郵箱,電路很簡單就沒畫了,只有程序。

B. 單片機測電機轉速,

你的問題包括三個部分:
第一,測量轉速信號的頻率。
第二,將頻率換算為轉速。
第三,測量結果通過LED(你的板子是LCD)顯示。
第二個問題屬於比例運算,表面上很簡單,不過用匯編語言實現的話,有一點點難度,建議用乘法運算,可下載一些多位元組乘法的子程序。
第一個問題可到文庫下載一些頻率測量方面的文章,許多文章有程序的。
第三個問題可根據板子的LCD的型號,查閱廠家的相關資料,必要的話可質詢廠家,一般而言,這類LCD介面有許多是類似的,網上也可以下載程序。
除了上述三個問題,還有一個很根本的問題就是熟悉你的板子的原理,上述所有程序或文獻僅能供你參考。
還有,作為開發板,可想辦法早一些開發板廠家提供的常式,如果你都能熟悉的話,相信經過簡單裁減就可以得到你要的程序。
當然,最主要的還是要有耐心,最好自己弄明白,自己弄明白了,你收獲的是知識和能力,別人幫你編程,你得到的僅僅是0、1組合,對你幫助不大。

C. 用51單片機控制直流電動機並測量轉速

我這個是用pwm+adc做的

ADC EQU 35H

CLOCK BIT P2.4 ;定義ADC0808時鍾位

ST BIT P2.5

EOC BIT P2.6

OE BIT P2.7

PWM BIT P3.7

ORG 00H

SJMP START

ORG 0BH

LJMP INT_T0

START: MOV TMOD,#02H ;

MOV TH0,#20

MOV TL0,#00H

MOV IE,#82H

SETB TR0

WAIT: CLR ST

SETB ST

CLR ST ;啟動AD轉換

JNB EOC,$ ;等待轉換結束

SETB OE

MOV ADC,P1 ;讀取AD轉換結果

CLR OE

SETB PWM ;PWM輸出

MOV A,ADC

LCALL DELAY

CLR PWM

MOV A,#255

SUBB A,ADC

LCALL DELAY

SJMP WAIT

INT_T0: CPL CLOCK ;提供ADC0808時鍾信號

RETI

DELAY: MOV R6,#1

D1: DJNZ R6,D1

DJNZ ACC,D1

RET

END

D. 用51單片機通過霍爾元件AH44E檢測直流電機轉速的c程序

你好!
無需復雜計算。
霍爾感測器用於電機轉速測量,根據需要可在電機轉軸上均勻安裝N個(N=1、2、3、4...)磁鋼,N較大時,可直接用一個導磁材料製作的齒輪盤替代。
在T時間內對霍爾感測器的輸出脈沖進行計數,當T超過設定值(如0.5S)時,記錄計數值k。
轉速n=60*k/(NT)。
希望對你有所幫助,望採納。

E. 單片機測量電動機轉速的原理是什麼啊 能詳細說說嗎從開始數字信號變成脈沖信號一直到LED顯示出轉速

基本上,單片機採集的是轉子產生的信號,這個信號的頻率與轉子的轉速相關.
例如說,轉子或轉子軸的一側粘貼了一面小鏡子,使這個小鏡子能隨轉子一起轉動,然後在旁邊固定一個光源對著鏡子所在的位置,這樣的話,轉子每轉過一圈,小鏡子所反射的光線就會經過一次檢測元件,轉子轉得越快,經過檢測元件的光線就會越頻繁,換言之就是光線被反射到檢測元件上的頻率越高.
那麼,現在你已經知道轉子每轉一圈,檢測元件就會檢測到一次光線了,那如何換算成具體的轉速呢,實際上,只要對檢測元件的兩次光照時間進行檢測,或對一定時間內檢測元件被光線照射到幾次進行計數,然後再換算就可以了.
例如,每兩次光照的間隔為1秒,那麼就表示每秒鍾這個轉子轉了一圈,那麼一分鍾就是60圈,這就是轉速了.
若你需要更精確的檢測,則這個1秒鍾才一次的信號顯然不夠,你需要每秒鍾有更多個脈沖,才能實現較為精確的測量,比如可以測量到1.05圈/秒,或者0.95圈/秒.而這就需要在轉子上粘貼更多的鏡子.
例如說,你在轉子上均勻地粘了10面鏡子,而所檢測到的每兩次光照的間隔為20mS,那麼換算下來,1000mS÷20mS÷10=5,這個5就是每秒鍾的轉數,換算成一般的標法,就是300轉/分了.
然而,如果被檢測的電動機速度更快一些,並且這些"鏡子"數量更多一些,對於慢速的單片機來說,再用檢測光照時間的方法就可能忙不過來了,或者是精度要打折扣了,比如說你的單片機最短要10uS才能中斷一次,而被檢測的電動機所傳過來的"光照"信號周期只有8uS,那麼你可能就檢測不到這個信號了,或者檢測成錯誤的結果.
此時,你就可以將檢測方法改為檢測一定時間內的信號個數,比如說你可以用一個定時器來產生100mS的定時周期,再用另一個定時器來對信號進行計數,比如這個100mS你記錄到了700次信號,按上面的例子,你已經知道轉子每圈會有10個信號,那就是說,這個100mS內,轉子轉過了70圈,這樣的話,就很好計算轉速了,在這個例子中,100mS是十分之一秒,那麼實際的轉速就是10倍×70轉=700轉/秒,算成一般的標法那就是700轉×60秒=4200轉/分了.
知道這個轉速之後,要顯示出來就不用再多說了吧,hoho~~
希望對你有幫助~

F. 單片機測轉速

這個簡單,總體方案為:使用光電對管進行檢測,當光電管檢測到一個脈沖時自動加一,同時計時器也計時間,時間達到1S時,把所記錄檢測得到的脈沖個數顯示在LED數碼管上就可以啦

G. 基於51單片機轉速測量的程序,望高手幫我解釋一下。

#include <reg51.h>
#include <INTRINS.H>

#define FOSC 11.0592

unsigned int speed;
unsigned char key;
unsigned char led_table[10]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xff,0xf6};
long speed_count,speed_count1;
unsigned char speed_check;
unsigned int second_flag;
unsigned char speed_table[4];
unsigned char speed_table1[10];

//定時器頻率1000Hz
void timer1_init(void)
{
EA=0;
TMOD=0x10;
//TH1=1000*FOSC/12/256;
//TL1=(unsigned int)(1000*FOSC/12)%256;
TH1=254;
TL1=51;
TR1=1;
TCON|=0X04; //外部中斷下降觸發
EX1=1; //允許外部中斷
ET1=1;
EA=1;

}
void int1_routine(void) interrupt 2
{
speed_count++;
P1^=0X02;
}

void timer1_routine(void) interrupt 3
//void timer1_routine(void)
{
TH1=254;
//TH1=0xf0;
TL1=51;
//speed_count++;
second_flag++;

}

void main(void)
{
unsigned int i,j,k;
// unsigned char sum;
unsigned speed_table[3];
long time_id;
timer1_init();
speed=0;
P2=0x0f;
P0=0xf0;
P3=0x08;
key=0;
P1=0x00;
speed_check=0;
while(1)
{

//P1^=0XFE;
j=1;
//speed=1234;
speed_table[0]=speed/1000;
speed_table[1]=speed%1000/100;
speed_table[2]=speed%100/10;
speed_table[3]=speed%10;
for(i=0;i<4;i++)
{
P2=j^0xff;
j<<=1;
P0=(led_table[speed_table[i]])&0xfe;
for(k=0;k<250;k++) ;
}
//speed=speed_count;

if(second_flag>=1000) /*中斷1000次進入 */
{

second_flag=0;
time_id++;
speed_table1[time_id%10]=speed_count;/*外部中斷量轉存(是很聰明的方法學習了)*/
speed_count=0;
speed=(speed_table1[0]+speed_table1[1]+speed_table1[2]+speed_table1[3]+speed_table1[4]+speed_table1[5]+speed_table1[6]+speed_table1[7]+speed_table1[8]+speed_table1[9])*6; /*(10X6)10秒的外部中斷量乘以6就是轉速了*/
//speed=speed/2+(speed_table[0]+speed_table[1]+speed_table[2])*6;
}

}

}

H. 單片機汽車轉速測量怎麼做

那就看你做什麼咯。轉速的直接面向控制設備是
儀表盤。
如果你是做儀表盤,那麼轉速信號就是從無到有咯,你就需要對轉速感測器進行脈沖測量,而且得很清楚,多少脈沖對應多少圈數。
如果你是做一般控制器,那麼只要對儀表盤輸出的轉速信號進行脈沖測量,同樣也需知道,多少脈沖對應多少圈數。當然,你也可以直接找轉速感測器,直接像儀表盤一樣測量。

I. 用51單片機測電機的轉速,,,,,謝謝各位。。

用一個轉速感測器或者編碼器,利用單片機引腳的脈沖沿捕獲中斷,1個計數器用於記錄2相鄰脈沖捕獲時間間隔,一個計數器用於記錄脈沖數。
然後計算1s時間內脈沖的個數就是頻率啦,再通過換算的電機轉速;

J. 如何用單片機測量光電編碼器的脈沖,以實現測量電機轉速

你說的是增量型編碼器,這種類型的編碼器主要就是測量速度的,其A,B相,Z相可以通過接在計數器或者PLC上,來獲取其脈沖個數,從而進行轉換,變成速度測量。一般說來只要一相信號就夠了,B相信號和A相信好相位相差90度,通過A超前還是B超前從而判定電機是正轉還是反轉。如果只是測速度,Z相信號用不到的。Z相是一個零點參考信號,每旋轉一圈,會輸出一個脈沖,一般用來測量位移的時候才會用到,不過增量編碼器測位移會出現丟脈沖的現象,造成脈沖累積不準,從而出現位置偏差。最重要的是,供電類型一定要看準,如果是5v供電,你供24v,那就直接燒了,切記切記!

閱讀全文

與單片機測轉速相關的資料

熱點內容
cli執行php 瀏覽:914
功放1db壓縮點 瀏覽:929
多通道收款源碼 瀏覽:582
androidedittext行數 瀏覽:267
安卓手機怎麼樣變電腦 瀏覽:761
基於遺傳演算法優化的BP神經網路 瀏覽:123
光遇測試服為什麼顯示伺服器 瀏覽:642
如何查看哪個app免流 瀏覽:800
雙級壓縮機原理 瀏覽:620
perrorlinux 瀏覽:888
python需要學linux嗎 瀏覽:159
福昕pdf閱讀器官方下載 瀏覽:789
買外包源碼 瀏覽:163
php網站怎麼注入 瀏覽:682
python自學找不到工作 瀏覽:733
php切割文件上傳 瀏覽:249
單片機連續接收8個位元組串口數據 瀏覽:963
單片機不用的io口 瀏覽:182
安卓手機同步另一台手機怎麼解除 瀏覽:249
空氣壓縮式霧化器 瀏覽:992