You are on page 1of 22

Smart Peripheral Controller

Servo Motor Controller

Trademarks & Copyright


AT, IBM, and PC are trademarks of International Business Machines Corp.
Pentium is a registered trademark of Intel Corporation.
Windows is a registered trademark of Microsoft Corporation.
HyperTerminal is copyright by Microsoft Corporation and Hilgraeve Inc.
CodeVisionAVR is copyright by Pavel Haiduc, HP InfoTech s.r.l.

Daftar Isi
1

Pendahuluan.............................................................................................
1.1
Spesifikasi SPC SERVO MOTOR CONTROLLER..................................
1.2
Sistem yang Dianjurkan............................................................................

3
3
3

Perangkat Keras SPC SERVO MOTOR CONTROLLER...............................


2.1
Tata Letak Komponen SPC SERVO MOTOR CONTROLLER..............
2.2
Konektor dan Pengaturan Jumper..........................................................

4
4
4

Perangkat Lunak SPC SERVO MOTOR CONTROLLER..............................


3.1
Antarmuka UART........................................................................................
3.2
Antarmuka I2C.............................................................................................
3.3
Command Set..............................................................................................
3.3.1. Ping...............................................................................................
3.3.2. Get Version.................................................................................
3.3.3. Run Servo.....................................................................................
3.3.4. Set Home.....................................................................................
3.3.5. Go To Home................................................................................
3.3.6. Start Sequence...........................................................................
3.3.7. Read Sequence Status..............................................................
3.3.8. Read Servo Status & Position..................................................
3.3.9. Enable/Disable Servo...............................................................

6
6
6
7
8
8
9
10
11
12
13
14
15

Perangkat Lunak SPC SERVO MOTOR CONTROLLER..............................


4.1.
Sequence(s) Editor......................................................................................
4.2.
Command Tester.........................................................................................

15
16
18

Prosedur Pengujian..................................................................................

19

Contoh Aplikasi dan Program..................................................................

19

Lampiran
A.

Skematik SPC SERVO MOTOR CONTROLLER.....................................

22

1.

PENDAHULUAN
Smart Peripheral Controller / SPC SERVO MOTOR CONTROLLER merupakan
sebuah modul pengendali motor servo yang mampu digunakan untuk
mengendalikan 20 buah motor servo secara serentak maupun sekuensial.
Modul ini dilengkapi dengan jalur komunikasi UART RS-232, UART TTL, dan I 2C.
Jika menggunakan jalur komunikasi I2C, maka beberapa SPC SERVO MOTOR
CONTROLLER dapat digunakan untuk mengontrol sampai dengan maksimum
160 buah motor servo.
SPC SERVO MOTOR CONTROLLER dapat digunakan untuk mengendalikan
motor servo standar maupun kontinu serta dilengkapi dengan fasilitas untuk
menyimpan sekuen gerakan sehingga sesuai untuk aplikasi-aplikasi robotik
atau aplikasi yang menggunakan motor servo lainnya.

1.1.

SPESIFIKASI SPC SERVO MOTOR CONTROLLER


Spesifikasi SPC SERVO MOTOR CONTROLLER sebagai berikut:
Catu daya untuk SPC SERVO MOTOR CONTROLLER terpisah dengan catu
daya untuk motor servo.
Catu daya untuk SPC SERVO MOTOR CONTROLLER dapat diperoleh dari
sumber catu daya dengan tegangan 6,5 12 Volt.
Tiap modul SPC mampu mengendalikan 20 motor servo.
Resolusi pulsa kontrol servo sebesar 1 s.
Dilengkapi dengan kemampuan servo ramping.
Dilengkapi dengan kemampuan membaca pulsa kontrol (posisi) servo.
Dilengkapi dengan kemampuan Enable dan Disable servo.
Dilengkapi dengan kemampuan menyimpan dan menjalankan sampai
dengan maksimal 32 sekuen gerakan.
Dilengkapi dengan kemampuan menyimpan dan kembali ke posisi home
(default).
Tersedia antarmuka UART RS-232, UART TTL, dan I2C.
Jika menggunakan I2C, SPC SERVO MOTOR CONTROLLER dapat dicascade hingga 8 modul.

1.2.

SISTEM YANG DIANJURKAN


Sistem yang dianjurkan untuk penggunaan SPC SERVO MOTOR CONTROLLER
adalah:
Perangkat keras:
PC AT Pentium IBM Compatible dengan port USB.
DT-AVR Low Cost Series.
DVD-ROM Drive dan Hard disk.
Perangkat lunak:
Sistem operasi Windows XP.
CodeVisionAVR.
File yang ada pada CD/DVD program:
TESTSERVO.C, TESTSERVO.HEX, SERVOCON.EXE, MANUAL SPC SERVO
MOTOR CONTROLLER.PDF dan QUICK START SPC SERVO MOTOR
CONTROLLER.PDF.

2.

PERANGKAT KERAS SPC SERVO MOTOR CONTROLLER

2.1.

TATA LETAK KOMPONEN SPC SERVO MOTOR CONTROLLER

2.2.

KONEKTOR DAN PENGATURAN JUMPER


Konektor J23 berfungsi sebagai konektor untuk catu daya modul.
Pin
1
2

Nama
Fungsi
GND
Titik referensi untuk catu daya input
6,5-12VDC Terhubung ke catu daya untuk input (6,5 12 Volt)

Konektor J24 berfungsi sebagai konektor untuk catu daya motor servo.
Pin
1

Nama
GND

VEXT

Fungsi
Titik referensi untuk catu daya input
Terhubung ke catu daya untuk motor servo.
Lihat spesifikasi motor servo yang digunakan untuk
memastikan nilai tegangan yang diberikan.

Konektor RJ11 UART RS232 (J25) berfungsi sebagai


konektor untuk antarmuka UART RS-232.
Pin
2
3
4
5

Nama
NC
GND
TX
RX

Fungsi
Tidak terhubung kemana-mana
Titik referensi
Jalur data serial keluar dari modul
Jalur data serial masuk ke modul

J25 Tampak Depan

5 4 3 2

RX GND
TX

Konektor UART TTL (J26) berfungsi sebagai konektor untuk antarmuka UART
TTL.
Pin
1
2
3

Nama
GND
TX
RX

Fungsi
Titik referensi
Jalur data serial (TTL) keluar dari modul SPC
Jalur data serial (TTL) masuk ke modul SPC

Konektor I2C PORT (J27) berfungsi sebagai konektor untuk antarmuka I2C.
Pin
1
2
3

Nama
GND
SDA
SCL

Fungsi
Titik referensi
I2C-bus data input / output
I2C-bus clock input

Jumper PULL-UP (J28) berfungsi untuk mengaktifkan resistor pull-up untuk pin
SDA dan SCL pada antarmuka I2C.
Jumper PULL-UP
J28

Fungsi
Pull-up tidak aktif
(jumper terlepas)

SCL SDA

Pull-up aktif
(jumper terpasang)
SCL SDA
Penting !
Apabila lebih dari satu modul dihubungkan pada I 2C-bus maka jumper PULLUP (SCL/SDA) salah satu modul saja yang perlu dipasang.
Jumper ADDR (J2) berfungsi untuk mengatur alamat I2C dari modul SPC SERVO
MOTOR CONTROLLER.
Alamat I2C

J2 (A2)
Pin 1-2

J2 (A1)
Pin 3-4

J2(A0)
Pin 5-6

Alamat Tulis I2C

Alamat Baca I2C

0xE0

0xE1

0xE2

0xE3

0xE4

0xE5

0xE6

0xE7

0xE8

0xE9

0xEA

0xEB

0xEC

0xED

0xEE

0xEF

Keterangan:
: jumper terpasang
5

Penting!
Perubahan alamat I2C harus dilakukan saat modul SPC tidak terhubung ke catu
daya.
Konektor SERVO1 - SERVO20 (J3 - J22) sebagai konektor untuk motor servo.
Pin
1
2
3

Nama
SRV-GND
S-PWR
SERVOx

Fungsi
Titik referensi catu daya ke motor servo
Tegangan catu daya ke motor servo
Output pulsa ke motor servo

3.

PERANGKAT LUNAK SPC SERVO MOTOR CONTROLLER


SPC SERVO MOTOR CONTROLLER memiliki antarmuka UART (RS-232/TTL)
dan I2C yang dapat digunakan untuk menerima perintah atau mengirim data.

3.1.

ANTARMUKA UART
Parameter komunikasi UART adalah sebagai berikut:
38400 bps
8 data bit
1 stop bit
tanpa parity bit
tanpa flow control
Semua perintah dikirim menggunakan karakter ASCII (angka 123 dikirim
dalam bentuk 3 karakter "123" atau byte ASCII 0x31 0x32 0x33). Spasi
kosong (0x20) digunakan sebagai separator antar parameter perintah.
Karakter \r (bilangan desimal 13 atau bilangan hexadesimal 0x0D)
digunakan sebagai akhir perintah beserta parameternya.
Jika transmisi perintah berserta parameternya berhasil, maka SPC SERVO
MOTOR CONTROLLER akan mengirimkan string ACK. Jika perintah tidak
dikenal, maka SPC SERVO MOTOR CONTROLLER akan mengirimkan string
NCK. Sedangkan jika perintah dikenal tetapi parameter perintah salah,
maka SPC SERVO MOTOR CONTROLLER tidak akan mengirimkan balasan.
Baik ACK ataupun NCK akan selalu diikuti dengan karakter \r.
Perintah dan parameter yang bisa digunakan dapat dilihat pada bagian 3.3.

3.2.

ANTARMUKA I2C
Modul SPC SERVO MOTOR CONTROLLER memiliki antarmuka I 2C. Pada
antarmuka I2C ini, modul SPC SERVO MOTOR CONTROLLER bertindak sebagai
slave dengan alamat sesuai dengan telah ditentukan sebelumnya melalui
pengaturan jumper (lihat bagian 2.2). Antarmuka I2C pada modul SPC SERVO
MOTOR CONTROLLER mendukung bit rate sampai dengan maksimum 100 kHz.
Semua perintah yang dikirim melalui antarmuka I 2C diawali dengan start
condition dan kemudian diikuti dengan pengiriman 1 byte alamat modul SPC
SERVO MOTOR CONTROLLER. Setelah pengiriman alamat, selanjutnya master
harus mengirim 1 byte data yang berisi <nomor perintah> dan (jika
diperlukan) n-byte data parameter perintah. Selanjutnya, setelah seluruh
parameter perintah telah dikirim, urutan perintah diakhiri dengan stop
condition.
6

Berikut urutan yang harus dilakukan untuk mengirimkan perintah melalui


antarmuka I2C.
Start

Alamat Tulis
X

Command
X

... +

Parameter 1 (jika ada)

Stop

Parameter n (jika ada)


Jika transmisi perintah berserta parameternya berhasil, maka SPC SERVO
MOTOR CONTROLLER akan menulis respon hexadesimal 0x06
(Acknowledged/ACK) pada buffer I2C-nya. Sebaliknya jika perintah tidak
dikenal atau parameter perintah salah, maka SPC SERVO MOTOR
CONTROLLER
akan
menulis
respon
hexadesimal
0x15
(Not
2
Acknowledged/NCK) pada buffer I C-nya.
Master dapat mengirimkan perintah baca untuk membaca respon
<ACK/NCK> tersebut. Jika perintah yang telah dikirimkan merupakan
perintah yang meminta data dari modul SPC SERVO MOTOR CONTROLLER,
maka data-data tersebut dapat dibaca, setelah membaca respon, dengan
menggunakan urutan perintah baca.
Berikut urutan yang harus dilakukan untuk membaca respon dan/atau data
dari SPC SERVO MOTOR CONTROLLER.
Start

Alamat Baca
0

ACK / NCK
... +

Data 1 (jika ada)


X

Stop

Data n (jika ada)


Sebuah data/parameter yang memiliki range lebih besar dari 255 desimal
(lebih besar dari 1 byte) dikirim secara dua tahap. Satu byte data MSB
dikirim lebih dahulu kemudian diikuti dengan data LSB. Misalnya parameter
<ServoPulse> yang memiliki range 500 - 2500. Jika <ServoPulse> bernilai
1500 maka byte MSB yang dikirim adalah 5 dan byte LSB yang dikirim
adalah 220 (0xDC).
Perintah dan parameternya yang bisa digunakan dapat dilihat pada bagian
3.3.
3.3.

COMMAND SET
Berikut ini daftar lengkap perintah-perintah dalam antarmuka UART dan I2C.
7

3.3.1. PING
Fungsi
Command UART
Command I2C
Parameter
Respon UART
Respon I2C
Delay antara
Command dan
Respon
Keterangan

Menguji koneksi dan memastikan bahwa SPC SERVO


MOTOR CONTROLLER siap menerima perintah
PG\r
0x00
ACK jika perintah dikenali
NCK jika perintah tidak dikenali
0x06 jika perintah dikenali
0x15 jika perintah tidak dikenali
10 s
-

Contoh dengan antarmuka UART:


User
:
PG\r
SPC
:
ACK\r
Berikut ini contoh pseudo code C untuk menggunakan perintah ini dengan
antarmuka I2C (misalkan alamat I2C = 0xE0):
i2c_start();
i2c_write(0xE0);
i2c_write(0x00);
i2c_stop();

//
//
//
//

Start Condition
Tulis ke modul SPC SERVO CONTROLLER
Perintah Ping
Stop Condition

delay_us(10);

// delay 10 us

i2c_start();
i2c_write(0xE1);
temp = i2c_read(0);
i2c_stop();

//
//
//
//

Start Condition
Baca ke modul SPC SERVO CONTROLLER
Data Acknowledgement
Stop Condition

3.3.2. GET VERSION


Fungsi
Command UART
Command I2C
Parameter
Respon UART

Respon I2C

Delay antara
Command dan
Respon
Keterangan

Mengetahui versi firmware yang tertanam pada modul


SPC SERVO MOTOR CONTROLLER
VR\r
0x01
ACK jika perintah dikenali
NCK jika perintah tidak dikenali
String yang menyatakan versi firmware yang tertanam
pada modul SPC SERVO MOTOR CONTROLLER
0x06 jika perintah dikenali
0x15 jika perintah tidak dikenali
<Versi> versi firmware SPC SERVO MOTOR
CONTROLLER
<Revisi> revisi firmware SPC SERVO MOTOR
CONTROLLER
10 s
8

Contoh dengan antarmuka UART:


User
:
VR\r
SPC
:
ACK\r
SPCServoControl v0.1\r
Berikut ini contoh pseudo code C untuk menggunakan perintah ini dengan
antarmuka I2C (misalkan alamat I2C = 0xE0):
i2c_start();
i2c_write(0xE0);
i2c_write(0x01);
i2c_stop();

//
//
//
//

delay_us(10);

// delay 10 us

i2c_start();
//
i2c_write(0xE1);
//
temp1 = i2c_read(1);//
temp2 = i2c_read(1);//
temp3 = i2c_read(0);//
i2c_stop();
//

Start Condition
Tulis ke modul SPC SERVO CONTROLLER
Perintah Get Version Number
Stop Condition
Start Condition
Baca ke modul SPC SERVO CONTROLLER
Data Acknowledgement
Version Number
Revision Number
Stop Condition

3.3.3. RUN SERVO


Fungsi
Command UART
Command I2C
Parameter

Respon UART
Respon I2C
Delay antara
Command dan
Respon
Keterangan

Memutar motor servo tertentu


RN <ServoNum> <ServoPulse> <Rate>\r
0x02 <ServoNum> <ServoPulse> <Rate>
<ServoNum>
1 - 20 nomor motor servo yang akan diperintah.
<ServoPulse>
500 - 2500 lebar pulsa kontrol servo dengan
resolusi 1 s.
<Rate>
0 motor servo bergerak ke posisi tujuan sesuai
dengan spesifikasi kecepatan motor servo
yang digunakan.
1 - 100 motor servo bergerak ke posisi tujuan
dengan kecepatan sesuai dengan nilai
rate. Nilai 1 merupakan kecepatan
paling rendah. Semakin besar nilai
rate, semakin cepat motor servo
bergerak ke posisi tujuan.
ACK jika perintah dikenali
NCK jika perintah tidak dikenali
0x06 jika perintah dikenali
0x15 jika perintah tidak dikenali
15 s

Jika perintah ini dikirim lagi sebelum motor servo


sampai ke posisi tujuan, maka SPC SERVO MOTOR
CONTROLLER akan langsung menjalankan perintah
terakhir.
Perintah ini tidak tersimpan di EEPROM. Saat SPC
SERVO MOTOR CONTROLLER dinyalakan, tiap
motor servo akan kembali ke posisi Home.
9

Contoh dengan antarmuka UART untuk memerintah motor servo 1 untuk menuju
ke posisi lebar pulsa 1500 s dengan rate 10:
User
:
RN 1 1500 10\r
SPC
:
ACK\r
Berikut ini contoh pseudo code C untuk menggunakan perintah ini dengan
antarmuka I2C (misalkan alamat I2C = 0xE0):
i2c_start();
i2c_write(0xE0);
i2c_write(0x02);
i2c_write(1);
i2c_write(0x05);
i2c_write(0xDC);
i2c_write(10);
i2c_stop();

//
//
//
//
//
//
//
//

delay_us(15);

// delay 15 us

i2c_start();
//
i2c_write(0xE1);
//
temp1 = i2c_read(0);//
i2c_stop();
//

Start Condition
Tulis ke modul SPC SERVO CONTROLLER
Perintah Run Servo Motor
Nomor Motor Servo
Lebar pulsa kontrol (MSB)
Lebar pulsa kontrol (LSB)
Rate
Stop Condition
Start Condition
Baca ke modul SPC SERVO CONTROLLER
Data Acknowledgement
Stop Condition

3.3.4. SET HOME


Fungsi
Command UART
Command I2C
Parameter

Respon UART
Respon I2C
Delay antara
Command dan
Respon
Keterangan

Menentukan posisi Home untuk motor servo tertentu


ST <ServoNum> <ServoPulse>\r
0x03 <ServoNum> <ServoPulse>
<ServoNum>
1 - 20 nomor motor servo yang akan diperintah
<ServoPulse>
500 - 2500 lebar pulsa kontrol servo dengan
resolusi 1 s.
ACK jika perintah dikenali
NCK jika perintah tidak dikenali
0x06 jika perintah dikenali
0x15 jika perintah tidak dikenali
100 s

Perintah ini berfungsi untuk menentukan posisi lebar


pulsa kontrol tertentu menjadi posisi default untuk
motor servo tersebut saat SPC SERVO MOTOR
CONTROLLER baru dinyalakan.
Perintah ini akan tersimpan di EEPROM. Saat SPC
SERVO MOTOR CONTROLLER dinyalakan, tiap
motor servo akan kembali ke posisi Home.

Contoh dengan antarmuka UART untuk mengatur agar motor servo 2 memiliki
posisi lebar pulsa Home 1250 s:
User
:
ST 2 1250\r
SPC
:
ACK\r
Berikut ini contoh pseudo code C untuk menggunakan perintah ini dengan
antarmuka I2C (misalkan alamat I2C = 0xE0):
10

i2c_start();
i2c_write(0xE0);
i2c_write(0x03);
i2c_write(2);
i2c_write(0x04);
i2c_write(0xE2);
i2c_stop();

//
//
//
//
//
//
//

delay_us(100);

// delay 100 us

i2c_start();
//
i2c_write(0xE1);
//
temp1 = i2c_read(0);//
i2c_stop();
//

Start Condition
Tulis ke modul SPC SERVO CONTROLLER
Perintah Set Home
Nomor Motor Servo
Lebar pulsa kontrol (MSB)
Lebar pulsa kontrol (LSB)
Stop Condition
Start Condition
Baca ke modul SPC SERVO CONTROLLER
Data Acknowledgement
Stop Condition

3.3.5. GO TO HOME
Fungsi
Command UART
Command I2C
Parameter

Respon UART
Respon I2C
Delay antara
Command dan
Respon
Keterangan

Memerintahkan motor servo untuk kembali ke posisi


Home
HM <ServoNum> <Rate>\r
0x04 <ServoNum> <Rate>
<ServoNum>
0 semua motor servo diperintahkan berputar ke
posisi Home masing-masing.
1 - 20 nomor motor servo yang diperintahkan
untuk bergerak ke posisi Home-nya.
<Rate>
0 motor servo bergerak ke posisi Home masingmasing sesuai dengan spesifikasi kecepatan
masing-masing motor servo.
1 - 100 motor servo bergerak ke posisi Home
dengan kecepatan sesuai dengan nilai
rate. Nilai 1 merupakan kecepatan
paling rendah. Semakin besar nilai
rate, semakin cepat motor servo
bergerak ke posisi Home.
ACK jika perintah dikenali
NCK jika perintah tidak dikenali
0x06 jika perintah dikenali
0x15 jika perintah tidak dikenali
10 s
-

Contoh dengan antarmuka UART untuk memerintah motor servo 3 untuk menuju
ke posisi Home-nya dengan rate 50:
User
:
HM 3 50\r
SPC
:
ACK\r
Berikut ini contoh pseudo code C untuk menggunakan perintah ini dengan
antarmuka I2C (misalkan alamat I2C = 0xE0):
i2c_start();
i2c_write(0xE0);
i2c_write(0x04);

// Start Condition
// Tulis ke modul SPC SERVO CONTROLLER
// Perintah Go to Home

11

i2c_write(3);
i2c_write(50);
i2c_stop();

// Nomor Motor Servo


// Rate
// Stop Condition

delay_us(10);

// delay 10 us

i2c_start();
//
i2c_write(0xE1);
//
temp1 = i2c_read(0);//
i2c_stop();
//

Start Condition
Baca ke modul SPC SERVO CONTROLLER
Data Acknowledgement
Stop Condition

3.3.6. START SEQUENCE


Fungsi
Command UART
Command I2C
Parameter
Respon UART
Respon I2C
Delay antara
Command dan
Respon
Keterangan

Menjalankan sekuen gerakan yang tersimpan di


EEPROM
SS <SeqNum>\r
0x05 <SeqNum>
<SeqNum>
1 - 32 nomor sekuen gerakan yang akan
dijalankan
ACK jika perintah dikenali
NCK jika perintah tidak dikenali
0x06 jika perintah dikenali
0x15 jika perintah tidak dikenali
10 s

Jika tidak ada nomor sekuen yang dimaksud pada


EEPROM, maka modul SPC SERVO MOTOR
CONTROLLER akan tetap memberikan ACK tetapi
tidak akan menjalankan sekuen apapun.
Jika perintah ini dikirim lagi dengan nomor sekuen
berbeda sebelum sekuen selesai, maka motor servo
yang terlibat di kedua sekuen akan langsung
menjalankan perintah di sekuen terakhir. Sedangkan
untuk motor servo yang hanya terlibat di sekuen
sebelumnya, akan menyelesaikan step yang sedang
dijalankan.
Untuk membuat, mengubah, atau menghapus sekuen
akan dijelaskan pada bagian 4.

Contoh dengan antarmuka UART untuk menjalankan sekuen gerakan servo


yang ke-2:
User
:
SS 2\r
SPC
:
ACK\r
Berikut ini contoh pseudo code C untuk menggunakan perintah ini dengan
antarmuka I2C (misalkan alamat I2C = 0xE0):
i2c_start();
i2c_write(0xE0);
i2c_write(0x05);
i2c_write(2);
i2c_stop();

//
//
//
//
//

Start Condition
Tulis ke modul SPC SERVO CONTROLLER
Perintah Start Sequence
Nomor Sekuen
Stop Condition

delay_us(10);

// delay 10 us

i2c_start();

// Start Condition

12

i2c_write(0xE1);
// Baca ke modul SPC SERVO CONTROLLER
temp1 = i2c_read(0);// Data Acknowledgement
i2c_stop();
// Stop Condition

3.3.7. READ SEQUENCE STATUS


Fungsi
Command UART
Command I2C
Parameter
Respon UART

Respon I2C

Delay antara
Command dan
Respon
Keterangan

Memeriksa apakah modul SPC sedang menjalankan


sebuah sekuen
RS\r
0x06
ACK jika perintah dikenali
NCK jika perintah tidak dikenali
<SeqStatus>
0 modul SPC SERVO MOTOR CONTROLLER
sedang dalam proses menjalankan sebuah
sekuen.
1 modul SPC SPC SERVO MOTOR CONTROLLER
tidak dalam proses menjalankan sebuah
sekuen atau sekuen telah selesai dijalankan.
0x06 jika perintah dikenali
0x15 jika perintah tidak dikenali
<SeqStatus>
0 modul SPC sedang dalam proses menjalankan
sebuah sekuen.
1 modul SPC tidak dalam proses menjalankan
sebuah sekuen atau sekuen telah selesai
dijalankan.
10 s
-

Contoh dengan antarmuka UART:


User
:
RS\r
SPC
:
ACK\r
1\r
Pada contoh tersebut, hasil pembacaan adalah '1' yang berarti modul SPC
dalam keadaan idle atau sekuen telah selesai dijalankan.
Berikut ini contoh pseudo code C untuk menggunakan perintah ini dengan
antarmuka I2C (misalkan alamat I2C = 0xE0):
i2c_start();
i2c_write(0xE0);
i2c_write(0x06);
i2c_stop();

//
//
//
//

delay_us(10);

// delay 10 us

i2c_start();
//
i2c_write(0xE1);
//
temp1 = i2c_read(1);//
temp2 = i2c_read(0);//
i2c_stop();
//

Start Condition
Tulis ke modul SPC SERVO CONTROLLER
Perintah Read Sequence Status
Stop Condition
Start Condition
Baca ke modul SPC SERVO CONTROLLER
Data Acknowledgement
Data status sekuen
Stop Condition

13

3.3.8. READ SERVO STATUS & POSITION


Fungsi
Command UART
Command I2C
Parameter
Respon UART

Respon I2C

Delay antara
Command dan
Respon
Keterangan

Memeriksa status aktifnya dan posisi lebar pulsa


kontrol motor servo tertentu
RD <ServoNum>\r
0x07 <ServoNum>
<ServoNum>
1 - 20 nomor motor servo yang akan dibaca
posisinya
ACK jika perintah dikenali
NCK jika perintah tidak dikenali
<ServoStatus>
0 motor servo non-aktif (Disable)
1 motor servo aktif (Enable)
<ServoPulse>
500 - 2500 lebar pulsa kontrol servo dengan
resolusi 1 s.
0x06 jika perintah dikenali
0x15 jika perintah tidak dikenali
<ServoStatus>
0 motor servo non-aktif (Disable)
1 motor servo aktif (Enable)
<ServoPulse>
500 - 2500 lebar pulsa kontrol servo dengan
resolusi 1 s.
25 s
-

Contoh dengan antarmuka UART untuk mengetahui status aktifnya servo ke-10
dan posisi lebar pulsa kontrolnya sekarang:
User
:
RD 10\r
SPC
:
ACK\r
1 2000\r
Pada contoh tersebut, berarti motor servo 10 dalam keadaan aktif (1) dan
lebar pulsa kontrolnya adalah 2000 s.
Berikut ini contoh pseudo code C untuk menggunakan perintah ini dengan
antarmuka I2C (misalkan alamat I2C = 0xE0):
i2c_start();
i2c_write(0xE0);
i2c_write(0x07);
i2c_write(10);
i2c_stop();

//
//
//
//
//

delay_us(25);

// delay 25 us

i2c_start();
//
i2c_write(0xE1);
//
temp1 = i2c_read(1);//
temp2 = i2c_read(1);//
temp3 = i2c_read(1);//
temp4 = i2c_read(0);//
i2c_stop();
//

Start Condition
Tulis ke modul SPC SERVO CONTROLLER
Perintah Read Servo Position
Nomor Motor Servo
Stop Condition
Start Condition
Baca ke modul SPC SERVO CONTROLLER
Data Acknowledgement
Enable/Disable
Pulsa Kontrol (MSB)
Pulsa Kontrol (LSB)
Stop Condition

14

lebar pulsa kontrol = ( temp3 x 256 ) + temp4 (dalam satuan s)


3.3.9. ENABLE/DISABLE SERVO
Fungsi
Command UART
Command I2C
Parameter

Respon UART
Respon I2C
Delay antara
Command dan
Respon
Keterangan

Mengaktifkan atau menon-aktifkan motor servo tertentu


EN <ServoNum> <En/Dis>\r
0x08 <ServoNum> <En/Dis>
<ServoNum>
1 - 20 nomor servo yang diatur
<En/Dis>
0 menon-aktifkan (Disable) motor servo
1 mengaktifkan (Enable) motor servo
ACK jika perintah dikenali
NCK jika perintah tidak dikenali
0x06 jika perintah dikenali
0x15 jika perintah tidak dikenali
10 s

Perintah ini akan tersimpan di EEPROM. Saat modul


SPC SERVO MOTOR CONTROLLER dinyalakan,
status tiap motor servo pada saat power on tersebut
akan kembali ke kondisi sesuai dengan yang
tersimpan di EEPROM.

Contoh dengan antarmuka UART untuk menon-aktifkan motor servo 5:


User
:
EN 5 0\r
SPC
:
ACK\r
Berikut ini contoh pseudo code C untuk menggunakan perintah ini dengan
antarmuka I2C (misalkan alamat I2C = 0xE0):
i2c_start();
i2c_write(0xE0);
i2c_write(0x08);
i2c_write(5);
i2c_write(0);
i2c_stop();

//
//
//
//
//
//

delay_us(10);

// delay 10 us

i2c_start();
//
i2c_write(0xE1);
//
temp1 = i2c_read(0);//
i2c_stop();
//

4.

Start Condition
Tulis ke modul SPC SERVO CONTROLLER
Perintah Set Enable/Disable Servo
Nomor Motor Servo
Enable/Disable
Stop Condition
Start Condition
Baca ke modul SPC SERVO CONTROLLER
Data Acknowledgement
Stop Condition

MEMBUAT DAN MENGEDIT SEKUEN PADA SPC SERVO MOTOR


CONTROLLER
SPC SERVO MOTOR CONTROLLER memiliki kemampuan untuk menyimpan
beberapa sekuen gerakan motor servo dan menjalankan masing-masing
sekuen dengan 1 perintah saja. Misalkan saja jika modul SPC SERVO MOTOR
CONTROLLER digunakan untuk sebuah robot berkaki yang berpenggerak
utama motor servo dan robot tersebut memiliki beberapa sekuen gerakan
yaitu sekuen gerakan untuk menggerakkan robot maju ke depan, sekuen
gerakan untuk menggerakkan robot agar belok ke kiri, sekuen gerakan untuk
15

menggerakkan robot agar belok ke kanan, dan juga sekuen gerakan untuk
menggerakkan robot berputar. Maka tiap sekuen gerakan tersebut dapat
disimpan pada EEPROM SPC SERVO MOTOR CONTROLLER. Sehingga jika
kita ingin menggerakkan robot maju, kita cukup mengirimkan 1 perintah untuk
memulai sekuen saja tanpa mengirimkan banyak perintah ke setiap motor
servo.
Membuat dan merubah sekuen gerakan dapat dilakukan dengan
menggunakan perangkat lunak "SPC SERVO MOTOR CONTROLLER GUI"
yaitu servoCon.exe yang disertakan pada CD/DVD.
Secara umum, terdapat 2 bagian utama pada perangkat lunak "SPC SERVO
MOTOR CONTROLLER GUI" yaitu "Sequence(s) Editor" dan "Command
Tester".
4.1.

SEQUENCE(s) EDITOR
Tampilan tab "Sequence(s) Editor" dapat dilihat pada gambar berikut ini.

Sebagai ilustrasi awal, pada gambar contoh tampilan "Sequence(s) Editor"


tersebut terdapat 2 buah sekuen yaitu sekuen 1 dan sekuen 2 yang ditunjukan
oleh kolom SeqNum. Pada sekuen ke-1 terdapat 4 buah step yang ditunjukan
pada kolom StepNum. Pada saat sekuen ke-1 dijalakan maka pada StepNum
ke-1, motor servo 1, 2, dan 3 diperintahkan untuk bergerak ke posisi pulsa
1000 s dengan rate masing-masing 50, 10, dan 1.
Selama salah satu dari ketiga motor servo tersebut (motor servo 1, 2, dan 3)
belum mencapai posisi tujuannya, maka StepNum ke-2 tidak akan dijalankan.
Setelah semua motor servo sampai pada posisi tujuannya, maka step
selanjutnya (StepNum ke-2) akan dijalankan yaitu memerintahkan motor servo
16

1 untuk bergerak ke posisi 2000 s dengan rate 10. Demikian seterusnya


sampai seluruh step pada sekuen ke-1 selesai dijalankan.
Sebagai catatan, selama sebuah atau beberapa motor servo sedang dalam
proses sekuen, motor servo yang lain tetap dapat diperintah seperti biasa
(menggunakan perintah Run Servo atau Go To Home). Tetapi jika yang
diperintah adalah motor servo yang sedang dalam sekuen, maka perintah
baru tersebut akan diabaikan (kecuali perintah Start Sequence dan
Enable/Disable Servo).
Untuk memulai membuat sebuah sekuen gerakan baru, dapat dilakukan
dengan melakukan klik ganda pada kolom SeqNum di baris terbawah yang
kosong sehingga muncul kursor yang berkedip. Isikan nomor sekuen pada field
tersebut. Nomor sekuen pada dasarnya mewakili sebuah sekuen gerakan
(misalkan sekuen gerakan maju robot) sehingga untuk seluruh perintah motor
servo pada sekuen tersebut, nomor sekuen selalu sama. Nilai yang bisa
diisikan pada kolom ini adalah antara 1-32.
Selanjutnya adalah mengisikan nomor langkah atau StepNum dengan
melakukan klik ganda (atau tekan Enter pada keyboard) pada kolom
disamping SeqNum yang baru saja diisi. Setiap baris dari sekuen yang
memiliki StepNum yang sama akan dijalankan oleh modul SPC secara
bersamaan. Setelah setiap motor servo yang memiliki StepNum yang sama
(misalnya StepNum = 1) telah sampai ke posisinya masing-masing, baru
StepNum berikut (misalnya StepNum = 2) pada sekuen yang sama akan
dijalankan. Nilai yang bisa diisikan pada kolom ini adalah antara 1-64.
Kolom ServoNum harus diisi nomor motor servo yang diperintah. Kolom
PulseWidth harus diisi nilai pulsa kontrol tujuan yang diinginkan. Sedangkan
kolom Rate harus diisi kecepatan yang digunakan untuk mencapai nilai pulsa
kontrol tujuan yang diinginkan tersebut. Penjelasan lebih lengkap tentang
batasan nilai-nilai yang bisa diisikan pada ServoNum, PulseWidth, dan Rate
dapat dilihat pada bagian 3.3.
Untuk mengubah field yang telah terisi sebelumnya dapat dilakukan dengan
melakukan klik ganda pada field yang dimaksud.
Untuk menghapus baris, harus dilakukan mulai dari baris paling bawah
dengan cara mengosongkan isi kolom SeqNum pada baris tersebut.
Jumlah sekuen yang dapat disimpan dibatasi pula oleh kapasitas EEPROM
SPC SERVO MOTOR CONTROLLER yang ditunjukkan melalui indikator memori
di sisi kanan, seperti yang ditunjukan pada gambar Sequence(s) Editor
tersebut.
Agar perangkat lunak dapat berkomunikasi dengan SPC SERVO MOTOR
CONTROLLER, hubungkan kabel serial ke konektor RJ11 UART RS232 (J25)
dan ke Serial/COM port pada PC. Pengaturan Serial/COM port yang
digunakan dilakukan melalui tombol COM Settings (parameter komunikasi
UART dapat dilihat pada bagian 3.1). Lalu hubungkan catu daya ke SPC
SERVO MOTOR CONTROLLER.
Jika sekuen-sekuen gerakan sudah selesai dibuat, tekanlah tombol Write To
SPC untuk mengirim dan menyimpannya ke SPC SERVO MOTOR
CONTROLLER.
17

Pembacaan sekuen-sekuen gerakan yang telah tersimpan pada SPC SERVO


MOTOR CONTROLLER dapat dilakukan dengan menekan tombol Read From
SPC.
Jika tidak ada masalah komunikasi, maka akan tampil sekuen-sekuen yang
telah tersimpan (sekuen yang sebelumnya tampil di layar akan dihapus). Jika
tidak ada sekuen yang tersimpan, maka akan muncul pesan Could not read
sequence(s). No Sequence(s) in memory !. Sedangkan jika komunikasi
dengan SPC SERVO MOTOR CONTROLLER tidak berhasil, maka akan muncul
pesan Connection error. Please check connection cable from PC to SPC !.
Jika pembacaan sekuen berhasil dan terdapat sekuen pada SPC SERVO
MOTOR CONTROLLER, maka pada ComboBox Test Sequence No akan
terdapat daftar sekuen yang dapat dijalankan. Untuk menguji sebuah sekuen
dapat dilakukan dengan menekan tanda panah pada ComboBox, kemudian
memilih nomor sekuen yang ingin dijalankan. Proses ini sama dengan
mengirimkan perintah Start Sequence (lihat bagian 3.3.6).
4.2.

COMMAND TESTER
Tampilan tab "Command Tester" dapat dilihat pada gambar berikut ini.

Melalui tab "Command Tester" ini, kita dapat menguji perintah-perintah untuk
modul SPC SERVO MOTOR CONTROLLER melalui jalur komunikasi UART RS232. Pengaturan Serial/COM port yang digunakan dilakukan melalui tombol
COM Settings pada tab "Sequence(s) Editior" (parameter komunikasi UART
dapat dilihat pada bagian 3.1).
18

Tombol Command Viewer berfungsi untuk menampilkan jendela baru.


Jendela tersebut akan menampilkan perintah yang dikirimkan ke SPC SERVO
MOTOR CONTROLLER saat ada tombol yang ditekan (misalnya tombol Go
Home) atau opsi yang diubah (misalnya centang pada Enabled).
5.

PROSEDUR PENGUJIAN
1. Hubungkan sumber catu daya ke SPC SERVO MOTOR CONTROLLER.
2. Jika catu daya telah terhubung dengan baik, maka LED IND PWR akan
menyala.
3. Hubungkan konektor RJ11 UART RS232 (J25) ke Serial/COM port pada
PC dengan menggunakan kabel serial yang disertakan pada saat
pembelian SPC SERVO MOTOR CONTROLLER.
4. Jalankan perangkat lunak komunikasi serial pada PC (misalnya:
HyperTerminal). Lalu sesuaikan parameter komunikasinya (lihat bagian
3.1).
5. Untuk menguji koneksi UART kirimkan perintah PING (PG\r). Jika koneksi
antarmuka UART bekerja dengan baik, maka SPC SERVO MOTOR
CONTROLLER akan membalas dengan memberikan respon ACK\r (lihat
bagian 3.3.1).
6. Hubungkan sebuah motor servo ke konektor SERVO1. Kemudian kirimkan
perintah untuk menggerakkan motor servo ke posisi lebar pulsa 1000 s
dengan rate 100 (RN 1 1000 100\r). Jika motor servo dan SPC SERVO
MOTOR CONTROLLER bekerja dengan baik, maka motor servo akan
bergerak ke posisi 1000 s.
7. Hubungkan sebuah motor servo ke konektor SERVO1. Kemudian kirimkan
perintah untuk menggerakkan motor servo ke posisi lebar pulsa 2000 s
dengan rate 10 (RN 1 2000 10\r). Jika motor servo dan SPC SERVO
MOTOR CONTROLLER bekerja dengan baik, maka motor servo akan
bergerak ke posisi 2000 s.
8. Pengujian juga dapat dilakukan menggunakan perangkat lunak SPC
SERVO MOTOR CONTROLLER - GUI melalui tab "Command Tester".

6.

CONTOH APLIKASI DAN PROGRAM


Sebagai contoh program, misalkan SPC SERVO MOTOR CONTROLLER
digunakan untuk mengendalikan 3 buah motor servo standar dengan
antarmuka I2C dan antarmuka UART-TTL. DT-AVR Low Cost Micro System
(LCMS) berfungsi sebagai master yang bertugas untuk mengirimkan perintah
ke SPC SERVO MOTOR CONTROLLER. Berikut koneksi antara modul-modul
yang digunakan:
SPC SERVO MOTOR CONTROLLER

DT-AVR LCMS

GND (Terminal Biru J27 Pin 1)

GND (J13 Pin 1)

SDA (Terminal Biru J27 Pin 2)

PORTD.2 (J13 Pin 5)

SCL (Terminal Biru J27 Pin 3)

PORTD.3 (J13 Pin 6)

TX (Terminal Biru J26 Pin 2)

PORTD.0 (J13 Pin 3)

RX (Terminal Biru J26 Pin 3)

PORTD.1 (J13 Pin 4)

19

J3
J4
J5

SERVO1
SERVO2
SERVO3

SPC
Servo Motor
Controller

MOTOR SERVO

MOTOR SERVO

MOTOR SERVO

DT-AVR
LCMS

(alamat I2C = 0xE0)

Sebagai contoh program untuk aplikasi tersebut, pada CD/DVD yang


disertakan pada saat pembelian SPC SERVO MOTOR CONTROLLER terdapat
program testServo.c (pada folder Contoh Program) yang ditulis dengan
menggunakan CodeVisionAVR versi evaluasi.
Pada program tersebut, DT-AVR LCMS akan mengirimkan perintah RUN Servo
melalui jalur I2C ke SPC SERVO MOTOR CONTROLLER (alamat I 2C = 0xE0)
agar motor servo 1, 2, dan 3 menuju ke posisi 2 ms dengan rate masingmasing motor servo secara berurutan adalah 100, 25, dan 10.
DT-AVR LCMS akan menunggu selama 5 detik. Lalu DT-AVR LCMS akan
mengirimkan perintah RUN Servo melalui jalur UART-TTL ke SPC SERVO
MOTOR CONTROLLER agar motor servo 1, 2, dan 3 menuju ke posisi 1 ms
dengan rate masing- masing motor servo secara berurutan adalah 10, 25, dan
100.
DT-AVR LCMS akan kembali menunggu selama 5 detik sebelum kembali
mengulangi perintah melalui I2C.
Contoh aplikasi lain, misalkan SPC SERVO MOTOR CONTROLLER akan
dihubungkan ke PC dan akan dikendalikan menggunakan perangkat lunak
SPC SERVO MOTOR CONTROLLER - GUI. Jalur komunikasi yang digunakan
adalah jalur komunikasi UART RS-232. Berikut koneksi antara modul-modul
yang digunakan:

20

J3
J4
J5

MOTOR SERVO

SERVO1

MOTOR SERVO

SERVO2

MOTOR SERVO

SERVO3

SERIAL PORT
PC

SPC
Servo Motor
Controller
(UART RS232)

(alamat I2C = 0xE0)

J25

Setelah modul SPC SERVO MOTOR CONTROLLER terhubung ke PC serta catu


daya telah menyala, jalankan perangkat lunak servoCon.exe pada PC.
Pengaturan Serial/COM port yang digunakan dilakukan melalui tombol COM
Settings pada tab "Sequence(s) Editior" (parameter komunikasi UART dapat
dilihat pada bagian 3.1).
Untuk menguji fungsi pengaturan motor servo, dapat dilakukan melalui tab
"Command Tester".

Terima Kasih atas kepercayaan Anda menggunakan produk kami, bila ada kesulitan,
pertanyaan atau saran mengenai produk ini silahkan menghubungi technical support
kami :
support@innovativeelectronics.com
21

LAMPIRAN A.
Skematik SPC SERVO MOTOR CONTROLLER

22

You might also like