131 1300 0010
其他电源
当前位置: 首页>> 电源技术>>其他电源>>
  • 导航栏目
  • 逆变电源
  • 开关电源
  • 电机伺服
  • 其他电源
  • 基于IDT的便携式无线供电空气质量检测仪设计
    基于IDT的便携式无线供电空气质量检测仪设计
  • 基于IDT的便携式无线供电空气质量检测仪设计
  • 来源:嵌入式悦翔园  发布日期: 2022-09-14  浏览次数: 968

    0 前言

    这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。

    为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是

    基于单片机的便携式空气质量检测仪

    1、简介

    基于IDT的便携式无线供电空气质量检测仪,随着近些年环保问题的日益严峻,身边的朋友也越来越重视自己的生存环境,尤其是对空气质量的关注度日益增高。我就打算自己设计制作一套便携式的空气质量检测仪,采用无线供电的方式来运行保证检测仪的运行,同时利用无线供电系统给检测仪内部的锂电池进行充电。(本项目采用的是IDT 5W无线充电开发套件

    2、主要器件

    IDT15W无线充电开发套件

    Arduino LGT8F328D单片机

    A003最新款颗粒物传感器

    S80053二氧化碳传感器

    2.2寸串口屏

    18650锂电池,容量2600mah

    ETA9640充放电芯片,最大充放电电流1000ma

    3、实现效果

    56bf572c-33df-11ed-ba43-dac502259ad0

     

    5b28eae4-33df-11ed-ba43-dac502259ad0

    IDT无线供电系统接收板

    5d8a0de0-33df-11ed-ba43-dac502259ad0

    无线充电过程

    5de145ce-33df-11ed-ba43-dac502259ad0

    4、设计原理

    硬件说明

    通过设计计算,整机负载电流约500ma,考虑到设计的充电电流是1000ma,所以项目选用了IDT 5W无线供电系统,该系统可以提供5V 1A的最大5W的功率输出,完全满足设计要求。(本项目采用的是IDT 5W无线充电开发套件)

    5e20aed0-33df-11ed-ba43-dac502259ad0

    包含三大部分组成:

    1、无线供电锂电池充放电部分,由于传感器的TTL输出电平是3.3V,所以还需要通过一个LDOMCU供电电源降为3.3V。传感器供电部分是5V(内部有LDO降压),有系统直接供电即可。本项目用的电池选用了常见的18650锂电池,容量2600mah。充放电芯片选用上海钰泰的ETA9640一体式芯片,最大充放电电流1000ma,自带锂电池保护电路,无需外围再加保护电路。无线供电接收板接口直接与USB供电接口并接,既可以采用USB供电,也可以采用IDT无线系统供电。

    2、MCU部分选用了AVR内核的8位单片机,LGT8F328D,传感器选用攀藤科技的A003最新款颗粒物传感器和森尔电子的S8 0053二氧化碳传感器(由于二氧化碳传感器价格较贵,最终未进行购买)。

    3、显示屏幕选用了2.2寸串口屏,便于快速开发,降低开发难度。

    5e67a89e-33df-11ed-ba43-dac502259ad0

    在这里插入图片描述

    5f3d05a2-33df-11ed-ba43-dac502259ad0

    在这里插入图片描述

    项目的PCB图和3D图部分:

    这个PCB板子尺寸为80*70mm,正面为主要电路和屏幕部分,反面为18650电池仓和两个传感器接口

    最终PCB板和焊接好的PCB板:

    5f9a51c6-33df-11ed-ba43-dac502259ad0

    在这里插入图片描述

    软件部分

    本项目软件设计采用Arduino IDE开源编程框架,主要分为系统初始化和循环执行两大部分构成。

    5 部分核心代码

    #include 
    
    SoftwareSerial pm(2, NULL);
    
    SoftwareSerial co(4, NULL);
    
    unsigned int CO2;
    
    unsigned int  pm25;
    
    void getCO2(unsigned char Data) 
    
    {
    
      staTIc unsigned char RxBuffer[7];
    
      staTIc unsigned char RxCnt = 0;
    
      RxBuffer[RxCnt++] = Data;
    
      if (RxBuffer[0] != 0xFE && RxBuffer[1] != 0x04)
    
      {
    
        RxCnt = 0;
    
        return;
    
      }
    
      if (RxCnt > 6)
    
      {
    
        CO2 = (int) RxBuffer[3] * 256 + (int) RxBuffer[4];
    
        RxCnt = 0;
    
        return;
    
      }
    
    }
    
    void getPM25()
    
    {
    
      uint8_t mData = 0;
    
      uint8_t i = 0;
    
      uint8_t mPkt[32] = {0};
    
      int mCheck = 0;
    
      pm.listen();  
    
      delay(100);
    
      while (pm.available() > 0)
    
      {
    
        mData = pm.read();
    
        delay(2);
    
        if (mData == 0x42) 
    
        {
    
          mPkt[0] =  mData;
    
          mData = pm.read();
    
          delay(2);
    
          if (mData == 0x4d) 
    
          {
    
            mPkt[1] =  mData;
    
            mCheck = 66 + 77;
    
            for ( i = 2; i < 30; i++) 
    
            {
    
              mPkt[i] = pm.read();
    
              delay(2);
    
              mCheck += mPkt[i];
    
            }
    
            mPkt[30] = pm.read();
    
            delay(2);
    
            mPkt[31] = pm.read();
    
            delay(2);
    
            if (mCheck == mPkt[30] * 256 + mPkt[31]) 
    
            {
    
              pm25 = mPkt[12] * 256 + mPkt[13];
    
              
    
              Serial.flush();
    
              return;
    
            }
    
          }
    
        }
    
      }
    
    }
    
    
    void setup()
    
    {
    
      Serial.begin(9600);
    
      pm.begin(9600);
    
      co.begin(9600);
    
      delay(5000);
    
      Serial.println("SPG(2);"); 
    
      delay(100);
    
    }
    
    
    void loop()
    
    {
    
      getPM25();
    
      co.listen();  
    
      delay(100);
    
      staTIc unsigned char TxBuffer[] = {0xFE, 0x04, 0x00, 0x03, 0x00, 0x01, 0xD5, 0xC5};
    
      co.write(TxBuffer, 8);
    
      delay(100);
    
      while (co.available())
    
      {
    
        getCO2(co.read());
    
      }
    
      Serial.print("LABL(48,0,40,159,'");  Serial.print(pm25);  Serial.print("',");  Serial.print(15);  Serial.println(",1);");
    
      Serial.print("LABL(48,161,40,319,'");  Serial.print(CO2);  Serial.print("',");  Serial.print(15);  Serial.println(",1);");
    
    }

  • ·上一篇:
    ·下一篇:
  • 其他关联资讯
    深圳市日月辰科技有限公司
    地址:深圳市宝安区松岗镇潭头第二工业城A区27栋3楼
    电话:0755-2955 6626
    传真:0755-2978 1585
    手机:131 1300 0010
    邮箱:hu@szryc.com

    深圳市日月辰科技有限公司 版权所有:Copyright©2010-2023 www.szryc.com 电话:13113000010 粤ICP备2021111333号