mart p c low cost motor controller - innovative electronics filedengan quad full h-bridge driver...

19
Smart Peripheral Controller Low Cost 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. CodeVisionAVR is copyright by Pavel Haiduc, HP InfoTech s.r.l.

Upload: leliem

Post on 31-Mar-2019

217 views

Category:

Documents


0 download

TRANSCRIPT

Smart Peripheral Controller

Low CostMotor 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.CodeVisionAVR is copyright by Pavel Haiduc, HP InfoTech s.r.l.

Daftar Isi

1 Pendahuluan............................................................................................. 31.1 Spesifikasi SPC LOW COST MOTOR CONTROLLER......................... 31.2 Sistem yang Dianjurkan............................................................................ 3

2 Perangkat Keras SPC LOW COST MOTOR CONTROLLER......................... 32.1 Tata Letak Komponen SPC LOW COST MOTOR CONTROLLER..... 32.2 Konektor dan Pengaturan Jumper.......................................................... 4

3 Antarmuka SPC LOW COST MOTOR CONTROLLER................................. 63.1 Antarmuka UART TTL................................................................................. 63.2 Antarmuka I2C............................................................................................. 73.3 Command Set.............................................................................................. 83.3.1 DC Forward................................................................................................. 83.3.2 DC Reverse.................................................................................................. 93.3.3 DC Stop........................................................................................................ 103.3.4 DC All Stop.................................................................................................. 113.3.5 Stepper Continuous Run............................................................................ 113.3.6 Stepper Pulse Count Run........................................................................... 123.3.7 Stepper Brake............................................................................................ 143.3.8 Stepper Stop............................................................................................... 153.3.9 Set I2C Address........................................................................................... 153.3.10 Read I2C Address....................................................................................... 16

4 Prosedur Pengujian.................................................................................. 16

5 Contoh Aplikasi dan Program.................................................................. 17

LampiranA. Skematik SPC LOW COST MOTOR CONTROLLER............................ 19

2

1. PENDAHULUANSmart Peripheral Controller / SPC LOW COST MOTOR CONTROLLER merupakan sebuah modul pengendali motor DC dan motor stepper yang ringkas dan handal serta cocok untuk aplikasi robotik. Modul ini dapat digunakan untuk mengendalikan arah dan kecepatan putaran 4 buah motor DC menggunakan metode Pulse Width Modulation (PWM) atau 2 buah motor stepper menggunakan full-step maupun half-step. Modul ini sudah dilengkapi dengan quad full H-Bridge driver serta antarmuka UART level TTL dan I2C sehingga dapat dengan mudah dihubungkan dengan sistem lain.

1.1. SPESIFIKASI SPC LOW COST MOTOR CONTROLLERSpesifikasi SPC LOW COST MOTOR CONTROLLER adalah sebagai berikut:• Sumber catu daya modul menggunakan tegangan 4,8 – 5,4 Volt.• Sumber catu daya motor menggunakan tegangan 8 – 36 Volt.• Menggunakan IC motor driver A3988.• Kemampuan Arus Kontinu tiap driver 1,2 A.• Dapat digunakan untuk motor stepper unipolar atau bipolar.• Pin Input/Output kompatibel dengan level tegangan TTL dan CMOS.• Dilengkapi dengan antarmuka UART TTL dan I2C.• Jika menggunakan I2C, SPC LOW COST MOTOR CONTROLLER dapat di-

cascade hingga 8 modul.

1.2. SISTEM YANG DIANJURKANSistem yang dianjurkan untuk penggunaan SPC LOW COST 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/Folder yang ada pada CD/DVD program:

Folder contoh_i2c, folder contoh_uart, A3988.pdf, dan Manual SPC Low Cost Motor Controller.pdf.

3

2. PERANGKAT KERAS SPC LOW COST MOTOR CONTROLLER

2.1. TATA LETAK KOMPONEN SPC LOW COST MOTOR CONTROLLER

2.2. KONEKTOR DAN PENGATURAN JUMPERKonektor INTERFACE PORT (J1) berfungsi sebagai konektor untuk catu daya modul, catu daya motor, antarmuka UART TTL, antarmuka I2C, dan koneksi ke motor.

Pin Nama Fungsi

1 M11 Output ke-1 dari pasangan H-Bridge M1

2 M12 Output ke-2 dari pasangan H-Bridge M1

3 M21 Output ke-1 dari pasangan H-Bridge M2

4 M22 Output ke-2 dari pasangan H-Bridge M2

5 M31 Output ke-1 dari pasangan H-Bridge M3

6 M32 Output ke-2 dari pasangan H-Bridge M3

7 M41 Output ke-1 dari pasangan H-Bridge M4

8 M42 Output ke-2 dari pasangan H-Bridge M4

9 MGND Titik referensi untuk catu daya motor

10 VM Terhubung ke catu daya untuk motor (8 – 36 Volt)

11 SCL I2C-bus clock input

12 SDA I2C-bus data input / output

13 RXD Input serial level TTL ke modul SPC

14 TXD Output serial level TTL dari modul SPC

15 PGND Titik referensi untuk catu daya modul SPC

16 VIN Terhubung ke catu daya (4,8 – 5,4 Volt)

4

Jumper J3, J4, J6, dan J7 berfungsi untuk memilih mode operasi masing-masing H-Bridge pada modul SPC.

Fungsi M1 & M2 Posisi J3 & J4 Fungsi M3 & M4 Posisi J6 & J7

Pengendali Motor DC

Pengendali Motor DC

Pengendali Motor Stepper

Pengendali Motor Stepper

Perhatikan tipe motor stepper yang akan dihubungkan ke SPC LOW COST MOTOR CONTROLLER karena koneksinya berbeda-beda untuk masing-masing tipe. SPC LOW COST MOTOR CONTROLLER dapat dipergunakan untuk 3 macam tipe motor stepper yaitu: Bipolar, Unipolar 5 kabel, dan Unipolar 6 kabel. Berikut adalah contoh koneksi untuk tiap tipe motor stepper:

5

8V-36V

Ground Catu Daya Motor

VM

M11/M31

M12/M32

M21/M41

MGND

M22/M42

Konektor J1

MB

A

C

D

Bipolar

8V-36V

Ground Catu Daya Motor

VM

M11/M31M12/M32

M21/M41

MGND

M22M42

Konektor J1

MB

A

C

D

COMMON

Unipolar 5 kabel

J3 J4

123

J3 J4

123

J6 J7

123

J6 J7

123

SCL SDA

SCL SDA

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

Jumper SCL-SDAJ5 Fungsi

Pull-up tidak aktif(jumper terlepas)

Pull-up aktif(jumper terpasang)

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

Pengaturan alamat I2C dapat dilakukan melalui antarmuka UART TTL.

LED M1 IND (D3), M2 IND (D4), M3 IND (D5), dan M4 IND (D6) berfungsi sebagai indikator kondisi motor.

3. ANTARMUKA SPC LOW COST MOTOR CONTROLLERSPC LOW COST MOTOR CONTROLLER memiliki antarmuka UART TTL dan I2C yang dapat digunakan untuk menerima perintah atau mengirim data.

3.1. ANTARMUKA UART TTLParameter komunikasi UART TTL adalah sebagai berikut:

• 38400 bps • 8 data bit • 1 stop bit • tanpa parity bit

6

8V-36V

Ground Catu Daya Motor

VM

M11/M31

M12/M32

M21/M41

MGND

M22/M42

Konektor J1

MB

A

C

D

COMMON 1

COMMON 2

Unipolar 6 kabel

• tanpa flow control

Semua perintah yang dikirim melalui antarmuka UART TTL dimulai dengan mengirim 1 byte data yang berisi <nomor perintah> dan (jika diperlukan) n-byte data parameter perintah.

Jika transmisi perintah berserta parameternya berhasil, maka SPC LOW COST MOTOR CONTROLLER akan mengirimkan 0x06 (Acknowledged/ACK). Jika perintah tidak dikenal, maka SPC LOW COST MOTOR CONTROLLER akan mengirimkan 0x15 (Not Acknowledged/NCK). Sedangkan jika perintah dikenal tetapi parameter perintah salah, maka SPC LOW COST MOTOR CONTROLLER tidak akan mengirimkan balasan.

Jika perintah yang telah dikirimkan merupakan perintah yang meminta data dari modul SPC LOW COST MOTOR CONTROLLER, maka SPC LOW COST MOTOR CONTROLLER akan mengirimkan data melalui jalur TX TTL.

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 <pulse delay> yang memiliki range 1 - 65535. Jika <pulse delay> bernilai 1500 maka byte MSB yang dikirim/diterima adalah 5 dan byte LSB yang dikirim/diterima adalah 220 ((5x256)+220=1500).

Perintah dan parameter yang bisa digunakan dapat dilihat pada bagian 3.3.

3.2. ANTARMUKA I2CModul SPC LOW COST MOTOR CONTROLLER memiliki antarmuka I2C. Pada antarmuka I2C ini, modul SPC LOW COST MOTOR CONTROLLER bertindak sebagai slave dengan alamat sesuai dengan telah ditentukan sebelumnya melalui perintah UART (lihat bagian 3.3.9). Antarmuka I2C pada modul SPC LOW COST MOTOR CONTROLLER mendukung bit rate sampai dengan maksimum 50 kHz.

Semua perintah yang dikirim melalui antarmuka I2C diawali dengan start condition dan kemudian diikuti dengan pengiriman 1 byte alamat modul SPC LOW COST 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.

Berikut urutan yang harus dilakukan untuk mengirimkan perintah melalui antar muka 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 (jika ada)

Start

Stop

Jika transmisi perintah berserta parameternya berhasil, maka SPC LOW COST MOTOR CONTROLLER akan menulis respon heksadesimal 0x06 (Acknowledged/ACK) pada buffer I2C-nya. Sebaliknya jika perintah tidak dikenal atau parameter perintah salah, maka SPC LOW COST MOTOR CONTROLLER akan menulis respon heksadesimal 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 LOW COST 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 LOW COST 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 <pulse delay> yang memiliki range 1 - 65535. Jika <pulse delay> bernilai 1500 maka byte MSB yang dikirim/diterima adalah 5 dan byte LSB yang dikirim/diterima adalah 220 ((5x256)+220=1500).

3.3. COMMAND SETBerikut ini daftar lengkap perintah-perintah dalam antarmuka UART dan I2C:

3.3.1. DC FORWARD

Fungsi Mengendalikan putaran maju motor DCPerintah 0x30Parameter <Motor number>

1 motor DC yang terhubung pada M12 motor DC yang terhubung pada M23 motor DC yang terhubung pada M34 motor DC yang terhubung pada M4

<pwm level>0 - 255 persentase duty cycle yang diberikan (0 =

0% ; 255 = 100%)Respon 0x06 jika perintah dikenali

0x15 jika perintah tidak dikenaliDelay antara Command dan Respon

10 µs

8

+ +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)

...

Keterangan ● Intensitas cahaya LED indikator masing2 H-Bridge (M1, M2, M3, dan M4) akan sebanding dengan nilai PWM yang diberikan. Jika nilai PWM adalah 0 maka LED indikator akan padam. Sedangkan jika nilai PWM adalah 255 maka LED indikator akan menyala dengan intensitas yang paling tinggi.

● Pada kondisi forward, LED indikator juga akan akan berkedip.

● Pada kondisi forward, Mn1 (n merupakan nomor H-Bridge) akan mengeluarkan tegangan sebanding dengan nilai PWM sedangkan Mn2 akan terhubung dengan MGND.

● Arah motor dan nilai PWM tidak akan disimpan di EEPROM. Saat modul SPC baru power on, nilai PWM setiap H-bridge adalah 0 (nol) dan motor pada kondisi stop (ke-4 LED indikator akan berkedip redup tiap kurang lebih 2 detik).

Contoh dengan antarmuka UART untuk mengendalikan kecepatan putaran maju motor DC yang terhubung ke M1. Misalkan duty cycle yang diinginkan 50% (0,5 * 255 = 128) atau setara dengan bilangan desimal 128 dan bilangan heksadesimal 0x80:

User : 0x30 0x01 0x80SPC : 0x06

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

i2c_start(); // Start Conditioni2c_write(0xE0); // Tulis ke modul SPC Low Cost Motori2c_write(0x30); // Perintah “DC Forward”i2c_write(0x01); // nomor motori2c_write(0x80); // nilai PWMi2c_stop(); // Stop Conditiondelay_us(10); // delay 10 usi2c_start(); // Start Conditioni2c_write(0xE1); // Baca ke modul SPC Low Cost Motortemp = i2c_read(0); // Data Acknowledgementi2c_stop(); // Stop Condition

3.3.2. DC REVERSE

Fungsi Mengendalikan putaran mundur motor DCPerintah 0x31Parameter <Motor number>

1 motor DC yang terhubung pada M12 motor DC yang terhubung pada M23 motor DC yang terhubung pada M34 motor DC yang terhubung pada M4

<pwm level>0 - 255 persentase duty cycle yang diberikan (0 =

0% ; 255 = 100%)

9

Respon 0x06 jika perintah dikenali0x15 jika perintah tidak dikenali

Delay antara Command dan Respon

10 µs

Keterangan ● Intensitas cahaya LED indikator masing2 H-Bridge (M1, M2, M3, dan M4) akan sebanding dengan nilai PWM yang diberikan. Jika nilai PWM adalah 0 maka LED indikator akan padam. Sedangkan jika nilai PWM adalah 255 maka LED indikator akan menyala dengan intensitas yang paling tinggi.

● Pada kondisi reverse, Mn2 (n merupakan nomor H-Bridge) akan mengeluarkan tegangan sebanding dengan nilai PWM sedangkan Mn1 akan terhubung dengan MGND.

● Arah motor dan nilai PWM tidak akan disimpan di EEPROM. Saat modul SPC baru power on, nilai PWM setiap H-bridge adalah 0 (nol) dan motor pada kondisi stop (ke-4 LED indikator akan berkedip redup tiap kurang lebih 2 detik).

Contoh dengan antarmuka UART untuk mengendalikan kecepatan putaran mundur motor DC yang terhubung ke M1. Misalkan duty cycle yang diinginkan 20% (0,25 * 255 = 64) atau setara dengan bilangan desimal 64 dan bilangan heksadesimal 0x40:

User : 0x31 0x01 0x40SPC : 0x06

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

i2c_start(); // Start Conditioni2c_write(0xE0); // Tulis ke modul SPC Low Cost Motori2c_write(0x31); // Perintah “DC Reverse”i2c_write(0x01); // nomor motori2c_write(0x40); // nilai PWMi2c_stop(); // Stop Conditiondelay_us(10); // delay 10 usi2c_start(); // Start Conditioni2c_write(0xE1); // Baca ke modul SPC Low Cost Motortemp = i2c_read(0); // Data Acknowledgementi2c_stop(); // Stop Condition

3.3.3. DC STOP

Fungsi Menghentikan putaran motor DCPerintah 0x32Parameter <Motor number>

1 motor DC yang terhubung pada M12 motor DC yang terhubung pada M23 motor DC yang terhubung pada M34 motor DC yang terhubung pada M4

Respon 0x06 jika perintah dikenali0x15 jika perintah tidak dikenali

10

Delay antara Command dan Respon

10 µs

Keterangan ● Pada kondisi stop, Mn1 dan Mn2 akan berada pada kondisi tri state / high impedance.

Contoh dengan antarmuka UART untuk menghentikan putaran motor DC yang terhubung ke M1:

User : 0x32 0x01SPC : 0x06

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

i2c_start(); // Start Conditioni2c_write(0xE0); // Tulis ke modul SPC Low Cost Motori2c_write(0x32); // Perintah “DC Stop”i2c_write(0x01); // nomor motori2c_stop(); // Stop Conditiondelay_us(10); // delay 10 usi2c_start(); // Start Conditioni2c_write(0xE1); // Baca ke modul SPC Low Cost Motortemp = i2c_read(0); // Data Acknowledgementi2c_stop(); // Stop Condition

3.3.4. DC ALL STOP

Fungsi Menghentikan putaran semua motor DC atau stepper secara bersamaan

Perintah 0x33Parameter -Respon 0x06 jika perintah dikenali

0x15 jika perintah tidak dikenaliDelay antara Command dan Respon

10 µs

Keterangan ● Perintah ini akan membuat seluruh H-Bridge berada pada kondisi stop.

● Jika seluruh H-Bridge berada pada kondisi stop, maka LED indikator tiap H-Bridge akan berkedip redup setiap kurang lebih 2 detik sekali.

Contoh dengan antarmuka UART untuk menghentikan putaran motor DC atau stepper yang terhubung ke M1, M2, M3, dan M4 secara bersamaan:

User : 0x33SPC : 0x06

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

i2c_start(); // Start Conditioni2c_write(0xE0); // Tulis ke modul SPC Low Cost Motori2c_write(0x33); // Perintah “All Stop”i2c_stop(); // Stop Condition

11

delay_us(10); // delay 10 usi2c_start(); // Start Conditioni2c_write(0xE1); // Baca ke modul SPC Low Cost Motortemp = i2c_read(0); // Data Acknowledgementi2c_stop(); // Stop Condition

3.3.5. STEPPER CONTINUOUS RUN

Fungsi Mengendalikan motor stepper agar berputar secara kontinuPerintah 0x34Parameter <Motor number>

1 motor stepper yang terhubung pada M1 dan M22 motor stepper yang terhubung pada M3 dan M4

<tipe step>1 Full-Step: motor akan berputar 1 step tiap 1 pulsa2 Half-Step: motor akan berputar 1/2 step tiap 1

pulsa

<direction>0 motor berputar searah jarum jam1 motor berputar berlawanan arah jarum jam

<pulse delay>1 - 65535 waktu tunda antar pulsa ke motor stepper.

Semakin kecil nilai pulse delay, maka semakin cepat putaran motor stepper

Respon 0x06 jika perintah dikenali0x15 jika perintah tidak dikenali

Delay antara Command dan Respon

10 µs

Keterangan ● Jika arah putaran motor stepper berlawanan dengan perintah yang diberikan berarti pemasangan koneksi dari motor stepper terbalik. Untuk memperbaikinya, ubah urutan pemasangan koneksi.

● Tiap 1 nilai pulse delay mewakili waktu tunda antar pulsa sebesar kurang lebih 1 ms.

Contoh dengan antarmuka UART untuk menggerakkan motor stepper yang terhubung ke M1 dan M2 agar berputar searah jarum jam secara kontinu dengan tipe step adalah full-step, serta delay antar pulsa sebesar kurang lebih 100 ms (bilangan heksadesimal 0x0064):

User : 0x34 0x01 0x01 0x00 0x00 0x64SPC : 0x06

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

i2c_start(); // Start Conditioni2c_write(0xE0); // Tulis ke modul SPC Low Cost Motori2c_write(0x34); // Perintah “Stepper Continuous Run”i2c_write(0x01); // nomor motori2c_write(0x01); // tipe step

12

i2c_write(0x00); // derectioni2c_write(0x00); // pulse delay MSBi2c_write(0x64); // pulse delay LSBi2c_stop(); // Stop Conditiondelay_us(10); // delay 10 usi2c_start(); // Start Conditioni2c_write(0xE1); // Baca ke modul SPC Low Cost Motortemp = i2c_read(0); // Data Acknowledgementi2c_stop(); // Stop Condition

3.3.6. STEPPER PULSE COUNT RUN

Fungsi Mengendalikan motor stepper agar berputar sejumlah step yang diberikan

Perintah 0x35Parameter <Motor number>

1 motor stepper yang terhubung pada M1 dan M22 motor stepper yang terhubung pada M3 dan M4

<tipe step>1 Full-Step: motor akan berputar 1 step tiap 1 pulsa2 Half-Step: motor akan berputar 1/2 step tiap 1

pulsa

<direction>0 motor berputar searah jarum jam1 motor berputar berlawanan arah jarum jam

<pulse delay>1 - 65535 waktu tunda antar pulsa ke motor stepper.

Semakin kecil nilai pulse delay, maka semakin cepat putaran motor stepper

<pulse count>1 - 65535 jumlah pulsa yang dikirimkan ke motor

stepperRespon 0x06 jika perintah dikenali

0x15 jika perintah tidak dikenaliDelay antara Command dan Respon

10 µs

Keterangan ● Jika arah putaran motor stepper berlawanan dengan perintah yang diberikan berarti pemasangan koneksi dari motor stepper terbalik. Untuk memperbaikinya, ubah urutan pemasangan koneksi.

● Tiap 1 nilai pulse delay mewakili waktu tunda antar pulsa sebesar kurang lebih 1 ms.

● Setelah jumlah pulsa yang telah dikeluarkan sama dengan pulse count, maka motor stepper secara otomatis berhenti (pada kondisi brake) dengan tetap mempertahankan torsi motor (lilitan motor stepper tetap dialiri arus).

13

Contoh dengan antarmuka UART untuk menggerakkan motor stepper yang terhubung ke M1 dan M2 agar berputar searah jarum jam sebanyak 20 (bilangan heksadesimal 0x0014) pulsa dengan tipe step adalah full-step, serta delay antar pulsa sebesar kurang lebih 1000 ms (bilangan heksadesimal 0x03E8):

User : 0x35 0x01 0x01 0x00 0x03 0xE8 0x00 0x14SPC : 0x06

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

i2c_start(); // Start Conditioni2c_write(0xE0); // Tulis ke modul SPC Low Cost Motori2c_write(0x35); // Perintah “Stepper Pulse Count Run”i2c_write(0x01); // nomor motori2c_write(0x01); // tipe stepi2c_write(0x00); // derectioni2c_write(0x03); // pulse delay MSBi2c_write(0xE8); // pulse delay LSBi2c_write(0x00); // pulse count MSBi2c_write(0x14); // pulse count LSBi2c_stop(); // Stop Conditiondelay_us(10); // delay 10 usi2c_start(); // Start Conditioni2c_write(0xE1); // Baca ke modul SPC Low Cost Motortemp = i2c_read(0); // Data Acknowledgementi2c_stop(); // Stop Condition

3.3.7. STEPPER BRAKE

Fungsi Menghentikan motor stepper dengan tetap mempertahankan torsi motor (lilitan motor tetap dialiri arus)

Perintah 0x36Parameter <Motor number>

1 motor stepper yang terhubung pada M1 dan M22 motor stepper yang terhubung pada M3 dan M4

Respon 0x06 jika perintah dikenali0x15 jika perintah tidak dikenali

Delay antara Command dan Respon

10 µs

Keterangan ● Perintah Brake ini boleh diberikan setelah perintah Continuous Run.

● Pada kondisi brake, motor stepper berhenti dengan tetap mempertahankan torsi motor (lilitan motor stepper tetap dialiri arus).

● Pada kondisi brake, LED indikator akan menyala sesuai dengan perintah Run terakhir.

Contoh dengan antarmuka UART untuk menghentikan motor stepper yang terhubung ke M1 dan M2:

User : 0x36 0x01SPC : 0x06

14

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

i2c_start(); // Start Conditioni2c_write(0xE0); // Tulis ke modul SPC Low Cost Motori2c_write(0x36); // Perintah “Stepper Brake”i2c_write(0x01); // nomor motori2c_stop(); // Stop Conditiondelay_us(10); // delay 10 usi2c_start(); // Start Conditioni2c_write(0xE1); // Baca ke modul SPC Low Cost Motortemp = i2c_read(0); // Data Acknowledgementi2c_stop(); // Stop Condition

3.3.8. STEPPER STOP

Fungsi Menghentikan motor stepper (lilitan motor tidak dialiri arus)Perintah 0x37Parameter <Motor number>

1 motor stepper yang terhubung pada M1 dan M22 motor stepper yang terhubung pada M3 dan M4

Respon 0x06 jika perintah dikenali0x15 jika perintah tidak dikenali

Delay antara Command dan Respon

10 µs

Keterangan ● Perintah Stop ini boleh diberikan setelah perintah Continuous Run, Pulse Count Run, atau Brake.

● Pada kondisi stop, motor stepper akan berhenti dan tidak ada arus yang mengalir pada seluruh lilitan motor.

● Kondisi stop merupakan kondisi default saat modul SPC baru saja dinyalakan.

Contoh dengan antarmuka UART:

User : 0x37 0x01SPC : 0x06

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

i2c_start(); // Start Conditioni2c_write(0xE0); // Tulis ke modul SPC Low Cost Motori2c_write(0x37); // Perintah “Stepper Stop”i2c_write(0x01); // nomor motori2c_stop(); // Stop Conditiondelay_us(10); // delay 10 usi2c_start(); // Start Conditioni2c_write(0xE1); // Baca ke modul SPC Low Cost Motortemp = i2c_read(0); // Data Acknowledgementi2c_stop(); // Stop Condition

15

3.3.9. SET I2C ADDRESS

Fungsi Mengubah alamat I2CPerintah 0x41Parameter <0xAA> <0x55> <newAddress>Respon 0x06 jika perintah dikenali

0x15 jika perintah tidak dikenaliDelay antara Command dan Respon

10 µs

Keterangan ● Perintah ini hanya dapat dilakukan dengan menggunakan jalur komunikasi UART.

● Modul SPC akan menggunakan alamat I2C yang baru setelah melalui siklus power off.

● Alamat I2C <newAddress> yang diperbolehkan dapat dilihat pada tabel berikutnya.

● Jika alamat baru yang diberikan tidak sesuai, maka alamat I2C tidak akan diubah (tetap alamat sebelumnya).

● Alamat I2C default adalah 0xE0.● Data alamat I2C disimpan di EEPROM sehingga tidak

akan hilang saat power off.

Alamat I2CAlamat Tulis I2C Alamat Baca I2C

0xE0 0xE10xE2 0xE30xE4 0xE50xE6 0xE70xE8 0xE90xEA 0xEB0xEC 0xED0xEE 0xEF

Contoh dengan antarmuka UART untuk mengganti alamat I2C dari 0xE0 menjadi 0xE2:

User : 0x41 0xAA 0x55 0xE2SPC : 0x06

3.3.10.READ I2C ADDRESS

Fungsi Membaca alamat I2C sekarangPerintah 0x42Parameter -Respon <I2CAddress> jika perintah dikenali

0x15 jika perintah tidak dikenaliDelay antara Command dan Respon

10 µs

Keterangan ● Perintah ini hanya dapat dilakukan dengan menggunakan jalur komunikasi UART.

● Alamat I2C modul SPC juga dapat diketahui melalui jumlah kedip LED indikator saat modul SPC baru power on.

● Jika alamat I2C adalah 0xE0 maka LED indikator akan

16

berkedip 1 kali. Jika alamat I2C adalah 0xE2 maka LED indikator akan berkedip 2 kali. Jika alamat I2C adalah 0xE4 maka LED indikator akan berkedip 3 kali dan demikian seterusnya sampai alamat I2C 0xEE maka LED indikator akan berkedip 8 kali.

Contoh dengan antarmuka UART:

User : 0x42Modul SPC : <I2CAddress>

4. PROSEDUR PENGUJIAN1. Hubungkan sumber catu daya 5 Volt ke VIN dan 9 - 12 Volt ke VM modul

SPC LOW COST MOTOR CONTROLLER.2. LED indikator akan berkedip yang menandakan alamat I2C.3. Kirimkan perintah “DC Forward” ke motor 1 (M1) dengan nilai PWM 255

melalui antarmuka UART TTL.4. LED indikator M1 akan berkedip dan jika diukur tegangan antara pin M11

dan M12, maka hasil akan mendekati nilai tegangan catu daya motor yang diberikan pada pin VM.

5. Ulangi langkah 3 dan 4 untuk motor 2 (M2), motor 3 (M3), dan motor 4 (M4).

5. CONTOH APLIKASI DAN PROGRAMSebagai contoh aplikasi, dimisalkan modul SPC LOW COST MOTOR CONTROLLER digunakan untuk menggerakkan 4 buah motor DC dengan antarmuka I2C atau antarmuka UART. Modul DT-AVR Low Cost Micro System (LCMS) dengan mikrokontroler ATmega8535 digunakan sebagai master yang akan mengirimkan perintah. Berikut koneksi antara modul-modul yang digunakan:

17

DT-AVRLCMS

SCL

SDA SDA (PORTD.2)

SCL (PORTD.3)

M1

M2

M11M12M21M22

VM (8V – 36V ) VIN (+5 V )

MGND(Ground Catu Daya Motor)

PGND(Ground Catu Daya

Digital)M3

M4

M31M32M41M42

SPC LOW COST

MOTOR CONTROLLER(alamat 0xE0)

Sebagai contoh program untuk aplikasi di atas, pada DVD yang disertakan pada saat pembelian modul SPC LOW COST MOTOR CONTROLLER disertakan program contoh_i2c.c dan contoh_uart.c yang ditulis dengan menggunakan CodeVisionAVR 1.25.2 versi evaluasi.

Pada program tersebut, DT-AVR LCMS akan mengirimkan perintah "DC Forward" untuk masing-masing motor dengan nilai PWM 255 ke modul SPC (untuk contoh I2C menggunakan alamat modul SPC 0xE0) dengan jeda tiap perintah sekitar 1000 ms. Setelah seluruh perintah dikirim, DT-AVR LCMS akan menunggu selama 3000 ms. Kemudian perintah "DC All Stop" akan dikirimkan ke SPC dilanjutkan dengan jeda selama 3000 ms. Selanjutnya DT-AVR LCMS akan mengirimkan perintah "DC Reverse" untuk masing-masing motor dengan nilai PWM 128 ke modul SPC dengan jeda tiap perintah sekitar 1000 ms. Setelah semua perintah "DC Reverse" terkirim, DT-AVR LCMS akan kembali menunggu selama 3000 ms. Program diakhiri dengan DT-AVR LCMS mengirimkan perintah "DC Stop" untuk masing-masing motor ke modul SPC.

♦ Terima Kasih atas kepercayaan Anda menggunakan produk kami, bila ada kesulitan, pertanyaan atau saran mengenai produk ini silahkan menghubungi technical support kami :

[email protected]

18

DT-AVRLCMS

RXD

TXD RX (PORTD.0)

TX (PORTD.1)

M1

M2

M11M12M21M22

VM (8V – 36V ) VIN (+5 V )

MGND(Ground Catu Daya Motor)

PGND(Ground Catu Daya

Digital)M3

M4

M31M32M41M42

SPCLOW COST

MOTOR CONTROLLER(alamat 0xE0)

LAMPIRAN A.Skematik SPC LOW COST MOTOR CONTROLLER

19