mart P C Servo Motor Controller - innovativeelectronics.com · 1 - 20 nomor motor servo yang akan...

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.

Transcript of mart P C Servo Motor Controller - innovativeelectronics.com · 1 - 20 nomor motor servo yang akan...

Smart Peripheral Controller

Servo Motor Controller

Trademarks & CopyrightAT, 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............................................................................................. 31.1 Spesifikasi SPC SERVO MOTOR CONTROLLER.................................. 31.2 Sistem yang Dianjurkan............................................................................ 3

2 Perangkat Keras SPC SERVO MOTOR CONTROLLER............................... 42.1 Tata Letak Komponen SPC SERVO MOTOR CONTROLLER.............. 42.2 Konektor dan Pengaturan Jumper.......................................................... 4

3 Perangkat Lunak SPC SERVO MOTOR CONTROLLER.............................. 63.1 Antarmuka UART........................................................................................ 63.2 Antarmuka I2C............................................................................................. 63.3 Command Set.............................................................................................. 7

3.3.1. Ping............................................................................................... 83.3.2. Get Version................................................................................. 83.3.3. Run Servo..................................................................................... 93.3.4. Set Home..................................................................................... 103.3.5. Go To Home................................................................................ 113.3.6. Start Sequence........................................................................... 123.3.7. Read Sequence Status.............................................................. 133.3.8. Read Servo Status & Position.................................................. 143.3.9. Enable/Disable Servo............................................................... 15

4 Perangkat Lunak SPC SERVO MOTOR CONTROLLER.............................. 154.1. Sequence(s) Editor...................................................................................... 164.2. Command Tester......................................................................................... 18

5 Prosedur Pengujian.................................................................................. 19

6 Contoh Aplikasi dan Program.................................................................. 19

LampiranA. Skematik SPC SERVO MOTOR CONTROLLER..................................... 22

2

1. PENDAHULUANSmart 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 I2C. 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 CONTROLLERSpesifikasi 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 di-

cascade hingga 8 modul.

1.2. SISTEM YANG DIANJURKANSistem 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.

3

2. PERANGKAT KERAS SPC SERVO MOTOR CONTROLLER

2.1. TATA LETAK KOMPONEN SPC SERVO MOTOR CONTROLLER

2.2. KONEKTOR DAN PENGATURAN JUMPERKonektor J23 berfungsi sebagai konektor untuk catu daya modul.

Pin Nama Fungsi1 GND Titik referensi untuk catu daya input2 6,5-12VDC Terhubung ke catu daya untuk input (6,5 – 12 Volt)

Konektor J24 berfungsi sebagai konektor untuk catu daya motor servo.

Pin Nama Fungsi1 GND Titik referensi untuk catu daya input

2 VEXTTerhubung 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 Nama Fungsi2 NC Tidak terhubung kemana-mana3 GND Titik referensi4 TX Jalur data serial keluar dari modul5 RX Jalur data serial masuk ke modul

4

TX

5 4 3 2

J25 Tampak Depan

GNDRX

SCL SDA

SCL SDA

Konektor UART TTL (J26) berfungsi sebagai konektor untuk antarmuka UART TTL.

Pin Nama Fungsi1 GND Titik referensi2 TX Jalur data serial (TTL) keluar dari modul SPC3 RX Jalur data serial (TTL) masuk ke modul SPC

Konektor I2C PORT (J27) berfungsi sebagai konektor untuk antarmuka I2C.

Pin Nama Fungsi1 GND Titik referensi2 SDA I2C-bus data input / output3 SCL I2C-bus clock input

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

Jumper PULL-UPJ28 Fungsi

Pull-up tidak aktif(jumper terlepas)

Pull-up aktif(jumper terpasang)

Penting !Apabila lebih dari satu modul dihubungkan pada I2C-bus maka jumper PULL-UP (SCL/SDA) salah satu modul saja yang perlu dipasang.

Jumper ADDR (J2) berfungsi untuk mengatur alamat I2C dari modul SPC SERVO MOTOR CONTROLLER.

J2 (A2)Pin 1-2

J2 (A1)Pin 3-4

J2(A0)Pin 5-6

Alamat I2C

Alamat Tulis I2C Alamat Baca I2C

■ ■ ■ 0xE0 0xE1

■ ■ 0xE2 0xE3

■ ■ 0xE4 0xE5

■ 0xE6 0xE7

■ ■ 0xE8 0xE9

■ 0xEA 0xEB

■ 0xEC 0xED

0xEE 0xEFKeterangan: ■ : 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 Nama Fungsi1 SRV-GND Titik referensi catu daya ke motor servo2 S-PWR Tegangan catu daya ke motor servo3 SERVOx Output pulsa ke motor servo

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

3.1. ANTARMUKA UARTParameter 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 I2CModul SPC SERVO MOTOR CONTROLLER memiliki antarmuka I2C. 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 I2C 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.

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 Acknowledged/NCK) pada buffer I2C-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.

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 SETBerikut ini daftar lengkap perintah-perintah dalam antarmuka UART dan I2C.

7

+ +

++

1 1 1 0 X X X 0

Alamat Tulis

X X X X X X X X

Command

X X X X X X X X

Parameter 1 (jika ada)

Start

Stop++ X X X X X X X X

Parameter n (jika ada)

...

+ +1 1 1 0 X X X 1

Alamat Baca

Start

++0 0 0 X 0 1 X X

ACK / NCK

X X X X X X X X

Data 1 (jika ada)

Stop++ X X X X X X X X

Data n (jika ada)

...

3.3.1. PING

Fungsi Menguji koneksi dan memastikan bahwa SPC SERVO MOTOR CONTROLLER siap menerima perintah

Command UART PG\rCommand I2C 0x00 Parameter -Respon UART ACK jika perintah dikenali

NCK jika perintah tidak dikenaliRespon I2C 0x06 jika perintah dikenali

0x15 jika perintah tidak dikenaliDelay antara Command dan Respon

10 µs

Keterangan -

Contoh dengan antarmuka UART:User : PG\rSPC : ACK\r

Berikut ini contoh pseudo code C untuk menggunakan perintah ini dengan antarmuka I2C (misalkan alamat I2C = 0xE0):

i2c_start(); // Start Conditioni2c_write(0xE0); // Tulis ke modul SPC SERVO CONTROLLERi2c_write(0x00); // Perintah “Ping”i2c_stop(); // Stop Conditiondelay_us(10); // delay 10 usi2c_start(); // Start Conditioni2c_write(0xE1); // Baca ke modul SPC SERVO CONTROLLERtemp = i2c_read(0); // Data Acknowledgementi2c_stop(); // Stop Condition

3.3.2. GET VERSION

Fungsi Mengetahui versi firmware yang tertanam pada modul SPC SERVO MOTOR CONTROLLER

Command UART VR\rCommand I2C 0x01Parameter -Respon UART ACK jika perintah dikenali

NCK jika perintah tidak dikenaliString yang menyatakan versi firmware yang tertanam pada modul SPC SERVO MOTOR CONTROLLER

Respon I2C 0x06 jika perintah dikenali0x15 jika perintah tidak dikenali<Versi> versi firmware SPC SERVO MOTOR

CONTROLLER<Revisi> revisi firmware SPC SERVO MOTOR

CONTROLLERDelay antara Command dan Respon

10 µs

Keterangan -

8

Contoh dengan antarmuka UART:User : VR\rSPC : 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(); // Start Conditioni2c_write(0xE0); // Tulis ke modul SPC SERVO CONTROLLERi2c_write(0x01); // Perintah “Get Version Number”i2c_stop(); // Stop Conditiondelay_us(10); // delay 10 usi2c_start(); // Start Conditioni2c_write(0xE1); // Baca ke modul SPC SERVO CONTROLLERtemp1 = i2c_read(1);// Data Acknowledgementtemp2 = i2c_read(1);// Version Numbertemp3 = i2c_read(0);// Revision Numberi2c_stop(); // Stop Condition

3.3.3. RUN SERVO

Fungsi Memutar motor servo tertentuCommand UART RN <ServoNum> <ServoPulse> <Rate>\rCommand I2C 0x02 <ServoNum> <ServoPulse> <Rate>Parameter <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.

Respon UART ACK jika perintah dikenaliNCK jika perintah tidak dikenali

Respon I2C 0x06 jika perintah dikenali0x15 jika perintah tidak dikenali

Delay antara Command dan Respon

15 µs

Keterangan • 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\rSPC : ACK\r

Berikut ini contoh pseudo code C untuk menggunakan perintah ini dengan antarmuka I2C (misalkan alamat I2C = 0xE0):

i2c_start(); // Start Conditioni2c_write(0xE0); // Tulis ke modul SPC SERVO CONTROLLERi2c_write(0x02); // Perintah “Run Servo Motor”i2c_write(1); // Nomor Motor Servoi2c_write(0x05); // Lebar pulsa kontrol (MSB)i2c_write(0xDC); // Lebar pulsa kontrol (LSB)i2c_write(10); // Ratei2c_stop(); // Stop Conditiondelay_us(15); // delay 15 usi2c_start(); // Start Conditioni2c_write(0xE1); // Baca ke modul SPC SERVO CONTROLLERtemp1 = i2c_read(0);// Data Acknowledgementi2c_stop(); // Stop Condition

3.3.4. SET HOME

Fungsi Menentukan posisi Home untuk motor servo tertentuCommand UART ST <ServoNum> <ServoPulse>\rCommand I2C 0x03 <ServoNum> <ServoPulse>Parameter <ServoNum>

1 - 20 nomor motor servo yang akan diperintah <ServoPulse>

500 - 2500 lebar pulsa kontrol servo dengan resolusi 1 µs.

Respon UART ACK jika perintah dikenaliNCK jika perintah tidak dikenali

Respon I2C 0x06 jika perintah dikenali0x15 jika perintah tidak dikenali

Delay antara Command dan Respon

100 µs

Keterangan • 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\rSPC : ACK\r

Berikut ini contoh pseudo code C untuk menggunakan perintah ini dengan antarmuka I2C (misalkan alamat I2C = 0xE0):

10

i2c_start(); // Start Conditioni2c_write(0xE0); // Tulis ke modul SPC SERVO CONTROLLERi2c_write(0x03); // Perintah “Set Home”i2c_write(2); // Nomor Motor Servoi2c_write(0x04); // Lebar pulsa kontrol (MSB)i2c_write(0xE2); // Lebar pulsa kontrol (LSB)i2c_stop(); // Stop Conditiondelay_us(100); // delay 100 usi2c_start(); // Start Conditioni2c_write(0xE1); // Baca ke modul SPC SERVO CONTROLLERtemp1 = i2c_read(0);// Data Acknowledgementi2c_stop(); // Stop Condition

3.3.5. GO TO HOME

Fungsi Memerintahkan motor servo untuk kembali ke posisi Home

Command UART HM <ServoNum> <Rate>\rCommand I2C 0x04 <ServoNum> <Rate>Parameter <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 masing-

masing 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.

Respon UART ACK jika perintah dikenaliNCK jika perintah tidak dikenali

Respon I2C 0x06 jika perintah dikenali0x15 jika perintah tidak dikenali

Delay antara Command dan Respon

10 µs

Keterangan -

Contoh dengan antarmuka UART untuk memerintah motor servo 3 untuk menuju ke posisi Home-nya dengan rate 50:User : HM 3 50\rSPC : ACK\r

Berikut ini contoh pseudo code C untuk menggunakan perintah ini dengan antarmuka I2C (misalkan alamat I2C = 0xE0):

i2c_start(); // Start Conditioni2c_write(0xE0); // Tulis ke modul SPC SERVO CONTROLLERi2c_write(0x04); // Perintah “Go to Home”

11

i2c_write(3); // Nomor Motor Servoi2c_write(50); // Ratei2c_stop(); // Stop Conditiondelay_us(10); // delay 10 usi2c_start(); // Start Conditioni2c_write(0xE1); // Baca ke modul SPC SERVO CONTROLLERtemp1 = i2c_read(0);// Data Acknowledgementi2c_stop(); // Stop Condition

3.3.6. START SEQUENCE

Fungsi Menjalankan sekuen gerakan yang tersimpan di EEPROM

Command UART SS <SeqNum>\rCommand I2C 0x05 <SeqNum>Parameter <SeqNum>

1 - 32 nomor sekuen gerakan yang akan dijalankan

Respon UART ACK jika perintah dikenaliNCK jika perintah tidak dikenali

Respon I2C 0x06 jika perintah dikenali0x15 jika perintah tidak dikenali

Delay antara Command dan Respon

10 µs

Keterangan • 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\rSPC : ACK\r

Berikut ini contoh pseudo code C untuk menggunakan perintah ini dengan antarmuka I2C (misalkan alamat I2C = 0xE0):

i2c_start(); // Start Conditioni2c_write(0xE0); // Tulis ke modul SPC SERVO CONTROLLERi2c_write(0x05); // Perintah “Start Sequence”i2c_write(2); // Nomor Sekueni2c_stop(); // Stop Conditiondelay_us(10); // delay 10 usi2c_start(); // Start Condition

12

i2c_write(0xE1); // Baca ke modul SPC SERVO CONTROLLERtemp1 = i2c_read(0);// Data Acknowledgementi2c_stop(); // Stop Condition

3.3.7. READ SEQUENCE STATUS

Fungsi Memeriksa apakah modul SPC sedang menjalankan sebuah sekuen

Command UART RS\rCommand I2C 0x06 Parameter -Respon UART 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.

Respon I2C 0x06 jika perintah dikenali0x15 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.

Delay antara Command dan Respon

10 µs

Keterangan -

Contoh dengan antarmuka UART:User : RS\rSPC : 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(); // Start Conditioni2c_write(0xE0); // Tulis ke modul SPC SERVO CONTROLLERi2c_write(0x06); // Perintah “Read Sequence Status”i2c_stop(); // Stop Conditiondelay_us(10); // delay 10 usi2c_start(); // Start Conditioni2c_write(0xE1); // Baca ke modul SPC SERVO CONTROLLERtemp1 = i2c_read(1);// Data Acknowledgementtemp2 = i2c_read(0);// Data status sekueni2c_stop(); // Stop Condition

13

3.3.8. READ SERVO STATUS & POSITION

Fungsi Memeriksa status aktifnya dan posisi lebar pulsa kontrol motor servo tertentu

Command UART RD <ServoNum>\rCommand I2C 0x07 <ServoNum>Parameter <ServoNum>

1 - 20 nomor motor servo yang akan dibaca posisinya

Respon UART ACK jika perintah dikenaliNCK 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.Respon I2C 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.Delay antara Command dan Respon

25 µs

Keterangan -

Contoh dengan antarmuka UART untuk mengetahui status aktifnya servo ke-10 dan posisi lebar pulsa kontrolnya sekarang:User : RD 10\rSPC : 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(); // Start Conditioni2c_write(0xE0); // Tulis ke modul SPC SERVO CONTROLLERi2c_write(0x07); // Perintah “Read Servo Position”i2c_write(10); // Nomor Motor Servoi2c_stop(); // Stop Conditiondelay_us(25); // delay 25 usi2c_start(); // Start Conditioni2c_write(0xE1); // Baca ke modul SPC SERVO CONTROLLERtemp1 = i2c_read(1);// Data Acknowledgementtemp2 = i2c_read(1);// Enable/Disabletemp3 = i2c_read(1);// Pulsa Kontrol (MSB)temp4 = i2c_read(0);// Pulsa Kontrol (LSB)i2c_stop(); // Stop Condition

14

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

3.3.9. ENABLE/DISABLE SERVO

Fungsi Mengaktifkan atau menon-aktifkan motor servo tertentuCommand UART EN <ServoNum> <En/Dis>\rCommand I2C 0x08 <ServoNum> <En/Dis>Parameter <ServoNum>

1 - 20 nomor servo yang diatur<En/Dis>

0 menon-aktifkan (Disable) motor servo1 mengaktifkan (Enable) motor servo

Respon UART ACK jika perintah dikenaliNCK jika perintah tidak dikenali

Respon I2C 0x06 jika perintah dikenali0x15 jika perintah tidak dikenali

Delay antara Command dan Respon

10 µs

Keterangan • 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\rSPC : ACK\r

Berikut ini contoh pseudo code C untuk menggunakan perintah ini dengan antarmuka I2C (misalkan alamat I2C = 0xE0):

i2c_start(); // Start Conditioni2c_write(0xE0); // Tulis ke modul SPC SERVO CONTROLLERi2c_write(0x08); // Perintah “Set Enable/Disable Servo”i2c_write(5); // Nomor Motor Servoi2c_write(0); // Enable/Disablei2c_stop(); // Stop Conditiondelay_us(10); // delay 10 usi2c_start(); // Start Conditioni2c_write(0xE1); // Baca ke modul SPC SERVO CONTROLLERtemp1 = i2c_read(0);// Data Acknowledgementi2c_stop(); // Stop Condition

4. MEMBUAT DAN MENGEDIT SEKUEN PADA SPC SERVO MOTOR CONTROLLERSPC 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) EDITORTampilan 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 TESTERTampilan 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 RS-232. 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 PENGUJIAN1. 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 PROGRAMSebagai 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

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 I2C = 0xE0) agar motor servo 1, 2, dan 3 menuju ke posisi 2 ms dengan rate masing- masing 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

SPC Servo MotorController

(alamat I2C = 0xE0)

MOTOR SERVO

DT-AVRLCMS

SERVO1

J4

J3

J5

MOTOR SERVOSERVO2

MOTOR SERVOSERVO3

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 :

[email protected]

21

SPC Servo MotorController

(alamat I2C = 0xE0)

J25(U

AR

T R

S23

2)S

ER

IAL

PO

RT

PC

MOTOR SERVOSERVO1

J4

J3

J5

MOTOR SERVOSERVO2

MOTOR SERVOSERVO3

LAMPIRAN A.Skematik SPC SERVO MOTOR CONTROLLER

22