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... 3
1.1 Spesifikasi SPC NEO STEPPER MOTOR 1.2A... 3
1.2 Sistem yang Dianjurkan... 3
2 Perangkat Keras SPC NEO STEPPER MOTOR 1.2A... 3
2.1 Tata Letak Komponen SPC NEO STEPPER MOTOR 1.2A... 3
2.2 Konektor dan Pengaturan Jumper... 4
3 Antarmuka SPC NEO STEPPER MOTOR 1.2A... 6
3.1 Antarmuka UART TTL... 6
3.2 Antarmuka I2C... 6
3.3 Command Set... 7
3.3.1 Continuous Run... 7
3.3.2 Pulse Count Run... 8
3.3.3 Brake... 9
3.3.4 Stop... 10
3.3.5 Set I2C Address... 10
3.3.6 Read I2C Address... 11
4 Prosedur Pengujian... 11
5 Contoh Aplikasi dan Program... 11
Lampiran A. Skematik SPC NEO STEPPER MOTOR 1.2A... 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
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:
M
B A C D 2,5V-13VGround Catu Daya Motor VM M11 M12 M21 MGND M22 Konektor J3
Bipolar
SCL SDA
SCL SDA
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) Pull-up aktif (jumper terpasang)
M
B A C D 2,5V-13VGround Catu Daya Motor VM M11 M12 M21 MGND M22 Konektor J3 COMMON
Unipolar 5 kabel
M
B A C D 2,5V-13VGround Catu Daya Motor VM M11 M12 M21 MGND M22 Konektor J3 COMMON 1 COMMON 2
Unipolar 6 kabel
Penting !
Apabila lebih dari satu modul dihubungkan pada I2C-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) n-byte 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 <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 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.
Berikut urutan yang harus dilakukan untuk mengirimkan perintah melalui antar muka I2C.
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.3. COMMAND SET
Berikut ini daftar lengkap perintah-perintah dalam antarmuka UART dan I2C. 3.3.1. CONTINUOUS RUN
Fungsi Mengendalikan motor stepper agar berputar secara kontinu
Perintah 0x30 Parameter <tipe step>
1 Full-Step: motor akan berputar 1 step tiap 1 pulsa 2 Half-Step: motor akan berputar 1/2 step tiap 1 pulsa <direction>
0 motor berputar searah jarum jam
1 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
-Keterangan ● Jika parameter <direction> bernilai 0, maka LED
indikator M1 berwarna merah.
● Jika parameter <direction> 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). + + + + 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
● 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(); // Start Condition
i2c_write(0xE0); // Tulis ke modul SPC Neo Stepper Motor i2c_write(0x30); // Perintah “Continuous Run”
i2c_write(0x01); // tipe step i2c_write(0x00); // derection
i2c_write(0x00); // pulse delay MSB i2c_write(0x64); // pulse delay LSB i2c_stop(); // Stop Condition
3.3.2. PULSE COUNT RUN
Fungsi Mengendalikan motor stepper agar berputar sejumlah step yang diberikan
Perintah 0x31 Parameter <tipe step>
1 Full-Step: motor akan berputar 1 step tiap 1 pulsa 2 Half-Step: motor akan berputar 1/2 step tiap 1 pulsa <direction>
0 motor berputar searah jarum jam
1 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 stepper.
Respon
-Keterangan ● Jika parameter <direction> bernilai 0, maka LED
indikator M1 berwarna merah.
● Jika parameter <direction> 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).
● 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(); // Start Condition
i2c_write(0xE0); // Tulis ke modul SPC Neo Stepper Motor i2c_write(0x31); // Perintah “Pulse Count Run”
i2c_write(0x01); // tipe step i2c_write(0x00); // derection
i2c_write(0x03); // pulse delay MSB i2c_write(0xE8); // pulse delay LSB i2c_write(0x00); // pulse count MSB i2c_write(0x14); // pulse count LSB i2c_stop(); // 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(); // Start Condition
i2c_write(0xE0); // Tulis ke modul SPC Neo Stepper Motor i2c_write(0x32); // Perintah “Brake”
3.3.4. STOP
Fungsi Menghentikan motor stepper (lilitan motor tidak dialiri arus)
Perintah 0x33 Parameter
-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.
● 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(); // Start Condition
i2c_write(0xE0); // Tulis ke modul SPC Neo Stepper Motor i2c_write(0x33); // Perintah “Stop”
i2c_stop(); // Stop Condition
3.3.5. SET I2C ADDRESS
Fungsi Mengubah alamat I2C Perintah 0x41
Parameter <0xAA> <0x55> <newAddress>
Respon
-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 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 I2C dari 0xE0
menjadi 0xE2:
User : 0x41 0xAA 0x55 0xE2
3.3.6. READ I2C ADDRESS
Fungsi Membaca alamat I2C sekarang Perintah 0x42
Parameter
-Respon <I2CAddress>
Keterangan ● Perintah ini hanya dapat dilakukan dengan
menggunakan jalur komunikasi UART.
● Alamat I2C modul SPC juga dapat diketahui melalui
jumlah kedip warna hijau LED indikator saat modul SPC baru power on.
● Jika alamat I2C 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 I2C 0xEE
maka LED indikator akan berkedip hijau 8 kali. Contoh dengan antarmuka UART:
User : 0x42
Modul SPC : <I2CAddress>
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 I2C, 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:
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 I2C 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 I2C
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 : support@innovativeelectronics.com TXD
DT-AVR
LCMS
M11 M12 M21 M22 VM (2,5V – 13,5V ) VIN (+5 V ) MGND (Ground Catu DayaMotor)
PGND
(Ground Catu Daya Digital) SPC NEO STEPPER MOTOR 1.2A (alamat 0xE0)
M
RXD TX (PORTD.1) RX (PORTD.0) SPC NEO STEPPER MOTOR 1.2A (alamat 0xE0)DT-AVR
LCMS
M11 M12 M21 M22 VM (2,5V – 13,5V ) VIN (+5 V ) MGND (Ground Catu DayaMotor)
PGND
(Ground Catu Daya Digital)
M
SDA (PORTD.2) SCL (PORTD.3) SCLLAMPIRAN A.