ai motor-701 1001 manual v1.03 korean · 2015. 1. 21. · aimotor-701,1001 설명서 ver 1.03...

36
관절 로봇용 지능형 엑추에이터 모듈 AI MOTOR-701,1001 설명서 Ver 1.03 저희 제품을 구입해 주셔서 감사합니다 설명서에는 . AI MOTOR - 의 사용법이 정리되어 있습니다 내용을 충분히 이해하신 후 바 701, 1001 . 르게 사용하여 주십시오. 주 메가로보틱스 ( ) www.megarobotics.com

Upload: others

Post on 23-Sep-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: AI MOTOR-701 1001 manual v1.03 korean · 2015. 1. 21. · AIMOTOR-701,1001 설명서 Ver 1.03 저희제품을구입해주셔서감사합니다 이설명서에는. AI MOTOR - 701,

관절 로봇용 지능형 엑추에이터 모듈

AI MOTOR-701,1001 설명서Ver 1.03

저희 제품을 구입해 주셔서 감사합니다 이 설명서에는. AI MOTOR -의 사용법이 정리되어 있습니다 내용을 충분히 이해하신 후 바701, 1001 .

르게 사용하여 주십시오.

주 메가로보틱스( )www.megarobotics.com

Page 2: AI MOTOR-701 1001 manual v1.03 korean · 2015. 1. 21. · AIMOTOR-701,1001 설명서 Ver 1.03 저희제품을구입해주셔서감사합니다 이설명서에는. AI MOTOR - 701,

목 차

제품 소개1.개요1.1. 3내용물1.2. 3각 부의 명칭1.3. 4기능1.4. 5특징 및 사양1.5. 6

세부 설명 및 사용 방법2.하드웨어 인터페이스2.1. 8기구 인터페이스2.2. 12소프트웨어 인터페이스2.3. 14위치 제어 기능2.4. 23

부록3.보드3.1. RS-232 24

의 통신속도 설정 예3.2. MCU 25의 응용 예3.3. AI MOTOR 28의 응용 예제 프로그램3.4. AI MOTOR (1) 29의 응용 예제 프로그램3.5. AI MOTOR (2) 35

Page 3: AI MOTOR-701 1001 manual v1.03 korean · 2015. 1. 21. · AIMOTOR-701,1001 설명서 Ver 1.03 저희제품을구입해주셔서감사합니다 이설명서에는. AI MOTOR - 701,

제품 소개1.

개요1.1.은 다양한 형태의 로봇을 손쉽게 조립하고 제어할 수 있는AI MOTOR-701,1001

관절 로봇용 엑추에이터 모듈입니다 움직임이 요구되는 모든 장치들에 있어서 모.터는 필수적인 것입니다 하지만 제어 전자회로 기구적 연결 및 결합에 있어서. , ,특별한 장치와 많은 돈이 요구되어 일반인들이 쉽게 사용할 수 없습니다. AI

은 모터 기구물 제어 회로를 하나의 모듈로 집적시켜 서로 연MOTOR-701,1001 , ,결하기 쉽게 만든 제품입니다 따라서 본 제품을 사용하면 움직임이 요구되는 장.치의 관절부를 쉽게 설계할 수 있고 추가 확장과 고장 대응이 쉬워집니다 배선처, .리를 쉽게 하기 위해 모터끼리 직렬로 연결이 가능하고 제어 명령은 일반적으로,많이 사용되고 있는 직렬통신을 통해 일회적 하달로 가능하며 모터에 흐RS-232 ,르는 전류와 위치를 외부에 출력하는 기능을 갖고 있어 모터의 동작 상태를 감시,할 수 있습니다.동작 모드에는 회전 모드 범위의 위치 제어 모드 모터 출력단360 , 0 ~ 332 ,゚ ゚의 토크를 으로 만들어 외부의 힘에 의해 출력단의 위치 변화를 감시할 수 있는0수동 모드 위치 센서 모드 소비 전력을 최소화하는 절전 모드 동기화 위치 제어( ), ,모드가 있습니다.모터의 내부 파라메타는 직렬 통신을 통해 프로그램으로 변경할 수 있도록 되어

있습니다 변경할 수 있는 파라메타에는 모터의 직렬 통신 속도 위치 제어 해. ID, ,상도 위치 제어 이득 과전류 기준 이동 범위 상한값 이동 범위 하한값이 있습니, , , ,다 그리고 내부적으로 외부의 전원 상태를 확인해서 내부. AI MOTOR-701,1001제어 이득을 자동 조절하는 기능을 가지고 있어서 입력 전압이 변동하더라도 일정

한 제어 응답성을 갖게 되어 있습니다 또 모터에 흐르는 전류가 지나치게 높을.경우 자동으로 모터 전류를 차단하여 모터가 손상되는 것을 방지하는 기능을 갖고

있습니다 이 때의 과전류 기준 값은 변경 가능합니다. .모터끼리 연결시에 여러 방향에서 조립이 가능하도록 가지 형태의 연결 장치가11제공되며 모터 출력단이 개이므로 조인트 연결이 매우 편리하게 되어 있습니다, 2 .

내용물1.2.AI MOTOR①

케이블 개100mm (1 )②

케이블 개150mm (1 )연결부 개(11 )③

볼트 M1.7 × 8 mm④

볼트 개M2.0 × 12 mm (2 )볼트 개M2.0 × 16 mm (2 )너트 개M2.0 (4 )여분 번 기어2⑤

여분 번 기어3

Page 4: AI MOTOR-701 1001 manual v1.03 korean · 2015. 1. 21. · AIMOTOR-701,1001 설명서 Ver 1.03 저희제품을구입해주셔서감사합니다 이설명서에는. AI MOTOR - 701,

그림 패키지 내용물1.

각 부의 명칭1.3.몸체 분해도

그림 몸체 분해도2.

연결부

표 연결부 사용법1.

사용법 연결부 번호

샤프트 몸체 연결↔ 1, 3, 6

샤프트 샤프트 연결↔ 2, 10

몸체 몸체 연결↔ 4, 8

기타 연결 5, 7, 9, 11

Page 5: AI MOTOR-701 1001 manual v1.03 korean · 2015. 1. 21. · AIMOTOR-701,1001 설명서 Ver 1.03 저희제품을구입해주셔서감사합니다 이설명서에는. AI MOTOR - 701,

연결 케이블모터끼리 연결하거나 제어 보드와 연결하기 위한 케이블이며 길이는 각각,

입니다10cm, 15cm .

그림 연결 케이블4.

기능1.4.위치 제어 기능

저해상도 모드 고해상도 모드(0 ~ 332 ), (0 ~ 166 )゚ ゚

센서 기능전류 위치 피드백(8 bit), (8 bit)

속도 조절 기능

위치 제어 모드 단계 회전 모드 단계5 , 360 16゚

해상도 조절 기능 단계(2 )저해상도 고해상도1.3 , 0.65゚ ゚

회전 기능 바퀴형 동작 모드360 ( )゚

Page 6: AI MOTOR-701 1001 manual v1.03 korean · 2015. 1. 21. · AIMOTOR-701,1001 설명서 Ver 1.03 저희제품을구입해주셔서감사합니다 이설명서에는. AI MOTOR - 701,

동기화 위치 제어 기능여러 개의 모듈을 동시에 동작시키는 기능

이동 범위 설정 기능출력단의 최대 위치 최소 위치를 설정 가능,

역전압 보호 기능까지 보호0 ~ -28 V

과전류 보호 기능과전류 기준 설정 가능 범위 약 400 ~ 1000 mA

파라메타 설정 기능통신 속도 해상도 과전류 기준 이득 이득ID, , , , P- , D-

전압 감지 기능입력 전압 에 따라 내부의 제어 이득이 자동으로 설정(5 ~ 10V)

모듈간의 기구적 직접 연결 기능개의 출력 샤프트 개의 몸체 연결부 종의 연결부로 다양한 연결 가능2 , 1 , 11

모듈간의 전기적 직접 연결 기능개의 커넥터 단자 연결 케이블을 이용하여 전기적으로 직접 연결 가능2 ,

통신에 의한 제어 기능방식의 를 내장하여 패킷 통신 방식으로 제어되며Full-duplex UART , RS-232

한 개의 채널당 개까지 연결해서 제어 가능31

특징 및 사양1.5.장점

우수한 가격 대비 성능-모듈간의 뛰어난 조립성-강인한 기어 내구성-다양한 동작 모드 지원-테스트 도구 프로그램 지원-다양한 응용 프로그램 지원-

크기

그림 몸체의 크기5. 단위 : mm

Page 7: AI MOTOR-701 1001 manual v1.03 korean · 2015. 1. 21. · AIMOTOR-701,1001 설명서 Ver 1.03 저희제품을구입해주셔서감사합니다 이설명서에는. AI MOTOR - 701,

제품 사양

표 의 사양2-1. AI MOTOR-701

통신규격 비동기 직렬 통신 레벨RS-232 (TTL )

연결 가능 개수 통신 채널당 최대 개31

파라메타범위

ID 0 ~ 30

통신 속도(Baud-rate) 2400 ~ 460800bps

해상도 저해상도 고해상도(1.3 ), (0.65 )゚ ゚비례 이득(P-Gain) 권장1 ~ 50

미분 이득(D-Gain) 권장0 ~ 100

전류 제한 기준 약 400mA ~ 1000mA

최소 위치 최대 위치, 최소 위치 최대 위치0 <= < <= 254

동작

최대 토크 약 기준7Kg cm (+9.5V )・최고 속도 약 기준82rpm (+9.5V )

제어 단위각저해상도 모드 : 333.3/255 1.307≒ ゚고해상도 모드 : 166.65/255 0.654≒ ゚

동작 모드

위치제어모드

속도 모드 0최대( )

현재 전류와 위치를 알려주고 특정 위치로 이동,속도 모드 1속도 모드 2속도 모드 3속도 모드 4최소( )

위치 읽기 모드 현재 전류와 위치를 알려줌.수동 모드

위치 센서 모드( )현재 위치를 알려주고 모터 회전력을 없애고 외부 힘,에 따라 움직임

절전 모드모터 회전력 없이 다른 명령이 떨어지기 전까지 절전상태 유지

회전 모드360゚ 단계의 속도 조절 가능 정지 최소 최대16 (0: , 1: , 15: )

동기화 위치 제어 모드 여러 개의 모듈이 동시에 동작하는 위치 제어 모드

시스템보호

과전류 제한 약 사용자가 설정 가능400mA ~ 1000mA ( )

역전압 보호 0 ~ -28V

전기적사양

모터종류 DC precious metal brush motor

최대 전류 에서 에서5V 650mA, 10V 1000mA

제어회로

입력 전압 레벨 High(2.57 ~ 5.2V), Low(-0.5 ~ 0.94V)출력 전압 레벨 High(3.25 ~ 4.7V ), Low(0 ~ 0.6V)

전류 일반 모드에서 절전 모드에서11.7mA, 11.6mA

기구적사양

연결 부품 종 플라스틱11 ( )

크기 최대( ) 51.6 × 34.3 × 37.1mm

무게 40g

상호 연결점 곳3

기어 비 1 : 173

기어 재질 플라스틱

Page 8: AI MOTOR-701 1001 manual v1.03 korean · 2015. 1. 21. · AIMOTOR-701,1001 설명서 Ver 1.03 저희제품을구입해주셔서감사합니다 이설명서에는. AI MOTOR - 701,

제품 사양

표 의 사양2-2. AI MOTOR-1001

통신규격 비동기 직렬 통신 레벨RS-232 (TTL )

연결 가능 개수 통신 채널당 최대 개31

파라메타범위

ID 0 ~ 30

통신 속도(Baud-rate) 2400 ~ 460800bps

해상도 저해상도 고해상도(1.3 ), (0.65 )゚ ゚비례 이득(P-Gain) 권장1 ~ 50

미분 이득(D-Gain) 권장0 ~ 100

전류 제한 기준 약 400mA ~ 1000mA

최소 위치 최대 위치, 최소 위치 최대 위치0 <= < <= 254

동작

최대 토크 약 기준10Kg cm (+9.5V )・최고 속도 약 기준60rpm (+9.5V )

제어 단위각저해상도 모드 : 333.3/255 1.307≒ ゚고해상도 모드 : 166.65/255 0.654≒ ゚

동작 모드

위치제어모드

속도 모드 0최대( )

현재 전류와 위치를 알려주고 특정 위치로 이동,속도 모드 1속도 모드 2속도 모드 3속도 모드 4최소( )

위치 읽기 모드 현재 전류와 위치를 알려줌.수동 모드

위치 센서 모드( )현재 위치를 알려주고 모터 회전력을 없애고 외부 힘,에 따라 움직임

절전 모드모터 회전력 없이 다른 명령이 떨어지기 전까지 절전상태 유지

회전 모드360゚ 단계의 속도 조절 가능 정지 최소 최대16 (0: , 1: , 15: )

동기화 위치 제어 모드 여러 개의 모듈이 동시에 동작하는 위치 제어 모드

시스템보호

과전류 제한 약 사용자가 설정 가능400mA ~ 1000mA ( )

역전압 보호 0 ~ -28V

전기적사양

모터종류 DC precious metal brush motor

최대 전류 에서 에서5V 650mA, 10V 1000mA

제어회로

입력 전압 레벨 High(2.57 ~ 5.2V), Low(-0.5 ~ 0.94V)출력 전압 레벨 High(3.25 ~ 4.7V ), Low(0 ~ 0.6V)

전류 일반 모드에서 절전 모드에서11.7mA, 11.6mA

기구적사양

연결 부품 종 플라스틱11 ( )크기 최대( ) 51.6 × 34.3 × 37.1mm무게 46g

상호 연결점 곳3기어 비 1 : 241기어 재질 메탈 플라스틱,베어링 메탈

Page 9: AI MOTOR-701 1001 manual v1.03 korean · 2015. 1. 21. · AIMOTOR-701,1001 설명서 Ver 1.03 저희제품을구입해주셔서감사합니다 이설명서에는. AI MOTOR - 701,

블럭도

그림 의 블럭도6. AI MOTOR-701,1001

Tx

Rx

MPU

Motor

Driver

PW M

Direction

Motor

Gear

Rotary

Sensor

Current

Detector Current A/D

Position A/D

Regulator

LC Filter

Voltage

DetectorVoltage A/D

ReverseVoltage

Protector

Tx

Rx

Vcc

GND

세부 설명 및 사용 방법2.

하드웨어 인터페이스2.1.여기서는 의 하드웨어 인터페이스인 연결 커넥터에서 사용되는 전원 및AI MOTOR신호선에 대하여 설명합니다

커넥터

몸체에는 개의 연결 커넥터가 있습니다 두 연결 커넥터는 내부AI MOTOR 2 .적으로 서로 병렬 연결되어 있으며 개의 커넥터 중 하나만 연결하면, 2 AI M

를 사용할 수 있습니다 나머지 하나의 커넥터는 다른 모듈을 직렬 연OTOR .결할 때 사용합니다.

번 커넥터1 번 커넥터2

의 의Ground, AI MOTOR RXD, AI MOTOR TXD, Vcc① ② ③ ④

그림 커넥터7.

Page 10: AI MOTOR-701 1001 manual v1.03 korean · 2015. 1. 21. · AIMOTOR-701,1001 설명서 Ver 1.03 저희제품을구입해주셔서감사합니다 이설명서에는. AI MOTOR - 701,

전기적 특성

표 최대 동작 조건3.

심볼 파라메타 최소 최대 단위

VCC 공급 전압 4.5 10.5 VICC 동작 전류 11.6 1015 mAVIL 입력 전압Low -0.5 0.94 VVIH 입력 전압High 2.57 5.2 VVOL 출력 전압Low 0 0.6 VVOH 출력 전압High 3.25 4.7 VTO 동작 온도 0 70 ℃

TS 보관 온도 -40 120 ℃

표 권장 동작 조건4.

심볼 파라메타 최소 최대 단위

VCC 공급 전압 5.5 9 VICC 동작 전류 - 600 mAVIL 입력 전압Low -0.5 1.2 VVIH 입력 전압High 3.29 5.2 VVOL 출력 전압Low 0 0.6 VVOH 출력 전압High 4.0 4.7 VTO 동작 온도 10 40 ℃

TS 보관 온도 -40 80 ℃

Power On Reset전원이 인가된 후 동안은 어떠한 명령도 인식하지 않으며 이후에 수65ms ,동 모드가 됩니다.

그림 동작 순서8. Power On Reset

신호 타이밍RS-232제어 명령 데이터를 주고받기 위해 레벨의 비동기 통신 방식을, TTL RS-232사용합니다 이상의 속도에서는 한 의 와 다음 의. 115200bps byte stop bit byte

사이에 이상의 을 주는 것이 좋으며 이start bit 150us delay time , 57600bps하의 속도에서는 를 필요로 하지 않습니다delay .

RX, TX

그림 통신의 신호 타이밍9. RS-232

Start

Bit

D0 D1 D2 D3 D4 D5 D6 D7 Stop

Bit

통신 시간 지연RS-232통신을 통해 명령을 받으므로 여러 개의 모듈을 연결하여 제어할 경RS-232

우 모듈마다 명령을 받는 시간의 차이가 생깁니다 보통의 경우 통신 지연은.무시할 수 있으나 정확한 제어를 위해서는 아래의 표에 나와 있는 통신 지,연 시간을 고려해서 사용하시기 바랍니다.

전원 인가 리셋 지연 : 65ms 명령 대기 수동 모드( )

Page 11: AI MOTOR-701 1001 manual v1.03 korean · 2015. 1. 21. · AIMOTOR-701,1001 설명서 Ver 1.03 저희제품을구입해주셔서감사합니다 이설명서에는. AI MOTOR - 701,

표 통신 시간 지연5.

통신속도[bps]

바이트 전송1시간[ms]

명령 전송1 (4 bytes)시간[ms]

에서의 명령30 rpm 1지연각[ ]゚

2400 4.167 16.667 3

4800 2.083 8.333 1.5

9600 1.042 4.167 0.75

19200 0.521 2.083 0.375

38400 0.260 1.042 0.1875

57600 0.174 0.694 0.0125

115200 0.087 0.347 0.0625

153600 0.065 0.260 0.046875

230400 0.043 0.174 0.03125

460800 0.022 0.087 0.015625

명령 송신 후 응답 수신 시간

표 은 외부 컨트롤러에서 로 명령 패킷을 보내고 응답 패킷을7. AI MOTOR받기까지 걸린 시간을 통신 속도별로 정리한 것입니다.

표 명령 송신 후 응답 패킷 수신 시간 최대 단위7. ( ) [ : uS]

통신속도명령

2400bps

4800bps

9600bps

19200bps

38400bps

57600bps

115200bps

위치 제어 25329 13159 7083 4045 2517 1354 1180

위치 읽기 25329 13159 7083 4045 2517 1354 1180

수동 모드 25329 13159 7083 4045 2517 1354 1180

절전 모드 25329 13159 7083 4045 2517 1354 1180

도 회전360 25329 13159 7083 4045 2517 1354 1180

제어 이득 읽기 33662 17326 9166 5086 3038 1701 1354

해상도 읽기 33662 17326 9166 5086 3038 1701 1354

과전류 기준 읽기 33662 17326 9166 5086 3038 1701 1354

이동 범위 읽기 33662 17326 9166 5086 3038 1701 1354

통신 속도 설정 153453 136144 127950 124877 122829 121492 121145

제어 이득 설정 153453 136144 127950 124877 122829 121492 121145

설정ID 153453 136144 127950 124877 122829 121492 121145

해상도 설정 153453 136144 127950 124877 122829 121492 121145

과전류 기준 설정 153453 136144 127950 124877 122829 121492 121145

이동 범위 설정 153453 136144 127950 124877 122829 121492 121145

Page 12: AI MOTOR-701 1001 manual v1.03 korean · 2015. 1. 21. · AIMOTOR-701,1001 설명서 Ver 1.03 저희제품을구입해주셔서감사합니다 이설명서에는. AI MOTOR - 701,

위치 제어 응답

자동 전압 감지 기능에 의해 제어 이득이 자동 설정되므로 입력 전압이 올라

가도 응답 특성의 변화가 적습니다.

실험 조건※

초기 위치- : 15목표 위치- : 165부하- : 0측정 시간- : 2 seconds샘플 수- : 80

입력 전압(a) = 5.5V

입력 전압(b) = 9.5V그림 위치 제어 명령에 대한 응답10.

Page 13: AI MOTOR-701 1001 manual v1.03 korean · 2015. 1. 21. · AIMOTOR-701,1001 설명서 Ver 1.03 저희제품을구입해주셔서감사합니다 이설명서에는. AI MOTOR - 701,

기구 인터페이스2.2.여기서는 의 기구부인 몸체 연결부 출력 샤프트 연결부의 사용법에AI MOTOR , ,대하여 설명합니다.

연결부의 종류와 용례표 연결부의 사용법6.

연결부 조립 과정 조립 후

연결부 1

연결부 2

연결부 3

연결부 4

연결부 5

Page 14: AI MOTOR-701 1001 manual v1.03 korean · 2015. 1. 21. · AIMOTOR-701,1001 설명서 Ver 1.03 저희제품을구입해주셔서감사합니다 이설명서에는. AI MOTOR - 701,

연결부 조립 과정 조립 후

연결부 6

연결부 7

연결부 8

연결부 9

연결부 10

연결부 11

Page 15: AI MOTOR-701 1001 manual v1.03 korean · 2015. 1. 21. · AIMOTOR-701,1001 설명서 Ver 1.03 저희제품을구입해주셔서감사합니다 이설명서에는. AI MOTOR - 701,

소프트웨어 인터페이스2.3.여기서는 소프트웨어 인터페이스인 통신 규약 에 대하여 설명합니다(protocol) .

통신 순서2.3.1.모든 통신 명령은 그림과 같은 순서로 이루어집니다.컨트롤러가 에게 명령 패킷을 보내면 응답 패킷을 되돌려 주게 됩니다AI MOTOR .

그림 통신 순서11.

명령 패킷2.3.2.명령 패킷에는 동작 명령 패킷과 설정 명령 패킷 바이트 가지 종류가 있습니다(6 ) 2 .

동작 명령 패킷2.3.2.1.위치 제어 명령 (Position Send Command)

가 외부 컨트롤러에게 현재 전류와 출력단의 현재 위치를 알려준AI MOTOR다음 원하는 위치로 이동하게 하는 명령입니다 속도는 단계로 조절할 수. 5있습니다.명령 패킷▶

1byte 1byte 1byte 1byteHeader Data1 Data2 Checksum

- Header 패킷 시작= 0xFF( )

- Data1 =속도 ID

7 6 5 4 3 2 1 0 bit number

속도 최고 최저: 0( )~4( )※

ID : 0~30- Data2 목표 위치= 0~254( )- Checksum = (Data1 XOR Data2) AND 0x7F응답 패킷▶

1 byte 1 byte전류 위치

전류- 약 당= 18.4 mA 1위치- = 0~255

컨트롤러

명령 패킷

응답 패킷

Page 16: AI MOTOR-701 1001 manual v1.03 korean · 2015. 1. 21. · AIMOTOR-701,1001 설명서 Ver 1.03 저희제품을구입해주셔서감사합니다 이설명서에는. AI MOTOR - 701,

위치 읽기 명령 (Position Read Command)의 현재 전류와 출력단의 현재 위치를 알려주는 명령입니다AI MOTOR .

명령 패킷▶

1byte 1byte 1byte 1byteHeader Data1 Data2 Checksum

- Header 패킷 시작= 0xFF( )

- Data1 =5 (=0b101) ID7 6 5 4 3 2 1 0 bit number

ID : 0~30※

- Data2 임의값=- Checksum = (Data1 XOR Data2) AND 0x7F응답 패킷▶

1 byte 1 byte전류 위치

전류- 약 당= 18.4 mA 1위치- = 0~255

수동 모드 명령 (Act Down Command)의 출력단의 현재 위치를 알려주고 모터의 토크를 없애서 외부 힘AI MOTOR

에 따라 움직이는 모드입니다.명령 패킷▶

1byte 1byte 1byte 1byteHeader Data1 Data2 Checksum

- Header 패킷 시작= 0xFF( )

- Data1 =6 (=0b110) ID7 6 5 4 3 2 1 0 bit number

ID : 0~30※

- Data2 =1 (=0b0001) 임의값

7 6 5 4 3 2 1 0 bit number

- Checksum = (Data1 XOR Data2) AND 0x7F응답 패킷▶

1 byte 1 byteData2 위치

위치- = 0~255

Page 17: AI MOTOR-701 1001 manual v1.03 korean · 2015. 1. 21. · AIMOTOR-701,1001 설명서 Ver 1.03 저희제품을구입해주셔서감사합니다 이설명서에는. AI MOTOR - 701,

절전 모드 명령 (Power Down Command)연결된 모든 를 절전 상태로 만듭니다 임의의 통신 명령이 전달AI MOTOR .되면 절전 모드에서 깨어나게 됩니다.명령 패킷▶

1byte 1byte 1byte 1byteHeader Data1 Data2 Checksum

- Header 패킷 시작= 0xFF( )

- Data1 =6 (=0b110) 31 (=0b11111)7 6 5 4 3 2 1 0 bit number

- Data2 =2 (=0b0010) 임의값

7 6 5 4 3 2 1 0 bit number

- Checksum = (Data1 XOR Data2) AND 0x7F응답 패킷▶

1 byte 1 byteID 위치

도 회전 모드 명령360 (360 degrees Rotation Command)를 출력단을 회전시키는 명령입니다 속도는 단계로 조절AI MOTOR 360 . 16゚

할 수 있습니다.명령 패킷▶

1byte 1byte 1byte 1byteHeader Data1 Data2 Checksum

- Header 패킷 시작= 0xFF( )

- Data1 =6 (=0b110) ID7 6 5 4 3 2 1 0 bit number

ID : 0~30※

- Data2 =회전 방향 속도

7 6 5 4 3 2 1 0 bit number

회전 방향※ 반시계 방향 시계 방향: 3( ), 4( )속도 정지 최소 최대: 0( ), 1( )~15( )

- Checksum = (Data1 XOR Data2) AND 0x7F응답 패킷▶

1 byte 1 byte회전수 위치

회전수- 전원 인가후 회전수= 0~255( , ○+ 반시계 방향: , ○- 시계 방향: )위치- = 0~255

Page 18: AI MOTOR-701 1001 manual v1.03 korean · 2015. 1. 21. · AIMOTOR-701,1001 설명서 Ver 1.03 저희제품을구입해주셔서감사합니다 이설명서에는. AI MOTOR - 701,

동기화 위치 제어 명령 (Synchronous Position Send Command)여러 개의 를 동시에 원하는 위치로 이동하게 하는 명령입니다AI MOTOR .속도는 단계로 조절할 수 있습니다5 .명령 패킷▶

1byte 1byte 1byte 1byte 1byte 1byteHeader Data1 Last ID+1 Pos[0] Pos[Last ID] Checksum

- Header 패킷 시작= 0xFF( )

- Data1 =속도 31 (=0b11111)

7 6 5 4 3 2 1 0 bit number

속도 최고 최저: 0( )~4( )※

- Last ID 마지막 의= 0~30( AI MOTOR ID)- Pos[0] 가 인 의 목표 위치= 0~254(ID 0 AI MOTOR )

- Pos[Last ID] 가 인 의 목표 위치= 0~254(ID Last ID AI MOTOR )- Checksum = (Pos[0] XOR Pos[1] XOR Pos[Last ID]) AND 0x7F응답 패킷▶

없음-

설정 명령 패킷 바이트2.3.2.2. (6 )통신 속도 설정 명령 (Baud-rate Set Command)

의 통신 속도를 설정하는 명령입니다 지원하는 통신 속도는AI MOTOR .2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 307200, 460800입니다bps .명령 패킷▶

1byte 1byte 1byte 1byte 1byte 1byteHeader Data1 Data2 Data3 Data4 Checksum

- Header 패킷 시작= 0xFF( )

- Data1 =7 (=0b111) ID7 6 5 4 3 2 1 0 bit number

ID : 0~30※

- Data2 = 0x08- Data3 = 0(460800bps), 1(230400bps), 2(153600bps),

3(115200bps), 7(57600bps), 11(38400bps), 23(19200bps),47(9600bps), 95(4800bps), 191(2400bps)

- Data4 = Data3- Checksum = (Data1 XOR Data2 XOR Data3 XOR Data4) AND 0x7F응답 패킷▶

1 byte 1 byte새 통신속도

새 통신속도

새 통신 속도- = 0~191

Page 19: AI MOTOR-701 1001 manual v1.03 korean · 2015. 1. 21. · AIMOTOR-701,1001 설명서 Ver 1.03 저희제품을구입해주셔서감사합니다 이설명서에는. AI MOTOR - 701,

제어 이득 설정 명령 (Control Gain Set Command)의 제어 이득을 설정하는 명령입니다 설정 가능한 제어 이득은AI MOTOR .

이득과 이득입니다P- D- .명령 패킷▶

1byte 1byte 1byte 1byte 1byte 1byteHeader Data1 Data2 Data3 Data4 Checksum

- Header 패킷 시작= 0xFF( )

- Data1 =7 (=0b111) ID7 6 5 4 3 2 1 0 bit number

ID : 0~30※

- Data2 = 0x09- Data3 권장 새= 1~50 ( P-gain)- Data4 권장 새= 0~100 ( D-gain)- Checksum = (Data1 XOR Data2 XOR Data3 XOR Data4) AND 0x7F응답 패킷▶

1 byte 1 byte새 P-gain 새 D-gain

새- P-gain = 1~50새- D-gain = 0~100

아이디 설정 명령 (ID Set Command)의 를 설정하는 명령입니다AI MOTOR ID .

명령 패킷▶

1byte 1byte 1byte 1byte 1byte 1byteHeader Data1 Data2 Data3 Data4 Checksum

- Header 패킷 시작= 0xFF( )

- Data1 =7 (=0b111) ID7 6 5 4 3 2 1 0 bit number

ID : 0~30※

- Data2 = 0x0A- Data3 새= 0~30( ID)- Data4 = Data3- Checksum = (Data1 XOR Data2 XOR Data3 XOR Data4) AND 0x7F응답 패킷▶

1 byte 1 byte새 ID 새 ID

새- ID = 0~30

Page 20: AI MOTOR-701 1001 manual v1.03 korean · 2015. 1. 21. · AIMOTOR-701,1001 설명서 Ver 1.03 저희제품을구입해주셔서감사합니다 이설명서에는. AI MOTOR - 701,

제어 이득 읽기 명령 (Control Gain Read Command)의 제어 이득을 읽어오는 명령입니다AI MOTOR .

명령 패킷▶

1byte 1byte 1byte 1byte 1byte 1byteHeader Data1 Data2 Data3 Data4 Checksum

- Header 패킷 시작= 0xFF( )

- Data1 =7 (=0b111) ID7 6 5 4 3 2 1 0 bit number

ID : 0~30※

- Data2 = 0x0C- Data3 임의값=- Data4 임의값=- Checksum = (Data1 XOR Data2 XOR Data3 XOR Data4) AND 0x7F응답 패킷▶

1 byte 1 byteP-gain D-gain

- P-gain = 1~50- D-gain = 1~100

해상도 설정 명령 (Resolution Set Command)의 해상도를 설정하는 명령입니다AI MOTOR .

명령 패킷▶

1byte 1byte 1byte 1byte 1byte 1byteHeader Data1 Data2 Data3 Data4 Checksum

- Header 패킷 시작= 0xFF( )

- Data1 =7 (=0b111) ID7 6 5 4 3 2 1 0 bit number

ID : 0~30※

- Data2 = 0x0D- Data3 저해상도 고해상도= 0( ), 1( )- Data4 = Data3- Checksum = (Data1 XOR Data2 XOR Data3 XOR Data4) AND 0x7F응답 패킷▶

1 byte 1 byte새 해상도 새 해상도

새 해상도- 저해상도 고해상도= 0( ), 1( )

Page 21: AI MOTOR-701 1001 manual v1.03 korean · 2015. 1. 21. · AIMOTOR-701,1001 설명서 Ver 1.03 저희제품을구입해주셔서감사합니다 이설명서에는. AI MOTOR - 701,

해상도 읽기 명령 (Resolution Read Command)의 해상도를 읽어오는 명령입니다AI MOTOR .

명령 패킷▶

1byte 1byte 1byte 1byte 1byte 1byteHeader Data1 Data2 Data3 Data4 Checksum

- Header 패킷 시작= 0xFF( )

- Data1 =7 (=0b111) ID7 6 5 4 3 2 1 0 bit number

ID : 0~30※

- Data2 = 0x0E- Data3 임의값=- Data4 임의값=- Checksum = (Data1 XOR Data2 XOR Data3 XOR Data4) AND 0x7F응답 패킷▶

1 byte 1 byte해상도 해상도

해상도- 저해상도 고해상도= 0( ), 1( )

과전류 기준 설정 명령 (Threshold of Over-Current Set Command)의 과전류 기준을 설정하는 명령입니다AI MOTOR .

참고 사항 과전류 제한이 발생할 경우 수동 모드 상태로 바뀝니다: , .※

명령 패킷▶

1byte 1byte 1byte 1byte 1byte 1byteHeader Data1 Data2 Data3 Data4 Checksum

- Header 패킷 시작= 0xFF( )

- Data1 =7 (=0b111) ID7 6 5 4 3 2 1 0 bit number

ID : 0~30※

- Data2 = 0x0F- Data3 비례 상수 단위의 과전류 기준= 22~54 (= × mA )

ex) 22 0.054468085 × 403.9 mA≒

- Data4 = Data3- Checksum = (Data1 XOR Data2 XOR Data3 XOR Data4) AND 0x7F응답 패킷▶

1 byte 1 byte새 과전류기준

새 과전류기준

새 과전류 기준-비례 상수 단위의 과전류 기준= 22~54 (= × mA )

Page 22: AI MOTOR-701 1001 manual v1.03 korean · 2015. 1. 21. · AIMOTOR-701,1001 설명서 Ver 1.03 저희제품을구입해주셔서감사합니다 이설명서에는. AI MOTOR - 701,

과전류 기준 읽기 명령 (Threshold of Over-Current Read Command)의 과전류 기준을 읽어오는 명령입니다AI MOTOR .

명령 패킷▶

1byte 1byte 1byte 1byte 1byte 1byteHeader Data1 Data2 Data3 Data4 Checksum

- Header 패킷 시작= 0xFF( )

- Data1 =7 (=0b111) ID7 6 5 4 3 2 1 0 bit number

ID : 0~30※

- Data2 = 0x10- Data3 임의값=- Data4 임의값=- Checksum = (Data1 XOR Data2 XOR Data3 XOR Data4) AND 0x7F응답 패킷▶

1 byte 1 byte과전류 기준 과전류 기준

이동 범위 설정 명령 (Bound Set Command)의 출력축의 이동 범위를 설정하는 명령입니다AI MOTOR .

명령 패킷▶

1byte 1byte 1byte 1byte 1byte 1byteHeader Data1 Data2 Data3 Data4 Checksum

- Header 패킷 시작= 0xFF( )

- Data1 =7 (=0b111) ID7 6 5 4 3 2 1 0 bit number

ID : 0~30※

- Data2 = 0x11- Data3 최저 위치= 0~254( )- Data4 최고 위치= 0~254( )- Checksum = (Data1 XOR Data2 XOR Data3 XOR Data4) AND 0x7F응답 패킷▶

1 byte 1 byte새 최저위치

새 최고위치

Page 23: AI MOTOR-701 1001 manual v1.03 korean · 2015. 1. 21. · AIMOTOR-701,1001 설명서 Ver 1.03 저희제품을구입해주셔서감사합니다 이설명서에는. AI MOTOR - 701,

이동 범위 읽기 명령 (Bound Read Command)의 출력축의 이동 범위를 읽어오는 명령입니다AI MOTOR .

명령 패킷▶

1byte 1byte 1byte 1byte 1byte 1byteHeader Data1 Data2 Data3 Data4 Checksum

- Header 패킷 시작= 0xFF( )

- Data1 =7 (=0b111) ID7 6 5 4 3 2 1 0 bit number

ID : 0~30※

- Data2 = 0x12- Data3 임의값=- Data4 임의값=- Checksum = (Data1 XOR Data2 XOR Data3 XOR Data4) AND 0x7F응답 패킷▶

1 byte 1 byte최저 위치 최고 위치

Page 24: AI MOTOR-701 1001 manual v1.03 korean · 2015. 1. 21. · AIMOTOR-701,1001 설명서 Ver 1.03 저희제품을구입해주셔서감사합니다 이설명서에는. AI MOTOR - 701,

위치 제어 기능2.4.사용자가 의 범위에서 원하는 절대 위치를 알려주면 의 출력단0~254 AI MOTOR이 원하는 위치로 이동하는 기능이며 위치 제어 명령 에, (Position Send Command)의해 실행됩니다 이 때 위치는 해상도에 따라 절대 위치가 다르므로 유의하시기.바랍니다.

저해상도 모드 (Low Resolution Mode)위치 제어 범위는 이고 단위 각은 약 입니다0 ~ 332 1.307 .゚ ゚

위치 0 위치 128 위치 254그림 저해상도 모드에서의 위치12.

주의 사항 연결부 를 장착했을 때 범위내에서 동작: 1, 2, 10 66 ~ 207 ,※

연결부 을 장착했을 때에는 또는 범위6 43 ~ 186 86 ~ 229에서 동작

고해상도 모드 (High Resolution Mode)위치 제어 범위는 이고 단위 각은 약 입니다0 ~ 166 0.654 .゚ ゚

위치 0 위치 128 위치 254그림 고해상도 모드에서의 위치13.

Page 25: AI MOTOR-701 1001 manual v1.03 korean · 2015. 1. 21. · AIMOTOR-701,1001 설명서 Ver 1.03 저희제품을구입해주셔서감사합니다 이설명서에는. AI MOTOR - 701,

부록3.

보드3.1. RS-232보드는 를 또는 다른 컨트롤러와 연결할 때 신호 레벨을RS-232 AI MOTOR PC

맞춰주는 역할을 합니다 그림 는 보드를 이용하여 와 를. 14 RS-232 AI MOTOR PC연결하는 방법을 나타냅니다.

그림 보드의 기능14. RS-232

그림 와 의 연결 모습15. AI MOTOR PC

그림 보드의 회로도16. RS-232

VIN1

GND2

SD3BP 4

VOUT 5

U2

LP2985 C7103

C610uF R1

470

CR1LED

C810uF

C11uF

C21uF

C31uF

C4

1uF

+5V

13

45

11

10

12

9

2

6

14

7

13

8

16

15

U1

MAX232

C51uF

1234

5678

CN1

HEADER8B

1234

5678

CN3

HEADER8B

1234

5678

CN5

HEADER8B

1234

5678

CN4

HEADER8B

1234

5678

CN2

HEADER8B

VCC VCC

VCC VCC

VCC

VCC

VCC

VCC

VCC

VCC

2

1

3

4

5

SW1

POWER

1122

Battery_pack

123

Power_supply

VCC

112233

CN7

PC

+5VVCC

Rxd

Txd

TX_of_PC

RX_of_PC

TxdRxd

RxdTxd

RxdTxd

RxdTxd

RxdTxdTxd Txd

Txd

Txd

TxdRxd

Rxd

Rxd Rxd

Rxd

RX_of_PCTX_of_PC

PCRS-232보드

TTL 레벨 RS-232 레벨

Page 26: AI MOTOR-701 1001 manual v1.03 korean · 2015. 1. 21. · AIMOTOR-701,1001 설명서 Ver 1.03 저희제품을구입해주셔서감사합니다 이설명서에는. AI MOTOR - 701,

의 통신 속도 설정 예3.2. MCU를 이용하여 를 제어할 때 아래와 같이 설정하여 통신 에러를 최MCU AI MOTOR

소화하기를 권장합니다.

패밀리 사용MCS51 (Timer1 , Mode1)클럭[Mhz] SMOD TH1 통신속도[bps] Error[%]

7.3728 0 248 2400 07.3728 1 240 2400 07.3728 0 252 4800 07.3728 1 248 4800 07.3728 0 254 9600 07.3728 1 252 9600 07.3728 0 255 19200 07.3728 1 254 19200 07.3728 1 255 38400 011.0592 0 244 2400 011.0592 1 232 2400 011.0592 0 250 4800 011.0592 1 244 4800 011.0592 0 253 9600 011.0592 1 250 9600 011.0592 1 253 19200 011.0592 1 255 57600 014.7456 0 240 2400 014.7456 1 224 2400 014.7456 0 248 4800 014.7456 1 240 4800 014.7456 0 252 9600 014.7456 1 248 9600 014.7456 0 254 19200 014.7456 1 252 19200 014.7456 0 255 38400 014.7456 1 254 38400 022.1184 0 232 2400 022.1184 1 208 2400 022.1184 0 244 4800 022.1184 1 232 4800 022.1184 0 250 9600 022.1184 1 244 9600 022.1184 0 253 19200 022.1184 1 250 19200 022.1184 1 253 38400 022.1184 0 255 57600 022.1184 1 254 57600 022.1184 1 255 115200 0

Page 27: AI MOTOR-701 1001 manual v1.03 korean · 2015. 1. 21. · AIMOTOR-701,1001 설명서 Ver 1.03 저희제품을구입해주셔서감사합니다 이설명서에는. AI MOTOR - 701,

80c196Kx(Mode1)클럭[Mhz] SP_BAUD 통신속도[bps] Error[%]

7.3728 80BF 2400 07.3728 805F 4800 07.3728 802F 9600 07.3728 8017 19200 07.3728 800B 38400 07.3728 8007 57600 07.3728 8003 115200 011.0592 811F 2400 011.0592 808F 4800 011.0592 8047 9600 011.0592 8023 19200 011.0592 8011 38400 011.0592 800B 57600 011.0592 8005 115200 011.0592 8002 230400 014.7456 817F 2400 014.7456 80BF 4800 014.7456 805F 9600 014.7456 802F 19200 014.7456 8017 38400 014.7456 800F 57600 014.7456 8007 115200 014.7456 8003 230400 0

패밀리PIC클럭[Mhz] BRGH SPBRG 통신속도[bps] Error[%]

3.6864 0 23 2400 03.6864 0 11 4800 03.6864 0 5 9600 03.6864 0 2 19200 03.6864 0 0 57600 07.3728 0 47 2400 07.3728 0 23 4800 07.3728 0 11 9600 07.3728 0 5 19200 07.3728 0 2 38400 07.3728 0 1 57600 07.3728 0 0 115200 011.0592 0 71 2400 011.0592 0 35 4800 011.0592 0 17 9600 011.0592 0 8 19200 011.0592 0 2 57600 014.7456 0 95 2400 014.7456 0 47 4800 014.7456 0 11 19200 014.7456 0 5 38400 014.7456 0 3 57600 014.7456 0 1 115200 014.7456 0 0 230400 0

Page 28: AI MOTOR-701 1001 manual v1.03 korean · 2015. 1. 21. · AIMOTOR-701,1001 설명서 Ver 1.03 저희제품을구입해주셔서감사합니다 이설명서에는. AI MOTOR - 701,

패밀리AVR클럭[Mhz] UBRRH UBRRL 통신속도[bps] Error[%]

7.3728 0 191 2400 07.3728 0 95 4800 07.3728 0 47 9600 07.3728 0 23 19200 07.3728 0 11 38400 07.3728 0 7 57600 07.3728 0 3 115200 07.3728 0 1 230400 07.3728 0 0 460800 014.7456 1 127 2400 014.7456 0 191 4800 014.7456 0 95 9600 014.7456 0 47 19200 014.7456 0 23 38400 014.7456 0 15 57600 014.7456 0 7 115200 014.7456 0 3 230400 014.7456 0 1 460800 0

Page 29: AI MOTOR-701 1001 manual v1.03 korean · 2015. 1. 21. · AIMOTOR-701,1001 설명서 Ver 1.03 저희제품을구입해주셔서감사합니다 이설명서에는. AI MOTOR - 701,

의 응용 예3.3. AI MOTOR

그림 족 로봇17. 4그림 휴머노이드 로봇18.

그림 개를 이용한 팬 틸트 구조물19. AI MOTOR 2 -

Page 30: AI MOTOR-701 1001 manual v1.03 korean · 2015. 1. 21. · AIMOTOR-701,1001 설명서 Ver 1.03 저희제품을구입해주셔서감사합니다 이설명서에는. AI MOTOR - 701,

의 응용 예제 프로그램3.4. AI MOTOR (1)다음은 를 이용한 의사 프로그램 예제입니다 시리얼 통신 관련 함수AI MOTOR C .는 어떤 를 쓰는가에 따라 달라질 수 있으므로 사용하실 의 관련 자료를CPU CPU참고하여 추가하시기 바랍니다.

/*============================================================================*/응용 예제 프로그램/* AI MOTOR */

동작 설명 출력 샤프트를 밀면 미는 방향으로 회전하다가 정지/* : */동작 원리 의 위치 피드백 기능을 이용하여 위치 변화가 일어나면/* : AI MOTOR , */

회전 방향을 판단하여 회전시킴/* *//*============================================================================*/#define HEADER 0xff#define NULL 0#define ROTATE_CCW 3#define ROTATE_CW 4#define TIME_OUT1 동작 모드 수신 대기 시간 에서 최대35 // 2400bps 35ms#define TIME_OUT2 설정 모드 수신 대기 시간 에서 최대155 // 2400bps 155ms

함수 원형 선언부 시작/* ------------------------------------------------------*/시리얼 통신 관련 함수 에 따라 달라짐/*------------------ (CPU ) ----------------*/

시리얼포트로 바이트를 송신하는 함수void SendByte(char data); // 1시리얼포트로부터 바이트를 수신하는 함수void GetByte(char timeout); // 1관련 함수/*------------------ AI-Motor --------------------------------------*/

void SendOperCommand(char Data1, char Data2);void SendSetCommand(char Data1, char Data2, char Data3, char Data4);char PosSend(char ServoID, char SpeedLevel, char Position);char PosRead(char ServoID);char ActDown(char ServoID);char PowerDown(void);char Rotation360(char ServoID, char SpeedLevel, char RotationDir);void SyncPosSend(char LastID, char SpeedLevel, char *TargetArray, char Index);char BaudrateSet(char ServoID, char NewBaud);char GainSet(char ServoID, char *NewPgain, char *NewDgain);char IdSet(char ServoID, char NewId);char GainRead(char ServoID, char *Pgain, char *Dgain);char ResolSet(char ServoID, char NewResol);char ResolRead(char ServoID);char OverCTSet(char ServoID, char NewOverCT);char OverCTRead(char ServoID);char BoundSet(char ServoID, char *NewLBound, char *NewUBound);char BoundRead(char ServoID, char *LBound, char *UBound);

함수 원형 선언부 끝/*------------------------------------------------------- */

void main(void){

char i, old_position;

여러 주변장치 초기화 통신 포트 준비Initialize(); // ( )

id = 0;가 인 모듈의 최초 위치 읽기old_position = ActDown(id); // ID 0

while(1) {현재 위치 읽어 오기now_position = ActDown(id); //

위치값이 줄어들었으면 반시계 방향으로 초 회전 후 초간 수동 모드// , 1 1if(now_position<old_position) {

Rotation360(id, 10, ROTATE_CCW);delay_ms(1000);ActDown(id);delay_ms(1000);

}

Page 31: AI MOTOR-701 1001 manual v1.03 korean · 2015. 1. 21. · AIMOTOR-701,1001 설명서 Ver 1.03 저희제품을구입해주셔서감사합니다 이설명서에는. AI MOTOR - 701,

위치값이 늘어났으면 시계 방향으로 초 회전 후 초간 수동 모드// , 1 1else if(now_position>old_position) {

Rotation360(id, 10, ROTATE_CW);delay_ms(1000);ActDown(id);delay_ms(1000);

}현재 위치 읽어서 저장old_position = ActDown(id); // ï

delay_ms(300);}

}

기본 함수 정의 시작//////////////////////////////// ////////////////////////////******************************************************************************/

에게 동작 명령 패킷 바이트 을 보내기 위한 함수/* AI-motor (4 ) *//* Input : Data1, Data2 *//* Output : None *//******************************************************************************/void SendOperCommand(char Data1, char Data2){

char CheckSum;CheckSum = (Data1^Data2)&0x7f;SendByte(HEADER);SendByte(Data1);SendByte(Data2);SendByte(CheckSum);

}

/******************************************************************************/에게 설정 명령 패킷 바이트 을 보내기 위한 함수/* AI-motor (6 ) */

/* Input : Data1, Data2, Data3, Data4 *//* Output : None *//******************************************************************************/void SendSetCommand(char Data1, char Data2, char Data3, char Data4){

char CheckSum;CheckSum = (Data1^Data2^Data3^Data4)&0x7f;SendByte(HEADER);SendByte(Data1);SendByte(Data2);SendByte(Data3);SendByte(Data4);SendByte(CheckSum);

}

/******************************************************************************/에게 위치 제어 명령 을 보내기 위한 함수/* AI-motor (Position Send Command) */

/* Input : ServoID, SpeedLevel, Position *//* Output : Current *//******************************************************************************/char PosSend(char ServoID, char SpeedLevel, char Position){

char Current;SendOperCommand((SpeedLevel<<5)|ServoID, Position);GetByte(TIME_OUT1);Current = GetByte(TIME_OUT1);return Current;

}

Page 32: AI MOTOR-701 1001 manual v1.03 korean · 2015. 1. 21. · AIMOTOR-701,1001 설명서 Ver 1.03 저희제품을구입해주셔서감사합니다 이설명서에는. AI MOTOR - 701,

/******************************************************************************/에게 위치 읽기 명령 을 보내기 위한 함수/* AI-motor (Position Read Command) */

/* Input : ServoID *//* Output : Position *//******************************************************************************/char PosRead(char ServoID){

char Position;SendOperCommand(0xa0|ServoID, NULL);GetByte(TIME_OUT1);Position = GetByte(TIME_OUT1);return Position;

}

/******************************************************************************/에게 수동 모드 명령 을 보내기 위한 함수/* AI-motor (Act Down Command) */

/* Input : ServoID *//* Output : Position *//******************************************************************************/char ActDown(char ServoID){

char Position;SendOperCommand(0xc0|ServoID, 0x10);GetByte(TIME_OUT1);Position = GetByte(TIME_OUT1);return Position;

}

/******************************************************************************/에게 절전 모드 명령 을 보내기 위한 함수/* AI-motor (Power Down Command) */

/* Input : None */성공이면 수신된 실패이면/* Output : ServoID, 0xff */

/******************************************************************************/char PowerDown(void){

char ServoID;SendOperCommand(0xdf, 0x20);ServoID = GetByte(TIME_OUT1);GetByte(TIME_OUT1);if(ServoID<31) return ServoID;return 0xff; //Receive error

}

/******************************************************************************/에게 도 회전명령 을 보내기 위한 함수/* AI-motor 360 (360degrees Rotation Command) */

/* Input : ServoID, SpeedLevel, RotationDir *//* Return : Rotation Number *//******************************************************************************/char Rotation360(char ServoID, char SpeedLevel, char RotationDir){

char ServoPos, RotNum;if(RotationDir==ROTATE_CCW) {

SendOperCommand((6<<5)|ServoID, (ROTATE_CCW<<4)|SpeedLevel);}else if(RotationDir==ROTATE_CW) {

SendOperCommand((6<<5)|ServoID, (ROTATE_CW<<4)|SpeedLevel);}RotNum = GetByte(TIME_OUT1);GetByte(TIME_OUT1);return RotNum;

}

Page 33: AI MOTOR-701 1001 manual v1.03 korean · 2015. 1. 21. · AIMOTOR-701,1001 설명서 Ver 1.03 저희제품을구입해주셔서감사합니다 이설명서에는. AI MOTOR - 701,

/******************************************************************************/에게 동기화 위치 제어 명령 을/* AI-motor (Synchronous Position Send Command) */

보내기 위한 함수/* *//* Input : LastID, SpeedLevel, *TargetArray, Index *//* Return : None *//******************************************************************************/void SyncPosSend(char LastID, char SpeedLevel, char *TargetArray, char Index){

int i;char CheckSum;i = 0;CheckSum = 0;SendByte(HEADER);SendByte((SpeedLevel<<5)|0x1f);SendByte(LastID+1);while(1) {

if(i>LastID) break;SendByte(TargetArray[Index*(LastID+1)+i]);CheckSum = CheckSum ^ TargetArray[Index*(LastID+1)+i];i++;

}CheckSum = CheckSum & 0x7f;SendByte(CheckSum);

}

/******************************************************************************/에게 통신 속도 설정 명령 을 보내기 위한 함수/* AI-motor (Baudrate Set Command) */

/* Input : ServoID, NewBaud */설정 성공이면 실패이면/* Return : New Baudrate, 0xff */

/******************************************************************************/char BaudrateSet(char ServoID, char NewBaud){

SendSetCommand((7<<5)|ServoID, 0x08, NewBaud, NewBaud);GetByte(TIME_OUT2);if(GetByte(TIME_OUT2)==NewBaud) return NewBaud;return 0xff;

}

/******************************************************************************/에게 제어 이득 설정 명령 을 보내기 위한 함수/* AI-motor (Gain Set Command) */

/* Input : ServoID, *NewPgain, *NewDgain */설정 성공이면 실패이면/* Return : 1, 0 */

/******************************************************************************/char GainSet(char ServoID, char *NewPgain, char *NewDgain){

char Data1,Data2;SendSetCommand((7<<5)|ServoID, 0x09, *NewPgain, *NewDgain);Data1 = GetByte(TIME_OUT2);Data2 = GetByte(TIME_OUT2);if((Data1==*NewPgain) && (Data2==*NewDgain)) return 1;return 0;

}

Page 34: AI MOTOR-701 1001 manual v1.03 korean · 2015. 1. 21. · AIMOTOR-701,1001 설명서 Ver 1.03 저희제품을구입해주셔서감사합니다 이설명서에는. AI MOTOR - 701,

/******************************************************************************/에게 설정 명령 을 보내기 위한 함수/* AI-motor ID (ID Set Command) */

/* Input : ServoID, NewId */설정 성공이면 실패이면/* Return : New ID, 0xff */

/******************************************************************************/char IdSet(char ServoID, char NewId){

SendSetCommand((7<<5)|ServoID, 0x0a, NewId, NewId);GetByte(TIME_OUT2);if(GetByte(TIME_OUT2)==NewId) return NewId;return 0xff;

}

/******************************************************************************/에게 제어 이득 읽기 명령 을 보내기 위한 함수/* AI-motor (Gain Read Command) */

/* Input : ServoID, *NewPgain, *NewDgain */읽기 성공이면 실패이면/* Return : 1, 0 */

/******************************************************************************/char GainRead(char ServoID, char *Pgain, char *Dgain){

SendSetCommand((7<<5)|ServoID, 0x0c, 0, 0);*Pgain = GetByte(TIME_OUT1);*Dgain = GetByte(TIME_OUT1);if((*Pgain>0) && (*Pgain<51) && (*Dgain<101)) return 1;return 0;

}

/******************************************************************************/에게 해상도 설정 명령 을 보내기 위한 함수/* AI-motor (Resolution Set Command) */

/* Input : ServoID, NewResol */설정 성공이면 실패이면/* Return : New Resolution, 0xff */

/******************************************************************************/char ResolSet(char ServoID, char NewResol){

SendSetCommand((7<<5)|ServoID, 0x0d, NewResol, NewResol);GetByte(TIME_OUT2);if(GetByte(TIME_OUT2)==NewResol) return NewResol;return 0xff;

}

/******************************************************************************/에게 해상도 읽기 명령 을 보내기 위한 함수/* AI-motor (Resolution Read Command) */

/* Input : ServoID */읽기 성공이면 실패이면/* Return : Resolution, 0xff */

/******************************************************************************/char ResolRead(char ServoID){

char Data1;SendSetCommand((7<<5)|ServoID, 0x0e, 0, 0);sciRxReady(TIME_OUT1);Data1=sciRxReady(TIME_OUT1);if(Data1<2) return Data1;return 0xff;

}

Page 35: AI MOTOR-701 1001 manual v1.03 korean · 2015. 1. 21. · AIMOTOR-701,1001 설명서 Ver 1.03 저희제품을구입해주셔서감사합니다 이설명서에는. AI MOTOR - 701,

/******************************************************************************/과전류 기준 설정 명령 을 보내기 위한 함수/* (Overcurrent Threshold Set Command) */

/* Input : ServoID, NewOverCT */설정 성공이면 실패이면/* Return : New Overcurrent Threshold, 0xff */

/******************************************************************************/char OverCTSet(char ServoID, char NewOverCT){

char Data1;SendSetCommand((7<<5)|ServoID, 0x0f, NewOverCT, NewOverCT);sciRxReady(TIME_OUT2);Data1=sciRxReady(TIME_OUT2);if(Data1!=0xff) return Data1;return 0xff;

}

/******************************************************************************/과전류 기준 읽기명령 을 보내기 위한 함수/* (Overcurrent Threshold Read Command) */

/* Input : ServoID */설정 성공이면 실패이면/* Return : Overcurrent Threshold, 0xff */

/******************************************************************************/char OverCTRead(char ServoID){

char Data1;SendSetCommand((7<<5)|ServoID, 0x10, 0, 0);sciRxReady(TIME_OUT1);Data1=sciRxReady(TIME_OUT1);if(Data1!=0xff) return Data1;return 0xff;

}

/******************************************************************************/에게 이동 범위 설정 명령 을 보내기 위한 함수/* AI-motor (Bound Set Command) */

/* Input : ServoID, *NewLBound, *NewUBound */설정 성공이면 실패이면/* Return : 1, 0 */

/******************************************************************************/char BoundSet(char ServoID, char *NewLBound, char *NewUBound){

char Data1,Data2;SendSetCommand((7<<5)|ServoID, 0x11, *NewLBound, *NewUBound);Data1 = GetByte(TIME_OUT2);Data2 = GetByte(TIME_OUT2);if((Data1==*NewLBound) && (Data2==*NewUBound)) return 1;return 0;

}

/******************************************************************************/에게 이동 범위 읽기 명령 을 보내기 위한 함수/* AI-motor (Bound Read Command) */

/* Input : ServoID, *NewLBound, *NewUBound */설정 성공이면 실패이면/* Return : 1, 0 */

/******************************************************************************/char BoundRead(char ServoID, char *LBound, char *UBound){

SendSetCommand((7<<5)|ServoID, 0x12, 0, 0);*LBound = GetByte(TIME_OUT1);*UBound = GetByte(TIME_OUT1);if(*LBound<*UBound) return 1;return 0;

}기본 함수 정의 끝//////////////////////////////// /////////////////////////////

Page 36: AI MOTOR-701 1001 manual v1.03 korean · 2015. 1. 21. · AIMOTOR-701,1001 설명서 Ver 1.03 저희제품을구입해주셔서감사합니다 이설명서에는. AI MOTOR - 701,

의 응용 예제 프로그램3.5. AI MOTOR (2)

/*============================================================================*/응용 예제 프로그램/* AI MOTOR */

동작 설명 동기화 위치제어 명령 사용 예제/* : */동작 원리 의 동기화 위치 제어 기능을 이용하여 여러 개의 모듈을/* : AI MOTOR , */

동시에 제어/* *//*============================================================================*/

나머지 부분은 예제 을 참조- (1) -

void main(void){

인 에 대한 동작 테이블 프레임// ID 0~4 AI-motor (3 )char table[5*3]= { 10, 0, 20,100, 20,

125, 30, 0, 50,150,55,120,200, 88, 5};

여러 주변장치 초기화 통신 포트 준비Initialize(); // ( )

인 를 속도 으로 동기화 위치제어// ID 0~4 AI-motor 0SyncPosSend(4, 0, table, 1);

초간 대기delay_ms(1000); // 1인 를 속도 로 동기화 위치제어// ID 0~2 AI-motor 1

SyncPosSend(2, 1, table, 0);초간 대기delay_ms(1000); // 1

인 를 속도 로 동기화 위치제어// ID 0~1 AI-motor 3SyncPosSend(1, 3, table, 2);

초간 대기delay_ms(1000); // 1}