Smart Peripheral Controller
Neo Stepper Motor 1.2A
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 NEO STEPPER MOTOR 1.2A...................................... 1.2 Sistem yang Dianjurkan............................................................................
3 3 3
2
Perangkat Keras SPC NEO STEPPER MOTOR 1.2A.................................. 2.1 Tata Letak Komponen SPC NEO STEPPER MOTOR 1.2A.................. 2.2 Konektor dan Pengaturan Jumper..........................................................
3 3 4
3
Antarmuka SPC NEO STEPPER MOTOR 1.2A........................................... 3.1 Antarmuka UART TTL................................................................................. 3.2 Antarmuka I2C............................................................................................. 3.3 Command Set.............................................................................................. 3.3.1 Continuous Run............................................................................................ 3.3.2 Pulse Count Run........................................................................................... 3.3.3 Brake............................................................................................................. 3.3.4 Stop............................................................................................................... 3.3.5 Set I2C Address........................................................................................... 3.3.6 Read I2C Address.......................................................................................
6 6 6 7 7 8 9 10 10 11
4
Prosedur Pengujian..................................................................................
11
5
Contoh Aplikasi dan Program..................................................................
11
Lampiran A.
Skematik SPC NEO STEPPER MOTOR 1.2A.........................................
2
13
1.
PENDAHULUAN Smart Peripheral Controller / SPC NEO STEPPER MOTOR 1.2A merupakan sebuah modul pengendali motor stepper yang ringkas dan handal serta cocok untuk aplikasi robotik. Modul ini dapat digunakan untuk mengendalikan arah dan kecepatan putaran 1 buah motor stepper menggunakan full-step maupun half-step. Modul ini sudah dilengkapi dengan antarmuka UART level TTL dan I2C sehingga dapat dengan mudah dihubungkan dengan sistem lain.
1.1.
SPESIFIKASI SPC NEO STEPPER MOTOR 1.2A Spesifikasi SPC NEO STEPPER MOTOR 1.2A adalah sebagai berikut: • Sumber catu daya modul menggunakan tegangan 4,8 – 5,4 Volt. • Sumber catu daya motor menggunakan tegangan 2,5 – 13,5 Volt. • Menggunakan IC motor driver TB6612FNG. • Kemampuan arus kontinu 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 NEO STEPPER MOTOR 1.2A dapat di-cascade hingga 8 modul. • Konektor modul menggunakan konfigurasi 16 pin DIP 600mil sehingga lebih mudah dihubungkan langsung ke project board atau PCB lubang.
1.2.
SISTEM YANG DIANJURKAN Sistem yang dianjurkan untuk penggunaan SPC NEO STEPPER MOTOR 1.2A 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, TB6612FNG.pdf, dan Manual SPC Neo Stepper Motor 1.2A.pdf.
2.
PERANGKAT KERAS SPC NEO STEPPER MOTOR 1.2A
2.1.
TATA LETAK KOMPONEN SPC NEO STEPPER MOTOR 1.2A
3
2.2.
KONEKTOR DAN PENGATURAN JUMPER Konektor INTERFACE (J2) berfungsi sebagai konektor untuk catu daya modul, antarmuka UART TTL, dan antarmuka I2C. Pin
Nama
Fungsi
1,2
VIN
Terhubung ke catu daya (4,8 – 5,4 Volt)
3
SCL
I2C-bus clock input
4
SDA
I2C-bus data input / output
5
RX TTL
Input serial level TTL ke modul SPC
6
TX TTL
Output serial level TTL dari modul SPC
7,8
PGND
Titik referensi untuk catu daya modul SPC
Konektor MOTOR (J3) berfungsi sebagai konektor untuk catu daya motor dan koneksi modul ke motor. Pin
Nama
Fungsi
1,2
VM
Terhubung ke catu daya untuk motor (2,5 – 13,5 Volt)
3
M11
Output ke-1 dari pasangan H-Bridge M1
4
M12
Output ke-2 dari pasangan H-Bridge M1
5
M21
Output ke-1 dari pasangan H-Bridge M2
6
M22
Output ke-2 dari pasangan H-Bridge M2
7,8
MGND
Titik referensi untuk catu daya motor
Perhatikan tipe motor stepper yang akan dihubungkan ke SPC NEO STEPPER MOTOR 1.2A karena koneksinya berbeda-beda untuk masing-masing tipe. SPC NEO STEPPER MOTOR 1.2A 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 J3 2,5V-13V
M
A B
VM M11 M12 M21
C
M22 MGND
D Ground Catu Daya Motor
4
Unipolar 5 kabel Konektor J3 2,5V-13V VM
A
M
M11 M12
B
M21 M22
C
MGND
D Ground Catu Daya Motor COMMON
Unipolar 6 kabel Konektor J3 2,5V-13V VM
A
M
M11 M12
B
M21 M22
C
MGND
D Ground Catu Daya Motor COMMON 1
COMMON 2
Jumper SCL-SDA (J4) berfungsi untuk mengaktifkan resistor pull-up untuk pin SDA dan SCL pada antarmuka I2C. Jumper SCL-SDA J4
Fungsi Pull-up tidak aktif (jumper terlepas)
SCL SDA
Pull-up aktif (jumper terpasang) SCL SDA
5
Penting ! Apabila lebih dari satu modul dihubungkan pada I 2C-bus maka jumper SCL-SDA (J4) salah satu modul saja yang perlu dipasang. Pengaturan alamat I2C dapat dilakukan melalui antarmuka UART TTL. LED M1 IND (D3) dan M2 IND (D4) berfungsi sebagai indikator kondisi motor stepper (arah, kondisi, atau indikator pulsa). 3.
ANTARMUKA SPC NEO STEPPER MOTOR 1.2A SPC NEO STEPPER MOTOR 1.2A 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 • 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 perintah yang telah dikirimkan merupakan perintah yang meminta data dari modul SPC NEO STEPPER MOTOR 1.2A, maka SPC NEO STEPPER MOTOR 1.2A 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 NEO STEPPER MOTOR 1.2A memiliki antarmuka I2C. Pada antarmuka I2C ini, modul SPC NEO STEPPER MOTOR 1.2A bertindak sebagai slave dengan alamat sesuai dengan telah ditentukan sebelumnya melalui perintah UART (lihat bagian 3.3.5). Antarmuka I2C pada modul SPC NEO STEPPER MOTOR 1.2A 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 NEO STEPPER MOTOR 1.2A. 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 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
X
+
Parameter (jika ada)
Stop 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.3.
COMMAND SET Berikut ini daftar lengkap perintah-perintah dalam antarmuka UART dan I2C.
3.3.1. CONTINUOUS RUN Fungsi Perintah Parameter
Mengendalikan motor stepper agar berputar secara kontinu 0x30 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 Keterangan ● Jika parameter bernilai 0, maka LED indikator M1 berwarna merah. ● Jika parameter bernilai 1, maka LED indikator M1 berwarna hijau. ● Jika arah putaran motor stepper berlawanan dengan perintah yang diberikan berarti pemasangan koneksi dari motor stepper terbalik. Untuk memperbaikinya, ubah urutan pemasangan koneksi. ● Tiap kali 1 pulsa step diberikan, maka LED indikator M2 akan berubah warna dari merah ke hijau atau sebaliknya dari warna hijau ke merah (jika pulse delay cukup kecil, maka LED indikator M2 akan tampak berwarna jingga/oranye). 7
●
Tiap 1 nilai pulse delay mewakili waktu tunda antar pulsa sebesar kurang lebih 1 ms.
Contoh dengan antarmuka UART untuk menggerakkan motor stepper agar berputar searah jarum jam secara kontinu dengan tipe step adalah full-step, serta delay antar pulsa sebesar kurang lebih 100 ms (bilangan hexadesimal 0x0064): User
:
0x30 0x01 0x00 0x00 0x64
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(0x00); i2c_write(0x00); i2c_write(0x64); i2c_stop();
// // // // // // // //
Start Condition Tulis ke modul SPC Neo Stepper Motor Perintah “Continuous Run” tipe step derection pulse delay MSB pulse delay LSB Stop Condition
3.3.2. PULSE COUNT RUN Fungsi Perintah Parameter
Mengendalikan motor stepper agar berputar sejumlah step yang diberikan 0x31 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 Keterangan ● Jika parameter bernilai 0, maka LED indikator M1 berwarna merah. ● Jika parameter bernilai 1, maka LED indikator M1 berwarna hijau. ● Jika arah putaran motor stepper berlawanan dengan perintah yang diberikan berarti pemasangan koneksi dari motor stepper terbalik. Untuk memperbaikinya, ubah urutan pemasangan koneksi. ● Tiap kali 1 pulsa step diberikan, maka LED indikator M2 akan berubah warna dari merah ke hijau atau sebaliknya dari warna hijau ke merah (jika pulse delay cukup kecil, maka LED indikator M2 akan tampak 8
● ●
berwarna jingga/oranye). 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).
Contoh dengan antarmuka UART untuk menggerakkan motor stepper agar berputar searah jarum jam sebanyak 20 (bilangan hexadesimal 0x0014) pulsa dengan tipe step adalah full-step, serta delay antar pulsa sebesar kurang lebih 1000 ms (bilangan hexadesimal 0x03E8): User
:
0x31 0x01 0x00 0x03 0xE8 0x00 0x14
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(0x00); i2c_write(0x03); i2c_write(0xE8); i2c_write(0x00); i2c_write(0x14); i2c_stop();
// // // // // // // // // //
Start Condition Tulis ke modul SPC Neo Stepper Motor Perintah “Pulse Count Run” tipe step derection pulse delay MSB pulse delay LSB pulse count MSB pulse count LSB Stop Condition
3.3.3. BRAKE Fungsi
Menghentikan motor stepper dengan tetap mempertahankan torsi motor (lilitan motor tetap dialiri arus) Perintah 0x32 Parameter 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 M1 dan M2 akan menyala sesuai dengan perintah Run terakhir. Contoh dengan antarmuka UART: User
:
0x32
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_stop();
// // // //
Start Condition Tulis ke modul SPC Neo Stepper Motor Perintah “Brake” Stop Condition
9
3.3.4. STOP Fungsi Perintah Parameter Respon Keterangan
Menghentikan motor stepper (lilitan motor tidak dialiri arus) 0x33 ● 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. ● Pada kondisi stop, LED indikator M1 dan M2 berwarna jingga/oranye. ● Kondisi stop merupakan kondisi default saat modul SPC baru saja dinyalakan.
Contoh dengan antarmuka UART: User
:
0x33
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 Neo Stepper Motor Perintah “Stop” Stop Condition
3.3.5. SET I2C ADDRESS Fungsi Perintah Parameter Respon Keterangan
Mengubah alamat I2C 0x41 <0xAA> <0x55> ● 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. Alamat I2C Alamat Tulis I2C Alamat Baca I2C 0xE0 0xE1 0xE2 0xE3 0xE4 0xE5 0xE6 0xE7 0xE8 0xE9 0xEA 0xEB 0xEC 0xED 0xEE 0xEF 10
Contoh dengan antarmuka UART untuk mengganti alamat I 2C dari 0xE0 menjadi 0xE2: User
:
0x41 0xAA 0x55 0xE2
3.3.6. READ I2C ADDRESS Fungsi Perintah Parameter Respon Keterangan
Membaca alamat I2C sekarang 0x42 ● Perintah ini hanya dapat dilakukan dengan menggunakan jalur komunikasi UART. 2 ● Alamat I C modul SPC juga dapat diketahui melalui jumlah kedip warna hijau LED indikator saat modul SPC baru power on. 2 ● Jika alamat I C adalah 0xE0 maka LED indikator akan berkedip hijau 1 kali. Jika alamat I2C adalah 0xE2 maka LED indikator akan berkedip hijau 2 kali. Jika alamat I2C adalah 0xE4 maka LED indikator akan berkedip hijau 3 kali dan demikian seterusnya sampai alamat I 2C 0xEE maka LED indikator akan berkedip hijau 8 kali.
Contoh dengan antarmuka UART: User Modul SPC
: :
0x42
4.
PROSEDUR PENGUJIAN 1. Hubungkan sumber catu daya 5 Volt ke VIN dan VM modul SPC NEO STEPPER MOTOR 1.2A. 2. Setelah LED indikator berkedip hijau yang menandakan alamat I 2C, LED indikator M1 dan M2 akan berwarna jingga/oranye. 3. Kirimkan perintah “Pulse Count Run” seperti pada contoh di bagian 3.3.2 melalui antarmuka UART TTL. 4. LED indikator M1 akan berwarna merah dan LED indikator M2 akan berubah dari warna merah ke hijau atau hijau ke merah sebanyak 10 kali. 5. Jika diukur tegangan antara pin M11 dan M12 pada saat LED indikator M2 berubah-ubah, maka hasil akan berganti-ganti antara +VM dan -VM. 6. Jika diukur tegangan antara pin M21 dan M22 pada saat LED indikator M2 berubah-ubah , maka hasil akan berganti-ganti antara +VM dan -VM.
5.
CONTOH APLIKASI DAN PROGRAM Sebagai contoh aplikasi, dimisalkan modul SPC NEO STEPPER MOTOR 1.2A digunakan untuk menggerakkan sebuah motor stepper 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:
11
VM (2,5V – 13,5V )
M
M11 M12 M21 M22
VIN (+5 V )
SPC NEO STEPPER MOTOR 1.2A (alamat 0xE0)
MGND (Ground Catu Daya Motor) VM (2,5V – 13,5V )
M
M11 M12 M21 M22
SDA SDA (PORTD.2) SCL SCL (PORTD.3)
DT-AVR LCMS
PGND (Ground Catu Daya Digital)
VIN (+5 V )
SPC NEO STEPPER MOTOR 1.2A (alamat 0xE0)
MGND (Ground Catu Daya Motor)
TXD
RX (PORTD.0)
RXD
TX (PORTD.1)
DT-AVR LCMS
PGND (Ground Catu Daya Digital)
Sebagai contoh program untuk aplikasi di atas, pada DVD yang disertakan pada saat pembelian modul SPC NEO STEPPER MOTOR 1.2A 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 "Continuous Run" ke modul SPC (untuk contoh I 2C menggunakan alamat modul SPC 0xE0) agar motor stepper bergerak searah jarum jam dengan delay antar pulsa sebesar 500 ms. Setelah perintah dikirim, DT-AVR LCMS akan menunggu selama 5000 ms. Kemudian perintah "Brake" akan dikirimkan ke SPC sebelum DT-AVR LCMS kembali menunggu selama 5000 ms. Selanjutnya DT-AVR LCMS akan mengirimkan perintah ""Pulse Count Run" ke modul SPC (untuk contoh I 2C menggunakan alamat modul SPC 0xE0) agar motor stepper bergerak ke arah sebaliknya sebanyak 10 pulsa dengan delay antar pulsa sebesar 250 ms. Perintah ini juga diikuti dengan jeda selama selama 5000 ms. Kemudian program diakhiri dengan DT-AVR LCMS mengirimkan perintah "Stop" 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] 12
13
LAMPIRAN A. Skematik SPC NEO STEPPER MOTOR 1.2A
13