導航:首頁 > 編程知識 > 可編程霍爾感測器如何編程

可編程霍爾感測器如何編程

發布時間:2023-01-20 10:46:51

1. 怎麼編程51單片機來採集霍爾信號

現在的霍爾感測器的輸出信號一般都是開關信號,所以使用單片機的任何一個IO口都可以,判斷高低電平即可。

2. 用單片機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);

}

3. 求利用3144霍爾元件做測速器的編程和線路圖~

產品說明:

產品名稱:ZH3144
產品類別:單輸出霍爾開關集成電路
產品規格:4-20V
產品型號:ZH3144
產品說明:*電源電壓范圍寬,輸出電流大。*開關速度快,無瞬間抖動。*工作頻率寬(0~100KHz)。*壽命長、體積小、安裝方便。*能直接和邏輯電路介面。

應用場合*直流無刷電機無觸點開關*位置控制電流感測器*汽車點火器安全報警裝置*隔離檢測轉速檢測

霍爾感測器是對磁敏感的感測元件,常用於開關信號採集的有CS3020、CS3040等,這種感測器是一個3端器件,外形與三極體相似,只要接上電源、地,即可工作,輸出通常是集電極開路(OC)門輸出,工作電壓范圍寬,使用非常方便。如圖1所示是CS3020的外形圖,將有字面對准自己,三根引腳從左向右分別是Vcc,地,輸出。
圖1 CS3020外形圖
使用霍爾感測器獲得脈沖信號,其機械結構也可以做得較為簡單,只要在轉軸的圓周上粘上一粒磁鋼,讓霍爾開關靠近磁鋼,就有信號輸出,轉軸旋轉時,就會不斷地產生脈沖信號輸出。如果在圓周上粘上多粒磁鋼,可以實現旋轉一周,獲得多個脈沖輸出。在粘磁鋼時要注意,霍爾感測器對磁場方向敏感,粘之前可以先手動接近一下感測器,如果沒有信號輸出,可以換一個方向再試。這種感測器不怕灰塵、油污,在工業現場應用廣泛。
2 硬體電路設計
測速的方法決定了測速信號的硬體連接,測速實際上就是測頻,因此,頻率測量的一些原則同樣適用於測速。
通常可以用計數法、測脈寬法和等精度法來進行測試。所謂計數法,就是給定一個閘門時間,在閘門時間內計數輸入的脈沖個數;測脈寬法是利用待測信號的脈寬來控制計數門,對一個高精度的高頻計數信號進行計數。由於閘門與被測信號不能同步,因此,這兩種方法都存在±1誤差的問題,第一種方法適用於信號頻率高時使用,第二種方法則在信號頻率低時使用。等精度法則對高、低頻信號都有很好的適應性。
圖2是測速電路的信號獲取部分,在電源輸入端並聯電容C2用來濾去電源尖嘯,使霍爾元件穩定工作。HG表示霍爾元件,採用CS3020,在霍爾元件輸出端(引腳3)與地並聯電容C3濾去波形尖峰,再接一個上拉電阻R2,然後將其接入LM324的引腳3。用LM324構成一個電壓比較器,將霍爾元件輸出電壓與電位器RP1比較得出高低電平信號給單片機讀取。C4用於波形整形,以保證獲得良好數字信號。LED便於觀察,當比較器輸出高電平時不亮,低電平時亮。微型電機M可採用 型,通過電位器RP1分壓,實現提高或降低電機轉速的目的。C1電容使電機的速度不會產生突變,因為電容能存儲電荷。
電壓比較器的功能:比較兩個電壓的大小(用輸出電壓的高或低電平,表示兩個輸入電壓的大小關系):
當「+」輸入端電壓高於「-」輸入端時,電壓比較器輸出為高電平;
當「+」輸入端電壓低於「-」輸入端時,電壓比較器輸出為低電平;
比較器還有整形的作用,利用這一特點可使單片機獲得良好穩定的輸出信號,不至於丟失信號,能提高測速的精確性和穩定性。
圖.2 測速電路原理圖
3 測速程序
測量轉速,使用霍爾感測器,被測軸安裝有1隻磁鋼,即轉軸每轉一周,產生1個脈沖,要求將轉速值(轉/分)顯示在數碼管上。
用C語言編制的程序如下:
//硬體:老版STC實驗版
//P3-5口接轉速脈沖
#include <STC12C5410AD.H> // 單片機內部專用寄存器定義
#define uchar unsigned char
#define uint unsigned int //數據類型的宏定義
uchar code LK[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,} ;//數碼管0~9的字型碼
uchar LK1[4]={0xfe,0xfd,0xfb,0xf7}; //位選碼
uint data z,counter; //定義無符號整型全局變數lk
//====================================================
void init(void) //定義名為init的初始化子函數
{ //init子函數開始,分別賦值
TMOD=0X51; //GATE C/T M1 M0 GATE C/T M1 M0 計數器T1 定時器T0
// 0 1 0 1 0 0 0 1
TH1=0; //計數器初始值
TL1=0;
TH0=-(50000/256); //定時器t0 定時50ms
TL0=-(50000%256);

EA=1; // IE=0X00; //EA - ET1 ES ET1 EX1 ET0 EX0
ET0=1; // 1 0 0 0 0 0 1 0
TR1=1;
TR0=1;
TF0=1;
}
//=============================================
void delay(uint k)//延時程序
{
uint data i,j;
for(i=0;i<k;i++)
{
for(;j<121;j++) {;}
}
}
//================================================
void display(void) //數碼管顯示
{
P1=LK[z/1000];P2=LK1[0];delay(10);
P1=LK[(z/100)%10];P2=LK1[1];delay(10);
P1=LK[(z%100)/10];P2=LK1[2];delay(10);
P1=LK[z%10];P2=LK1[3];delay(10);
}
//=========================================
void main(void) //主程序開始
{
uint temp1,temp2;
init(); //調用init初始化子函數

for(;;)
{

temp1=TL1;temp2=TH1;
counter=(temp2<<8)+temp1; //讀出計數器值並轉化為十進制
//z=counter;
display();
} //無限循環語句結束
} //主程序結束
//===================================================
// uint chushi=60;
void timer0(void) interrupt 1 using 1
{

TH0=-(50000/256); //定時器t0 定時50ms
TL0=-(50000%256);

// chushi--;
// if(chushi<=0){
z=counter /0.5 ; //讀出速度
//}
TH0=0; //每50MS清一次定時器
TL1=0;
}
霍爾測速
測速是工農業生產中經常遇到的問題,學會使用單片機技術設計測速儀表具有很重要的意義。要測速,首先要解決是采樣的問題。在使用模擬技術製作測速表時,常用測速發電機的方法,即將測速發電機的轉軸與待測軸相連,測速發電機的電壓高低反映了轉速的高低。使用單片機進行測速,可以使用簡單的脈沖計數法。只要轉軸每旋轉一周,產生一個或固定的多個脈沖,並將脈沖送入單片機中進行計數,即可獲得轉速的信息。
下面以常見的玩具電機作為測速對象,用CS3020設計信號獲取電路,通過電壓比較器實現計數脈沖的輸出,既可在單片機實驗箱進行轉速測量,也可直接將輸出接到頻率計或脈沖計數器,得到單位時間內的脈沖數,進行換算即可得電機轉速。這樣可少用硬體,不需編程,但僅是對霍爾感測器測速應用的驗證。
1 脈沖信號的獲得
霍爾感測器是對磁敏感的感測元件,常用於開關信號採集的有CS3020、CS3040等,這種感測器是一個3端器件,外形與三極體相似,只要接上電源、地,即可工作,輸出通常是集電極開路(OC)門輸出,工作電壓范圍寬,使用非常方便。如圖1所示是CS3020的外形圖,將有字面對准自己,三根引腳從左向右分別是Vcc,地,輸出。

4. 霍爾流量感測如何和plc PLC連接和計算

霍爾流量計輸出的是脈沖信號,流量與脈沖個數是對應的,至於是多少,就得看感測器的手冊了。因為是脈沖信號根據脈頻率快慢,PLC里可以用普通計數器或者高速計數器,如果頻率低可以用普通計數器 任意一個輸入端都可以,如果頻率高,就得用高速計數器,根據PLC型號使用相應的輸入端就好。至於計算,得到脈沖個數了,根據感測器的手冊,多少個脈沖/L之類的,做一下除法就好了,就知道流量了,流速再除以一個時間,得到單位時間的流量就是流速了。望採納。。。。。。

5. 霍爾感測器 PTC-04 編程器用什麼語言編程

在金屬或通電半導體中將產生霍耳效應霍爾效應與其物理現象的應用綜述: 在磁場力作用下。 基於霍耳效應的霍耳感測器常用於測量磁場強度、工業,其測量范圍從10Oe到幾千奧斯特,如齒輪速度檢測。 霍耳感測器在汽車、計算機等行業中得到廣泛應用、運動與接近檢測及電流檢測等,其輸出電壓與磁場強度成正比

閱讀全文

與可編程霍爾感測器如何編程相關的資料

熱點內容
如何修改數據上年結轉 瀏覽:6
win7一直配置文件重啟 瀏覽:124
佳能ir2525i網路掃描 瀏覽:283
win10指紋無法識別 瀏覽:646
jsp中怎麼引入js文件 瀏覽:925
文件名構成部分 瀏覽:484
興國互聯網app有哪些 瀏覽:475
北京時間票房多少票房統計數據 瀏覽:750
探探文件夾是哪個 瀏覽:429
如何分類微信文件 瀏覽:446
城市天際線win10 瀏覽:813
運動APP跑步如何抓作弊 瀏覽:57
微信中秋節動態祝福語 瀏覽:703
練英語的網站哪個好 瀏覽:894
科來網路分析系統報價 瀏覽:437
哪裡可以上傳自己的php網站 瀏覽:373
安卓手機如何打開zx文件 瀏覽:531
app攻擊是什麼 瀏覽:888
app上有把鎖是什麼意思 瀏覽:611
如何用c語言編程五角星 瀏覽:183

友情鏈接