色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

您好,歡迎來電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊]

您的位置:電子發(fā)燒友網(wǎng)>電子元器件>傳感器>

淺析ESP32 - ULP 協(xié)處理器在低功耗模式下讀片內(nèi)霍爾傳感器 HALL SENSOR

2018年10月07日 15:47 作者:工程師譚軍 用戶評(píng)論(0
  霍爾傳感器
?
  霍爾傳感器是根據(jù)霍爾效應(yīng)制作的一種磁場傳感器。霍爾效應(yīng)是磁電效應(yīng)的一種,這一現(xiàn)象是霍爾(A.H.Hall,1855—1938)于1879年在研究金屬的導(dǎo)電機(jī)構(gòu)時(shí)發(fā)現(xiàn)的。后來發(fā)現(xiàn)半導(dǎo)體、導(dǎo)電流體等也有這種效應(yīng),而半導(dǎo)體的霍爾效應(yīng)比金屬強(qiáng)得多,利用這現(xiàn)象制成的各種霍爾元件,廣泛地應(yīng)用于工業(yè)自動(dòng)化技術(shù)、檢測技術(shù)及信息處理等方面。霍爾效應(yīng)是研究半導(dǎo)體材料性能的基本方法。通過霍爾效應(yīng)實(shí)驗(yàn)測定的霍爾系數(shù),能夠判斷半導(dǎo)體材料的導(dǎo)電類型、載流子濃度及載流子遷移率等重要參數(shù)
?
?
  磁場中有一個(gè)霍爾半導(dǎo)體片,恒定電流I從A到B通過該片。在洛侖茲力的作用下,I的電子流在通過霍爾半導(dǎo)體時(shí)向一側(cè)偏移,使該片在CD方向上產(chǎn)生電位差,這就是所謂的霍爾電壓。
?
  霍爾電壓隨磁場強(qiáng)度的變化而變化,磁場越強(qiáng),電壓越高,磁場越弱,電壓越低,霍爾電壓值很小,通常只有幾個(gè)毫伏,但經(jīng)集成電路中的放大器放大,就能使該電壓放大到足以輸出較強(qiáng)的信號(hào)。若使霍爾集成電路起傳感作用,需要用機(jī)械的方法來改變磁感應(yīng)強(qiáng)度。下圖所示的方法是用一個(gè)轉(zhuǎn)動(dòng)的葉輪作為控制磁通量的開關(guān),當(dāng)葉輪葉片處于磁鐵和霍爾集成電路之間的氣隙中時(shí),磁場偏離集成片,霍爾電壓消失。這樣,霍爾集成電路的輸出電壓的變化,就能表示出葉輪驅(qū)動(dòng)軸的某一位置,利用這一工作原理,可將霍爾集成電路片用作用點(diǎn)火正時(shí)傳感器。霍爾效應(yīng)傳感器屬于被動(dòng)型傳感器,它要有外加電源才能工作,這一特點(diǎn)使它能檢測轉(zhuǎn)速低的運(yùn)轉(zhuǎn)情況。
?
  霍爾效應(yīng)
?
  霍爾效應(yīng)從本質(zhì)上講是運(yùn)動(dòng)的帶電粒子在磁場中受洛侖茲力作用引起的偏轉(zhuǎn)。當(dāng)帶電粒子(電子或空穴)被約束在固體材料中,這種偏轉(zhuǎn)就導(dǎo)致在垂直電流和磁場的方向上產(chǎn)生正負(fù)電荷的聚積,從而形成附加的橫向電場。對于圖一所示的半導(dǎo)體試樣,若在X方向通以電流Is,在Z方向加磁場B,則在Y方向即試樣A,A′電極兩側(cè)就開始聚積異號(hào)電荷而產(chǎn)生相應(yīng)的附加電場。電場的指向取決定于測試樣品的電類型。顯然,該電場是阻止載流子繼續(xù)向側(cè)面偏移,
?
  當(dāng)載流子所受的橫向電場力eEH與洛侖茲力相等時(shí),樣品兩側(cè)電荷的積累就達(dá)到平衡,故有
?
  ⑴
?
  其中EH為霍爾電場,V是載流子在電流方向上的平均漂移速度。設(shè)試樣的寬為b,厚度為d,載流子濃度為n,則
?
  ⑵
?
  由⑴、⑵兩式可得
?
  ⑶
?
  即霍爾電壓VH(A、A′電極之間的電壓)與ISB乘積正比與試樣厚度d成反比。比例系數(shù) 稱為霍爾系數(shù),它是反映材料霍爾效應(yīng)強(qiáng)弱的重要參數(shù),只要測出 VH(伏)以及知道IIs(安)、B(高斯)和d(厘 米)可按下式計(jì)算RH(厘米3/庫侖)
?
  分類
?
  霍爾傳感器分為線型霍爾傳感器和開關(guān)型霍爾傳感器兩種。
?
  (一)開關(guān)型霍爾傳感器由穩(wěn)壓器、霍爾元件、差分放大器,斯密特觸發(fā)器和輸出級(jí)組成,它輸出數(shù)字量。開關(guān)型霍爾傳感器還有一種特殊的形式,稱為鎖鍵型霍爾傳感器。
?
  (二)線性型霍爾傳感器由霍爾元件、線性放大器和射極跟隨器組成,它輸出模擬量。
?
  線性霍爾傳感器又可分為開環(huán)式和閉環(huán)式。閉環(huán)式霍爾傳感器又稱零磁通霍爾傳感器。線性霍爾傳感器主要用于交直流電流和電壓測量。。
?
  開關(guān)型
?
  如圖4所示,其中Bnp為工作點(diǎn)“開”的磁感應(yīng)強(qiáng)度,BRP為釋放點(diǎn)“關(guān)”的磁感應(yīng)強(qiáng)度。當(dāng)外加的磁感應(yīng)強(qiáng)度超過動(dòng)作點(diǎn)Bnp時(shí),傳感器輸出低電平,當(dāng)磁感應(yīng)強(qiáng)度降到動(dòng)作點(diǎn)Bnp以下時(shí),傳感器輸出電平不變,一直要降到釋放點(diǎn)BRP時(shí),傳感器才由低電平躍變?yōu)楦唠娖健np與BRP之間的滯后使開關(guān)動(dòng)作更為可靠。
?
  鎖鍵型
?
  如圖5所示,當(dāng)磁感應(yīng)強(qiáng)度超過動(dòng)作點(diǎn)Bnp時(shí),傳感器輸出由高電平躍變?yōu)榈碗娖剑谕獯艌龀废螅漭敵鰻顟B(tài)保持不變(即鎖存狀態(tài)),必須施加反向磁感應(yīng)強(qiáng)度達(dá)到BRP時(shí),才能使電平產(chǎn)生變化。
?
  線性型
?
  輸出電壓與外加磁場強(qiáng)度呈線性關(guān)系,如圖3所示,可見,在B1~B2的磁感應(yīng)強(qiáng)度范圍內(nèi)有較好的線性度,磁感應(yīng)強(qiáng)度超出此范圍時(shí)則呈現(xiàn)飽和狀態(tài)。
?
  開環(huán)式電流傳感器
?
  由于通電螺線管內(nèi)部存在磁場,其大小與導(dǎo)線中的電流成正比,故可以利用霍爾傳感器測量出磁場,從而確定導(dǎo)線中電流的大小。利用這一原理可以設(shè)計(jì)制成霍爾電流傳感器。其優(yōu)點(diǎn)是不與被測電路發(fā)生電接觸,不影響被測電路,不消耗被測電源的功率,特別適合于大電流傳感。
?
  霍爾電流傳感器工作原理如圖6所示,標(biāo)準(zhǔn)圓環(huán)鐵芯有一個(gè)缺口,將霍爾傳感器插入缺口中,圓環(huán)上繞有線圈,當(dāng)電流通過線圈時(shí)產(chǎn)生磁場,則霍爾傳感器有信號(hào)輸出。
?
  閉環(huán)式電流傳感器
?
  磁平衡式電流傳感器也叫霍爾閉環(huán)電流傳感器,也稱補(bǔ)償式傳感器,即主回路被測電流Ip在聚磁環(huán)處所產(chǎn)生的磁場通過一個(gè)次級(jí)線圈,電流所產(chǎn)生的磁場進(jìn)行補(bǔ)償, 從而使霍爾器件處于檢測零磁通的工作狀態(tài)。
?
  磁平衡式電流傳感器的具體工作過程為:當(dāng)主回路有一電流通過時(shí),在導(dǎo)線上產(chǎn)生的磁場被聚磁環(huán)聚集并感應(yīng)到霍爾器件上, 所產(chǎn)生的信號(hào)輸出用于驅(qū)動(dòng)相應(yīng)的功率管并使其導(dǎo)通,從而獲得一個(gè)補(bǔ)償電流Is。 這一電流再通過多匝繞組產(chǎn)生磁場 ,該磁場與被測電流產(chǎn)生的磁場正好相反,因而補(bǔ)償了原來的磁場, 使霍爾器件的輸出逐漸減小。當(dāng)與Ip與匝數(shù)相乘 所產(chǎn)生的磁場相等時(shí),Is不再增加,這時(shí)的霍爾器件起指示零磁通的作用 ,此時(shí)可以通過Is來平衡。被測電流的任何變化都會(huì)破壞這一平衡。 一旦磁場失去平衡,霍爾器件就有信號(hào)輸出。經(jīng)功率放大后,立即就有相應(yīng)的電流流過次級(jí)繞組以對失衡的磁場進(jìn)行補(bǔ)償。從磁場失衡到再次平衡,所需的時(shí)間理論上不到1μs,這是一個(gè)動(dòng)態(tài)平衡的過程。

  本文提供了 ESP32 - ULP 協(xié)處理器如何在低功耗模式下讀片內(nèi)霍爾傳感器的例子

  1. 霍爾傳感器

  根據(jù)霍爾效應(yīng),當(dāng)電流垂直于磁場通過 N 型半導(dǎo)體時(shí),會(huì)在垂直于電流和磁場的方向產(chǎn)生附加電場,從而在半導(dǎo)體兩端形成電勢差,具體高低與電磁場的強(qiáng)度和電流大小有關(guān)。當(dāng)恒定電流穿過磁場或電流存在于恒定磁場時(shí),霍爾效應(yīng)傳感器可用于測量磁場強(qiáng)度。霍爾傳感器的應(yīng)用場合非常廣泛,包括接近探測、定位、測速與電流檢測等。

  2. 霍爾傳感器讀取示例

  本例子 ULP 協(xié)處理器每隔 3 S 喚醒一次,喚醒后在低功耗模式下讀取霍爾傳感器值, 通過 hall phase shift 兩次,讀取 vp 和 vn 值 各兩次一共四個(gè)值,減去共模的部分可以得出 offset 值,這個(gè)值可以用來表征環(huán)境對霍爾傳感器的影響。如圖,第一次打印的數(shù)值是周圍未有強(qiáng)磁場的情況下測得的霍爾傳感器數(shù)值;第二次打印的數(shù)值是使用了一枚釹鐵硼磁鐵的 N 極接近 ESP32 時(shí)獲取的數(shù)值;第三次打印的數(shù)值是釹鐵硼磁鐵的 S 極接近 ESP32 時(shí)獲取的數(shù)值,可以看出霍爾傳感器的數(shù)值發(fā)生了較大的變化。

  3. 系統(tǒng)連接

  HALL SENSOR 和 SAR ADC 連接情況見下圖,HALL SENSOR 的 SENSOR_VP 和 SENSOR_VN 管腳分別連接到 SAR ADC1 的 SAR_MUX = 1 和 SAR_MUX = 4 上。

  下表是 SAR ADC1 的輸入信號(hào)及 SAR_MUX 通道

  信號(hào)名/GPIOSAR_ADC1,SAR_MUX

  SENSOR_VP (GPIO36)1

  SENSOR_CAPP (GPIO37)2

  SENSOR_CAPN (GPIO38)3

  SENSOR_VN (GPIO39)4

  32K_XP (GPIO33)5

  32K_XN (GPIO32)6

  VDET_1 (GPIO34)7

  VDET_2 (GPIO35)8

  4. 編譯配置及燒錄程序

  ESP32 的 C 語言編譯環(huán)境安裝和配置參照 鏈接地址,另外 ULP 協(xié)處理器目前只支持匯編編程,所以還需要安裝匯編工具鏈,下面介紹匯編工具鏈的安裝和配置。

  4.1 匯編環(huán)境的配置

  ULP 協(xié)處理器配置匯編編譯工具鏈,只需兩步即可安裝配置完畢,下面給出 ubuntu 操作系統(tǒng)下配置的步驟,或者點(diǎn)擊 鏈接地址 獲得更多 ULP 編程信息

  第一步, 下載工具鏈 binutils-esp32ulp toolchain 鏈接地址, 解壓到需要安裝的目錄

  第二步,添加工具鏈的 bin 目錄到系統(tǒng)環(huán)境變量 PATH 中。例如我的解壓目錄是 /opt/esp32ulp-elf-binutils 那么添加 export PATH=/opt/esp32ulp-elf-binutils/bin:$PATH 這一行到 /home 目錄的隱藏文件 .bashrc 文件最后一行,保存關(guān)閉文件并使用命令 source .bashrc 使上述環(huán)境變量生效

  4.2 配置編譯燒錄

  至此,匯編編譯環(huán)境就安裝好了,在 esp-iot-solution /examples/ulp_hall_sensor/ 目錄下依次運(yùn)行以下命令,進(jìn)行 default config 配置并編譯、燒錄程序。

  make defconfig

  make all -j8 && make flash monitor

  5. 軟件分析

  ULP 協(xié)處理器沒有內(nèi)置讀霍爾傳感器相關(guān)的匯編指令,所以我們需要設(shè)置相關(guān)寄存器來讀取片內(nèi)霍爾傳感器。

  在 void init_ulp_program() 函數(shù)中設(shè)置 ADC1 通道 1/2 輸入電壓衰減,用戶可以自己定義這個(gè)衰減值,較大的衰減將得到較小的 ADC 值。

  /* The ADC1 channel 0 input voltage will be reduced to about 1/2 */

  adc1_config_channel_atten(ADC1_CHANNEL_0, ADC_ATTEN_DB_6);

  /* The ADC1 channel 3 input voltage will be reduced to about 1/2 */

  adc1_config_channel_atten(ADC1_CHANNEL_3, ADC_ATTEN_DB_6);

  /* ADC capture 12Bit width */

  adc1_config_width(ADC_WIDTH_BIT_12);

  /* enable adc1 */

  adc1_ulp_enable(); 12345678

  在超低功耗模式下,需要預(yù)先設(shè)置相關(guān)的寄存器之后才可以通過 SAR ADC1 來讀取 HALL SENSOR 值。

  /* SENS_XPD_HALL_FORCE = 1, hall sensor force enable, XPD HALL is controlled by SW */

  WRITE_RTC_REG(SENS_SAR_TOUCH_CTRL1_REG, SENS_XPD_HALL_FORCE_S, 1, 1)

  /* RTC_IO_XPD_HALL = 1, xpd hall, Power on hall sensor and connect to VP and VN */

  WRITE_RTC_REG(RTC_IO_HALL_SENS_REG, RTC_IO_XPD_HALL_S, 1, 1)

  /* SENS_HALL_PHASE_FORCE = 1, phase force, HALL PHASE is controlled by SW */

  WRITE_RTC_REG(SENS_SAR_TOUCH_CTRL1_REG, SENS_HALL_PHASE_FORCE_S, 1, 1)

  /* RTC_IO_HALL_PHASE = 0, phase of hall sensor */

  WRITE_RTC_REG(RTC_IO_HALL_SENS_REG, RTC_IO_HALL_PHASE_S, 1, 0)

  /* SENS_FORCE_XPD_SAR, Force power up */

  WRITE_RTC_REG(SENS_SAR_MEAS_WAIT2_REG, SENS_FORCE_XPD_SAR_S, 2, SENS_FORCE_XPD_SAR_PU)1234567891011121314

  之后,使用 ADC 指令多次讀取片內(nèi)霍爾傳感器 phase_vp 和 phase_vn 的值,累加并計(jì)算平均值后,將霍爾傳感器值保存到 Sens_Vp0 ,Sens_Vn0 這兩變量中。

  /* do measurements using ADC */

  /* r2, r3 will be used as accumulator */

  move r2, 0

  move r3, 0

  /* initialize the loop counter */

  stage_rst

  measure0:

  /* measure Sar_Mux = 1 to get vp0 */

  adc r0, 0, 1

  add r2, r2, r0

  /* measure Sar_Mux = 4 to get vn0 */

  adc r1, 0, 4

  add r3, r3, r1

  /* increment loop counter and check exit condition */

  stage_inc 1

  jumps measure0, adc_oversampling_factor, lt

  /* divide accumulator by adc_oversampling_factor.

  Since it is chosen as a power of two, use right shift */

  rsh r2, r2, adc_oversampling_factor_log

  /* averaged value is now in r2; store it into Sens_Vp0 */

  move r0, Sens_Vp0

  st r2, r0, 0

  /* r3 divide 4 which means rsh 2 bits */

  rsh r3, r3, adc_oversampling_factor_log

  /* averaged value is now in r3; store it into Sens_Vn0 */

  move r1, Sens_Vn0

  st r3, r1, 01234567891011121314151617181920212223242526272829303132

  接下來,需要 shift 霍爾傳感器的 phase,設(shè)置寄存器 RTC_IO_HALL_SENS_REG 的 RTC_IO_HALL_PHASE 位置 1 , 并再次讀取片內(nèi)霍爾傳感器 phase_vp 和 phase_vn 的值,同上,累加并計(jì)算平均值后,保存到 Sens_Vp1 ,Sens_Vn1 中。

  /* RTC_IO_HALL_PHASE = 1, phase of hall sensor */

  WRITE_RTC_REG(RTC_IO_HALL_SENS_REG, RTC_IO_HALL_PHASE_S, 1, 1)12

  最后,在喚醒主 CPU 后,通過以上四個(gè)數(shù)值計(jì)算出 offset 的值并打印出來。

  static void print_hall_sensor()

  {

  printf(“ulp_hall_sensor:Sens_Vp0:%d,Sens_Vn0:%d,Sens_Vp1:%d,Sens_Vn1:%d\r\n”,

  (uint16_t)ulp_Sens_Vp0,(uint16_t)ulp_Sens_Vn0,(uint16_t)ulp_Sens_Vp1,(uint16_t)ulp_Sens_Vn1);

  printf(“offset:%d\r\n”, ((uint16_t)ulp_Sens_Vp0 - (uint16_t)ulp_Sens_Vp1) - ((uint16_t)ulp_Sens_Vn0 - (uint16_t)ulp_Sens_Vn1));

  }123456

  6. 總結(jié)

  ESP32 中的霍爾傳感器經(jīng)過專門設(shè)計(jì),可向低噪放大器和 SAR ADC 提供電壓信號(hào),實(shí)現(xiàn)磁場傳感功能。在超低功耗模式下,該傳感器可由 ULP 協(xié)處理器控制。ESP32 內(nèi)置了霍爾傳感器在位置傳感、接近檢測、測速以及電流檢測等應(yīng)用場景下成為一種極具吸引力的解決方案。


非常好我支持^.^

(1) 100%

不好我反對

(0) 0%

( 發(fā)表人:金巧 )

      發(fā)表評(píng)論

      用戶評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請遵守相關(guān)規(guī)定!

      ?
      主站蜘蛛池模板: 52色擼99热99| 中文人妻熟妇精品乱又伧| 日韩一级精品久久久久| 全身无赤裸裸美女网站| 青青草在现线免费观看| 日韩AV片无码一区二区三区不卡| 色多多旧版污污破解版| 午夜福利电影| 亚洲深夜在线| 999视频在线观看| 成人影片大全| 国产免费高清mv视频在线观看| 国内久久久久影院精品| 久久re热线视频精品99| 免费精品一区二区三区在线观看| 欧美最猛性xxxxx亚洲精品| 三级黄色在线视频| 亚洲黄色网页| 34g污奶绵uk甩奶| 成人国产亚洲欧美成人综合网| 国产日韩高清一区二区三区| 久久精品国产96精品亚洲| 欧美久久综合性欧美| 午夜性色一区二区三区不卡视频| 一区一区三区产品| chinese野外男女free| 国产成人永久免费视频| 精品亚洲一区二区三区在线播放| 蜜芽tv在线观看免费网站| 手机精品在线| 在线看片成人免费视频| 超碰在线视频caoporn| 国精产品一区一区三区有限公司| 久青草国产97香蕉在线视频| 日本漂亮妈妈7观整有限中| 亚洲人成色777777老人头| 99国产精品综合AV无码| 国产精品自在拍在线播放| 葵司中文第一次大战黑人| 世界上第一个得抑郁症的人是谁| 亚洲性无码AV久久成人|