一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于小凌派開(kāi)發(fā)板的煙霧檢測(cè)傳感器設(shè)計(jì)

電子發(fā)燒友開(kāi)源社區(qū) ? 來(lái)源:HarmonyOS官方合作社區(qū) ? 作者:HarmonyOS官方合作社 ? 2022-04-29 08:42 ? 次閱讀

煙霧檢測(cè)傳感器使用的是MQ-2煙霧傳感器。MQ-2型煙霧傳感器屬于二氧化錫半導(dǎo)體氣敏材料,屬于表面離子式N型半導(dǎo)體。處于200~300攝氏度時(shí),二氧化錫吸附空氣中的氧,形成氧的負(fù)離子吸附,使半導(dǎo)體中的電子密度減少,從而使其電阻值增加。當(dāng)與煙霧接觸時(shí),如果晶粒間界處的勢(shì)壘收到煙霧的調(diào)至而變化,就會(huì)引起表面導(dǎo)電率的變化。利用這一點(diǎn)就可以獲得這種煙霧存在的信息,煙霧的濃度越大,導(dǎo)電率越大,輸出電阻越低,則輸出的模擬信號(hào)就越大。


使用MQ-2煙霧傳感器來(lái)檢測(cè)周?chē)h(huán)境煙霧濃度,再通過(guò)小凌派開(kāi)發(fā)板采集信號(hào)。因?yàn)椴杉男盘?hào)是電壓值所以通過(guò)adc轉(zhuǎn)換成數(shù)字信號(hào)。這里有個(gè)需要注意的地方RK2206的ADC默認(rèn)參考電壓是內(nèi)部2.4v所以初始化ADC時(shí)通過(guò)配置soc_con29 寄存器改成外部3.3v參考電壓。

參考代碼:

typedef union{  uint32_t value;  struct  {    uint16_t gRF_saradc_ana_reg_low: 4;    uint16_t grf_saradc_vol_sel: 1;    uint16_t grf_saradc_ana_reg_high: 11;    struct    {      uint16_t grf_saradc_ana_reg_low: 4;      uint16_t grf_saradc_vol_sel: 1;      uint16_t grf_saradc_ana_reg_high: 11;    } rw;  };} GRF_SOC_CON29;static uint32_t iss_adc_dev_init(iss_mq2_dev_s *adc){  if (PinctrlInit(adc->adc) != 0)  {    printf("adc pin %d init faiLED
", adc->adc.gpio);  }  if (LzSaradcInit() != 0)  {    printf("saradc %d init failed
", adc->port);  }  volatile GRF_SOC_CON29 *soc = (GRF_SOC_CON29*)&GRF->SOC_CON29;  soc->rw.grf_saradc_vol_sel = 1;  soc->grf_saradc_vol_sel  = 0;  soc->rw.grf_saradc_vol_sel = 0;    adc->init = 1;  return 0;}

(左右移動(dòng)查看全部?jī)?nèi)容)

讀取ADC電壓:

static float iss_get_voltage(void){  unsigned int ret;  unsigned int data;
  ret = LzSaradcReadValue(m_iss_mq2, &data);  if (ret != 0)  {    printf("ADC Read Fail
");  }  return (float)data * 3.3 / 1024;}

(左右移動(dòng)查看全部?jī)?nèi)容)

計(jì)算ppm值:
阻值R與空氣中被測(cè)氣體的濃度C的計(jì)算關(guān)系式
log R = mlog C + n (m,n均為常數(shù))

傳感器的電阻計(jì)算:
Rs = (Vc/VRL-1) X RL
Vc為回路電壓,VRL是傳感器4腳6腳輸出電壓,RL是負(fù)載

#define CAL_PPM      20       //校準(zhǔn)環(huán)境中PPM值#define RL         1       //RL阻值float e53_iss_get_mq2_ppm(void){  float voltage, rs, ppm;
  voltage = iss_get_voltage();  rs = (5 - voltage) / voltage * RL; //計(jì)算rs  ppm = 613.9f * pow(rs / m_r0, -2.074f); //計(jì)算ppm  return ppm;}

(左右移動(dòng)查看全部?jī)?nèi)容)

ppm值校準(zhǔn):

void e53_iss_mq2_ppm_calibration(void){  float voltage = iss_get_voltage();  float rs = (5 - voltage) / voltage * RL;    m_r0 = rs / pow(CAL_PPM / 613.9f, 1 / -2.074f);  printf("R0 =%f
", m_r0);}

(左右移動(dòng)查看全部?jī)?nèi)容)

因?yàn)槭褂玫氖菬o(wú)源蜂鳴器,所以通過(guò)pwm驅(qū)動(dòng)蜂鳴器報(bào)警。

pwm初始化:

static uint32_t iss_pwm_dev_init(iss_pwm_dev_s *p){  if (PwmIoInit(p->pwmio) != 0)  {    printf("Pwm pin %d init failed
", p->pwmio.pwm.gpio);  }  if (LzPwmInit(p->port) != 0)  {    printf("Pwm %d init failed
", p->port);  }    p->init = 1;  return 0;}

(左右移動(dòng)查看全部?jī)?nèi)容)

pwm 啟動(dòng):

static uint32_t iss_pwm_start(iss_pwm_dev_s *pwm){  if (pwm->init == 0)  {    printf("PWM not init
");    return 1;  }  else if (LzPwmstart(pwm->port, pwm->duty * pwm->cycle / 100, pwm->cycle) != 0)  {    printf("PWM Start Fail
");    return 1;  }  pwm->onoff = 1;  return 0;}

(左右移動(dòng)查看全部?jī)?nèi)容)

pwm停止:

static uint32_t iss_pwm_stop(iss_pwm_dev_s *pwm){  if (pwm->init == 0)  {    printf("PWM not init
");    return 1;  }  else if (pwm->onoff == 0)  {    return 0;  }  else if (LzPwmStop(pwm->port) != 0)  {    printf("PWM Stop Fail
");    return 1;  }  pwm->onoff = 0;  return 0;}

(左右移動(dòng)查看全部?jī)?nèi)容)

蜂鳴器報(bào)警控制,需要報(bào)警時(shí)啟動(dòng)pwm,不需要報(bào)警時(shí)停止pwm:

void e53_iss_beep_status_set(e53_iss_status_e status){  if (status == ON)  {    iss_pwm_start(&m_iss_beep);  }  if (status == OFF)  {    iss_pwm_stop(&m_iss_beep);  }}

(左右移動(dòng)查看全部?jī)?nèi)容)

整個(gè)模塊初始化:

uint32_t e53_iss_init(){uint32_t ret = 1;
  ret = iss_led_dev_init(&m_iss_led);  if (ret != 0)  {    printf(“l(fā)ed init err
”);  }  ret = iss_pwm_dev_init(&m_iss_beep);  if (ret != 0)  {     printf(“pwm init err
”);  }  ret = iss_adc_dev_init(&m_iss_mq2);  if (ret != 0)  {     printf(“adc init err
”);  }  return ret;}

(左右移動(dòng)查看全部?jī)?nèi)容)

創(chuàng)建一個(gè)任務(wù)處理函數(shù)
這里需要注意的是ppm校準(zhǔn)需要提前測(cè)試,再把值寫(xiě)死到代碼里。

還有需要注意的是mq2傳感器需要預(yù)熱,即提前通電大約半分鐘到一分鐘左右。用手放在傳感器外殼感覺(jué)微微發(fā)熱即可。如果不預(yù)熱就開(kāi)始測(cè)量其測(cè)量值會(huì)偏差很大,而且會(huì)隨著加熱而變化。

void e53_iss_thread(void *args){  float ppm = 0;  uint32_t id  = 0;  uint8_t index = 0;
  e53_iss_init();  printf("%s
", __FUNCTION__);  /*傳感器校準(zhǔn)*/  LOS_Msleep(2000); // 開(kāi)機(jī)2s后進(jìn)行校準(zhǔn)  // e53_iss_mq2_ppm_calibration(); // 校準(zhǔn)傳感器校準(zhǔn)后不需要重復(fù)調(diào)用  while (1)  {    ppm = e53_iss_get_mq2_ppm();    printf("ppm:%.1f 
", ppm);    /*判斷是否達(dá)到報(bào)警閾值*/    if (ppm > e53_iss_get_mq2_alarm_value())    {      e53_iss_beep_status_set(ON);      printf("over %u ppm alarm
", e53_iss_get_mq2_alarm_value());    }    else    {      e53_iss_led_status_set(OFF);      e53_iss_beep_status_set(OFF);    }LOS_Msleep(1000);  }}

(左右移動(dòng)查看全部?jī)?nèi)容)

最后創(chuàng)建一個(gè)任務(wù)調(diào)用上面處理函數(shù)即可。

燒寫(xiě)程序后通過(guò)串口打印結(jié)果

ppm:55.6ppm:60.9

(左右移動(dòng)查看全部?jī)?nèi)容)

當(dāng)檢測(cè)到煙霧超過(guò)設(shè)定值時(shí)蜂鳴器報(bào)警響起。低于設(shè)置值時(shí)蜂鳴器停止報(bào)警。這樣基于小凌派的煙霧報(bào)警功能就實(shí)現(xiàn)了。

原文標(biāo)題:基于小凌派 RK2206 鴻蒙開(kāi)發(fā)板實(shí)現(xiàn)煙霧報(bào)警功能

文章出處:【微信公眾號(hào):HarmonyOS官方合作社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 傳感器
    +關(guān)注

    關(guān)注

    2561

    文章

    52198

    瀏覽量

    761707
  • 開(kāi)發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    5389

    瀏覽量

    100892
  • 煙霧檢測(cè)
    +關(guān)注

    關(guān)注

    0

    文章

    14

    瀏覽量

    8277
  • RK2206
    +關(guān)注

    關(guān)注

    0

    文章

    38

    瀏覽量

    2052
  • 小凌派
    +關(guān)注

    關(guān)注

    0

    文章

    28

    瀏覽量

    1350

原文標(biāo)題:基于小凌派 RK2206 鴻蒙開(kāi)發(fā)板實(shí)現(xiàn)煙霧報(bào)警功能

文章出處:【微信號(hào):HarmonyOS_Community,微信公眾號(hào):電子發(fā)燒友開(kāi)源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    輕量系統(tǒng)開(kāi)發(fā)套件介紹:睿智捷 | 小-RK2206 開(kāi)發(fā)板套件

    睿智捷 | 小-RK2206 開(kāi)發(fā)板套件是由福州市睿智捷電子有限公司出品,主控為瑞芯微
    發(fā)表于 04-21 13:39

    基于小開(kāi)發(fā)板實(shí)現(xiàn)煙霧報(bào)警功能

    ,則輸出的模擬信號(hào)就越大。 使用MQ-2煙霧傳感器來(lái)檢測(cè)周?chē)h(huán)境煙霧濃度,再通過(guò)小
    發(fā)表于 04-26 09:27

    【小RK2206開(kāi)發(fā)板試用體驗(yàn)】第3章 應(yīng)用開(kāi)發(fā)

    開(kāi)發(fā)環(huán)境:開(kāi)發(fā)系統(tǒng):Ubuntu 20.04開(kāi)發(fā)板:小-RK2206開(kāi)發(fā)板OpenHarmo
    發(fā)表于 05-08 14:07

    【小RK2206開(kāi)發(fā)板試用體驗(yàn)】鴻蒙應(yīng)用開(kāi)發(fā)和鴻蒙線程創(chuàng)建

    開(kāi)發(fā)系統(tǒng):Ubuntu 20.04開(kāi)發(fā)板:小-RK2206開(kāi)發(fā)板OpenHARMony版本:3.0.0-LTS1應(yīng)用實(shí)例簡(jiǎn)介小
    發(fā)表于 05-25 01:32

    基于開(kāi)發(fā)板的FastDeploy適配

    )目前,我已將FastDeploy適配到開(kāi)發(fā)板上,可用于目標(biāo)檢測(cè)、人臉檢測(cè)、人臉識(shí)別、人臉對(duì)齊、圖像分割、OCR等領(lǐng)域,這將大大提高
    發(fā)表于 02-16 09:43

    【ELF 1開(kāi)發(fā)板試用】+傳感器檢測(cè)

    ELF 1開(kāi)發(fā)板通過(guò)幾種傳感器的測(cè)試,如溫濕度、六軸傳感器等,而在配備功能擴(kuò)展板的情況下,還能進(jìn)行光照強(qiáng)度的檢測(cè)。 溫濕度檢測(cè) ELF1
    發(fā)表于 11-29 11:59

    【ELF 1開(kāi)發(fā)板試用】板載資源測(cè)試4:體驗(yàn)溫濕度傳感器

    ,對(duì)比數(shù)據(jù),進(jìn)一步理解傳感器檢測(cè)技術(shù)。2、從測(cè)試過(guò)程中理解了ELF 1開(kāi)發(fā)板命令行操作方式。3、從測(cè)試過(guò)程中進(jìn)一步熟悉了ELF 1開(kāi)發(fā)板板載資源。總之,飛
    發(fā)表于 12-18 11:09

    基于OpenHarmony系統(tǒng)和小RK2206開(kāi)發(fā)板的避障小車(chē)

    這是一款基于OpenHarmony系統(tǒng)和小-RK2206開(kāi)發(fā)板的避障小車(chē)。同時(shí),小車(chē)上搭載了超聲波測(cè)距模塊、舵機(jī)模塊、紅外尋跡模塊、直流電機(jī)模塊。
    的頭像 發(fā)表于 04-21 07:58 ?5670次閱讀

    基于小煙霧報(bào)警功能的實(shí)現(xiàn)

    煙霧檢測(cè)傳感器使用的是MQ-2煙霧傳感器。MQ-2型煙霧傳感
    的頭像 發(fā)表于 04-26 16:16 ?2136次閱讀
    基于小<b class='flag-5'>凌</b><b class='flag-5'>派</b><b class='flag-5'>煙霧</b>報(bào)警功能的實(shí)現(xiàn)

    基于小RK2206開(kāi)發(fā)板所制作的簡(jiǎn)易示波器

    基于OpenHarmony + 小RK2206開(kāi)發(fā)板制作的簡(jiǎn)易示波器,實(shí)時(shí)采集波形,實(shí)時(shí)計(jì)算并實(shí)時(shí)顯示對(duì)應(yīng)的波形。OpenHarmony實(shí)時(shí)性較高,穩(wěn)定性好,瑞芯微RK2206芯片接口豐富
    的頭像 發(fā)表于 05-06 17:09 ?2031次閱讀
    基于小<b class='flag-5'>凌</b><b class='flag-5'>派</b>RK2206<b class='flag-5'>開(kāi)發(fā)板</b>所制作的簡(jiǎn)易示波器

    利用小開(kāi)發(fā)板自帶的wifi功能來(lái)進(jìn)行tcp通信的教程

    基于小RK2206開(kāi)發(fā)板wifi-tcp通信實(shí)驗(yàn) 在開(kāi)發(fā)過(guò)程中想要與開(kāi)發(fā)板進(jìn)行通信一般使用串口通信,當(dāng)
    的頭像 發(fā)表于 05-13 15:05 ?3019次閱讀
    利用小<b class='flag-5'>凌</b><b class='flag-5'>派</b><b class='flag-5'>開(kāi)發(fā)板</b>自帶的wifi功能來(lái)進(jìn)行tcp通信的教程

    使用小開(kāi)發(fā)板wifi進(jìn)行tcp通信的步驟

    開(kāi)發(fā)過(guò)程中想要與開(kāi)發(fā)板進(jìn)行通信一般使用串口通信,當(dāng)開(kāi)發(fā)板使用串口與pc通信還需要專門(mén)的串口轉(zhuǎn)換工具才行,而小
    的頭像 發(fā)表于 05-16 09:35 ?2480次閱讀

    用小開(kāi)發(fā)板wifi進(jìn)行udp通信的教程

    開(kāi)發(fā)板與pc通信有很多形式,之前已經(jīng)介紹過(guò)通過(guò)tcp通信,不過(guò)有些場(chǎng)合使用udp會(huì)更合適,因?yàn)閡dp沒(méi)有了tcp的握手與連接步驟,傳輸效率會(huì)高的多。例如通過(guò)wifi傳輸開(kāi)發(fā)板采集到傳感器數(shù)據(jù)在PC端
    的頭像 發(fā)表于 05-31 16:43 ?3687次閱讀
    用小<b class='flag-5'>凌</b><b class='flag-5'>派</b><b class='flag-5'>開(kāi)發(fā)板</b>wifi進(jìn)行udp通信的教程

    基于小RK2206開(kāi)發(fā)板wifi-udp通信實(shí)驗(yàn)

    開(kāi)發(fā)板與pc通信有很多形式,之前已經(jīng)介紹過(guò)通過(guò)tcp通信,不過(guò)有些場(chǎng)合使用udp會(huì)更合適,因?yàn)閡dp沒(méi)有了tcp的握手與連接步驟,傳輸效率會(huì)高的多。例如通過(guò)wifi傳輸開(kāi)發(fā)板采集到傳感器數(shù)據(jù)在PC端
    的頭像 發(fā)表于 06-01 10:33 ?1086次閱讀
    基于小<b class='flag-5'>凌</b><b class='flag-5'>派</b>RK2206<b class='flag-5'>開(kāi)發(fā)板</b>wifi-udp通信實(shí)驗(yàn)

    基于小RK2206開(kāi)發(fā)板wifi-tcp通信實(shí)驗(yàn)

    基于小RK2206開(kāi)發(fā)板wifi-tcp通信實(shí)驗(yàn)在開(kāi)發(fā)過(guò)程中想要與開(kāi)發(fā)板進(jìn)行通信一般使用串口通信,當(dāng)
    的頭像 發(fā)表于 06-14 11:10 ?1796次閱讀
    基于小<b class='flag-5'>凌</b><b class='flag-5'>派</b>RK2206<b class='flag-5'>開(kāi)發(fā)板</b>wifi-tcp通信實(shí)驗(yàn)