장애물센서는 적외선을 방출하고 반사되어 되돌아 오는 양을 측정하여 전방에 장애물이 있는지 판별하기 위한 센서이다. 초음파 거리 센서에 비해 근거리에 사용되며 적외선 빛을 쏘아 반사되는 되는 특성을 이용하는 것이므로 단지 장애물이 있는지 여부 뿐만 아니라 장애물의 색상에 따라 반사되는 양이 다른 특성을 이용할 수 있다. 즉 전방 물체가 흰색인지 검정색인지 여부에 따라 반사되는 양이 다르므로 흰색 바탕에 검정색 라인을 그어 놓고 검정색라인 범위내인지 여부를 판별하는 용도로도 사용되기 때문에 라인트레이스 센서라고도 불린다.   

 

 

 

구조 및 사양

 

 

- VCC단자와 GND단자에 3~5V 전원을 공급면 적외선 발광부에서 적외선이 방출된다.  

 

- 전방에 물체가 있어 방출된 빛이 반사되어 적외선 수신부에 일정량 이상 인식되면 OUT단자에 HIGH신호가 출력되고 감지표시 LED에 불이 들어 오게 된다.

 

- 어느 정도 양 이상이 반사되어 감지되면 감지신호를 출력할 것인지 비율은 감도 조절 볼륨으로 조절할 수 있다. 즉 감지 범위 거리를 원하는 대로 조정하여 사용할 수 있는데 통상 2cm ~ 30cm범위이다.

 

 

 장애물센서 유형    

 

다음과 같이  적외선 발광부와 수신부을 아래를 향하게 해서 바닥 라인트레이스 전용으로 제작한 모듈 또는 신호 출력을  단순히 HIGH/LOW로 만 구분(D0단자)할 뿐만 아니라 A0단자로 세밀한 아날로그 값을 출력하는 단자가 추가되어 있는 경우도 있다.

 

 

 

 

 

아두이노와의 연결

 

 

위와 같이 신호 출력선을 아두이노 디지털 I/O핀에 연결하면 된다. 센서에 아날로그 출력단자(A0)가 있고 이를 읽고 싶을 경우에는 아두이노 아날로그 입력 핀에 연결하면 된다. 

 

샘플프로그램 

 

1초 간격으로 디지털 핀 2번으로 들어오는 신호값을 시리얼 모니터에 출력하는 간단한 프로그램.

 

 

스테핑모터를 기본적으로 제어하는 것은 방향, 스텝진행 그리고 스템진행시 대기시간 조절에 의한 속도조절이다. 그런데 스테핑모터로 기계장치를 움직일 때 정지상태에서 갑자기 속도를 높이거나 일정 속도로 움직이다 갑자기 정지하면 기계장치가 덜컹거리고 기계장치에 무리가 가게 된다.  기계장치에 무리가 가지않고 부드럽게 작동하기 위해서는 서서히 가속하고 서서히 감속하는 속도조절 기능이 필요하게 되는데 일일히 가속감속 속도를 계산하고 지정하는 작업은 상당히 복잡하고 번거롭다.                 

 

AccelStepper라이브러리는 스텝핑모터 사용시 가속과 감속을 자동으로 계산해서 제어해 주는 기능이 있어 편리하다. 즉, 현재 위치와 목표 위치를 지정하면 라이브러리에서 속도를 자동 계산해서 제어해 주기 때문에 기계가 부드럽게 작동되도록 자연스러운 가속과 감속을 할 수 있게 된다.  

   

 

라이브러리의 설치

 

아두이노 IDE에 공식 등록되어 있는 라이브러리이므로 메뉴에서 스케치 -> 라이브러리 포함하기 -> 라이브러리관리를 선택하여 라이브러리 매니저를 띄운 후  AccelStepper 를 검색해서 설치하면 된다.

 

 

 

 

주요기능

 

-currentPosition() : 현재 위치 값을 읽어 온다.

-setCurrentPosition(position) : 현재 위치 값을 지정한다.

 

-moveTo(position) : 이동할 목표 위치를 지정한다.

-runToPosition() : 지정된 위치로 이동하기 기능으로 부드럽게 가속하며 출발하고 목적위치에 가까워지면 서서히 감속할 부드럽게 정지할 수 있도록 속도를 자동계산하여 제어된다.

 

-move(distance) : 이동할 거리를 지정한다.

-moveTo() : 지정된 거리만큼 이동하기 기능으로 가속 및 감속이 자동 제어된다.

 

-setSpeed(speed) : 이동할 때의 속도를 지정

-runSpeed() : 지정된 속도로 이동하기(자동 가속,감속하지 않고 지정한 일정한 속도로 이동하기) 

 

상세한 사항은 라이브러리 제작자가 제공하는 다음 링크의 메뉴얼을  참조 :    

     

          http://www.airspayce.com/mikem/arduino/AccelStepper/classAccelStepper.html

 

 

샘플프로그램

 

 

 

TB6600 드라이버는 45V, 4A 까지 가능한 바이폴라 스테핑모터용 드라이버이다. 소형 3D프린터용 스테핑모터는 NEMA 17급 모터이면 되기 때문에 A4988 드라이버면 충분했으나 CNC머신(조각기) 등 강력한 회전력이 필요할 때에는 NAMA23급 이상의 모터가 필요한 데 1A 전류공급용 A4988 드라이버로는 부족하고 4A 전류공급이 가능한 TB6600 드라이버를 사용할 수 있다.   

 

 

 

 

 

TB6600 드라이버 사양

 

1) Operating voltage DC 10V-45V. DC32V switching power supply is recommended.

2) high-speed optical coupling 6N137, ensure high speed without losing step.

3) Toshiba's new high current, high voltage TB6600HG new original chip, there are low-pressure shut-off, overheating parking and over-current protection circuit, short-circuit protection and increased compared to TB6560.

4) Rated maximum output reached: ± 4.5A.

5) for 4.2A 42,57,86 within the two-phase / four-phase / four-wire / six-wire stepper motor.

6) Automatic half current function.

7) Subdivision: full step, half step, 1/4-step, step 1/8, 1/16-step, up to 16 segments.

8) Volume: Width Length 82 * 50 * high 35 (MM)

 

 

 

TB6600 드라이버 모듈의 구조 및 사용법

 

 

 

네개의 DIP스위치 중 1~3은 마이크로스텝 모드 선택스위치이고 네번째는 Holding상태 (모터가 정지되어 있는 상태)에서의 전류공급 모드 선택스위치이다.

 

 

 

DIP스위치 오른쪽의 십자형 볼륨은 전력공급제한 조절용으로서 오른쪽으로 돌릴수록 공급 전력량이 커진다.

 

아두이노와의 연결

 

 

 

위와 같이 모터용 전원과 연결케이블을 연결하고, Enable,Direction,Pulse 세개의 단자를 아두이노 디지털출력핀에 연결하면 되는데 Enable/Disable 제어를 하지 않으려면 Enable단자를 연결하지 않아도 기본이 Enable상태이다.   

 

 

샘플프로그램

 

 

10 line : Direction 단자에 HIGH/LOW값을 주어 회전방향을 정한다.

15 line : Pulse의 시간간격으로 모터의 회전속도를 정하는데, 작을수록 속도는 빨라진다.

A4988 스테핑 모터 드라이버는 아두이노에서 간편한 제어 신호만으로 바이폴라 스테핑모터를 제어하기 위해  사용되는  드라이버 모듈로서 마이크로 스텝기능이 내장되어 있어 모터를 더욱 더 정밀하게 제어할 수 있어 3D프린터를 제작할 때 많이 사용된다.   

 

 

 

A4988드리이버 사양

 

 

 Minimum Logic Voltage  3V
 Maximum Logic Voltage 5.5V 
 Continuous current per phase  1A
 Maximum current per phase  2A
 Minimum Operating Voltage  8V
 Maximum Operating Voltage  35V

 

 

A4988드라이버 Pin Layout

 

 

 

-VMOT 와 GND에는 모터 제어용전원 (8~35V)을 공급해 준다.

-2B~1B 는 모터 4가닥 구동선을 연결한다.

-VDD와 GND는 제어용 전원으로서 아두이노에서 출력되는 5V와 GND를 연결한다.

-STEP과 DIR은 아두이노에서 제어하기 위한 펄스신호를 연결해 주는데 한 스텝을 움직이기 위한 펄스신호를 STEP핀에 움직이는 방향을 DIR에 주기만 하면 다른 부분은 제어하지 않아도 모터는 작동된다.

-RESET 핀과 SLEEP핀은 서로 연결해 준다.

-ENABLE핀은 생략치가 ENABLE이므로 신호를 주지 않아도 모터는 작동된다. 프로그램에서 일시적으로 Disable시켜 모터를 작동 중지시키는 제어를 원할 때에는 ENABLE핀에 LOW신호를 주면 된다.     

-MS1~MS3는 마이크로스텝 제어를 위한 핀으로서 아무 신호를 주지 않으면 기본 FULL STEP ( 1펄스당 1.8도 즉 200번 펄스를 주면 1회전)으로 작동되고, 좀 더 정밀한 제어를 원할 경우 다음과 같이 제어신호를 주면 된다. M1~M3 전부 HIGH신호를 주면 16배 정밀 스텝이 되어 스텝당  0.1125도 회전하는 정밀도로 제어할 수 있다. 하지만 속도는 그만큼 느려진다.  

 

  

 

 

NEMA 17급(42각) 스테핑모터

 

NAME 17급 스테핑모터란 모터 전면 부착부 한변의 길이가 1.7인치 크기의 스테핑모터로서 실제 크기는 42mm정도로서 42각 스테핑모터라고도 하는데, 3D 프린터 제작용으로 널리 사용된다. 같은 NEMA 17 사이즈라 해도 길이는 제각각으로서 길이가 길수록 고출력이 된다.  비슷하게 NEMA23은 56mm 정도 사이즈로서 56각 모터라고도 불리며, NEMA 32는 86mm 사이즈로 86각 모터라고 불린다.

 

 

 

아두이노와의 연결

 

 

 

 

 

 

-위와 같이 모터구동용 전원과 컨트롤용 전원을 연결해 주고 100µF  정도의 콘덴서를 연결해 준다. 

-RESET과 SLEEP단자는 서로 연결해 준다.

-A4988 드라이버의 DIR단자와 STEP 단자를 아두이노 디지털 출력핀에 연결해 준다 ( 여기에서는 2번과 3번)

-ENABLE과 MS1~MS3는 특별히 제어할 필요가 없으면 연결하지 않아도 된다.

 

샘플프로그램

 

 

-line 12, line 22 : DIR 단자에 HIGH 또는 LOW값을 주어 회전방향을 전환한다.

-line 13~19 : HIGH->LOW 펄스를 800번 발생 즉 4회전 회전시킨다.  

-line 16,18 : STEP핀에 가해주는 펄스의 시간을 길게 줄수록  스테핑모터의 속도가 느려진다. 

-line 26,28 : STEP핀에 가해주는 펄스의 시간을 짧게 줄수록  스테핑모터의 속도가 빨라진다. 

 

구매좌표 : 

 

A4988 Stepper Motor Driver Module with Heat Sink for Arduino 3D Printer Reprap CNC Machine or Robotics - AliExpress 502

Smarter Shopping, Better Living! Aliexpress.com

www.aliexpress.com

 

+ Recent posts