⑴ 單片機測速感測器如何使用
測量轉速的方式很多,常見的有:霍爾感測器(例如你提到的那一種)、光電感測器(還分反射式與透射式)、以旋轉編碼器等等。
霍爾感測器很容易用,我用過的(我不記清型號了)就3根線:電源、地和輸出信號,為易於與單片機介面,電源就用5V,輸出信號直接介面線(為防止干擾也可加個簡單的阻容濾波)。編程計算每2個脈沖之間的時間(通常用定時器)就可以了。
關於補充:你說的那個型號我沒用過,但我覺得不如3根線的易用,如我前面所說,幾乎不需要任何其它東西就行。如果精度要求高,至多再加一個D觸發器(門控計數方式)。我用12MHz的51實現了30--4000rpm的測量,可以精確到1rpm一下。
⑵ 測速怎麼用單片機實現
購買一個脈沖開關,在機械旋轉部位安裝一個類似於凸台的感應部分,利用凸台每接近脈沖開關後脈沖開關產生以此脈沖的原理,用單片機進行計數,或者用更專業一點的,採用齒圈形式,這樣一個精度相對高一點,另外適合高轉速,至於原理,其實都差不多,都是利用電磁原理,讓感測器產生脈沖,讓單片機進行採集或計數。我這里有相關文章,如果需要請留下郵箱。
⑶ 單片機 速度測試的程序
關鍵是看你用什麼感測器.
⑷ 51單片機 測速
可以考慮用外部中斷加定時器來做,當感應到磁性的時候產生外部中斷,這時打開定時器,給定時器設定一個合理的溢出時間,比如1ms,然後打開定時器溢出中斷,另外在程序中加一個時間變數,定時器產生一次溢出中斷後變數就加1,直到第二個外部中斷到來時,關閉定時器,這時檢查時間變數,值是多少就說明兩次外部中斷間隔了多少毫秒。
單片機,全稱單片微型計算機(英語:Single-Chip Microcomputer),又稱微控制器(Microcontroller),是把中央處理器、存儲器、定時/計數器(Timer/Counter)、各種輸入輸出介面等都集成在一塊集成電路晶元上的微型計算機。與應用在個人電腦中的通用型微處理器相比,它更強調自供應(不用外接硬體)和節約成本。它的最大優點是體積小,可放在儀表內部,但存儲量小,輸入輸出介面簡單,功能較低。由於其發展非常迅速,舊的單片機的定義已不能滿足,所以在很多應用場合被稱為范圍更廣的微控制器;從上世紀80年代,由當時的4位、8位單片機,發展到現在的32位300M的高速單片機。
⑸ 89c52 單片機測速程序 光電碼盤
這個說白了就是測量脈沖的個數,也就是理想方波的頻率。
給你一個測頻率的程序,僅供參考
#include<reg51.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
float f=0;
uchar LED0_data,LED1_data,LED2_data,LED3_data;
uchar i=0;
uchar code Segcode[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void display();
void delay(uint v);
void initime();
/*定時器初始化*/
void initime()
{
TMOD=0x51; //T1計數器,T0定時器,方式1
TL0=(65536-10000)%256;
TH0=(65536-10000)/256;
TL1=0;
TH1=0;
ET0=1;
EA=1;
}
/*延時子函數*/
void delay(unsigned int c)
{
unsigned int i,j;
for(i=0;i<c;i++)
for(j=0;j<100;j++);
}
/*將十進制數拆成送數碼管的顯示碼*/
void dectobit(int dec)
{
LED3_data=dec/1000;
dec=dec % 1000;
LED2_data=dec/100;
dec=dec % 100;
LED1_data=dec/10;
dec=dec % 10;
LED0_data=dec;
}
/*顯示程序*/
void display()
{
P0=Segcode[LED3_data]; //個位
P2&=~0x01;
delay(10);
P2|=0x01;
P0=Segcode[LED2_data]; //十位
P2&=~0x02;
delay(10);
P2|=0x02;
P0=Segcode[LED1_data];
P2&=~0x04;
delay(10);
P2|=0x04; //百位
P0=Segcode[LED0_data]; //千位
P2&=~0x08;
delay(10);
P2|=0x08;
}
void main(void)
{
initime();
TR0=1;
TR1=1;
while(1)
{
dectobit(f);
display();
}
}
timer()interrupt 1 using 2
{
i=i+1;
if(i==100)
{ i=0;
f=TH1*256+TL1;
TL1=0;
TH1=0;
}
TL0=(65536-10000)%256;
TH0=(65536-10000)/256;
}
⑹ 基於單片機的測速
用定時器 記脈沖個數,已知 一圈多少個脈沖 每個脈沖 距離間隔多少 就可以通過 在多長的時間里 記了多少個脈沖 得出 速度
僅供參考
⑺ 三線cpu風扇怎麼用單片機測速
除了紅、黑線,三線CPU風扇的另一根線是風扇轉速輸出信號線。這根線輸出的是一個周期不變(通常為40~50uS),脈沖寬度隨風扇轉速改變的信號,脈沖的幅度為2v左右。也就是說,信號的占空比隨轉速變化。
用單片機測量風扇轉速時,可以直接測量正脈沖的寬度(負脈沖寬度則與轉速成反向變化)。採用正跳沿開啟計數器、捕獲甚至查詢等都可以達到測量正脈沖寬度的目的,當然,你的晶振頻率要足夠高。
⑻ 51單片機測速原理圖
直流電機測速可以看看這個。51單片機直流測速。
⑼ 89C51單片機讀取霍爾編碼器的脈沖測速
400表示轉一圈來的脈沖數是4000 脈沖個數越多測量精度越高。
單片機主要是通過定時器定時1秒或1分鍾,同時利用計數器對光電編碼器的脈沖計數,
每當定時時間到,就讀出計數器的脈沖個數,計數出單位時間的脈沖個數除以轉一圈來的脈沖數,
就是電機的轉數。
如:在單位時間1秒內,計數脈沖為 80000個 即80000個脈沖/每秒
可以推出: 20轉/每秒 即 1200轉/分
⑽ 用80C51單片機怎麼使用測速感測器
測速感測器,就是霍爾感測器,感測器如果有磁鐵經過的時候,會輸出一個高電平(也有些輸出低電平)。然後你利用中斷口,計數這高電平的數目。你然後再乘以輪子的周長,就可以測量速度。
這個感測器需要配合磁鐵才能工作,一般都是在輪子上裝個小的磁鐵,然後統計輪子的轉的圈數。
希望對你有幫助。。