BASIC4MCU | 질문게시판 | 아두이노 스텝 모터 도와주세요ㅠㅠ
페이지 정보
작성자 이고응 작성일2020-06-17 15:08 조회5,574회 댓글2건본문
안녕하세요.
학교 강의때문에 아두이노 공부중입니다..
리모콘 버튼을 누르면 적외선 센서에서 값을 받아 스텝모터가 돌아가도록 회로를 구성했습니다.
또한 온도센서로 주변 온도값을 받아 LCD로 나타내게 연결했습니다.
문제는 스텝모터가 돌아가면 한 바퀴 혹은 반바퀴가 돌 때까지 온도감지를 안하고 리모콘 버튼을 눌러도
코드가 작동하다가 안하다 반복한다는 점입니다.
찾아보니 스텝모터의 step함수 자체가 한 step돌아가는 동안 멈추게 한다는데
이걸 어떻게 수정해야 할지 모르겠습니다.ㅠㅠ
또한 온도센서가 30도 정도를 감지하는데 스텝모터가 돌아가면 4-50도까지 올라갑니다.
왜 이런건지 그리고 어떻게 수정해야할지 모르겠습니다ㅠㅠ
댓글 2
조회수 5,574master님의 댓글
master 작성일
소스코드를 첨부하셔야지 설명을 해드리죠...
//
온도 변화는 상당히 느린편입니다.
스텝모터 반바퀴를 얼마나 느리게 돌리길레 문제가 될까요?
스텝모터는 발열이 심한 편입니다.(모터드라이버 모듈도 발열이 있습니다.)
이고응님의 댓글
이고응
#include <LiquidCrystal_I2C.h>
#include <Stepper.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int Temp_Sensor = A0;
const int steps = 2048;
Stepper myStepper(steps, 11, 9, 10, 8);
int Sensor_val = 0;
int Temp_A;
int Temp_B;
void setup()
{
Serial.begin(9600);
myStepper.setSpeed(15);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Embedded Project");
lcd.setCursor(1, 1);
lcd.print("TEMP");
}
void loop()
{
Sensor_val = analogRead(Temp_Sensor);
Sensor_val = map(Sensor_val, 0, 1023, 0, 1100);
Sensor_val = (float)Sensor_val * 4.6;
Temp_A = Sensor_val / 10;
Temp_B = Sensor_val % 10;
if (Temp_A >= 40)
{
myStepper.step(steps);
}
Serial.println(Temp_A);
lcd.setCursor(7, 1);
lcd.print(Temp_A);
lcd.print(".");
lcd.print(Temp_B);
lcd.print("C");
}
죄송합니다ㅜㅜ 전체 코드입니다..
모터가 돌아가기전에는 LCD에서 계속해서 온도값이 바뀌었습니다. 온도센서를 손으로 잡으면 선형함수처럼 온도가 올라갔는데 모터가 돌아간 이후에는 계단처럼 온도가 올라갑니다.. Serial.print로 온도값이 나오게 할 때도 모터가 돌아가기 전에는 계속해서 출력이 되는데 모터가 돌아간 이후는 출력이 되다 안됬다를 반복하네요..
온도센서가 스텝모터의 온도도 감지를 하는건가요..? 모터 돌아가는 순간 4~50도까지 올라가는게 맞나요...??