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.
Daftar Isi 1
Pendahuluan............................................................................................. 1.1 Spesifikasi SPC LOW COST MOTOR CONTROLLER......................... 1.2 Sistem yang Dianjurkan............................................................................
3 3 3
2
Perangkat Keras SPC LOW COST MOTOR CONTROLLER......................... 2.1 Tata Letak Komponen SPC LOW COST MOTOR CONTROLLER..... 2.2 Konektor dan Pengaturan Jumper..........................................................
3 3 4
3
Antarmuka SPC LOW COST MOTOR CONTROLLER................................. 3.1 Antarmuka UART TTL................................................................................. 3.2 Antarmuka I2C............................................................................................. 3.3 Command Set.............................................................................................. 3.3.1 DC Forward................................................................................................. 3.3.2 DC Reverse.................................................................................................. 3.3.3 DC Stop........................................................................................................ 3.3.4 DC All Stop.................................................................................................. 3.3.5 Stepper Continuous Run............................................................................ 3.3.6 Stepper Pulse Count Run........................................................................... 3.3.7 Stepper Brake............................................................................................ 3.3.8 Stepper Stop............................................................................................... 3.3.9 Set I2C Address........................................................................................... 3.3.10 Read I2C Address.......................................................................................
6 6 7 8 8 9 10 11 11 12 14 15 15 16
4
Prosedur Pengujian..................................................................................
16
5
Contoh Aplikasi dan Program..................................................................
17
Lampiran A.
Skematik SPC LOW COST MOTOR CONTROLLER............................
2
19
1.
PENDAHULUAN Smart 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 CONTROLLER Spesifikasi 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 dicascade hingga 8 modul.
1.2.
SISTEM YANG DIANJURKAN Sistem 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 JUMPER Konektor 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
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)
Titik referensi untuk catu daya motor
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 Pengendali Motor DC
Fungsi M3 & M4 Posisi J6 & J7
1 2 3
1 2 3
Pengendali Motor DC J3 J4
Pengendali Motor Stepper
J6 J7
1 2 3
1 2 3
Pengendali Motor Stepper J3 J4
J6 J7
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:
Bipolar Konektor J1 8V-36V
M
VM
A
M11/M31 M12/M32
B
M21/M41 M22/M42
C
MGND
D
Ground Catu Daya Motor
Unipolar 5 kabel Konektor J1
M
A
8V-36V VM
B
M11/M31 M12/M32
C D
COMMON
5
M21/M41 M22M42 MGND
Ground Catu Daya Motor
Unipolar 6 kabel Konektor J1 8V-36V VM
A
M
M11/M31 M12/M32
B
M21/M41 M22/M42
C
MGND
D Ground Catu Daya Motor COMMON 1
COMMON 2
Jumper SCL-SDA (J5) berfungsi untuk mengaktifkan resistor pull-up untuk pin SDA dan SCL pada antarmuka I2C. Jumper SCL-SDA J5
SCL SDA
Fungsi Pull-up tidak aktif (jumper terlepas)
Pull-up aktif (jumper terpasang) SCL SDA Penting ! Apabila lebih dari satu modul dihubungkan pada I 2C-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 CONTROLLER SPC LOW COST MOTOR CONTROLLER memiliki antarmuka UART TTL dan I2C yang dapat digunakan untuk menerima perintah atau mengirim data.
3.1.
ANTARMUKA UART TTL Parameter komunikasi UART TTL adalah sebagai berikut: • 38400 bps • 8 data bit • 1 stop bit • tanpa parity bit 6
•
tanpa flow control
Semua perintah yang dikirim melalui antarmuka UART TTL dimulai dengan mengirim 1 byte data yang berisi <nomor perintah> dan (jika diperlukan) nbyte 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
yang memiliki range 1 - 65535. Jika 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 I2C Modul 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. Start
+
1
1
1
0
X
X
X
0
+
X
X
X
Alamat Tulis X
X
X
X
X
X
X
X
+
Command
X
X
X
X
Parameter (jika ada)
Stop 7
X
+
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 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. Start
1
+
1
1
0
X
X
X
1
+
X
X
X
Alamat Baca 0
0
0
X
0
1
X
X
+
ACK / NCK ... +
X
X
X
X
X
X
X
X
X
+
Data 1 (jika ada) X
X
X
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 yang memiliki range 1 - 65535. Jika bernilai 1500 maka byte MSB yang dikirim/diterima adalah 5 dan byte LSB yang dikirim/diterima adalah 220 ((5x256)+220=1500). 3.3.
COMMAND SET Berikut ini daftar lengkap perintah-perintah dalam antarmuka UART dan I2C:
3.3.1. DC FORWARD Fungsi Perintah Parameter
Mengendalikan putaran maju motor DC 0x30 <Motor number> 1 motor DC yang terhubung pada M1 2 motor DC yang terhubung pada M2 3 motor DC yang terhubung pada M3 4 motor DC yang terhubung pada M4
0 - 255 persentase duty cycle yang diberikan (0 = 0% ; 255 = 100%) Respon 0x06 jika perintah dikenali 0x15 jika perintah tidak dikenali Delay antara 10 µs Command dan Respon 8
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 HBridge) 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 SPC
: :
0x30 0x01 0x80 0x06
Berikut ini contoh pseudo code untuk menggunakan perintah ini dengan antarmuka I2C (misalkan alamat I2C = 0xE0): i2c_start(); i2c_write(0xE0); i2c_write(0x30); i2c_write(0x01); i2c_write(0x80); i2c_stop();
// // // // // //
Start Condition Tulis ke modul SPC Low Cost Motor Perintah “DC Forward” nomor motor nilai PWM 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 Low Cost Motor Data Acknowledgement Stop Condition
3.3.2. DC REVERSE Fungsi Perintah Parameter
Mengendalikan putaran mundur motor DC 0x31 <Motor number> 1 motor DC yang terhubung pada M1 2 motor DC yang terhubung pada M2 3 motor DC yang terhubung pada M3 4 motor DC yang terhubung pada M4 0 - 255 persentase duty cycle yang diberikan (0 = 0% ; 255 = 100%) 9
0x06 jika perintah dikenali 0x15 jika perintah tidak dikenali 10 µs
Respon Delay antara Command dan Respon 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 HBridge) 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 SPC
: :
0x31 0x01 0x40 0x06
Berikut ini contoh pseudo code untuk menggunakan perintah ini dengan antarmuka I2C (misalkan alamat I2C = 0xE0): i2c_start(); i2c_write(0xE0); i2c_write(0x31); i2c_write(0x01); i2c_write(0x40); i2c_stop();
// // // // // //
Start Condition Tulis ke modul SPC Low Cost Motor Perintah “DC Reverse” nomor motor nilai PWM 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 Low Cost Motor Data Acknowledgement Stop Condition
3.3.3. DC STOP Fungsi Perintah Parameter
Respon
Menghentikan putaran motor DC 0x32 <Motor number> 1 motor DC yang terhubung pada M1 2 motor DC yang terhubung pada M2 3 motor DC yang terhubung pada M3 4 motor DC yang terhubung pada M4 0x06 jika perintah dikenali 0x15 jika perintah tidak dikenali 10
Delay antara 10 µs Command dan Respon 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 SPC
: :
0x32 0x01 0x06
Berikut ini contoh pseudo code untuk menggunakan perintah ini dengan antarmuka I2C (misalkan alamat I2C = 0xE0): i2c_start(); i2c_write(0xE0); i2c_write(0x32); i2c_write(0x01); i2c_stop();
// // // // //
Start Condition Tulis ke modul SPC Low Cost Motor Perintah “DC Stop” nomor motor 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 Low Cost Motor Data Acknowledgement Stop Condition
3.3.4. DC ALL STOP Fungsi
Menghentikan putaran semua motor DC atau stepper secara bersamaan Perintah 0x33 Parameter Respon 0x06 jika perintah dikenali 0x15 jika perintah tidak dikenali Delay antara 10 µs Command dan Respon 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 SPC
: :
0x33 0x06
Berikut ini contoh pseudo code untuk menggunakan perintah ini dengan antarmuka I2C (misalkan alamat I2C = 0xE0): i2c_start(); i2c_write(0xE0); i2c_write(0x33); i2c_stop();
// // // //
Start Condition Tulis ke modul SPC Low Cost Motor Perintah “All Stop” Stop Condition
11
delay_us(10);
// delay 10 us
i2c_start(); i2c_write(0xE1); temp = i2c_read(0); i2c_stop();
// // // //
Start Condition Baca ke modul SPC Low Cost Motor Data Acknowledgement Stop Condition
3.3.5. STEPPER CONTINUOUS RUN Fungsi Perintah Parameter
Mengendalikan motor stepper agar berputar secara kontinu 0x34 <Motor number> 1 motor stepper yang terhubung pada M1 dan M2 2 motor stepper yang terhubung pada M3 dan M4 1 Full-Step: motor akan berputar 1 step tiap 1 pulsa 2 Half-Step: motor akan berputar 1/2 step tiap 1 pulsa 0 motor berputar searah jarum jam 1 motor berputar berlawanan arah jarum jam
1 - 65535 waktu tunda antar pulsa ke motor stepper. Semakin kecil nilai pulse delay, maka semakin cepat putaran motor stepper Respon 0x06 jika perintah dikenali 0x15 jika perintah tidak dikenali Delay antara 10 µs Command dan Respon 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 SPC
: :
0x34 0x01 0x01 0x00 0x00 0x64 0x06
Berikut ini contoh pseudo code untuk menggunakan perintah ini dengan antarmuka I2C (misalkan alamat I2C = 0xE0): i2c_start(); i2c_write(0xE0); i2c_write(0x34); i2c_write(0x01); i2c_write(0x01);
// // // // //
Start Condition Tulis ke modul SPC Low Cost Motor Perintah “Stepper Continuous Run” nomor motor tipe step
12
i2c_write(0x00); i2c_write(0x00); i2c_write(0x64); i2c_stop();
// // // //
derection pulse delay MSB pulse delay LSB 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 Low Cost Motor Data Acknowledgement Stop Condition
3.3.6. STEPPER PULSE COUNT RUN Fungsi Perintah Parameter
Mengendalikan motor stepper agar berputar sejumlah step yang diberikan 0x35 <Motor number> 1 motor stepper yang terhubung pada M1 dan M2 2 motor stepper yang terhubung pada M3 dan M4 1 Full-Step: motor akan berputar 1 step tiap 1 pulsa 2 Half-Step: motor akan berputar 1/2 step tiap 1 pulsa 0 motor berputar searah jarum jam 1 motor berputar berlawanan arah jarum jam 1 - 65535 waktu tunda antar pulsa ke motor stepper. Semakin kecil nilai pulse delay, maka semakin cepat putaran motor stepper
1 - 65535 jumlah pulsa yang dikirimkan ke motor stepper Respon 0x06 jika perintah dikenali 0x15 jika perintah tidak dikenali Delay antara 10 µs Command dan Respon 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 SPC
: :
0x35 0x01 0x01 0x00 0x03 0xE8 0x00 0x14 0x06
Berikut ini contoh pseudo code untuk menggunakan perintah ini dengan antarmuka I2C (misalkan alamat I2C = 0xE0): i2c_start(); i2c_write(0xE0); i2c_write(0x35); i2c_write(0x01); i2c_write(0x01); i2c_write(0x00); i2c_write(0x03); i2c_write(0xE8); i2c_write(0x00); i2c_write(0x14); i2c_stop();
// // // // // // // // // // //
Start Condition Tulis ke modul SPC Low Cost Motor Perintah “Stepper Pulse Count Run” nomor motor tipe step derection pulse delay MSB pulse delay LSB pulse count MSB pulse count LSB 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 Low Cost Motor Data Acknowledgement Stop Condition
3.3.7. STEPPER BRAKE Fungsi
Menghentikan motor stepper dengan tetap mempertahankan torsi motor (lilitan motor tetap dialiri arus) Perintah 0x36 Parameter <Motor number> 1 motor stepper yang terhubung pada M1 dan M2 2 motor stepper yang terhubung pada M3 dan M4 Respon 0x06 jika perintah dikenali 0x15 jika perintah tidak dikenali Delay antara 10 µs Command dan Respon 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 SPC
: :
0x36 0x01 0x06 14
Berikut ini contoh pseudo code untuk menggunakan perintah ini dengan antarmuka I2C (misalkan alamat I2C = 0xE0): i2c_start(); i2c_write(0xE0); i2c_write(0x36); i2c_write(0x01); i2c_stop();
// // // // //
Start Condition Tulis ke modul SPC Low Cost Motor Perintah “Stepper Brake” nomor motor 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 Low Cost Motor Data Acknowledgement Stop Condition
3.3.8. STEPPER STOP Fungsi Perintah Parameter
Menghentikan motor stepper (lilitan motor tidak dialiri arus) 0x37 <Motor number> 1 motor stepper yang terhubung pada M1 dan M2 2 motor stepper yang terhubung pada M3 dan M4 Respon 0x06 jika perintah dikenali 0x15 jika perintah tidak dikenali Delay antara 10 µs Command dan Respon 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 SPC
: :
0x37 0x01 0x06
Berikut ini contoh pseudo code untuk menggunakan perintah ini dengan antarmuka I2C (misalkan alamat I2C = 0xE0): i2c_start(); i2c_write(0xE0); i2c_write(0x37); i2c_write(0x01); i2c_stop();
// // // // //
Start Condition Tulis ke modul SPC Low Cost Motor Perintah “Stepper Stop” nomor motor 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 Low Cost Motor Data Acknowledgement Stop Condition
15
3.3.9. SET I2C ADDRESS Mengubah alamat I2C 0x41 <0xAA> <0x55> 0x06 jika perintah dikenali 0x15 jika perintah tidak dikenali Delay antara 10 µs Command dan Respon Keterangan ● Perintah ini hanya dapat dilakukan dengan menggunakan jalur komunikasi UART. 2 ● Modul SPC akan menggunakan alamat I C yang baru setelah melalui siklus power off. 2 ● Alamat I C yang diperbolehkan dapat dilihat pada tabel berikutnya. ● Jika alamat baru yang diberikan tidak sesuai, maka alamat I2C tidak akan diubah (tetap alamat sebelumnya). 2 ● Alamat I C default adalah 0xE0. 2 ● Data alamat I C disimpan di EEPROM sehingga tidak akan hilang saat power off. Fungsi Perintah Parameter Respon
Alamat I2C Alamat Tulis I2C Alamat Baca I2C 0xE0 0xE1 0xE2 0xE3 0xE4 0xE5 0xE6 0xE7 0xE8 0xE9 0xEA 0xEB 0xEC 0xED 0xEE 0xEF Contoh dengan antarmuka UART untuk mengganti alamat I 2C dari 0xE0 menjadi 0xE2: User SPC
: :
0x41 0xAA 0x55 0xE2 0x06
3.3.10. READ I2C ADDRESS Membaca alamat I2C sekarang 0x42 jika perintah dikenali 0x15 jika perintah tidak dikenali Delay antara 10 µs Command dan Respon Keterangan ● Perintah ini hanya dapat dilakukan dengan menggunakan jalur komunikasi UART. 2 ● Alamat I C modul SPC juga dapat diketahui melalui jumlah kedip LED indikator saat modul SPC baru power on. 2 ● Jika alamat I C adalah 0xE0 maka LED indikator akan Fungsi Perintah Parameter Respon
16
berkedip 1 kali. Jika alamat I 2C adalah 0xE2 maka LED indikator akan berkedip 2 kali. Jika alamat I 2C 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 Modul SPC
: :
0x42
4.
PROSEDUR PENGUJIAN 1. 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 PROGRAM Sebagai 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: VM (8V – 36V )
M1
VIN (+5 V )
M11 M12 SDA SDA (PORTD.2)
M21 M22
M2
M3
SCL SCL (PORTD.3)
SPC LOW COST MOTOR CONTROLLER (alamat 0xE0) M31 M32 M41 M42
M4 MGND (Ground Catu Daya Motor)
17
PGND (Ground Catu Daya Digital)
DT-AVR LCMS
VM (8V – 36V )
M1
VIN (+5 V )
M11 M12 M21 M22
M2
M3
SPC LOW COST MOTOR CONTROLLER (alamat 0xE0)
TXD
RX (PORTD.0)
RXD
TX (PORTD.1)
DT-AVR LCMS
PGND (Ground Catu Daya Digital)
M31 M32 M41 M42
M4 MGND (Ground Catu Daya Motor)
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
LAMPIRAN A. Skematik SPC LOW COST MOTOR CONTROLLER
19