산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

UltraV:휴대용 UV 지수 측정기

구성품 및 소모품

Arduino Nano R3
× 1
Texas Instruments ML-8511
× 1
128x64 OLED 디스플레이
× 1
MT3608 DC-DC 시동 변환기
× 1
CR2(3v) 배터리
× 1
CR2 배터리 홀더
× 1

이 프로젝트 정보

피부과 문제로 햇빛에 노출될 수 없는 상황에서 해변에서 보내는 시간을 자외선 측정기에 사용했습니다. 울트라브이.

UV 센서, 3v 배터리 전압을 높이는 DC/DC 컨버터, 소형 OLED 디스플레이가 있는 Arduino Nano rev3를 기반으로 합니다. 내 주요 목표는 휴대성을 유지하여 언제 어디서나 UV 지수를 쉽게 알 수 있도록 하는 것이었습니다.

1단계:부품 및 구성요소

<울>
  • 마이크로컨트롤러 Arduino Nano rev.3
  • <울>
  • ML8511 UV 센서
  • <울>
  • 128×64 OLED 디스플레이(SSD1306)
  • <울>
  • MT3608 DC-DC 승압
  • <울>
  • CR2 배터리
  • <울>
  • CR2 배터리 홀더
  • <울>
  • 전환
  • <울>
  • 인클로저 케이스
  • 2단계:센서

    ML8511(라피스반도체)은 실내외 UV강도 취득에 적합한 UV센서입니다. ML8511에는 UV 강도에 따라 광전류를 전압으로 변환하는 내부 증폭기가 장착되어 있습니다. 이 고유한 기능은 ADC와 같은 외부 회로에 대한 쉬운 인터페이스를 제공합니다. 절전 모드에서 일반적인 대기 전류는 0.1µA이므로 배터리 수명을 연장할 수 있습니다.

    기능:

    <울>
  • UV-A 및 UV-B에 민감한 포토다이오드
  • <울>
  • 임베디드 연산 증폭기
  • <울>
  • 아날로그 전압 출력
  • <울>
  • 낮은 공급 전류(일반 300µA) 및 낮은 대기 전류(일반 0.1µA)
  • <울>
  • 작고 얇은 표면 실장 패키지(4.0mm x 3.7mm x 0.73mm, 12핀 세라믹 QFN)
  • 불행히도 센서를 보호할 UV 투명 재료를 찾을 기회가 없었습니다. 내가 테스트한 모든 종류의 투명 커버(플라스틱, 유리 등)는 UV 측정을 약화시켰습니다. 더 나은 선택은 석영 용융 석영 유리인 것 같지만 합리적인 가격에 찾을 수 없어서 센서를 상자 밖에 두고 야외에 두기로 했습니다.

    3단계:작업

    조치를 취하려면 장치의 전원을 켜고 태양 광선의 방향과 정렬된 상태를 유지하면서 몇 초 동안 태양을 가리킵니다. 그런 다음 디스플레이를 살펴보십시오. 왼쪽의 인덱스는 항상 즉각적인 측정값(각 200ms)을 표시하고 오른쪽의 판독값은 이 세션 동안 취한 최대 판독값입니다. 이것이 바로 필요한 것입니다.

    디스플레이의 왼쪽 하단에는 측정된 UV 지수에 대한 WHO 등가 명명법(LOW, MODERATE, HIGH, VERY HIGH, EXTREME)도 보고됩니다.

    4단계:배터리 전압 및 판독값

    크기와 용량(800mAh) 때문에 CR2 배터리를 선택합니다. 나는 여름 내내 UltraV를 사용했고 배터리는 여전히 2.8v를 읽으므로 선택에 매우 만족합니다. 작동할 때 회로는 약 100mA를 소모하지만 판독 측정은 몇 초 이상 걸리지 않습니다. 배터리 공칭 전압이 3v이므로 DC-DC 스텝 업 컨버터를 추가하여 전압을 최대 9V로 가져오고 Vin 핀에 연결했습니다.

    배터리 전압 표시를 디스플레이에 표시하기 위해 아날로그 입력(A2)을 사용했습니다. Arduino 아날로그 입력을 사용하여 0~5V 사이의 DC 전압을 측정할 수 있지만 이 기술에는 보정이 필요합니다. 보정을 수행하려면 멀티미터가 필요합니다. 먼저 마지막 배터리(CR2)로 회로에 전원을 공급하고 컴퓨터의 USB 전원을 사용하지 마십시오. 조정기에서 Arduino의 5V를 측정합니다(Arduino 5V 핀에 있음). 이 전압은 기본적으로 Arduino ADC 기준 전압에 사용됩니다. 이제 측정된 값을 다음과 같이 스케치에 입력합니다(5.023을 읽었다고 가정).

    전압 =((긴)합 / (긴)NUM_SAMPLES * 5023) / 1024.0; 

    스케치에서 저는 전압 측정을 10개 샘플에 대한 평균으로 취하고 있습니다.

    5단계:회로도 및 연결

    6단계:소프트웨어

    디스플레이에는 이러한 종류의 OLED 디스플레이에 매우 유연하고 강력한 U8g2lib를 사용하여 다양한 글꼴과 좋은 위치 지정 기능을 허용합니다.

    ML8511의 전압 판독과 관련하여 ADC 컨버터의 베이스로 3.3v Arduino 기준 핀(1% 이내 정확도)을 사용했습니다. 따라서 3.3V 핀에서 아날로그에서 디지털로 변환을 수행한 다음(A1에 연결하여) 이 판독값을 센서의 판독값과 비교함으로써 VIN이 무엇이든 상관없이 실제 판독값을 외삽할 수 있습니다( 3.4V 이상).

    int uvLevel =AverageAnalogRead(UVOUT);int refLevel =AverageAnalogRead(REF_3V3);float outputVoltage =3.3 / refLevel * uvLevel; 

    다음 링크에서 전체 코드를 다운로드하십시오.

    UltraV_OLED.ino.zip

    7단계:인클로저 케이스

    상업용 플라스틱 상자에서 직사각형 디스플레이 창을 수동으로 자르는 몇 가지 (나쁜) 테스트를 거친 후, 나는 그것을 위해 직접 디자인하기로 결정했습니다. 그래서 CAD 응용 프로그램을 사용하여 상자를 디자인하고 가능한 한 작게 유지하기 위해 CR2 배터리를 뒷면 외부에 장착했습니다(배터리 홀더가 상자 자체에 붙어 있음).

    다음 링크에서 인클로저 케이스용 STL 파일을 다운로드하세요.

    UltraV.stl.zip

    8단계:향후 개선 가능성

    <울>
  • UV 분광기를 활용하여 다양한 조건에서 실제 실시간 UV-Index 값을 측정합니다(UV 분광기는 매우 비쌉니다).
  • <울>
  • Arduino 마이크로컨트롤러를 사용하여 ML8511의 출력을 동시에 기록합니다.
  • <울>
  • ML8511 출력을 다양한 대기 조건에서 실시간으로 실제 UVI 값과 연결하는 알고리즘을 작성합니다.
  • 10단계:크레딧

    <울>
  • 카를로스 오르츠:https://create.arduino.cc/projecthub/McOrts/mobil...
  • <울>
  • Arduino 포럼:http://forum.arduino.cc/index.php?topic=3922.0
  • <울>
  • 전자 제품 시작:https://startingelectronics.org/articles/arduino/...
  • <울>
  • U8g2lib:https://github.com/olikraus/u8g2/wiki/u8g2referen...
  • <울>
  • 세계 보건 기구, UV 지수:http://www.who.int/uv/intersunprogramme/activitie...
  • https://github.com/olikraus/u8g2/wiki/u8g2reference

    <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

    코드

    <울>
  • UltraV
  • UltraVC/C++
    Code
     /* Fabio Marzocca @ 2018 아날로그에서 디지털로의 변환은 완전히 VCC에 의존합니다. 우리는 이것이 5V라고 가정하지만 보드가 USB에서 전원이 공급되는 경우 이것은 5.25V만큼 높거나 4.75V만큼 낮을 수 있습니다. http://en.wikipedia.org/wiki/USB#Power 이 알 수 없는 창으로 인해 ADC는 대부분의 경우 상당히 부정확합니다. 이 문제를 해결하기 위해 매우 정확한 온보드 3.3V 기준을 사용합니다(정확도 1% 이내). 따라서 3.3V 핀(A1)에서 ADC를 수행한 다음 이를 센서의 판독값과 비교함으로써 VIN이 무엇이든(3.4V 이상인 한) 실제 판독값을 외삽할 수 있습니다.v. 2.0.0 - 2018년 7월 - 16x2 LCD에서 OLEDv로 이동했습니다. 데이터 2.0.1 - 2018년 9월 - 배터리 읽기 기능 변경*/#include #include #include U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0/ SCL*, /* clock =*/ SDA, /* 리셋=*/ U8X8_PIN_NONE); // 디스플레이 리셋이 없는 모든 보드#define FIRST_ROW_Y 16#define FIRST_ROW_X 16#define BOX_H 38//하드웨어 핀 정의const int UVOUT =A0; // sensorconst에서 출력 int REF_3V3 =A1; // Arduino 보드의 3.3V 전원 const int VBATT =A2; //배터리 전압 플로트 maxUV =0; //최대 UV 인덱스 readvoid setup(){ pinMode(UVOUT, INPUT); 핀모드(REF_3V3, 입력); 핀모드(VBATT, 입력); u8g2.begin();} 무효 루프(){ u8g2.firstPage(); do { int uvLevel =AverageAnalogRead(UVOUT); 정수 refLevel =평균아날로그읽기(REF_3V3); //3.3V 전원 핀을 참조로 사용하여 센서에서 매우 정확한 출력 값을 얻습니다. float outputVoltage =3.3 / refLevel * uvLevel; 부동 UV 강도 =mapfloat(출력 전압, 0.99, 2.6, 0.0, 15.0); //전압을 UV 강도 레벨로 변환 readBattery(); if (maxUV =0) &&(categ <3)) { strcpy(strCat, "LOW"); } else if ((범주>=3) &&(범주 <6)) { strcpy(strCat, "보통"); } else if ((categ>=6) &&(categ <8)) { strcpy(strCat, "HIGH !"); } else if ((범주>=8) &&(범주 <10)) { strcpy(strCat, "매우 높음!"); } else if (범주>=11) { strcpy(strCat, "EXTREME!"); } u8g2.setCursor(0,64); u8g2.print(strCat); }//주어진 핀에서 판독값의 평균을 취합니다.//평균을 반환합니다.int averageAnalogRead(int pinToRead){ byte numberOfReadings =16; unsigned int runningValue =0; for(int x =0; x   

    제조공정

    1. 전압 분배기
    2. 감자 전지
    3. 미터란 무엇입니까?
    4. 멀티미터
    5. 배터리 건설
    6. 휴대용 스폿 용접기 란 무엇입니까?
    7. 휴대용 CMM 기계 - 고정 또는 휴대용?
    8. 자동차에 사용되는 배터리의 이해
    9. 발전기를 테스트하는 다양한 방법
    10. 불량 또는 결함이 있는 발전기의 7가지 징후