A. 霍爾感測器該怎麼連接單片機
第一接的管腳是你程序控制的你不把程序貼上來沒人知道霍爾元件其他的管腳就是電源和地線第二一般測轉速是在電機上加個小輪子磁鐵放在小輪子的邊緣霍爾元件靠近這個小輪子磁鐵過一次霍爾時霍爾元件管腳產生一個脈沖第三電壓5V完全夠用你從單片機的工作電壓腳上引一根線出來就好
B. 有大神能幫我解釋一下下圖的霍爾元件和單片機為什麼這么連嗎
①圖中霍爾元件為(輸出)電壓型的感測器(估計是開關型的電壓輸出),當被測物體(如帶有磁鐵的扇葉)經過霍爾元件正上方時,霍爾元件輸出(正)電壓。
②LM358運放搭建的是個「過零比較器」(也可以認為是「比較器」),但同相端(3腳)輸入電壓高於反相端(2腳)時,運放輸出(1腳)正電壓(近似為Vcc),否則就輸出負電壓(近似為GND)。圖中 R10為「零」點的失調電阻,就是用來校「零」的。當然,如果理解成比較器電路,那R10就是用來調節「感應靈敏度」的(前提是霍爾元件輸出的電壓是隨磁場變化的模擬量,而不是開關量)
③綜上,簡易的是:霍爾感應磁場後,輸出正電壓,經過運放比較後,輸出開關量電壓到單片機進行開關檢測。
復雜的是:霍爾感應磁場大小,輸出對應電壓值,經過運放比較器,與指定動作電壓比較後,輸出開關量電壓到單片機進行開關檢測。
註:要留心的是,①霍爾普遍輸出為電流的;②霍爾感應磁場分N/S單極,和NS雙極型。
C. 怎麼編程51單片機來採集霍爾信號
現在的霍爾感測器的輸出信號一般都是開關信號,所以使用單片機的任何一個IO口都可以,判斷高低電平即可。
D. 霍爾感測器測速電路圖及如何連接到單片機
霍爾感測器一般由霍爾元件和磁鋼組成。當霍爾元件和磁鋼相對運動時就會產生信號脈沖。根據磁鋼和脈沖數量就可以計算轉速。轉而可以求出周長,得出車速之類的參數。
E. 用單片機C51中的計數器來測霍爾感測器轉一圈的時間程序
#include<reg52.h>
#include<Star1602.h>
#define CIRCLE 1.8 //宏定義 車輪的周長(這個要根據實際的車輪進行設置)
sbit Signal = P1^0; //這里的Signal表示的是霍爾感測器的信號引腳
int m_second=0; //定義變數m_second,用來記錄時間(以毫秒為單位)
float speed=0.0 ; //定義速度變數
float length=0.0 ;//定義路程變數
void main()
{
lcd_init(); //初始化液晶函數
TMOD = 0x01; //打開定時器0,並設定其工作方式為16位定時模式。
TH0=(65536-10000)/ 256;
TL0=(65536-10000)% 256; //設定定時器的初值,使得沒10ms中斷一次
EA = 1; //允許總中斷
ET0 = 1; //允許定時器0終端
TR0 = 1; //啟動定時器0
while(1) //大循環
{
while(Signal); //等待霍爾感測器信號線拉低;
speed = CIRCLE *1000 / m_second ; //計算速度。
m_second = 0; //計時清零
length += CIRCLE ; //路程加一個車輪周期
//第一行,顯示速度
lcd_pos(0x0); //設定液晶的寫入位置為第一行第一格
lcd_wdat(『S』);
lcd_wdat(『p』);
lcd_wdat(『e』);
lcd_wdat(『e』);
lcd_wdat(『d』);
lcd_wdat(『:』);
lcd_wdat( (int)speed%10 ); //顯示速度的整數部分
lcd_wdat( (int)(speed*10)%10 ); //顯示速度的小數第一位
lcd_wdat( (int)(speed*100)%10 ); //顯示速度的小數第二位
lcd_wdat(『m』);
lcd_wdat(『/』);
lcd_wdat(『s』);
//第二行,顯示里程
lcd_pos(0x80); //設定液晶的寫入位置為第二行第一格
lcd_wdat(『L』);
lcd_wdat(『e』);
lcd_wdat(『n』);
lcd_wdat(『g』);
lcd_wdat(『t』);
lcd_wdat(『h』);
lcd_wdat(『:』);
lcd_wdat(length /10000+0x30); //顯示里程的萬位;
lcd_wdat(length %10000/1000+0x30); //顯示里程的千位;
lcd_wdat(length %1000/100+0x30); //顯示里程的百位;
lcd_wdat(length %100/10+0x30); //顯示里程的十位;
lcd_wdat(length %10+0x30); //顯示里程的個位;
lcd_wdat(『m』);
}
}
void timer0_intt() interrupt 1 //
{
TH0=(65536-10000)/ 256;
TL0=(65536-10000)% 256; //設定定時器的初值,使得沒10ms中斷一次
m_second += 10; //因為中斷每10毫秒一次,所以這里每次加10;
}
附件1 Star1602.h
#ifndef __STAR1602_H__
#define __STAR1602_H__
sbit rs= P2^0; //
sbit rw = P2^1; //
sbit ep = P2^2; //
void lcd_init(); //液晶初始化函數
void lcd_pos(unsigned char pos); //設定液晶的顯示位置函數
void lcd_wdat(unsigned char dat); //液晶寫入字元
void lcd_write_int(unsigned int x); //液晶顯示一個整形變數
#endif
附件2 Star1602.c
#include <reg52.h>
#include "1602.h"
/*****************************************************************************
函數功能:LCD延時子程序
入口參數:ms
出口參數:
*****************************************************************************/
static void delay(unsigned char ms)
{
unsigned char i;
while(ms--)
{
for(i = 0; i< 5; i++);
}
}
/*****************************************************************************
函數功能:測試LCD忙碌狀態
入口參數:
出口參數:result
*****************************************************************************/
static bit lcd_bz()
{
bit result;
rs = 0;
rw = 1;
ep = 1;
delay(5);
result = (bit)(P0 & 0x80);
ep = 0;
return result;
}
/*****************************************************************************
函數功能:寫指令數據到LCD子程序
入口參數:cmd
出口參數:
*****************************************************************************/
static void lcd_wcmd(unsigned char cmd)
{
while(lcd_bz()); //判斷LCD是否忙碌
rs = 0;
rw = 0;
ep = 0;
delay(5);
P0 = cmd;
delay(5);
ep = 1;
delay(5);
ep = 0;
}
/*****************************************************************************
函數功能:設定顯示位置子程序
入口參數:pos
出口參數:
*****************************************************************************/
void lcd_pos(unsigned char pos)
{
lcd_wcmd(pos | 0x80);
}
/*****************************************************************************
函數功能:寫入顯示數據到LCD子程序
入口參數:dat
出口參數:
*****************************************************************************/
void lcd_wdat(unsigned char dat)
{
while(lcd_bz()); //判斷LCD是否忙碌
rs = 1;
rw = 0;
ep = 0;
P0 = dat;
delay(5);
ep = 1;
delay(5);
ep = 0;
}
/*****************************************************************************
函數功能:LCD初始化子程序
入口參數:
出口參數:
*****************************************************************************/
void lcd_init()
{
lcd_wcmd(0x38);
delay(100);
lcd_wcmd(0x0c);
delay(100);
lcd_wcmd(0x06);
delay(100);
lcd_wcmd(0x01);
delay(100);
}
/*****************************************************************************
函數功能:LCD寫入一個整形數據
入口參數:int x
*****************************************************************************/
void lcd_write_int(unsigned int x);
{
unsigned char x1,x2,x3,x4,x5;
x1 = x/10000;
x2=x%10000/1000;
x3=x%1000/100;
x4=x%100/10;
x5=x%10;
lcd_wdat(x1+0x30);
lcd_wdat(x2+0x30);
lcd_wdat(x3+0x30);
lcd_wdat(x4+0x30);
lcd_wdat(x5+0x30);
}
F. 霍爾感測器與單片機怎麼接
霍爾感測器分為兩類,1是開關型的,2是線性的,分別叫做開關霍爾和線性霍爾器件,與單片機連接要看你採集的是什麼樣的信號,如果你只需要開關信號的話,就用開關霍爾,從霍爾的輸出連接到單片機的中斷引腳,程序里使用中斷方式處理,或者連接到普通IO引腳,程序里使用查詢方式處理,這種器件輸出就是高低電平,比如3144Z等型號。線性霍爾主要用來測量附近的磁強度,輸出變化與磁場強度成正比,即為一個受磁場調制的模擬信號,單片機要處理的話需要採用AD轉換後才能正確處理的。
G. 單片機測轉速(霍爾)如果不是霍爾,是脈沖即可
很簡單,我提供一個思路給你。轉動一周,則用單片機的T0計數一次,用T1做定時器,時間/次數=轉速。
H. 霍爾感測器如何與單片機連接
常用的霍爾感測器就是一個開關量,我通常是用光耦再連接到單片機,連接光耦發光的那端電阻不能太大保證發光管可以發光。
I. 關於單片機 霍爾感測器 可加分
可以直接把OUT接到單片機的輸入端~