질문게시판 > 아두이노 코딩 질문드립니다

TODAY1,018 TOTAL604,564
사이트 이용안내
Login▼/회원가입
최신글보기 질문게시판 기술자료 동영상강좌

아두이노 센서 ATMEGA128 PWM LED 초음파 AVR 블루투스 LCD UART 모터 적외선


BASIC4MCU | 질문게시판 | 아두이노 코딩 질문드립니다

페이지 정보

작성자 살라미 작성일2019-06-27 14:47 조회112회 댓글5건

본문

	
구동1 [비상정지 스위치가 작동되면 전부 멈춰야한다]
 1. 시작버튼을 눌렀을때 모터가 역회전 함과 동시에 초음파 릴레이가 ON이 된다. 
 2.  모터의 역회전은 리미트 스위치가 감지 될때까지 단계 1의 상태를 유지한다.
 3. 리미트 스위치가 감지되면 감지된 직후로부터 0.2초간 더 역회전을 실시한 후 정지한다. (초음파는 계속 ON)
 4. 1.5 초간 정지한 후 모터는 정회전을 5초간 실시한다. 초음파 OFF 
 5. 1~4의 단계를 반복할 예정입니다! 

구동2 [비상정지 스위치가 작동되면 전부 멈춰야한다]
 1. 상, 하, 초음파 버튼이 각각 3개씩 있다.
 2. 상 버튼을 눌렀을때 모터 정회전 
 3. 하 버튼을 눌렀을때 모터 역회전
 4. 초음파 버튼을 눌렀을때 초음파 릴레이 ON 

버튼은 전부 푸시버튼 스위치를 사용했습니다! 
모터 드라이버는 사용하지않았구요
릴레이 2개로 모터의 정 역 회전을 제어하고
릴레이 1개로 초음파 ON/OFF를 제어하고있습니다. 
총 릴레이가 3개입니다. 

제가 저 코드로  진행했을때 동작이 제대로 되지 않았습니다.. 

루프가 시작된 직후 if문과 else문을 주석처리하고 
상 하 초음파 구동만 실시했을때도 제대로 동작 되지 않았습니다..
(초음파 제어 부분을 지우고 상 , 하 제어 부분만 넣으면 그것은 작동 되더라구요.. 초음파 제어문을 넣으니 다시 제대로 동작을 하지 않습니다)->먹통이 되더라구요 
[{-> 이 부분에서 정상 작동과 상 하 초음파 버튼의 제어가 동시에 이루어지지 않아서 
아두이노 두개를 이용하여 릴레이 입력에 꽂아서 해보았습니다.. 
그리고 안되서 질문 게시판에 아두이노 출력 두개로 릴레이 입력에 연결하면 되는지 안되는지 질문글을 남겼구요..
쇼트가 일어날수있다는 답변을 받았습니다.
혹 안되는 이유가 릴레이가 쇼트가 나서 안되는 경우도 있을까요?

메카솔류션에서 판매하는 12V 1채널 릴레이 모듈 3개를 쓰고있습니다. 

셋 다 아두이노 두개 출력을 1개의 릴레이 입력에 연결하는 작업을 했었습니다. 

그리고 나서 두개의 입력이 되어있던걸 한개로 만들고 상 하 제어를 실시했을때
릴레이가 켜지는 딸깍 소리는 났지만 구동을 할때도 안할때도 있었습니다.. }]



비상정지 스위치의 if문은 작동이 되었습니다. ...
-

어느 부분이 잘못 되었는지 도저히 모르겠습니다. 






아래는 제 코드를 첨부하겠씁니다.
이 사이트에서 마스터님이 피드백 해주신 코드를 잠깐 수정하여 사용하였습니다.

int IN1 = 4;  //모터 릴레이 o
int IN2 = 5;  //모터 릴레이 o
int EMG = 6;  //비상정지버튼 i
int ULT = 7;  //초음파 릴레이 o 
int SW  = 8;  //시작 버튼 i
int UP  = 9;  //상 버튼 i
int DN  = 10; //하 버튼 i
int SW1 = 11; //초음파 버튼 i
int LMT = 12; //50mm 리미트 스위치 i
//
void motor_stop() { digitalWrite(IN1,1); digitalWrite(IN2,1); } //모터정지
void motor_up()   { digitalWrite(IN1,0); digitalWrite(IN2,1); } //모터 정회전 (전동실린더 상승)
void motor_dn() { digitalWrite(IN1,1); digitalWrite(IN2,0); }   //모터 역회전 (전동실린더 하강)
void ult_on()     { digitalWrite(ULT,0);                      } //초음파릴레이ON
void ult_off()    { digitalWrite(ULT,1);                      } //초음파릴레이OFF
//
void setup(){
  pinMode(EMG, INPUT_PULLUP); //비상정지 인풋
  pinMode(SW, INPUT_PULLUP);  //시작버튼 인풋
  pinMode(UP, INPUT_PULLUP);  //상 버튼 인풋
  pinMode(DN, INPUT_PULLUP);  //하 버튼 인풋
  pinMode(SW1, INPUT_PULLUP); //초음파 버튼 인풋
  pinMode(LMT, INPUT_PULLUP); //리미트스위치 인풋

  pinMode(IN1, OUTPUT);       //모터 릴레이 아웃풋
  pinMode(IN2, OUTPUT);       //모터 릴레이 아웃풋
  pinMode(ULT, OUTPUT);       //초음파 릴레이 아웃풋선
}
//
void loop(){
  if(!digitalRead(EMG)){ // 비상정지
    motor_stop(); digitalWrite(ULT,0);   // 정지
  }
  else{
    if(digitalRead(SW)==LOW){     //시작스위치가 한번 눌러졌을때 
    
     
        motor_dn(); // 모터 역회전 
        digitalWrite(ULT,HIGH); //초음파 ON 
        while(!digitalRead(LMT)){ if(!digitalRead(EMG))return; } // 리미트스위치 감지까지 모터 역회전 
        //
        delay(200); //감지후 모터 역회전 0.2초간 더 실시 
        motor_stop(); // 모터 정지 1.5초간 
        delay(1500);
        //
        motor_up();  //모터 정회전 5초간 
        delay(5000);
        
       
        motor_stop(); digitalWrite(ULT,LOW); // 모터 정지 및 초음파 OFF
      
    }
    //
    if     (digitalRead(UP  )==LOW)motor_up();               //UP스위치를 눌렀을 경우 모터 정회전 
    if     (digitalRead(DN)==LOW)motor_dn();                 //DOWN스위치를 눌렀을경우 모터 역회전 
    if     (digitalRead(SW1)==LOW){digitalWrite(ULT,HIGH);}  //초음파 스위치 눌렀을경우 초음파 ON 
    else    digitalWrite(ULT,LOW); motor_stop();             // 아무 버튼이 눌리지 않았을 경우 모터 정지 및 초음파 OFF상태
  }
}
  • BASIC4MCU 작성글 SNS에 공유하기
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기

댓글 5

조회수 112

master님의 댓글

master 작성일

else    digitalWrite(ULT,LOW); motor_stop(); // 아무 버튼이 눌리지 않았을 경우 모터 정지 및 초음파 OFF상태
이 문장은 아래처럼 정렬 하는 것이 좋습니다.

else{ digitalWrite(ULT,LOW); motor_stop(); } // 아무 버튼이 눌리지 않았을 경우 모터 정지 및 초음파 OFF상태

괄호가 있고 없고의 차이가 크죠

master님의 댓글

master 작성일

어려운 코드가 아니므로 이 정도의 내용은 스스로 해결하셔야합니다.
아무리 쉬운 코드라고 하더라도 현재 상태를 본인 외에는 남들은 체크가 불가능하므로 남이 봐주기는 어렵습니다.

살라미님의 댓글

살라미 댓글의 댓글 작성일

감사합니다..
저에게는 정말 어려운코드로 느껴집니다
제 생각엔 작동이 되야하는게 맞는데 안되니 정말 골머리 썩으며
며칠밤을 새고있는지 모르겠습니다 ㅠㅠㅠ

조언 감사드립니다 마스터님!

master님의 댓글

master 댓글의 댓글 작성일

아무리 쉬운 내용도 그 지식을 이해하는데 부족한 실력이라면 막막할테지만
더 어려운 내용이라도 알고나면 별 것 아닙니다.
공부를 더 하시는 방법밖에 없습니다.

살라미님의 댓글

살라미 댓글의 댓글 작성일

약간의 힌트라도 주시면 안될까요?? ㅠㅠ

질문게시판HOME > 질문게시판 목록

MCU, AVR, 아두이노 등 전자공학에 관련된 질문을 무료회원가입 후 작성해주시면 전문가가 답변해드립니다.
ATMEGA128PWMLED초음파
아두이노AVR블루투스LCD
UART모터적외선ATMEGA
전체 스위치 센서
질문게시판 목록
제목 작성자 작성일 조회
공지 MCU, AVR, 아두이노 등 전자공학에 관련된 질문은 질문게시판에서만 작성 가능합니다. 스태프 19-01-15 592
공지 사이트 이용 안내댓글[8] master 17-10-29 7619
공지 [무료 공개] 소스코드 하이라이트 v2.0 beta [2013.02.07]댓글[1] 이미지첨부파일 master 18-01-23 2839
질문 atmega128a 카운터/타이머 출력비교 질문이요댓글[1] 새글 초짜 00:54 8
질문 모터드라이버 병렬 연결댓글[3] 새글 박준2 19-08-16 12
질문 서로 다른전원(5v 12v) 제어방법 질문 새글 master 19-08-16 9
질문 모터드라이버 관련 질문 드립니다.댓글[4] 박준이 19-08-15 15
질문 Atmega128, 초음파센서 ,부저 gksl 19-08-14 13
답변 답변글 답변 : Atmega128, 초음파센서 ,부저댓글[1] master 19-08-15 15
질문 led 전력소모에 관하여,,,댓글[9] 슬레a 19-08-14 33
질문 알고리즘 문의댓글[1] 벅바 19-08-13 16
질문 블루투스가 한번 작동하고 그 다음부터 작동을 하지 않습니다.댓글[1] 아야어여 19-08-13 19
질문 아두이노 코딩 질문입니다 너무 급해요 ㅠㅠ댓글[3] 전민결 19-08-12 41
질문 코딩 작성좀 부탁드립니다. 너무 급합니다 ㅠㅠ댓글[1] 아두이노보초 19-08-10 60
질문 stm32f1 계열에서 USB로 스마트폰 연결 방법(CDC)댓글[2] 에르테르 19-08-08 34
질문 코딩을 합치고 싶습니다.. 알려주세요 19-08-08 37
답변 답변글 답변 : 코딩을 합치고 싶습니다.. master 19-08-08 38
질문 금속센서를 이용한 서보모터 돌리기댓글[1] 후우 19-08-07 45
질문 아두이노로 빛 파장 계산하기 이미지 master 19-08-07 34
질문 ISP 질문이요댓글[2] 초짜 19-08-06 31
질문 atmega128a 다시 질문이요~댓글[4] 이미지첨부파일 초짜 19-08-05 49
질문 atmega128a SCK 질문이요댓글[1] 초짜 19-08-04 37
답변 답변글 답변 : atmega128a SCK 질문이요 master 19-08-04 29
질문 A4988 모터드라이버 발열에 대해...댓글[1] 이미지첨부파일 눈티이 19-07-30 61
질문 아두이노 코딩 질문댓글[1] 119min 19-07-27 74
질문 아두이노 코딩질문 붕붕 19-07-26 61
답변 답변글 답변 : 아두이노 코딩질문댓글[6] master 19-07-26 145
질문 적외선 센서 송수신 코딩 알려주세요댓글[3] 이미지첨부파일 뱀비 19-07-22 107
질문 BLDC 모터 정역회전 알고리즘대로 코딩 이미지첨부파일 CIE18 19-07-21 71
답변 답변글 답변 : BLDC 모터 정역회전 알고리즘대로 코딩 master 19-07-21 66
게시물 검색

2019년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2018년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
Privacy Policy
MCU BASIC ⓒ 2017
모바일버전으로보기