當(dāng)前位置: 首頁(yè) > 傳感測(cè)量產(chǎn)品 > 工業(yè)傳感器 > 霍爾傳感器
發(fā)布日期:2022-10-09 點(diǎn)擊率:81
2. dws配中斷腳和使能腳
(根據(jù)原理圖中“09_CAMERA_SENSOR”頁(yè)中, “HALL”部分【OUT】引腳所連接 - 使能腳GPIO12)
v666為例
dws配置pin腳: - 由于硬件上拉-》dws也要配成上拉
EintMode|Def.Mode M0|M1|M2|M3|M4|M5|M6|M7|InPull En|InPull SelHigh|Def.Dir|In|Out|OutHigh|VarName1
GPIO12 1 0:GPIO12 1 1 IN GPIO_HALL_1_PIN
dws配置EINT:
EINTVar|Debounce Time(ms)|Polarity|Sensitive_Level|Debounce En
EINT12 HALL_1 0 Low Level Disable
dts:
* HALL GPIO standardization */
&pio {
hall_pin_default: halldefaultcfg {
};
hall_pin_as_int: hallint@12 {
pins_cmd_dat {
pins = 《PINMUX_GPIO12__FUNC_GPIO12》;
slew-rate = 《0》;
bias-pull-up = 《00》;
};
};
};
&keypad {
pinctrl-names = “default”, “hall_pin_as_int”;
pinctrl-0 = 《&hall_pin_default》;
pinctrl-1 = 《&hall_pin_as_int》;
status = “okay”;
};
一、 查看是否有鍵值上報(bào)
getevent -i
add device 8: /dev/input/event1
bus: 0019
vendor 2454
product 6500
version 0010
name: “mtk-kpd” // 與音量加減鍵、電源鍵、hall同一個(gè)event
location: “”
id: “”
version: 1.0.1
getevent -t /dev/input/event1 // 打印出來(lái)的是16進(jìn)制
[70.] 0001 0085 // 85 -》 133 遠(yuǎn)離
[70.] 0000 0000
[70.] 0001 0085
[70.] 0000 0000
二、查看代碼確定上報(bào)鍵值
1. alpskernel-3.18driversinputkeyboardmediatekkpd.c
#define KEY_HALL_F3 133 //for hall eint report key far // 磁鐵遠(yuǎn)離
#define KEY_HALL_F4 134 //for hall eint report key close // 磁鐵靠近
2. alps/device/magcomm/magc6580_we_c_m/mtk-kpd.kl , 映射給上層
key 114 0x72 VOLUME_DOWN // 側(cè)鍵
key 115 0x73 VOLUME_UP
key 116 0x74 POWER
+ key 133 F3 // 霍爾
+ key 134 F4
注:修改此文件,可以用push的方式先試驗(yàn)
find /system -name mtk-kpd.kl
/system/usr/keylayout/mtk-kpd.kl
adb push 。.. /system/usr/keylayout/
三、添加權(quán)限
alps/device/mediatek/common/sepolicy/basic/system_app.te
# add permission for hall
allow system_app sysfs_keypad_file:dir { search read write };
allow system_app sysfs_keypad_file:file { read write getattr setattr open create };
alps/device/mediatek/common/sepolicy/full/platform_app.te
# add permission for hall
allow platform_app sysfs_keypad_file:dir { search read write };
allow platform_app sysfs_keypad_file:file { read write getattr setattr open create };
alps/device/mediatek/common/sepolicy/full/priv_app.te
# add permission for hall
allow priv_app sysfs_keypad_file:dir { search read write };
allow priv_app sysfs_keypad_file:file { read write getattr setattr open create };
四、手寫(xiě)筆插入與拔出 - 用hall來(lái)實(shí)現(xiàn),手寫(xiě)筆尖有磁性(以80 5.1為例)
1. 修改alps/device/haocheng/hct6580_weg_a_l/mtk-kpd.kl ,映射給上層
key 133 F3
key 134 F4
+ key 136 F6
+ key 137 F7
2. 修改alpskernel-3.10driversmiscmediatekkeypadkpd.c,仿造hall_1添加hall_2的代碼:
+ #ifdef GPIO_HALL_2_PIN
#define CUSTOM_HALL_2_SUPPORT
#define GPIO_HALL_2_EINT_PIN GPIO_HALL_2_PIN
#define GPIO_HALL_2_EINT_PIN_M_EINT GPIO_HALL_2_PIN_M_EINT
static unsigned int hall_2_irq;
#define HALL_2_TAG “hall: ”
#define HALL_2_DBG(fmt, args.。.) printk(HALL_2_TAG fmt, ##args)
struct work_struct hall_2_eint_work;
static int hall_2_state_flag = 0;
static bool hall_2_state = 1; //0: close 1:far
#define KEY_HALL_F6 136 //for hall eint report key far
#define KEY_HALL_F7 137 //for hall eint report key close
+ #endif
+ #ifdef CUSTOM_HALL_2_SUPPORT // 提供給上層調(diào)用接口: /sys/bus/。..
static volatile int hall_2_status = 0;
static ssize_t store_hall_2_state(struct device_driver *ddri, const char *buf, size_t count)
{
if (sscanf(buf, “%u”, &hall_2_status) != 1) {
kpd_print(“kpd call state: Invalid values
”);
return -EINVAL;
}
hall_2_state = (bool)hall_2_status;
return count;
}
static ssize_t show_hall_2_state(struct device_driver *ddri, char *buf)
{
ssize_t res;
res = snprintf(buf, PAGE_SIZE, “%d
”, hall_2_state);
return res;
}
static DRIVER_ATTR(hall_2_state, S_IWUSR | S_IALLUGO, show_hall_2_state, store_hall_2_state);
+ #endif
static struct driver_attribute *kpd_attr_list[] = {
&driver_attr_kpd_call_state,
#ifdef CUSTOM_HALL_SUPPORT
&driver_attr_hall_state,
#endif
+ #ifdef CUSTOM_HALL_2_SUPPORT // 提供給上層調(diào)用接口: /sys/bus/。..
+ &driver_attr_hall_2_state,
+ #endif
};
+ #ifdef CUSTOM_HALL_2_SUPPORT
+ void kpd_hall_2_key_handler(unsigned long pressed, u16 linux_keycode)
{
if(!kpd_input_dev) {
printk(“KPD input device not ready
”);
return;
}
input_report_key(kpd_input_dev, linux_keycode, pressed);
input_sync(kpd_input_dev);
if (kpd_show_hw_keycode) {
printk(KPD_SAY “(%s) KEY_HALL keycode =%d
”, pressed ? “pressed” : “released”, linux_keycode);
}
}
static void hall_2_work_func(struct work_struct *work)
{
if(hall_2_state == 1) {
kpd_hall_key_handler(1, KEY_HALL_F6);
kpd_hall_key_handler(0, KEY_HALL_F6);
} else if(hall_2_state == 0) {
kpd_hall_key_handler(1, KEY_HALL_F7);
kpd_hall_key_handler(0, KEY_HALL_F7);
}
}
bool get_hall_2_state()
{
return hall_2_state;
}
EXPORT_SYMBOL(get_hall_2_state);
void hall_2_eint_func(void)
{
disable_irq_nosync(hall_2_irq);
if(hall_2_state_flag)
{
hall_2_state_flag = 0;
hall_2_state = 1;
irq_set_irq_type(hall_2_irq,IRQ_TYPE_LEVEL_LOW);
}
else{
hall_2_state_flag = 1;
hall_2_state = 0;
irq_set_irq_type(hall_2_irq,IRQ_TYPE_LEVEL_HIGH);
}
enable_irq(hall_2_irq);
schedule_work(&hall_2_eint_work);
}
static irqreturn_t hall_2_irq_handler(int irq, void *dev_id)
{
hall_2_eint_func();
return IRQ_HANDLED;
}
int hall_2_setup_eint(void)
{
struct device_node *hall_node;
u32 ints[2] = {0, 0};
mt_set_gpio_dir(GPIO_HALL_2_EINT_PIN, GPIO_DIR_IN);
mt_set_gpio_mode(GPIO_HALL_2_EINT_PIN, GPIO_HALL_2_EINT_PIN_M_EINT);
mt_set_gpio_pull_enable(GPIO_HALL_2_EINT_PIN, 0);
hall_node = of_find_compatible_node(NULL,NULL,“mediatek, HALL_2-eint”);
if(hall_node){
printk(“hall_irq has find!
”);
of_property_read_u32_array(hall_node, “debounce”, ints, ARRAY_SIZE(ints));
mt_gpio_set_debounce(ints[0], ints[1]);
hall_2_irq= irq_of_parse_and_map(hall_node, 0);
if (!hall_2_irq)
{
printk(“irq_of_parse_and_map hall fail??!
”);
return -EINVAL;
}
if(request_irq(hall_2_irq, hall_2_irq_handler, IRQF_TRIGGER_NONE, “HALL_2-eint”, NULL)) {
printk(“HALL IRQ NOT AVAILABLE??!
”);
return -EINVAL;
}
}
else{
printk(“null hall_irq node!
”);
return -EINVAL;
}
return 0;
}
#endif
static int kpd_pdrv_probe(struct platform_device *pdev)
{
#ifdef CUSTOM_HALL_SUPPORT
__set_bit(KEY_HALL_F3, kpd_input_dev-》keybit);
__set_bit(KEY_HALL_F4, kpd_input_dev-》keybit);
#endif
+ #ifdef CUSTOM_HALL_2_SUPPORT
+ __set_bit(KEY_HALL_F6, kpd_input_dev-》keybit); // 使能input上報(bào)鍵值
+ __set_bit(KEY_HALL_F7, kpd_input_dev-》keybit);
+ #endif
。..
#ifdef CUSTOM_HALL_SUPPORT
INIT_WORK(&hall_eint_work, hall_work_func);
hall_setup_eint();
#endif
+ #ifdef CUSTOM_HALL_2_SUPPORT
+ INIT_WORK(&hall_2_eint_work, hall_2_work_func); // 中斷中喚醒工作,工作中上報(bào)key
+ hall_2_setup_eint(); // 設(shè)置GPIO口狀態(tài),從dts獲取中斷信息,注冊(cè)中斷
+ #endif
。..
}
3. 修改dws,配置GPIO口為中斷模式,配置中斷的觸發(fā)方式(電平or邊沿)
五、39平臺(tái):
1. device/mediateksample/k39tv1_bsp_1g/mtk-kpd.kl
+ key 133 F3
+ key 134 F4
2. mt6739.dts
+ hall_1: hall_1 {
+ compatible = “mediatek, hall_1-eint”;
+ status = “disabled”;
+ };
3. k39tv1_bsp_1g.dts
+
+ &keypad {
pinctrl-names = “default”, “hall_pin_as_int”;
pinctrl-0 = 《&hall_pin_default》;
pinctrl-1 = 《&hall_pin_as_int》;
status = “okay”;
};
&pio {
hall_pin_default: halldefaultcfg {
};
hall_pin_as_int: hallint@14 {
pins_cmd_dat {
pins = 《PINMUX_GPIO14__FUNC_GPIO14》;
slew-rate = 《0》;
bias-pull-up = 《00》;
};
};
+ };
+
4. codegen.dws
EINT:
ID EINTVar|Debounce Time(ms)|Polarity|Sensitive_Level|Debounce En
EINT14 HALL_1 0 Low Level Disable
GPIO:
ID EintMode|Def.Mode M0|M1|M2|M3|M4|M5|M6|M7|InPull En|InPull SelHigh|Def.Dir|In|Out|OutHigh|VarName1
GPIO14 1 0:GPIO14 1 1 1 IN 1 GPIO_HALL_1_PIN
5. kernel-4.4/drivers/input/keyboard/mediatek/kpd.c
+ #ifdef CONFIG_KST_HALL_SUPPORT
+ #define CUSTOM_HALL_SUPPORT
#define GPIO_HALL_EINT_PIN GPIO_HALL_1_PIN
#define GPIO_HALL_EINT_PIN_M_EINT GPIO_HALL_1_PIN_M_EINT
static unsigned int hall_irq;
#define HALL_TAG “hall: ”
#define HALL_DBG(fmt, args.。.) printk(HALL_TAG fmt, ##args)
struct work_struct hall_eint_work;
static int hall_state_flag = 0;
static bool hall_state = 1; //0: close 1:far
#define KEY_HALL_F3 133 //116 //for hall eint report key far
#define KEY_HALL_F4 134 //62 //for hall eint report key close
struct pinctrl *hallpinctrl;
+ struct pinctrl_state *hall_pin_as_int;
+ #endif
+ #ifdef CUSTOM_HALL_SUPPORT
+ static volatile int hall_status = 0;
static ssize_t store_hall_state(struct device_driver *ddri, const char *buf, size_t count)
{
if (sscanf(buf, “%u”, &hall_status) != 1) {
kpd_print(“kpd call state: Invalid values
”);
return -EINVAL;
}
hall_state = (bool)hall_status;
return count;
}
static ssize_t show_hall_state(struct device_driver *ddri, char *buf)
{
ssize_t res;
res = snprintf(buf, PAGE_SIZE, “%d
”, hall_state);
return res;
}
+ static DRIVER_ATTR(hall_state, S_IWUSR | S_IRUGO, show_hall_state, store_hall_state);
+ #endif
static struct driver_attribute *kpd_attr_list[] = {
&driver_attr_kpd_call_state,
+ #ifdef CUSTOM_HALL_SUPPORT
+ &driver_attr_hall_state,
+ #endif
};
+ #ifdef CUSTOM_HALL_SUPPORT
+ void kpd_hall_key_handler(unsigned long pressed, u16 linux_keycode)
{
if(!kpd_input_dev) {
printk(“KPD input device not ready
”);
return;
}
input_report_key(kpd_input_dev, linux_keycode, pressed);
input_sync(kpd_input_dev);
if (kpd_show_hw_keycode) {
printk(KPD_SAY “(%s) KEY_HALL keycode =%d
”, pressed ? “pressed” : “released”, linux_keycode);
}
}
static void hall_work_func(struct work_struct *work)
{
printk(“key hall_work_func not ready
”); //add
if(hall_state == 1) {
kpd_hall_key_handler(1, KEY_HALL_F3);
kpd_hall_key_handler(0, KEY_HALL_F3);
}
else if(hall_state == 0) {
kpd_hall_key_handler(1, KEY_HALL_F4);
kpd_hall_key_handler(0, KEY_HALL_F4);
}
}
void hall_eint_func(void)
{
disable_irq_nosync(hall_irq);
if(hall_state_flag)
{
hall_state_flag = 0;
hall_state = 1;
irq_set_irq_type(hall_irq,IRQ_TYPE_LEVEL_LOW);
}
else
{
hall_state_flag = 1;
hall_state = 0;
irq_set_irq_type(hall_irq,IRQ_TYPE_LEVEL_HIGH);
}
enable_irq(hall_irq);
schedule_work(&hall_eint_work);
}
static irqreturn_t hall_irq_handler(int irq, void *dev_id)
{
hall_eint_func();
return IRQ_HANDLED;
}
int hall_setup_eint(void)
{
struct device_node *hall_node;
u32 ints[2] = {0, 0};
hall_node = of_find_compatible_node(NULL,NULL,“mediatek, hall_1-eint”);
if(hall_node){
printk(“hall_irq has find!
”);
of_property_read_u32_array(hall_node, “debounce”, ints, ARRAY_SIZE(ints));
gpio_set_debounce(ints[0], ints[1]);
hall_irq= irq_of_parse_and_map(hall_node, 0);
if (!hall_irq)
{
printk(“irq_of_parse_and_map hall fail??!
”);
return -EINVAL;
}
if(request_irq(hall_irq, hall_irq_handler, IRQF_TRIGGER_NONE, “hall_1-eint”, NULL)) {
printk(“HALL IRQ NOT AVAILABLE?。?br/>”);
return -EINVAL;
}
}
else
{
printk(“null hall_irq node!
”);
return -EINVAL;
}
return 0;
+ }
+ #endif
+ #ifdef CUSTOM_HALL_SUPPORT
+ int hall_get_gpio_info(struct platform_device *pdev)
{
int ret;
hallpinctrl = devm_pinctrl_get(&pdev-》dev);
if (IS_ERR(hallpinctrl)) {
ret = PTR_ERR(hallpinctrl);
dev_err(&pdev-》dev, “hallpinctrl err!
”);
return ret;
}
hall_pin_as_int = pinctrl_lookup_state(hallpinctrl, “hall_pin_as_int”);
if (IS_ERR(hall_pin_as_int)) {
ret = PTR_ERR(hall_pin_as_int);
dev_err(&pdev-》dev, “hall_pin_as_int err!
”);
return ret;
}
pinctrl_select_state(hallpinctrl, hall_pin_as_int);
return 0;
+ }
+ #endif
static int kpd_pdrv_probe(struct platform_device *pdev)
{
__set_bit(KPD_KEY_MAP, kpd_input_dev-》keybit);
+ #ifdef CUSTOM_HALL_SUPPORT
+ __set_bit(KEY_HALL_F3, kpd_input_dev-》keybit);
+ __set_bit(KEY_HALL_F4, kpd_input_dev-》keybit);
+ #endif
。..
hrtimer_init(&aee_timer_5s, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
aee_timer_5s.function = aee_timer_5s_func;
+ #ifdef CUSTOM_HALL_SUPPORT
+ INIT_WORK(&hall_eint_work, hall_work_func);
+ hall_get_gpio_info(pdev);
+ hall_setup_eint();
+ #endif
err = kpd_create_attr(&kpd_pdrv.driver);
。..
}
調(diào)試案例
案例一 : hall不通 - 電容貼錯(cuò)
現(xiàn)象 :
平臺(tái) : androidN,MTK6737
排查過(guò)程: 1. 查看是否有鍵值上報(bào) - 拿磁鐵靠近
getevent -t /dev/input/event1 - 無(wú)鍵值上報(bào)
2. 檢查dws中的gpio口配置&中斷配置、dts中斷配置均ok(根據(jù)原理圖得知EINT12 即 GPIO12)
3. 接示波器量中斷腳 - 磁鐵靠近時(shí) 中斷腳無(wú)高低電平變化
4. 交給硬件同事檢查 -》 一個(gè)電容貼錯(cuò),替換后ok
處理方案: 換料 改bom
案例二 : hall不通 - hall芯片貼反
現(xiàn)象 :
平臺(tái) : androidN,MTK6737
排查過(guò)程: 1. 查看是否有鍵值上報(bào) - 拿磁鐵靠近
getevent -t /dev/input/event1 - 無(wú)鍵值上報(bào)
2. 檢查dws中的gpio口配置&中斷配置、dts中斷配置均ok
3. hall芯片貼反了 -》 改正ok
案例三 : hall不通 - 硬件短路
現(xiàn)象 :
平臺(tái) : androidN,MTK6737
排查過(guò)程: 1. 查看是否有鍵值上報(bào) - 拿磁鐵靠近
getevent -t /dev/input/event1 - 無(wú)鍵值上報(bào)
2. 用鑷子將hall中斷腳短地(平常上拉為高電平,低電平為中斷) - 有鍵值上報(bào)
本文轉(zhuǎn)載自:
傳感器的意義
事實(shí)上,目前智能手機(jī)應(yīng)用軟件生態(tài)系統(tǒng)不斷擴(kuò)展。傳感器除了能增加體現(xiàn)感和用戶互動(dòng)這些理念性的東西外。游戲上傳感器的應(yīng)用也成為新的發(fā)展方向。就是體感裝置在游戲設(shè)備的崛起一樣,傳感器在手機(jī)和平板上的發(fā)展會(huì)越來(lái)越快?,F(xiàn)在在游戲、健康照護(hù)、體能訓(xùn)練以及許多新應(yīng)用都要用到傳感器。
由于智慧手機(jī)中加入了各種傳感器,使手機(jī)也變得越來(lái)越智慧化。加速度傳感器回應(yīng)使用者的互動(dòng)方式,使得傳統(tǒng)平淡無(wú)奇的輸入作業(yè),轉(zhuǎn)變成類(lèi)似游戲的新奇體驗(yàn),進(jìn)而提高使用者使用智慧手機(jī)的意愿。過(guò)去智慧手機(jī)比較的重點(diǎn)在于是否擁有加速度傳感器,目前變成比較誰(shuí)的手機(jī)具備了三軸陀螺儀,未來(lái)則有更多的新的傳感器的加入。
下面就列舉下大家比較關(guān)注也是常見(jiàn)的幾種傳感器(或者叫感應(yīng)器)
重力感應(yīng)器
手機(jī)重力感應(yīng)技術(shù):利用壓電效應(yīng)實(shí)現(xiàn),簡(jiǎn)單來(lái)說(shuō)是測(cè)量?jī)?nèi)部一片重物(重物和壓電片做成一體)重力正交兩個(gè)方向的分力大小,來(lái)判定水平方向。通過(guò)對(duì)力敏感的傳感器,感受手機(jī)在變換姿勢(shì)時(shí),重心的變化,使手機(jī)光標(biāo)變化位置從而實(shí)現(xiàn)選擇的功能。
手機(jī)重力感應(yīng)指的是手機(jī)內(nèi)置重力搖桿芯片,支持搖晃切換所需的界面和功能,甩歌甩屏,翻轉(zhuǎn)靜音,甩動(dòng)切換視頻等,是一種非常具有使用樂(lè)趣的功能。
重力感應(yīng)器說(shuō)的簡(jiǎn)單點(diǎn)就是,你本來(lái)把手機(jī)拿在手里是豎著的,你將它轉(zhuǎn)90度,橫過(guò)來(lái),它的頁(yè)面就跟隨你的重心自動(dòng)反應(yīng)過(guò)來(lái),也就是說(shuō)頁(yè)面也轉(zhuǎn)了90度,極具人性化?,F(xiàn)在基本上智能手機(jī)都有內(nèi)置重力感應(yīng)器,甚至有些非智能手機(jī)也有內(nèi)置。其常見(jiàn)的應(yīng)用有玩平衡球了,還有橫屏瀏覽網(wǎng)頁(yè)、看小說(shuō)之類(lèi)的了。
根據(jù)壓電效應(yīng)的原理來(lái)工作的。所謂的壓電效應(yīng)就是 “對(duì)于不存在對(duì)稱中心的異極晶體加在晶體上的外力除了使晶體發(fā)生形變以外,還將改變晶體的極化狀態(tài),在晶體內(nèi)部建立電場(chǎng),這種由于機(jī)械力作用使介質(zhì)發(fā)生極化的現(xiàn)象稱為正壓電效應(yīng)”。
它采用彈性敏感元件制成懸臂式位移器,與采用彈性敏感元件制成的儲(chǔ)能彈簧來(lái)驅(qū)動(dòng)電觸點(diǎn),完成從重力變化到電信號(hào)的轉(zhuǎn)換。重力傳感器在手機(jī)橫豎的時(shí)候屏幕會(huì)自動(dòng)轉(zhuǎn),在玩游戲可以代替上下左右,比如說(shuō)玩賽車(chē)游戲,可以不通過(guò)按鍵,將手機(jī)平放,左右搖擺就可以代替模擬機(jī)游戲的方向左右移動(dòng)了。
重力傳感器就是利用了其內(nèi)部的由于加速度造成的晶體變形這個(gè)特性。由于這個(gè)變形會(huì)產(chǎn)生電壓,只要計(jì)算出產(chǎn)生電壓和所施加的加速度之間的關(guān)系,就可以將加速度轉(zhuǎn)化成電壓輸出。當(dāng)然,還有很多其它方法來(lái)制作加速度傳感器,比如電容效應(yīng),熱氣泡效應(yīng),光效應(yīng),但是其最基本的原理都是由于加速度產(chǎn)生某個(gè) 介質(zhì)產(chǎn)生變形,通過(guò)測(cè)量其變形量并用相關(guān)電路轉(zhuǎn)化成電壓輸出。手機(jī)重力感應(yīng)指的是手機(jī)內(nèi)置重力搖桿芯片,支持搖晃切換所需的界面和功能,甩歌甩屏,翻轉(zhuǎn)靜音,甩動(dòng)切換視頻等,是一種非常具有使用樂(lè)趣的功能。
加速度傳感器
加速度傳感器是一種能夠測(cè)量加速力的電子設(shè)備。加速力就是當(dāng)物體在加速過(guò)程中作用在物體上的力,就好比地球引力,也就是重力。加速力可以是個(gè)常量,比如g,也可以是變量。因此它的范圍比重力感應(yīng)器要大,但是一般在手機(jī)被提到的加速度感應(yīng)器時(shí),其實(shí)就是指重力感應(yīng)器,因此兩者可以看做是等價(jià)的。
磁傳感器、加速度傳感器和陀螺儀通常稱為慣性傳感器,常用于各種設(shè)備或終端中實(shí)現(xiàn)姿態(tài)檢測(cè),運(yùn)動(dòng)檢測(cè)等。這些傳感器提供了各種APP、游戲、軟件成為有趣的現(xiàn)實(shí)。加速度傳感器利用重力加速度,可以用于檢測(cè)設(shè)備的傾斜角度,但是它會(huì)受到運(yùn)動(dòng)加速度的影響,使傾角測(cè)量不夠準(zhǔn)確,所以通常需利用陀螺儀和磁傳感器補(bǔ)償。 同時(shí)磁傳感器測(cè)量方位角時(shí),也是利用地磁場(chǎng),當(dāng)系統(tǒng)中電流變化或周?chē)袑?dǎo)磁材料時(shí),以及當(dāng)設(shè)備傾斜時(shí),測(cè)量出的方位角也不準(zhǔn)確,這時(shí)需要用加速度傳感器(傾角傳感器)和陀螺儀進(jìn)行補(bǔ)償。而陀螺儀,只有運(yùn)動(dòng)時(shí)才輸出角速率,靜態(tài)時(shí)輸出為0,它也很難單獨(dú)地確定設(shè)備的姿態(tài)。所以在實(shí)際應(yīng)用中,通常應(yīng)用三軸磁傳感器、三軸加速度傳感器和三軸陀螺儀一起確定設(shè)備的姿態(tài),以及實(shí)現(xiàn)運(yùn)動(dòng)檢測(cè)。
方向感應(yīng)器
手機(jī)方向傳感器是指,安裝在手機(jī)上用以檢測(cè)手機(jī)本身處于何種方向狀態(tài)的部件,而不是通常理解的指南針的功能。
手機(jī)方向檢測(cè)功能可以檢測(cè)手機(jī)處于正豎、倒豎、左橫、右橫,仰、俯狀態(tài)。具有方向檢測(cè)功能的手機(jī)具有使用更方便、更具人性化的特點(diǎn)。例如,手機(jī)旋轉(zhuǎn)后,屏幕圖像可以自動(dòng)跟著旋轉(zhuǎn)并切換長(zhǎng)寬比例,文字或菜單也可以同時(shí)旋轉(zhuǎn),使你閱讀方便。
這個(gè)兩者是不一樣的,方向感應(yīng)器或者叫應(yīng)用角速度傳感器比較合適,一般手機(jī)的上的方向感應(yīng)器是感應(yīng)水平面上的方位角、旋轉(zhuǎn)角和傾斜角的。這個(gè)如果你可能覺(jué)得有點(diǎn)理論的話,舉個(gè)例子吧。有方向感應(yīng)器的能很好的玩都市賽車(chē)游戲。而只有重力感應(yīng)器也能玩,但是恩,很令人糾結(jié)。
三軸陀螺儀
三軸陀螺儀:即同時(shí)測(cè)定6個(gè)方向的位置,移動(dòng)軌跡,加速。單軸的只能測(cè)量一個(gè)方向的量,也就是一個(gè)系統(tǒng)需要三個(gè)陀螺儀,而3軸的一個(gè)就能替代三個(gè)單軸的。3軸的體積小、重量輕、結(jié)構(gòu)簡(jiǎn)單、可靠性好,是激光陀螺的發(fā)展趨勢(shì)。對(duì)于激光陀螺則更多應(yīng)用于軍事方面,我們暫且不做討論。不過(guò)我們可以看出iPhone4應(yīng)用的三軸陀螺儀是較為先進(jìn)的。
如果說(shuō),重力感應(yīng)器所能測(cè)的是直線的,方面感應(yīng)器所測(cè)的是平面得,那么三軸陀螺儀所測(cè)的方向和位置則是立體的。特別是玩一些像彩虹六號(hào),那種第一人稱射擊游戲,你會(huì)發(fā)現(xiàn)三軸陀螺儀的效果是很明顯的。
陀螺儀就是內(nèi)部有一個(gè)陀螺,陀螺儀一旦開(kāi)始旋轉(zhuǎn),由于輪子的角動(dòng)量,陀螺儀有抗拒方向改變的特性,它的軸由于陀螺效應(yīng)始終與初始方向平行,這樣就可以通過(guò)與初始方向的偏差計(jì)算出實(shí)際方向。手機(jī)里陀螺儀實(shí)際上是一個(gè)結(jié)構(gòu)非常精密的芯片,內(nèi)部包含超微小的陀螺。陀螺儀測(cè)量是參考標(biāo)準(zhǔn)是內(nèi)部中間在與地面垂直的方向上進(jìn)行轉(zhuǎn)動(dòng)的陀螺。通過(guò)設(shè)備與陀螺的夾角得到結(jié)果。陀螺儀的強(qiáng)項(xiàng)在于測(cè)量設(shè)備自身的旋轉(zhuǎn)運(yùn)動(dòng)。對(duì)設(shè)備自身運(yùn)動(dòng)更擅長(zhǎng)。但不能確定設(shè)備的方位。
陀螺儀有單軸陀螺儀和三軸陀螺儀,單軸的只能測(cè)量一個(gè)方向的量,也就是一個(gè)系統(tǒng)需要三個(gè)陀螺儀。而三軸陀螺儀可同時(shí)測(cè)定6個(gè)方向的位置,移動(dòng)軌 跡,加速。所以一個(gè)三軸陀螺儀就能替代三個(gè)單軸陀螺儀。三軸陀螺儀多用于航海、航天等導(dǎo)航、定位系統(tǒng),能夠精確地確定運(yùn)動(dòng)物體的方位。如今也多用于智能手機(jī)當(dāng)中,比如最早采用該技的蘋(píng)果iPhone 4。
三軸陀螺儀最早由蘋(píng)果iPhone 4采用,后來(lái)逐漸被各類(lèi)智能手機(jī)所應(yīng)用。三軸陀螺儀可以測(cè)出手機(jī)的運(yùn)動(dòng)方向,使手機(jī)做出正確回應(yīng)。通過(guò)移動(dòng)手機(jī)相應(yīng)的位置,就可以達(dá)到改變方向的目的,同時(shí)操作也更加簡(jiǎn)便。利用三軸陀螺儀進(jìn)行體感控制的游戲。 目前手機(jī)中采用的三軸陀螺儀用途主要體現(xiàn)在游戲的操控上,有了三軸陀螺儀,我們?cè)谕娆F(xiàn)代戰(zhàn)爭(zhēng)等第一人稱射擊游戲以及狂野飆車(chē)等競(jìng)技類(lèi)游戲時(shí),可 以完全摒棄以前通過(guò)方向按鍵來(lái)控制游戲的操控方式,我們只需要通過(guò)移動(dòng)手機(jī)相應(yīng)的位置,既可以達(dá)到改變方向的目的,使游戲體驗(yàn)更加真實(shí)、操作更加靈活。
距離傳感器
距離傳感器是利用測(cè)時(shí)間來(lái)實(shí)現(xiàn)測(cè)距離的原理,以檢測(cè)物體的距離的一種傳感器。工作原理:通過(guò)發(fā)射特別短的光脈沖,并測(cè)量此光脈沖從發(fā)射到被物體反射回來(lái)的時(shí)間,通過(guò)測(cè)時(shí)間來(lái)計(jì)算與物體之間的距離。這個(gè)傳感器在手機(jī)上的作用是當(dāng)我們打電話時(shí),手機(jī)屏幕會(huì)自動(dòng)熄滅,當(dāng)你臉離開(kāi),屏幕燈會(huì)自動(dòng)開(kāi)啟,并且自動(dòng)解鎖。這個(gè)對(duì)于待機(jī)手機(jī)較短的智能手機(jī)來(lái)說(shuō)是相當(dāng)實(shí)用的。現(xiàn)在很多智能手機(jī)都裝備的這個(gè)傳感器。
距離感應(yīng)器又叫位移傳感器,是利用各種元件檢測(cè)對(duì)象物的物理變化量,通過(guò)將該變化量換算為距離,來(lái)測(cè)量從傳感器到對(duì)象物的距離位移的機(jī)器。根據(jù) 使用元件不同,分為光學(xué)式位移傳感器、線性接近傳感器、超聲波位移傳感器等。距離感應(yīng)器一般都在手機(jī)聽(tīng)筒的兩側(cè)或者是在手機(jī)聽(tīng)筒凹槽中,這樣便于它的工作。當(dāng)用戶在接聽(tīng)或撥打電話時(shí),將手機(jī)靠近頭部,距離感應(yīng)器可以測(cè)出之間的距離到了一定程度后便通知屏幕背景燈熄滅,拿開(kāi)時(shí)再度點(diǎn)亮背景燈,這樣更方便用 戶操作也更為節(jié)省電量。
光線傳感器(感應(yīng)器)
光線傳感器,也就是感光器,也叫做亮度感應(yīng)器,英文名稱為L(zhǎng)ight-Sensor,很多平板電腦和手機(jī)都配備了該感應(yīng)器。一般位于手持設(shè)備屏幕上方,它能根據(jù)手持設(shè)備目前所處的光線亮度,自動(dòng)調(diào)節(jié)手持設(shè)備屏幕亮度,來(lái)給使用者帶來(lái)最佳視的覺(jué)效果。例如在黑暗的環(huán)境下,手持設(shè)備屏幕背光燈就會(huì)自動(dòng)變暗,否則很刺眼。它的功能是用來(lái)感應(yīng)光線強(qiáng)弱的,然后反饋到手持設(shè)備,自動(dòng)調(diào)節(jié)屏幕亮度,從而達(dá)到省電的目的。
是能夠根據(jù)周?chē)饬撩靼党潭葋?lái)調(diào)節(jié)屏幕明暗的裝置。就是在光線強(qiáng)的地方手機(jī)會(huì)自動(dòng)關(guān)掉鍵盤(pán)燈,并且稍微加強(qiáng)屏幕亮度,達(dá)到節(jié)電并更好觀看屏幕的效果,。
光線傳感器,一光線感應(yīng)器一是環(huán)境光及接近檢測(cè)傳感器,這個(gè)傳感器用于改善用戶體驗(yàn)并延長(zhǎng)電池壽命。據(jù)介紹,數(shù)字環(huán)境光傳感器能根據(jù)燈光變化(光線亮度)自動(dòng)調(diào)節(jié)顯示屏亮度,可減少30%的電源消耗。另外,接近檢測(cè)則通過(guò)非接觸式技術(shù)簡(jiǎn)化人機(jī)交流。
二是RGB顏色傳感器,這個(gè)傳感器可以迎合更高精度“人眼”顏色傳感器的視覺(jué)體驗(yàn)需求。Jerry Koontz說(shuō),目前顏色光學(xué)傳感器,是由創(chuàng)新的硅設(shè)計(jì)和光電二級(jí)管配置,有專為模塊機(jī)械和光學(xué)設(shè)計(jì)進(jìn)行優(yōu)化的紅外阻塞過(guò)濾器,實(shí)現(xiàn)與人眼相似的光學(xué)反應(yīng)。精確的RGB光線和色溫測(cè)量實(shí)現(xiàn)顯示器校準(zhǔn)備和最佳的圖片質(zhì)量,RGB顏色傳感器支持環(huán)境光感測(cè),提高視覺(jué)體驗(yàn),并且節(jié)能。
三是手勢(shì)識(shí)別傳感器。采用非接觸技術(shù)的高集成度手勢(shì)傳感器,是用光電二極管技術(shù) 實(shí)現(xiàn)高度可靠、精確的非接觸式用戶界面,精密的手勢(shì)引擎可以實(shí)現(xiàn)復(fù)雜的紅外線手勢(shì)感應(yīng),具有紅外手勢(shì)感知、環(huán)境光顏色感知、接近檢測(cè)的四合一模塊TMG3992/3可用于優(yōu)惠券兌換。Jerry Koontz說(shuō),手勢(shì)識(shí)別傳感器電路板面積小于10平方毫米,是為優(yōu)化系統(tǒng)提供的高集成度的解決方案,可配置的手勢(shì)命令使應(yīng)用更靈活,會(huì)推動(dòng)下一代用戶操作界面的發(fā)展。
光電感應(yīng)器是由兩個(gè)組件即投光器及受光器所組成,利用投光器將光線由透鏡將之聚焦,經(jīng)傳輸而至受光器之透鏡,再至接收感應(yīng)器,感應(yīng)器將收到之光 線訊號(hào)轉(zhuǎn)變成電器信號(hào),此電信訊號(hào)更可進(jìn)一步作各種不同的開(kāi)關(guān)及控制動(dòng)作,其基本原理即對(duì)投光器受光器間之光線做遮蔽之動(dòng)作所獲得的信號(hào)加以運(yùn)用以完成各 種自動(dòng)化控制。
電子羅盤(pán),也叫方位感應(yīng)器(傳感器)
電子羅盤(pán),也叫數(shù)字指南針,是利用地磁場(chǎng)來(lái)定北極的一種方法。古代稱為羅經(jīng),現(xiàn)代利用先進(jìn)加工工藝生產(chǎn)的磁阻傳感器為羅盤(pán)的數(shù)字化提供了有力的幫助?,F(xiàn)在一般有用磁阻傳感器和磁通門(mén)加工而成的電子羅盤(pán)。這個(gè)就是電子版指南針,配合GPS和地圖時(shí)非常好用,不會(huì)整的暈頭轉(zhuǎn)向。
當(dāng)然除了這些較為常見(jiàn)的傳感器之外,電容屏也是一種傳感器,在女性手機(jī)上可以見(jiàn)到紫外線傳感器,在軍用手機(jī)上可以看到氣壓和溫度傳感器等等。
電子羅盤(pán)也被廣泛應(yīng)用于智能手機(jī)中,用來(lái)導(dǎo)航指向,同時(shí)還可以將數(shù)字信號(hào)接送到自動(dòng)舵?,F(xiàn)代實(shí)用的電子羅盤(pán)一般能耗低、體積小、重量輕、精度高、內(nèi)置溫度補(bǔ)償,能夠?qū)崿F(xiàn)精確導(dǎo)航。
位移傳感器
位移傳感器應(yīng)用于手機(jī)中,可以使用戶在接打電話時(shí),感應(yīng)到用戶頭與手機(jī)之間的距離。當(dāng)頭靠近手機(jī)聽(tīng)筒時(shí),手機(jī)屏幕背景燈就會(huì)熄滅,當(dāng)距離再次拉遠(yuǎn)時(shí),便會(huì)恢復(fù)正常背景燈。在智能手機(jī)電池續(xù)航能力備受吐槽的今天,距離感應(yīng)器的應(yīng)用可以為用戶節(jié)能更多電量,來(lái)提升手機(jī)續(xù)航能力。
霍爾傳感器
霍爾傳感器是一類(lèi)可直接對(duì)磁場(chǎng)及其變化進(jìn)行檢測(cè)的傳感器,通常也間接用于鐵磁物質(zhì)位置檢測(cè),并起到開(kāi)關(guān)的作用。我們經(jīng)??吹揭恍ぬ椎闹悄苁謾C(jī),當(dāng)用戶在合上前蓋時(shí),手機(jī)能夠自動(dòng)鎖屏進(jìn)入休眠狀態(tài)并只在有透明開(kāi)窗部分顯示常用信息方便用戶查看,以起到省電的作用。當(dāng)有來(lái)電信息或者打開(kāi)翻蓋時(shí),手機(jī)會(huì)自動(dòng)激活方便用戶使用。這是由于皮套子的前蓋子中帶有磁性物質(zhì),當(dāng)蓋子合上時(shí),磁性物質(zhì)與手機(jī)近距離接觸,改變了里面霍爾傳感器位置處的磁場(chǎng)大小,從而被傳感器檢測(cè)到并輸出電信號(hào)值,該信號(hào)最終由手機(jī)的檢測(cè)和控制系統(tǒng)接收到并發(fā)出鎖屏休眠指令。同理,打開(kāi)翻蓋時(shí)是一樣的道理。手機(jī)皮套子中鐵磁物質(zhì)除了提供磁場(chǎng)外,另一個(gè)作用是與手機(jī)里類(lèi)似物(如話筒)產(chǎn)生磁吸力,方便皮套前蓋的開(kāi)合使用。
想必大家買(mǎi)了手機(jī)以后,都會(huì)看一下使用手冊(cè)吧!這時(shí)候大家有沒(méi)有發(fā)現(xiàn),有一項(xiàng)參數(shù)寫(xiě)著霍爾傳感器,這是個(gè)什么東西呢?很多人都有疑問(wèn)吧!下面就帶大家了解一下霍爾傳感器用于手機(jī)的作用和用途。
霍爾傳感器用于手機(jī)的作用
一、霍爾傳感器的用途
霍爾器件具有許多優(yōu)點(diǎn),它們的結(jié)構(gòu)牢固,體積小,重量輕,壽命長(zhǎng),安裝方便,功耗小,頻率高(可達(dá)1MHZ),耐震動(dòng),不怕灰塵、油污、水汽及鹽霧等的污染或腐蝕。
霍爾線性器件的精度高、線性度好;霍爾開(kāi)關(guān)器件無(wú)觸點(diǎn)、無(wú)磨損、輸出波形清晰、無(wú)抖動(dòng)、無(wú)回跳、位置重復(fù)精度高(可達(dá)μm級(jí))。取用了各種補(bǔ)償和保護(hù)措施的霍爾器件的工作溫度范圍寬,可達(dá)-55℃~150℃。
按被檢測(cè)的對(duì)象的性質(zhì)可將它們的應(yīng)用分為:直接應(yīng)用和間接應(yīng)用。前者是直接檢測(cè)出受檢測(cè)對(duì)象本身的磁場(chǎng)或磁特性,后者是檢測(cè)受檢對(duì)象上人為設(shè)置的磁場(chǎng),用這個(gè)磁場(chǎng)來(lái)作被檢測(cè)的信息的載體,通過(guò)它,將許多非電、非磁的物理量例如力、力矩、壓力、應(yīng)力、位置、位移、速度、加速度、角度、角速度、轉(zhuǎn)數(shù)、轉(zhuǎn)速以及工作狀態(tài)發(fā)生變化的時(shí)間等,轉(zhuǎn)變成電量來(lái)進(jìn)行檢測(cè)和控制。
二、手機(jī)中的霍爾感應(yīng)器的用途
主要用作屏幕的開(kāi)啟或關(guān)閉。配合智能皮套,打開(kāi)亮屏,閉合保護(hù)套,手機(jī)則自動(dòng)進(jìn)入休眠狀態(tài)。?翻開(kāi)保護(hù)套可即刻將手機(jī)喚醒,無(wú)需點(diǎn)按任何按鈕。
三、霍爾傳感器用于手機(jī)的作用有什么?
原理大家不理解沒(méi)關(guān)系,我們只要知道它有啥用就行了,就像錢(qián)鐘書(shū)說(shuō)的:“雞蛋好吃,但沒(méi)必要去認(rèn)識(shí)那只下蛋的老母雞”。
它的作用就是霍爾開(kāi)關(guān),可以讓我們的手機(jī)套變得智能,具體效果就是,打開(kāi)亮屏,合上黑屏。
事實(shí)上,這不是什么新鮮玩意了,因?yàn)橹胺w機(jī)經(jīng)常用到這個(gè)功能,當(dāng)然平板電腦上也有此功能。
總之,手機(jī)如果帶有霍爾感應(yīng)器,皮套內(nèi)只要內(nèi)置一個(gè)磁鐵,就能夠做到上述功能,而且目前大多智能機(jī)都有霍爾傳感器。
霍爾傳感器用于手機(jī)的作用哪些?一般都用于哪些地方?通過(guò)上面的解答,我們大致了解了它的使用范圍,例如手機(jī)的翻蓋,亮屏等,在這些方面都有著一定的作用。
在現(xiàn)在激烈競(jìng)爭(zhēng)的手機(jī)市場(chǎng),很多的手機(jī)廠商都為女性同胞研究開(kāi)發(fā)對(duì)應(yīng)得產(chǎn)品,甚至還有手機(jī)廠商開(kāi)發(fā)出了女性手機(jī)品牌,例如,三星的GALAXY A7,美圖手機(jī)2,朵唯等機(jī)型,但是很少看到哪家手機(jī)廠商為男性用戶開(kāi)發(fā)手機(jī)產(chǎn)品,也是因?yàn)槟行杂脩魧?duì)手機(jī)性能要求比較高,男性用戶主要在乎的是性價(jià)比和手機(jī)性能,而女性對(duì)手機(jī)拍照功能和外觀顏值比較癡迷,今天小A為大家講解下市場(chǎng)小哥哥比較喜歡用的四款機(jī)型。
第四名是;iphone XS
蘋(píng)果手機(jī)在數(shù)據(jù)上顯示,用戶大多數(shù)為女性,但是也有不少男性消費(fèi)者喜歡,iphone XS作為2018年蘋(píng)果旗艦機(jī)型,帶著性能表現(xiàn)較為強(qiáng)的蘋(píng)果A12處理器,還有IOS系統(tǒng)作為后盾,iphone XS便將大多數(shù)安卓系統(tǒng)的旗艦機(jī)型甩在尾巴后面,還有該機(jī)的拍照功能和充電續(xù)航等功能也是非常高尖的水準(zhǔn),外觀和拍照功能也是大大的吸引了女性消費(fèi)者的購(gòu)買(mǎi)。
第三名是;小米MIX3
小米MIX3,上市也沒(méi)多久,就受到了女性消費(fèi)者的喜愛(ài),而小米手機(jī)一直以來(lái)都是將男性消費(fèi)者作為自己的重點(diǎn)用戶,隨著市場(chǎng)的競(jìng)爭(zhēng)變化也開(kāi)始為女性用戶考慮,小米MIX3,從綜合實(shí)力以及功能上表現(xiàn)出也十分出色,驍龍845 AIE有著非常出色的性能表現(xiàn),機(jī)身還采用陶瓷后蓋,功能上還有超聲波距離傳感器,陀螺儀,加速度傳感器,電子羅盤(pán),環(huán)境光傳感器,振動(dòng)馬達(dá),指紋傳感器,這次排在第三也是受之無(wú)愧。
第二名是;華為Mate20Pro
華為這款新旗艦機(jī)型,小A認(rèn)為是國(guó)內(nèi)手機(jī)市場(chǎng)上表現(xiàn)最搶眼球的一款機(jī)型,這款機(jī)型搭載的是麒麟980處理器,華為Mate 20 Pro內(nèi)置4200mAh電池,支持峰值功率40W的全新HUAWEI Super Charge安全快充和15W華為無(wú)線充電。華為Mate 20 Pro支持IP68防塵防水,后置4000萬(wàn)+2000萬(wàn)+800萬(wàn)像素徠卡三攝,支持3D結(jié)構(gòu)光人臉識(shí)別和屏內(nèi)指紋識(shí)別,這樣的強(qiáng)大性能,還有那么黑的黑科技,對(duì)男性來(lái)說(shuō)是極大的吸引。
第一名是;1加6T
相信一加這款手機(jī)對(duì)于經(jīng)常關(guān)注手機(jī)產(chǎn)品的用戶來(lái)說(shuō)是非常熟悉的,這款手機(jī)一直都有著高口碑的稱號(hào),這一加6T正面屏幕采用的是水滴屏幕設(shè)計(jì),操作系統(tǒng)是H2 OS基于Android 9.0,在處理器上還是使用強(qiáng)勁的驍龍845,功能上有屏幕指紋傳感器,霍爾感應(yīng)器,加速度傳感器,陀螺儀,距離感應(yīng)器,RGB 光線感應(yīng)器,電子羅盤(pán),Sensor Core,一加6T還采用了當(dāng)下最快的屏下指紋技術(shù),非常有看點(diǎn)的技術(shù),?。琳J(rèn)為第一是它,受之無(wú)愧。
在上面講述到四款機(jī)型中你最喜歡哪款呢?或者您覺(jué)得哪款更加合適,可以評(píng)論區(qū)分享交流一下,喜歡本文幫?。咙c(diǎn)個(gè)贊喲
舉報(bào)/反饋
下一篇: PLC、DCS、FCS三大控
上一篇: 電氣控制線路圖控制原