BASIC4MCU | 질문게시판 | 아두이노 DC모터가 구동중 온도센서가 불안정합니다.
페이지 정보
작성자 프로틴좋아 작성일2020-11-30 00:55 조회11,784회 댓글4건본문
제목 그대로 온도센서와 LCD 그리고 모터를 달아놓고 코딩은 아래와 같이 했는데
모터가 구동중일 때 온도센서값이 엄청나게 튑니다. 불안정해서 제대로 구동이 안됩니다. 뭐가 문제인지 전혀 모르겠어요 ㅜㅠㅠ 모터 문제인지
제 코딩이 문제인지 아니면 설계가 잘못됐는지 잘 모르겠어요 ㅠㅠ
#include <Wire.h> // i2C 통신을 위한 라이브러리
#include <LiquidCrystal_I2C.h> // LCD 1602 I2C용 라이브러리
LiquidCrystal_I2C lcd(0x27,16,2); // 접근주소: 0x3F or 0x27
int tmp36 = A0;
void setup() {
Serial.begin(9600);
lcd.init(); // LCD 초기화
lcd.backlight(); // 백 라이트 켜기
lcd.begin(16,2);
pinMode(10, OUTPUT);
}
int TmpFlag = 0;
int Output = 0;
void loop() {
int sensor = analogRead(tmp36);
float voltage = (sensor * 5.0)/1024.0; // 온도센서의 값을 전압으로 변환
float celsius = (voltage * 100) - 50 ; // 전압을 온도로 변환
if(celsius > 25) TmpFlag = 1;
else TmpFlag = 0;
if (TmpFlag ==1)
{if (celsius<30) Output = 150;
else if (celsius <35) Output =200;
else Output= 255;
}
else Output =1;
analogWrite (10,Output);
delay (1500);
lcd.setCursor(0,0); // 1번째, 1라인
lcd.print("temperature is ");
lcd.setCursor(6,1); // 7번째, 2라인
lcd.print(celsius);
lcd.setCursor(11,1); // 12번째, 2라인
lcd.print(" C");
Serial.println(celsius);
}
댓글 4
조회수 11,784master님의 댓글
master 작성일
모터 구동전류가 커서 전원 전압이 흔들리게 되면 온도센서 입력이 흔들리게 됩니다.
모터 전원을 별도로 준비해서 구동해보세요
프로틴좋아님의 댓글
프로틴좋아
답변 감사합니다!
그런데 저희가 따로 아두이노에 어댑터를 꽂아서 외부전원을 넣어줬는데도 불안한데 따로 건전지로 외부전원을 또 넣어줘야하는 건가요??
master님의 댓글
master
아답터를 2개 사용하면 되겠죠?
모터용 과 아두이노용
두 전원의 GND는 서로 연결되어야 합니다.
master님의 댓글
master 작성일
아두이노용 전원 전압의 변화가 작은데도 약간의 흔들림이 발생한다면
여러번 읽어서 평균을 구하면 흔들림이 향상 됩니다.