DIY - 2019/공기청정기

12V DC Fan 과 PMS 5003 연결

알렉스윤 2019. 3. 20. 00:32

[12V DC FAN 연결]

DC Fan 잡음을 줄이려고 25V 1000uf 캐패시터를 달았다.


// #define IA 5 // D5

// #define IB 4 // D2


#define IA D1 // D5 --> D1으로 수정

#define IB D2 // D2


// 25V1000uf Motor driver에 연결


void setup() { 

  pinMode(IA, OUTPUT);

  pinMode(IB, OUTPUT);

  Serial.begin(115200);

}


void loop() {


  analogWrite(IA, 100);

  analogWrite(IB, LOW);

  Serial.println("Speed = 100 ");

  delay(2000);              // wait for a second  

 

  analogWrite(IA, 150);

  analogWrite(IB, 0);

  Serial.println("Speed = 150 ");

  delay(2000);              // wait for a second


  analogWrite(IA, 200);

  analogWrite(IB, 0);

  Serial.println("Speed = 200 ");

  delay(2000);              // wait for a second


  analogWrite(IA, 255);

  analogWrite(IB, 0);

  Serial.println("Speed = 255 ");

  delay(2000);              // wait for a second


  analogWrite(IA, 300);

  analogWrite(IB, 0);

  Serial.println("Speed = 300 ");

  delay(2000);              // wait for a second


  analogWrite(IA, 500);

  analogWrite(IB, 0);

  Serial.println("Speed = 500 ");

  delay(3000);              // wait for a second


  analogWrite(IA, 700);

  analogWrite(IB, 0);

  Serial.println("Speed = 700 ");

  delay(3000);              // wait for a second


  analogWrite(IA, 900);

  analogWrite(IB, 0);

  Serial.println("Speed = 900 ");

  delay(3000);              // wait for a second      


  analogWrite(IA, 1024);

  analogWrite(IB, 0);

  Serial.println("Speed = 1024 ");

  delay(3000);              // wait for a second     


  digitalWrite(IA, 1);

  digitalWrite(IB, 0);

  Serial.println("Speed = 1 ");

  delay(3000);              // wait for a second      


  analogWrite(IA, 500);

  analogWrite(IB, 0);

  Serial.println("Speed = 500 ");

  delay(3000);              // wait for a second   


  analogWrite(IA, 300);

  analogWrite(IB, 0);

  Serial.println("Speed = 300 ");

  delay(3000);              // wait for a second   


  analogWrite(IA, 200);

  analogWrite(IB, 0);

  Serial.println("Speed = 200 ");

  delay(3000);              // wait for a second      


  analogWrite(IA, 150);

  analogWrite(IB, 0);

  Serial.println("Speed = 150 ");

  delay(3000);              // wait for a second         


  digitalWrite(IA, 0);

  digitalWrite(IB, 0);

  Serial.println("Speed = 0 ");

  delay(2000);              // wait for a second  

}





[PMS5003 연결]

Wemos D1 MINI PIN이 적은 관계로 TX만 연결했다. 

PIN이 남는다면 RX도 연결해서 사용해야지.




#include <Arduino.h>

#include <pms.h>


//int pinTX = 22; // TX

//int pinRX = 21; // RX 


Pmsx003 pms(D4, D6);  //D6 -> D4

//Pmsx003 pms(RX,TX);  //HW TX,RX  




////////////////////////////////////////


void setup(void) {

    Serial.begin(115200);

    while (!Serial) {};

    Serial.println("Pmsx003");


    pms.begin();

    pms.waitForData(Pmsx003::wakeupTime);

    pms.write(Pmsx003::cmdModeActive);

    Serial.println("____       START    _____");

}


////////////////////////////////////////


auto lastRead = millis();


void loop(void) {


    const auto n = Pmsx003::Reserved;

    Pmsx003::pmsData data[n];


    Pmsx003::PmsStatus status = pms.read(data, n);


    switch (status) {

        case Pmsx003::OK:

        {

            Serial.println("_________________");

            auto newRead = millis();

            Serial.print("Wait time ");

            Serial.println(newRead - lastRead);

            lastRead = newRead;


            // For loop starts from 3

            // Skip the first three data (PM1dot0CF1, PM2dot5CF1, PM10CF1)

            for (size_t i = Pmsx003::PM1dot0; i < n; ++i) { 

                Serial.print(data[i]);

                Serial.print("\t");

                Serial.print(Pmsx003::dataNames[i]);

                Serial.print(" [");

                Serial.print(Pmsx003::metrics[i]);

                Serial.print("]");

                Serial.println();

            }

            break;

        }

        case Pmsx003::noData:

            break;

        default:

            Serial.println("_________________");

            Serial.println(Pmsx003::errorMsg[status]);

    };

    //delay(10000);

}






그림으로 그린 로직과 실제 구현은 참 많이 다른 느낌이다. 동작 여부를 확인하기 위해서 빵판에서 작업을 진행했따.







남는 보드에 납뗌을해서 쬐금 더 깔끔하게 작업하려고 한다.





12V 전원을 인가하고 7805 통해서 D1 MINI 5V에 연결하면 외부전원으로 사용할 수 있다.

USB를 통하지 않고 PIN을 통해 전원을 넣으려고 구글링을 많이 했다. 망가질까 조마 조마 했는데.... 다행이 잘 동작한다.

이게 맞는거겠지? 쓰다가 망가지려나?






뒷판은 점퍼선을 여기 저기 날려서 지져분하다. 뒷태가 아름답지 못 하네.




빨간불이 들어와야 안심이다. 그런데.. 쬐금 겁나기도 함. 실은 모터 드라이버를 하나 날려먹은 후라... ^^





Fan 동작과 소음을 확인 할 수 있다. 물론 속도 조절로 Fan off도 가능하다. Relay를 쓰지 않아서 돈 굳었다.




LCD와 버튼을 빨리 적업해야 하는데... 블로그를 하고 있다. 



2019년 4월 2일 : 코드 추가함.

'DIY - 2019 > 공기청정기' 카테고리의 다른 글

케이스 만들기  (0) 2019.04.03
회로 구성  (0) 2019.04.02
TFT LCD 연결  (0) 2019.04.02
[공기청정기]메뉴 조작을 위한 구성  (0) 2019.03.26
설계 및 준비  (0) 2019.03.16