Interactive Workshop for Artists & Designers 연세대학교디지털아트학과 Earl Park

Similar documents
스테퍼모터 Stepper Motor 스테퍼모터는일반 DC 모터의장점인연속회전과서보모터의장점인정확한위치조정, 즉정밀제어가가능한모터이다. 스테퍼모터는 360도를일정한각도의스텝단계로나누어지정한스텝만큼회전하도록되어있으며, 예를들어한스텝이 1.8 인스테퍼모터는 200스텝을회전해

Motor

시프트 레지스터 Shift Resistor 자, 이제 LED MATRIX 8x8 Board를 마이크로컨트롤러에 연결된 3개의 선으 로 제어해 보자. 이는 마이크로컨트롤러의 포트를 확장함과 동시에 프로그램 으로 제어를 더 쉽게 한다는 장점이 있다. 물론 포트를 절약하게


실험 5

S O L U T I O N I N N O V A T I O N T P C M E C H A T R O N I C S TPC TPC SERVO & STEP MOTOR, DRIVER Series TDB2000 (일체형/분리형,

TDB 3000 Series Full Closed Loop STEP DRIVER의특징 Feedback-Loop로인한진동이없음 감속기없이높은토크구현 높은정밀도 정확한속도제어 SERVO DRIVER의특징 위치유지력 탈조가없음 토크제어가능 STEP DRIVER 와 SERVO

À̵¿·Îº¿ÀÇ ÀÎÅͳݱâ¹Ý ¿ø°ÝÁ¦¾î½Ã ½Ã°£Áö¿¬¿¡_.hwp

Stepper Motors

가. 도트매트릭스제어하기 단일 LED와는다르게도트매트릭스를구동시는구동전류가프로세서에서출력되는전류보다사용량을더많이필요하기때문에 TTL 계열의 IC로구동시키기에는무리가따른다. 이러한문제를해결하기위해서사용전압, 전류정격이높은달링턴트랜지스터가어레이형태로들어있는 ULN2803을

Microsoft Word - PLC제어응용-2차시.doc

슬라이드 1

Microsoft PowerPoint - es-arduino-lecture-03

6_5상 스테핑 모터_ _OK.indd

RVC Robot Vaccum Cleaner

Microsoft PowerPoint - es-arduino-lecture-09

제목을 입력하십시오

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

Section 03 트랜지스터를이용한스위칭동작 16/45 트랜지스터의직류특성 활성 직류상황에서전류 I C 는전류 I B 보다 h FE 배만큼더많은전류가흐름» 베이스와이미터가순방향으로바이어스» 컬렉터와베이스가역방향으로바이어스 차단 만일 I B 가 0[A] 이면컬렉터전류

슬라이드 1

전자회로 실험

중간고사

Microsoft PowerPoint 상 교류 회로

온습도 판넬미터(JTH-05) 사양서V1.0

<4D F736F F F696E74202D203131C1D6C2F7202D E6FB8A620C0CCBFEBC7D120C4B3B8AFC5CD204C43442C C1A6BEEEC7CFB1E2205

슬라이드 1

형명및정격 (MCCB) 배선용차단기 (AB - 시리즈 ) 프레임의크기 50AF Type 형명 정격 극수 (Pole) 정격전류 (In) A 정격전압 (Ue) AC (V) DC (V) 정격절연전압 (Ui) V 정격임펄스전압 (Uimp) kv 정격차단전류 (ka) 주1) A

PowerPoint 프레젠테이션

슬라이드 1

Chapter. 14 DAC 를이용한 LED 밝기제어 HBE-MCU-Multi AVR Jaeheung, Lee

<C3CA3520B0FAC7D0B1B3BBE7BFEB202E687770>

슬라이드 1

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 -

No Slide Title

1

PowerPoint Presentation

untitled

슬라이드 1

실험 5

목차 1부. 보드 운영체제와 MCU 보드의 포트 2부. 전압과 전류 그리고 모터 드라이버 3부. 초음파 센서 4부. BOS Script 프로그래밍 5부. W2R -1 소개

슬라이드 1

실험 5

Motor Control Solution

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

untitled

RS- 232, RS485 FND Display Module NET-SFND-4-23A RS-232, RS485 FND Display Module NET-SFND-4-23A MANUAL (Rev 1.0) Net-Control http

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

졸업작품 2 차보고서 Graduation Project 내자전거를지켜줘! 이름학번연락처이메일 이주희 김민선 지도교수 :

Microsoft PowerPoint - 3. BJT

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

스마트주택용분전반_160331

Microsoft PowerPoint - es-arduino-lecture-08

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

API 매뉴얼

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

サーボモータ用高精度減速機_AFC_Aシリーズ

Microsoft Word doc

Physical Computing for Artists & Designers 연세대학교디지털아트학과 Earl Park

그룹웨어와 XXXXX 제목 예제

OCW_C언어 기초

01. Start JAVA!

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

PowerPoint Presentation

ZPONZCMGOVQK.hwp

논리회로설계 3 장 성공회대학교 IT 융합학부 1

게시판 스팸 실시간 차단 시스템

VB

2015 개정교육과정에따른정보과평가기준개발연구 연구책임자 공동연구자 연구협력관

PowerPoint 프레젠테이션

Microsoft Word - logic2005.doc

RaspberryPi 시리얼통신 1 제 08 강 시리얼통신제어 시리얼통신시리얼모니터링루프백시리얼통신 Win. PC와의시리얼통신가상머신과의시리얼통신아두이노보드와의시리얼통신 KUT51보드와의시리얼통신

BC6HP Korean.ai

금오공대 컴퓨터공학전공 강의자료

Arduino- 서보모터 서울과학기술대학교기계시스템디자인공학과 교수김성환

PowerPoint 프레젠테이션

1. REACTOR TAP 90% 로변경, 제작공급한사유 - 고객요청사항은 REACTOR 80% 운전기준임. - 삼성테크윈에서사용하는표준 REACTOR 사양은 80%, 75%, 70% 로 STARTER 도면은표준사양으로제출됨. - 동프로젝트용모터사양서 / 성적서확인결과

K&R2 Reference Manual 번역본

1. 제품규격및특징 구분 규격및특징 입력전압 DC 12~30V 모터구동방식 Bipolar 방식 최대모터전류 Max 3.0A 초기설정정지전류 :4(0.46A), 구동전류 :18(1.75A) 분주비 0(x256), 1(x128), 2(x64), 3(x32), 4(x16),

DC Motors

제목을 입력하십시오

Microsoft PowerPoint - [2009] 02.pptx

/chroot/lib/ /chroot/etc/

구성품 - UMD 2808 모듈 - JTAG 커넥터 - 젂원 케이블 주요 특징 모듈의 부품화 : 고신뢰성의 DSP 모듈을 최적화된 시스템에 적용 용이 TMS320F2808 ZGMS - 100MHz 탑재 : 확장된 온도규격 (-40 도 ~ 125 도) 적용 Ultralo

실험. Multimeter 의사용법및기초회로이론 Multimeter 의사용법 멀티미터 (Multimeter) 는저항, 전압, 전류등을측정할수있는계측기로서전면은다음그림과같다. 멀티미터를이용해서저항, 전압, 전류등을측정하기위해서는다음그림과같은프로브 (probe) 를멀티미터


제 1 장 집적회로 개요

윈도우즈프로그래밍(1)

기술문서 기초부터프로젝트완성까지, 아두이노 첫걸음 을위한 Arduino Bluetooth Car Control Project 작성자 : 인천대학교 OneScore 임승한

<4D F736F F F696E74202D E6F312D BCB3C4A12C20C4DAB5F920B1E2C3CA2C20BDC3B8AEBEF3C5EBBDC5>

이 장에서 사용되는 MATLAB 명령어들은 비교적 복잡하므로 MATLAB 창에서 명령어를 직접 입력하지 않고 확장자가 m 인 text 파일을 작성하여 실행을 한다

ARDUINO Open Physical Computing Platform 오탈자, 문의및보완이필요한내용은 으로알려주세요.

Microsoft PowerPoint - Ch8

Interactive Workshop for Artists & Designers 연세대학교디지털아트학과, 2016 Earl Park

Microsoft PowerPoint - Chapter4&6(강의용)

슬라이드 1

200W에서 7.5KW까지 라인업!! 전 모델 19Bit 앱솔루트 엔코더 채용!! SMG & SD Series Full Digital AC Servo System CSCAM

지도상 유의점 m 학생들이 어려워하는 낱말이 있으므로 자세히 설명해주도록 한다. m 버튼을 무리하게 조작하면 고장이 날 위험이 있으므로 수업 시작 부분에서 주의를 준다. m 활동지를 보고 어려워하는 학생에게는 영상자료를 접속하도록 안내한다. 평가 평가 유형 자기 평가

Transcription:

Interactive Workshop for Artists & Designers 연세대학교디지털아트학과 Earl Park

스테퍼모터 Stepper Motor 스테퍼모터는일반 DC 모터의장점인연속회전과서보모터의장점인정확한위치조정, 즉정밀제어가가능한모터이다. 스테퍼모터는 360도를일정한각도의스텝단계로나누어지정한스텝만큼회전하도록되어있으며, 예를들어한스텝이 1.8 인스테퍼모터는 200스텝을회전해야 360 를회전하게된다. 모터의스텝을빠르게올리면연속회전하며스텝을제어함으로써정방향, 역방향의회전, 정지가가능하다. 스테퍼모터의축을스텝단위로계속회전시키려면 4~8개의선으로펄스를제어해야하므로 DC 모터나 RC서보모터들보다는제어하기가훨씬복잡하다. 다른 DC 모터보다짜리몽땅하게생겼으며의외로토크도약한편이다. 그러나속도와위치제어가필요한프로젝트에는적합한모터이며, 실생활에서는정확한위치제어가필요한 NC공작기계나프린터, 팩스, 시계등에많이사용된다. Interactive Workshop 2

스테퍼모터의스펙 스텝각도 (Step Angle) 한스텝을제어했을때회전하는각도를뜻하며, 스텝각도가작은모터일수록정밀한위치제어가가능하다. 보통 2상모터는 1.8, 5상모터는 0.72 이다. 상 (Phase) 모터를동작시키는구동방식을말하며, 이상의종류에따라제어가달라지게된다. 보통은 2상은바이폴라, 4상은유니폴라모터로사용된다. 정격전압 (Rated Voltage) 정격전압은스테퍼모터가설계된전압으로이보다높은전압을공급하면모터가탈수도있고, 낮은전압을공급하면움직이지않을수있다. 정지토크 (Holding Toque) 아래는우리가사용할 'SM-42BYG011-25' 의데이터시트이다. 이모터는 2상바이폴라모터로 12볼트에서동작해최대 0.33A를소모하며, 정지토크는 0.23N m 로약 2.3kg cm이다. 한스텝을제어할때마다 1.8 가회전하며모터축의직경은 ø5이다. 모터를고정할때 4.5mm깊이 M3 나사 4개를사용해야한다는것도알수있다. 오른쪽배선도를보면빨간색전선과초록색전선이모터의한상을제어하고, 노란색과파란색전선이나머지한상을제어한다는것을알수있다. 더자세한사항은아래사이트에서확인할수있다. https://www.sparkfun.com/products/9238 모터에전원을공급해서한스텝의위치를유지하고있을때의토크이다. 모터의정격토크보다높은토크가필요한물체를움직이려면모터가미끄러질 ( 탈조할 ) 수있으며정확하게위치을조정하는스테퍼모터의장점을잃을수있다. 스테퍼모터는자신의위치가어디인지절대적으로알지못하며회전명령의스텝수만큼회전하고있을뿐이다. 만약정지토크를넘어서서모터가미끄러지면이모든장점이사라진다. 스테퍼모터의특징중눈여겨볼만한것은멈춤토크 (Detent Toque) 와동적토크 (Dynamic Toque) 이다. 멈춤토크는한스텝씩움직일때의토크로, 축이두개의정지위치사이에있기때문에정지토크 (Holding Toque) 보다낮다. 동적토크는멈춤토크와정지토크의평균인데, 대략정지토크의 65% 이상되는힘을기대해서는안된다. Interactive Workshop 3

스테퍼모터의구동방식 스테퍼모터는보통 2 개의 DC 모터를붙여놓았다고할수있는내부구조를가지고있 으며크게는유니폴라 (Unipolar, 단극성 ) 와바이폴라 (Bipolar, 양극성 ) 로나뉜다. 두가지방식은서로의특성이있으므로사용해야할목적에따라선택하면되며구 조에따라제어해야하는회로가달라진다. 보통바이폴라는선이 4 개, 유니폴라는선 이 5~8 개이며선의연결에따라유니폴라모터를바이폴라모터로사용할수도있다. 1 2 + - - + + - 3 4 + - 바이폴라 (Bioplar) 방식 양극성 (Bipolar) 구동방식은쌍극성이라고도하고이는전류의방향이양쪽으로모두 흐른다는의미이다. 위의그림에서양극성방식의경우는전류의방향을 1-2-3-4 의 순서로바꾸어구동하게되며쌍극성에사용할수있는모터는 4 가닥의외부전선을 갖는다. 유니폴라구동과비교해서각도의정밀도가좋고, 저속에서토크가좋으며모 1 2 3 4 5 6 < 바이폴라스테퍼모터 > < 유니폴라스테퍼모터 > 터의구동중코일에저장된에너지가다시전원으로돌아가게되므로에너지효율도유니폴라방법보다좋다. 반면회로가복잡하고고속에서토크가떨어지는결점이있다. 바이폴라의기본회로는하나의권선코일에전류의방향을바꿀수있다. 바이폴라구동방식은각도의정밀도와저속에서토크가좋기때문에로봇의제어에많이쓰이며, 대표적인드라이버 IC로는 L297, L298을들수있다. L297은스테퍼모터를정전류구동하기위한모든회로가포함된컨트롤러이며, L298은바이폴라구동을위한두개의 H-Bridge Driver를포함하고있다. 유니폴라 (Unipolar) 방식코일의중간탭 (2, 5) 을내어이곳으로계속전류를한쪽방향으로흘리는방식이다. 5~8가닥의외부전선중중간탭에연결된두선을사용하지않거나코일을직렬, 병렬연결함으로써바이폴라 (Bipolar) 구동방식으로사용할수도있다. 유니폴라구동방식은저속영역에서큰토크를기대할수없다. 또한모터는코일과같은성질을가지고있는데그래서모터가회전할때순간적으로모터에저장되는에너지를그라운드로흘려버리게되므로에너지효율이나빠지게된다. 그러나모터회로가간단하고전류의출입이정확하여고속에서탈조될위험이적어고속회전에용이하다는장점이있다. 유니폴라방법은에너지효율이나쁘다는단점이있음에도불구하고순간적으로빠른속도를필요로하는마이크로로봇등에많이쓰인다. 대표적인드라이버 IC로는 SLA7024M, L297을들수있다. Interactive Workshop 4

H-Bridge 회로 (Bipolar Motor 제어 ) 바이폴라모터의구동을위해서는 DC 모터와마찬가지로외부에 H-Bridge 회로를 구성해야한다. 2 개의 H-Bridge 의회로를열고닫음으로써모터의권선에흐르는전 류의방향을조절할수있게된다. 바이폴라스테퍼모터는스텝을조절하는펄스의수에따라속도가변하므로 DC 모 터와는달리 Enable 핀은 High, 즉 +5V 로연결한다. SN754410 에서아두이노로연결된로직핀에아래와같은신호를연속해서보내주면 한 Step씩계속해서연속회전을하게되며만약연속되는 4가지값을넣어주지못하면모터가부르르떨거나멈추게된다. 또한신호펄스가너무빠를경우에도모터안의코일이연속해서동작할타이밍을맞추지못하므로같은현상이나타날수있다. 모터를동작시키기위한논리회로및다이어그램은아래와같다. 바이폴라모터이므로 H-bridge회로가필요하다. 저번시간에사용했던 SN754410은 2개의 H-bridge 회로가내장되어있는칩으로 1암페어의스테퍼모터 1개를제어할수있다. SN754410 대신 L293B칩도사용가능하며, L293D는모터파워로 600mA까지사용가능하다. 만약모터에그이상의전류가필요하다면 L297, L298를생각해보자. step 1A 2A 3A 4A 동작 0 H L L H 시계방향 1스텝회전 1 H L H L 시계방향 1스텝회전 2 L H H L 시계방향 1스텝회전 3 L H L H 시계방향 1스텝회전.................. 위의 4 step 반복 위의 Step을계속반복하면시계방향으로회전한다. step 1A 2A 3A 4A 동작 0 L H L H 반시계방향 1스텝회전 1 L H H L 반시계방향 1스텝회전 2 H L H L 반시계방향 1스텝회전 3 H L L H 반시계방향 1스텝회전.................. 위의 4 step 반복 위의 Step을계속반복하면반시계방향으로회전한다. Interactive Workshop 5

스테퍼모터회전하기 스테퍼모터를회전시키고싶다. SN754410는 2개의 H-bridge 회로가내장된칩으로, 한개의바이폴라스테퍼모터를제어할수있다. 앞장에서보여준전류방향대로제어하면한스텝씩회전한다. SN754410 에연결된각핀을순서대로제어해보자. 딜레이명령에 spd의값을넣어줌으로써속도를조절할수있으며 500마이크로세컨드마다 1스텝, 1초에총 2스텝을회전하므로 100초에 1바퀴가회전하게된다. 만약여기서모터가계속해서한스텝씩같은방향으로회전하지않는다면모터핀이나마이크로컨트롤러에연결된핀이이상이있으니확인해야한다. byte data[]={b00001001,b00001010,b00000110,b00000101; int spd=500; for (int i=8; i<=11; i++){ pinmode(i,output); for (int i=0; i<4; i++){ digitalwrite(8,bitread(data[i],3)); digitalwrite(9,bitread(data[i],2)); digitalwrite(10,bitread(data[i],1)); digitalwrite(11,bitread(data[i],0)); delay(spd); 10~100uF Interactive Workshop 6

스위치로스테퍼모터의방향바꾸기 스테퍼모터의방향을제어하고싶다. 예를들어, 반시계방향으로회전하고있는모터를스위치를누르면시계방향으로회전시키고싶다. SN754410는 2개의 H-bridge 회로가내장된칩으로, 한개의바이폴라스테퍼모터를정방향, 역방향으로움직일수있다. PORT* 명령은아두이노핀을동시에제어할수있는명령어로 PORTD는 digital pin 0~7번핀을, PORTB는 digital pin 8~13번핀을제어할수있다. 앞장에서보여준전류방향대로제어하면한스텝씩회전한다. data[] 에제어할핀을저장해두고 PORTB 명령을통해한꺼번에제어한다. 딜레이명령에 spd의값을넣어줌으로써속도를조절할수있으며 5마이크로세컨드마다 1스텝, 1초에총 200스텝을회전하므로 1초에 1바퀴가회전하게된다. byte data[]={b00001001,b00001010,b00000110,b00000101; int spd=5; int switchpin=2; pinmode(switchpin,input); for (int i=8; i<=11; i++){ pinmode(i,output); if (digitalread(2)==high){ for (int i=0; i<4; i++){ PORTB=data[i]; delay(spd); else{ for (int i=3; i>=0; i--){ PORTB=data[i]; delay(spd); 10~100uF Interactive Workshop 7

스위치로스테퍼모터방향변경, 포텐시오미터로속도조절 스테퍼모터의방향뿐만아니라속도를제어하고싶다. 예를들어, 포텐시오미터를돌리는값에따라모터의속도에변화를주고싶다. 포텐시오미터로받아들인 0~1023의값을 map 함수를통해 0~500까지의값으로변화시키고딜레이명령에 spd의값을넣어줌으로써속도를조절할수있으며 1초에총 500스텝 ~2스텝까지변화를줌으로써 1초에 2.5~0.01바퀴가회전하게된다. byte data[]={b00001001,b00001010,b00000110,b00000101; int spd=500; int switchpin=2; pinmode(switchpin,input); for (int i=8; i<=11; i++){ pinmode(i,output); spd=map(analogread(5),0,1023,2,500); if (digitalread(2)==high){ for (int i=0; i<4; i++){ PORTB=data[i]; delay(spd); else{ for (int i=3; i>=0; i--){ PORTB=data[i]; delay(spd); 10~100uF Interactive Workshop 8

원하는스텝만큼회전하기 ( 라이브러리 ) #include <Stepper.h> Stepper.h 라이브러리는스테퍼모터를좀더쉽게제어할수있도록아두이노에내장된라이브러리이다. (https://www.arduino.cc/en/reference/stepper) revolution은 1바퀴회전하는데필요한스텝수를나타내며우리가사용하는모터는 1.8 씩 200스텝이움직여야모터가 1바퀴회전하게된다. 사용하는모터가달라지면조절하자. mystepper.step(); 으로시계방향으로회전할스텝수를설정할수있다. 또한시리얼모니터창을통해모터가몇스텝회전했는지확인할수있다. const int stepsperrevolution = 200; // change this to fit the number of steps per revolution // for your motor // initialize the stepper library on pins 8 through 11: Stepper mystepper(stepsperrevolution, 8, 9, 10, 11); int stepcount = 0; // number of steps the motor has taken // initialize the serial port: Serial.begin(9600); // step one step: mystepper.step(1); Serial.print("steps:"); Serial.println(stepCount); stepcount++; delay(500); 10~100uF Interactive Workshop 9

회전속도조절하기 ( 라이브러리 ) #include <Stepper.h> 라이브러리를사용하여모터의속도를조절해보려한다. sensorreading변수로센서값을읽어들여모터의 RPM을 0~150까지조절하게된다. setspeed 함수로모터가회전하는최대 RPM을설정할수있으며우리가사용하는모터는최대 150RPM으로 1초에 2.5바퀴정도회전이가능하다. 포텐시오미터의값에따라모터는 2step씩속도를더내며움직일수있다. const int stepsperrevolution = 200; // change this to fit the number of steps per revolution // for your motor // initialize the stepper library on pins 8 through 11: Stepper mystepper(stepsperrevolution, 8, 9, 10, 11); int stepcount = 0; // number of steps the motor has taken // nothing to do inside the setup // read the sensor value: int sensorreading = analogread(5); // map it to a range from 0 to 150: int motorspeed = map(sensorreading, 0, 1023, 0, 150); // set the motor speed: if (motorspeed > 0) { mystepper.setspeed(motorspeed); // step 1/100 of a revolution: mystepper.step(stepsperrevolution / 100); 10~100uF Interactive Workshop 10

시리얼명령으로방향, 회전속도조절 ( 라이브러리 ) #include <Stepper.h> 라이브러리를사용하여스테퍼모터의방향, 속도를둘다제어하고싶다. 예를들어, 시리얼포트의명령을통해모터를어느한방향으로움직임과동시에속도를제어하고싶다. 시리얼포트명령어로숫자값과그뒤의 + 와 -에따라모터의스텝회전수와방향이결정된다. 예를들어 200step의모터의경우 "200+" 는모터가시계방향으로한바퀴가완전히회전한다는것을의미하며, "100-" 는모터가반시계방향으로반바퀴회전한다는것을의미한다. const int stepsperrevolution = 200; // change this to fit the number of steps per revolution // for your motor // initialize the stepper library on pins 8 through 11: Stepper mystepper(stepsperrevolution, 8, 9, 10, 11); int steps=0; // initialize the serial port: Serial.begin(9600); mystepper.setspeed(30); if( Serial.available()) { char ch = Serial.read(); if (isdigit (ch)){ // if ch is a number... steps = steps*10+ch-'0'; else if(ch == '+'){ mystepper.step(steps); steps=0; else if(ch == '-'){ mystepper.step(steps*-1); steps=0; 10~100uF Interactive Workshop 11

트랜지스터회로 (Unipolar Motor) 유니폴라모터의구동을위해서는각각의코일에흐르는전류를제어해주어야한 다. 그러기위해서는 4 개의트랜지스터를번갈아가며모터의권선을제어하는회로 가필요하다. 유니폴라모터권선의가운데에위치한 common 은모터의파워에알맞는전압, 예 를들면 +5V 나 +12V 에연결한다. 또한유니폴라모터전선색깔은제품마다모두다 르므로데이터시트를참고해야한다. 모터를동작시키기위한논리회로및다이어그램은바이폴라와같다 (Full Step). step 1A 2A 3A 4A 동작 0 H L L H 시계방향 1스텝회전 1 H L H L 시계방향 1스텝회전 2 L H H L 시계방향 1스텝회전 3 L H L H 시계방향 1스텝회전.................. 위의 4 step 반복 위의 Step을계속반복하면시계방향으로회전한다. 유니폴라모터는 500mA 정도의전류이하의모터라면트랜지스터어레이인 ULN2003 이나 ULN2004 를사용하고, 더높은전류 (1.5~3A) 가필요하다면유니폴라 전용드라이버인 SLA7024M 혹은 SLA7026M 등을사용하도록한다. step 1A 2A 3A 4A 동작 0 L H L H 반시계방향 1스텝회전 1 L H H L 반시계방향 1스텝회전 2 H L H L 반시계방향 1스텝회전 3 H L L H 반시계방향 1스텝회전.................. 위의 4 step 반복 위의 Step 을계속반복하면반시계방향으로회전한다. 앞에서해보았던 stepper.h 라이브러리를사용하는코드는유니폴라모터에똑같이 사용가능하다. Interactive Workshop 12

시리얼명령으로방향, 회전속도조절 ( 라이브러리 ) #include <Stepper.h> 라이브러리를사용하여스테퍼모터의방향, 속도를둘다제어하고싶다. 예를들어, 시리얼포트의명령을통해모터를어느한방향으로움직임과동시에속도를제어하고싶다. 시리얼포트명령어로숫자값과그뒤의 + 와 -에따라모터의스텝회전수와방향이결정된다. 예를들어 200step의모터의경우 "200+" 는모터가시계방향으로한바퀴가완전히회전한다는것을의미하며, "100-" 는모터가반시계방향으로반바퀴회전한다는것을의미한다. const int stepsperrevolution = 200; // change this to fit the number of steps per revolution // for your motor // initialize the stepper library on pins 8 through 11: Stepper mystepper(stepsperrevolution, 8, 9, 10, 11); int steps=0; // initialize the serial port: Serial.begin(9600); mystepper.setspeed(30); if( Serial.available()) { char ch = Serial.read(); if (isdigit (ch)){ // if ch is a number... steps = steps*10+ch-'0'; else if(ch == '+'){ mystepper.step(steps); steps=0; else if(ch == '-'){ mystepper.step(steps*-1); steps=0; Interactive Workshop 13