BASIC4MCU | 질문게시판 | 답변 : 2A L298N 모터 드라이버 모듈을 쓴 팬모터 회로도 질문
페이지 정보
작성자 master 작성일2018-10-16 08:30 조회1,003회 댓글2건본문
#include <LiquidCrystal_I2C.h>#include <DHT.h>#define DHTPIN 8#define DHTTYPE DHT11DHT dht(DHTPIN,DHTTYPE);LiquidCrystal_I2C lcd(0x27,16,2);int trig=9,echo=10,fan=11;//void setup(){pinMode(fan,OUTPUT);pinMode(trig,OUTPUT); pinMode(echo,INPUT);dht.begin();lcd.init(); lcd.backlight();Serial.begin(9600);}//void loop(){digitalWrite(trig,HIGH); delayMicroseconds(10); digitalWrite(trig,LOW);long distance=pulseIn(echo,HIGH)/58.8;Serial.print(distance); Serial.println("cm");//if(distance<30){float humidity=dht.readHumidity();float temperature=dht.readTemperature();if(isnan(humidity)||isnan(temperature)){ Serial.println("Faild to read from DHT sensor!"); return; }Serial.print((int)temperature); Serial.print("*C,");Serial.print((int)humidity); Serial.print("%");String humi="Humi: "; humi+=(String)humidity; humi+="%";String temp="Temp: "; temp+=(String)temperature; temp+="C";lcd.setCursor(0,0); lcd.print(humi);lcd.setCursor(0,1); lcd.print(temp);if((temp>25)||(humi>50))digitalWrite(fan,HIGH); // 온도 25도 이상, 습도 50% 이상 팬 ONelse digitalWrite(fan,LOW); // 팬 OFFdelay(1000);}//delay(500);}
지금 제가 2A L298N 모터 드라이버 모듈을 이용해서 위의 코드를 진행시켜야하는데요.
초음파센서가 거리 측정을 하다가,
30cm 이내에 물체가 감지되면 온습도센서가 작동해서,
현재 온습도를 측정한 다음에 LCD에 표시하고
만약에 온도가 25도 이상, 습도가 50%이면 팬이 작동하는 코드입니다.
그런데, L298N을 어떻게 사용해야할지 막막해서
일단 인터넷 블로그에서 나와있는대로
모터A 출력에는 DC 12V 팬모터를 수-수 점퍼케이블을 이용해서 꽂아놨구요.
12V 입력, GND는 아두이노에 있는 브레드보드에서 아두이노의 Vin, GND에다가 꽂아놨습니다.
INPUT 부분은 보니까 그냥 7, 6, 5, 4에 연결해놨던데. 저 위의 코드를 보면
int fan = 11
선언해놔서 아무래도 아두이노 PWM의 11번 단자에 뭔가를 연결해야하는 것 같은데,
INPUT 부분의 4개의 핀 중 하나만 연결하면 되는건지.
Enable 모터A핀을 연결해야하는건지 좀 헷갈립니다.
어떤 데는 Enable 모터A핀을 안 사용하고 Input핀을 사용하고, 어떤데는 그 반대이구요.
만약에 Enable 모터A핀을 사용해야하면 또 문제인게,
이 쪽에 꽂아야하는 핀이 일반 수-수 점퍼케이블이라던지,
암-수 점퍼 케이블을 사용할 수가 없어서 어떤 케이블을 사용해야 할지도 모르겠습니다.
//--------------------------------------------------------------------------------------------------
L298의 출력은 아래와 같습니다.
아두이노 7 --- IN1 OUT1 ---FAN-
아두이노 6 --- IN2 OUT2 ---FAN+
아두이노 5 --- IN3 OUT3
아두이노 4 --- IN4 OUT4
OUT3,4에 연결된 것은 없으므로 아두이노 4,5번핀에 연결된 점퍼는 빼세요아두이노 7 --- IN1 OUT1 ---FAN-
아두이노 6 --- IN2 OUT2 ---FAN+
이 연결이므로6번핀 1 출력하고, 7번핀 0 출력하면 FAN이 돌아갑니다.6번핀 0 출력하고, 7번핀 0 출력하면 FAN이 정지합니다.
7번핀도 연결해두어야하지만 7번핀은 0 출력인채로 그대로 나두면 되고6번핀 1개만 변경하면 ON/OFF 가 되는겁니다.
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-10-16 오전 8:35:31// by Ok-Hyun Park#include <LiquidCrystal_I2C.h>#include <DHT.h>#define DHTPIN 8#define DHTTYPE DHT11DHT dht(DHTPIN,DHTTYPE);LiquidCrystal_I2C lcd(0x27,16,2);int trig=9,echo=10,fanP=6,fanN=7;//void setup(){pinMode(fanP,OUTPUT); pinMode(fanN,OUTPUT);pinMode(trig,OUTPUT); pinMode(echo,INPUT);dht.begin();lcd.init(); lcd.backlight();Serial.begin(9600);}//void loop(){digitalWrite(trig,HIGH); delayMicroseconds(10); digitalWrite(trig,LOW);long distance=pulseIn(echo,HIGH)/58.8;Serial.print(distance); Serial.println("cm");//if(distance<30){float humidity=dht.readHumidity();float temperature=dht.readTemperature();if(isnan(humidity)||isnan(temperature)){ Serial.println("Faild to read from DHT sensor!"); return; }Serial.print((int)temperature); Serial.print("*C,");Serial.print((int)humidity); Serial.print("%");String humi="Humi: "; humi+=(String)humidity; humi+="%";String temp="Temp: "; temp+=(String)temperature; temp+="C";lcd.setCursor(0,0); lcd.print(humi);lcd.setCursor(0,1); lcd.print(temp);if((temp>25)||(humi>50))digitalWrite(fanP,HIGH); // 온도 25도 이상, 습도 50% 이상 팬 ONelse digitalWrite(fanP,LOW); // 팬 OFFdelay(1000);}//delay(500);}
댓글 2
조회수 1,003RobustWalKeR님의 댓글
RobustWalKeR 작성일그럼 ENA핀은 사용하지 않아도 되는건가요?
master님의 댓글
master
점퍼 꼽힌채로 두면 됩니다.