15. STEP 모터 제어 - 스마트 폰으로 제어하는 아두이노 -.

Slides:



Advertisements
Similar presentations
노인복지정책 노 인 소 득 보 장 정 책 수성대 보건복지경영과 2A 반 임도현.
Advertisements

의료자원 규제현황과 개선방향 자원평가실. 의료자원 관리 개요 규제개혁 토론과제.
마이크로 시스템 1 선 덕 한선 덕 한 lecture7. LCD 구동. 마이크로 시스템 2 강의 목표 현재 디스플레이 장치로써 가장 널리 사용되어지는 LCD 을 프로세서 에서 어떻게 제어 하는지 알아본다.
1 모터 (Motors) 김원웅. 2 모터 (Motor) □ 모터 응용분야 □ Desktop PC 의 DVD ROM, HDD □ 러닝머신, 전동드릴, 선풍기 등 전력에 의해서 뭔가가 움직이 는 분야에는 거의 모두 모터가 사용 □ 우리가 배울 모터의.
14. 타이머와 PWM 활용 - 스마트 폰으로 제어하는 아두이노 -.
기술가정 1학년 1. 나와 가족의 이해 > 2) 성과 이성교제 (4/10) 사랑과 성 수업계획 수업활동.
사업실적 및 계획서 주식회사 엔.에스 시스템.
연 합 남 전 도 회 월 례 회 1부 예배- 찬 송 장 다같이 2011년 1월 2일 1부 예배- 찬 송 장 다같이 기 도
사 업 계 획 2011년 제1호 - 2월 1일 2011 주 안에서 소통하며 화합하고 참여하며 헌신하는 남신도회
교육실무직 인사노무관리 경상북도교육청.
해시 함수.
암 보다 더 무서운 당뇨 2010년 [아시아경제 강경훈 기자 ].
2015년 2학기 PULSE 4 전자물리실험 09 - Servo Motor 제어 - DSU 메카트로닉스 융합공학부 -
컴퓨터 계측 및 실습 스테핑 모터 영남대학교 기계공학부.
아두이노 프로그래밍 1일차 – Part2 아두이노 사양 강사: 김영준 목원대학교 겸임교수.
데이터 관리의 모든 것 데이터 최적화하기 데이터 정렬하기 자동 필터와 고급 필터
컬러 LED바 이해하기 목차 재료준비 및 브레드 보드 배선 구성하기 컬러 LED바 이해 및 프로그램 실습 응용 작품 만들기.
2강. JAVA 프로그래밍이란?-II & 변수 JAVA 프로그램 환경설정과 실행 방법 변수란?
명품 JAVA Essential.
아두이노 프로그래밍 5일차 – Part2 지그비 통신 강사: 김영준 목원대학교 겸임교수
MECHA 3차 세미나 2015년 4월 9일 목요일 김지원.
컴퓨터 계측 및 실습 스테핑 모터 영남대학교 기계공학부.
1. 아두이노란 무엇인가? - 스마트 폰으로 제어하는 아두이노 -.
12. 아두이노와 센서를 이용한 제어 - 스마트 폰으로 제어하는 아두이노 -.
AVR - Chapter 15 황 지 연.
스테핑 모터.
11. 아두이노를 이용한 Text LCD 제어 - 스마트 폰으로 제어하는 아두이노 -.
아두이노 프로그래밍 2일차 – Part4 아날로그 키패드 활용하기 강사: 김영준 목원대학교 겸임교수.
작업장에서 불의의사고로 절단사고가 발생했다면
아두이노 프로그래밍 2일차 – Part2 PSD 거리센서 강사: 김영준 목원대학교 겸임교수.
아두이노 프로그래밍 2일차 – Part2 PSD 거리센서 강사: 김영준 목원대학교 겸임교수
-공인노무사 김 완 식 -외식업중앙교육원 노무관리 교수 -열린인사 노무법인 대표 노무사 (열린 세무 회계 고문)
9. 아두이노를 이용한 FND 제어 - 스마트 폰으로 제어하는 아두이노 -.
국가대표 생애주기교육 프로그램 참여방법 안내
2015년 2학기 PULSE 4 전자물리실험 10 – 조도 센서와 소리 발생 - DSU 메카트로닉스 융합공학부 -
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
03. 안드로이드를 위한 Java 문법 제목. 03. 안드로이드를 위한 Java 문법 제목.
전자기 유도실험 구성원:손재완,변준성,이지홍,김승길.
MS Excel 활용 2009년 2학기 컴퓨터의 개념 및 실습 서울대학교 통계학과
수업 첫 날 교육B 황유미 첫 수업 계획에 대해 알아보도록 하겠습니다..
아두이노 프로그래밍 1일차 – Part4 값출력 및 디지털 읽기 강사: 김영준 목원대학교 겸임교수
2015년 2학기 PULSE 4 전자물리실험 09-Servo Motor 제어 - DSU 메카트로닉스 융합공학부 -
아두이노 비행선.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
연결링크 이미지를 마일리지샵 내에 기획전으로 제작하여 오픈/노출 사이즈 가로 1000/세로 상관x 배너사이즈 가로 400
Stepper Motor 디바이스 드라이버
8. 아두이노를 이용한 아날로그 제어 - 스마트 폰으로 제어하는 아두이노 -.
4. 아두이노로 LED 제어하기 - 스마트 폰으로 제어하는 아두이노 -.
AVR - Chapter 14 황 지 연.
센서값 전송하기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
ST 모드 활용하기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
클라우드 서버로 데이터 전송하기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
Music Robot #Define A+(12-15조) 팀원: 05학번 양현철 , 김 청 07학번 예강훈 , 김한수
제안 목적 고객성향 분석으로 매출 증대 유사업체 분석으로 신상품 홍보 원가요소 분석 및 피드백으로 원가율 관리
청각기관의 구조와 기능2 옥정달.
장애인단체 간담회 마스터 제목 스타일 편집 마스터 제목 스타일 편집 장애인 단체 간담회 마스터 부제목 스타일 편집
1. 복리후생비 복리후생비란? ✔ 법인이 임원 또는 사용인(파견근로자 포함)을 위하여 지출한 비용
자바 5.0 프로그래밍.
단원 02. 기계를 구성하는요소(기계요소) (198p) 학습목표 1. 기계요소를 분류하여 설명할 수 있다. 2
의약품 폐기 발생율 0 % 총 0건 1. 돌파지식 제목: 의약품 관리 리뉴얼을 통한 의약품 폐기발생율 0%달성, 낭비제거
(생각열기) 횡파와 종파를 구분하는 기준은 무엇인가?? 답 : 진동하는 방법의 차이
코딩체험교실 아두이노 로봇 코딩 4차산업기술 체험 (SW코딩/자율주행기술).
자전거발전기 만들기 자전거 발전기 부품 조립에서 완제품까지.
아두이노 프로그래밍 4일차 – Part1 모바일 로봇 강사: 김영준 목원대학교 겸임교수
성공적인 입사지원서 작성법 제이비커리어 교육수석 소 은 선.
아두이노 프로그래밍 Lecture #
Tone 명령어 이해하기 목차 재료준비 및 브레드 보드 배선 구성하기 Tone 명령어 기본 및 프로그램 이해 응용 작품 만들기.
DataScience Lab. 박사과정 김희찬 (화)
3. Arduino 실습 – 아날로그 입력(1) 아날로그 입력 – 먼지 센서 먼지 센서 개요 먼지 센서 특징 먼지 검출 센서
Presentation transcript:

15. STEP 모터 제어 - 스마트 폰으로 제어하는 아두이노 -

강의 개요 스테핑 모터는 정확한 각도제어에 유리하여 각종 OA, FA 장비에 널리 사용 일반적으로 기계적인 이동량을 정밀하게 제어하는 곳에 스테핑 모터가 많이 사용 펄스에 의해 디지털적으로 제어하는 것이 가능하므로 마이크로컨트롤러에서 사용하기에 적합한 모터

15.1 STEP 모터 DC 모터나 AC 모터와 차이점 스텝 모터의 구조 샤프트(축)의 위치를 검출하기 위한 별도의 피드백 신호 없이 정해진 각도를 회전하고, 상당히 높은 정확도로 정지 가능 다른 종류의 모터에 비하여 정지할 때에 매우 큰 유지 토크가 있기 때문에 전자 브레이크 등의 위치 유지 기구를 필요로 하지 않음 회전 속도도 펄스 속도에 비례하므로 간편하게 제어 가능 스텝 모터의 구조

스텝 모터 구동 방법 스테핑 모터의 제어 회로 펄스를 인가하여 각상의 여자 신호를 발생시키는 여자 신호 발생부와 그 신호를 받아서 권선에 여자 전류를 흘려주기 위한 구동 회로부로 구성 마이크로컨트롤러에서는 방향 신호와 펄스열 발생 여자 신호를 소프트웨어로 만들면 여자 신호 발생부가 생략 가능 마이크로컨트롤러 입장에서 보면 스테핑 모터를 펄스를 줄 때마다 한 스텝씩 주어진 방향에 따라 회전하므로 완전히 디지털적으로 이해

15.2 STEP 모터 모듈 HBE-MCU-Multi의 STEP Motor 모듈 아두이노 Mega 보드의 디지털입출력 핀 중 4개를 STEP Motor 모듈의 제어 신호 포트에 연결 인터럽트 핀 한 개를 CNT 신호 포트에 연결

스텝모터 모듈의 회로

스텝모터 모듈 모터회전 감지부 회로

제어 원리 아두이노 Mega 보드의 디지털입출력 핀과 스텝모터의 제어신호(D0~D3)을 연결되면, 이 신호들은 구동회로를 거쳐 OUT_A, OUT_B, OUT_AN, OUT_BN 신호로 만들어 스텝 모터에 입력 스텝모터 모듈에는 스탭 모터의 회전을 감지하기 위해 자기 센서를 사용 회전 감지 신호로 "CNT"을 출력 모터에 장착된 회전판에 영구 자석을 부착하고 회전판 옆면에 자기 센서를 부착하여 모터가 회전하면서 영구자석이 자기센서에 근접하게 되면 신호를 발생하여 스탭 모터의 회전을 감지하는 방식을 사용

15.3 스텝모터 함수 아두이노는 스텝모터 제어를 위하여 스텝모터 라이브러리 함수 제공 스텝모터의 속도, 방향 등을 제어하기 위한 함수 스텝모터 라이브러리 함수들을 사용하려면 스케치에 #include "Stepper.h" 입력 #include "Stepper.h" Stepper(number_of_steps, motor_pin_1, motor_pin_2, motor_pin_3, motor_pin_4); setSpeed(long whatSpeed) step(steps_to_move)

15.4 STEP 모터 제어 아두이노 Mega 보드의 디지털입출력 핀과 인터럽트 핀, STEP Motor 모듈 사용 아두이노 보드 디지털입출력 핀 D23 D25 D27 D29 D2 STEP MOTOR 모듈 D0 D1 D3 CNT

예제 15.1 스텝 모터 구동 스테핑 모터가 1바퀴 돌때마다 신호를 보내주는 인코더를 이용하여, 모터가 2바퀴 돌 때마다, 방향 전환

예제 15.1의 주요개념 스테핑 모터가 1바퀴 돌때마다 신호를 보내주는 인코더를 이용하여, 모터가 2바퀴 돌 때마다 방향을 전환하도록 구현하기 위해, 타이머와 인터럽트 기능 이용 2상 여자 방식을 사용한다고 가정하면, 다음과 같은 신호들을 한주기로 스텝모터에 입력 필요 역회전하려면 순서를 역순으로 바꾸어 입력 신호 1 2 3 4 5 6 7 8 9 D0(A) D1(B) D2(/A) D3(/B) D(3:0) 0x3 0x6 0xC 0x9

자기 센서에 의해 스텝모터의 회전수를 체크 필요 모터가 1바퀴를 돌 때마다 자기센서로부터 펄스 신호가 발생 그 펄스 신호를 세어서 2가 되면 모터의 방향 전환 이를 위해 펄스 신호가 들어올 때마다 인터럽트를 발생시켜서 카운트 자기센서의 특성상 펄스 신호에 채터링 잡음이 발생 가능 이를 방지하기 위해서는 타이머를 사용하여 자기장센서가 반응하는 범위를 벗어날 때까지는 회전수 카운트 하지 않음 인터럽트 0(DIGITAL 2핀) 사용 하강 에지에서 인터럽트가 발생하도록 설정 스텝모터 라이브러리 함수 이용 스텝모터의 속도, 방향 등 제어 #include "Stepper.h" 구문 입력 필요 Stepper stepper(STEPS, 23,27,25,29); 사용할 스텝모터의 핀 정의와 함수명을 선언 첫번째 인자는 모터회전에 사용할 총 스탭수 2~5번째 인자는 A, B, /A, /B 에 해당하는 핀

예제 15.1의 스케치1 #include <Stepper.h> #include <MsTimer2.h> #define STEPS 100 스텝모터 라이브러리 "Stepper.h" 포함 타이머2 라이브러리 "MsTimer2.h" 포함 Stepper stepper(STEPS, 23,27,25,29); 스텝모터의 핀 정의와 함수명을 선언하는 명령 volatile int mystep = 1; #define DIR_CHANHE_CNT 2 방향전환 카운트 volatile byte ecd_cnt = 0; volatile boolean flag=false; 챕터링 방지 volatile byte flag_cnt=0; void setup() { stepper.setSpeed(30); 스텝모터의 속도를 설정(RPM 단위) attachInterrupt(0, blink, FALLING); MsTimer2::set(20, flash); MsTimer2::start(); }

예제 15.1의 스케치2 void loop() { stepper.step(mystep); } 모터를 원하는 스텝만큼 회전 void blink() { flag = true; 자기장센서 채터링 방지 if (ecd_cnt == DIR_CHANHE_CNT) { mystep*=-1; ecd_cnt = 0; void flash() { if(flag == true) flag_cnt++; if(flag_cnt == 10){ flag = false; 자기장센서 챕터링 방지가 설정되면 카운트시작 ,적어도 자기장센서가 반응하는 범위를 벗어날 때까지 카운트 flag_cnt = 0; 범위를 벗어나면 플래그 해제 ecd_cnt++;

예제 15.1의 실행1 Include 부분 "#define STEPS 48" 선언 스텝모터 라이브러리 헤더 파일과 타이머/카운터 2 관련 헤더 파일 포함 "#define STEPS 48" 선언 스텝모터 회전에 사용될 총 스텝수를 설정 값 선언 실습에서 사용되는 스텝모터의 1회전에 사용되는 총 스텝수는 46스텝 총스텝 선언 후 Stepper stepper(STEPS, 23,27,25,29); 명령으로 스텝모터의 제어핀 초기화 mystep 변수 선언 스텝모터의 회전방향과 진행할 스텝수 설정 변수 1스텝씩 진행되며, 방향을 전환하므로 그 값은 "1" 또는 "-1" 값 스텝모터의 회전수를 카운팅하는데 사용되는 변수 선언 홀센서와 연결된 DIGITAL 2번핀(INT0)으로 입력된 신호를 감지하여 그값을 카운팅하고 저장하는데 사용 Setup함수의 stepper.setSpeed(30); 스텝모터의 분당 회전수(rmp)를 30으로 설정 attachInterrupt(0, blink, FALLING); 스텝모터의 회전수를 카운팅하기 위해 외부 인터럽트0를 설정

예제 15.1의 실행2 홀센서의 신호를 읽어오기 위해 인터럽트를 하강에지에서 읽어오도록 설정 외부 인터럽트 설정 후 타이머/카운터 2 사용 설정 MsTimer2::set(20, flash); 20ms 마다 타이머 오버플로우 인터럽트 2 가 발생하도록 하여 "flash" 함수를 호출하도록 설정 MsTimer2::start(); 타이머/카운터 2가 동작을 시작 타이머 오버플로우 인터럽트는 홀센서 입력의 채터링을 방지하기 위해 사용 loop()의 stepper.step(mystep); 스텝모터의 스텝 진행 mystep 값은 초기값이 "1"이며 이는 정회전하면서 1 스텝씩 진행한다는 의미 "mystep" 값 홀센서값을 읽어들여 2회전후 "-1"로 바뀌게 되어 역회전 2회전후에는 "1"로 바뀌어 정회전 Int0 인터럽트 서비스 루틴인 blink() 함수 인터럽트 발생시 flag = true; 명령으로 flag값을 true if(ecd_cnt == DIR_CHANHE_CNT) 구문으로 ecd_cnt 즉 현재 회전수와 미리 설정된 회전수(DIR_CHANHE_CNT, 여기서는 2회전)와 비교 2회전이 되면 mystep*=-1; 명령으로 방향을 전환

예제 15.1의 실행3 flash() 함수 flag가 true인 경우 flag_cnt를 증가시키며, flag_cnt 가 10이 되면 비로소 ecd_cnt를 증가 자기센서가 발생시킬 수 있는 채터링 잡음을 잡기 위해 적어도 자기장센서가 반응하는 범위를 벗어날 때까지 카운트해야 하기 때문 외부 인터럽트 0를 통해 홀센서의 입력을 감시 홀센서의 감지후 타이머 오버플로우 2 인터럽트를 통해 홀센서의 채터링 잡음을 방지해 모터의 회전수 판별

함수정리 Stepper(number_of_steps, motor_pin_1, motor_pin_2, motor_pin_3, motor_pin_4) : 스텝모터 를 제어하기 위한 핀들을 설정하는 함수 - number_of_steps : 스텝모터의 모터 회전에 사용할 총 스텝수를 설정하는 값 - motor_pin_1~4 : 스텝모터를 제어하는 제어신호를 설정하는 값 motor_pin_1 : A상 제어신호, motor_pin_2 : B상 제어신호, motor_pin_3 /A상 제어신호, motor_pin_4 : /B상 제어신호

함수정리 setSpeed(long whatSpeed) 스텝모터의 분당 회전수를 설정하는 함수 step(steps_to_move) 스텝모터의 실제 스텝을 진행하는 함수 - steps_to_move : 회전 스텝 steps_to_move 값 양수 : 정회전, 음수 : 역회전