Smart Peripheral Controller Neo DC Motor 2.4A 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 DC MOTOR 2.4A... 3 1.2 Sistem yang Dianjurkan... 3 2 Perangkat Keras SPC NEO DC MOTOR 2.4A... 3 2.1 Tata Letak Komponen SPC NEO DC MOTOR 2.4A... 3 2.2 Konektor dan Pengaturan Jumper... 4 3 Antarmuka SPC NEO DC MOTOR 2.4A... 5 3.1 Antarmuka UART TTL... 5 3.2 Antarmuka I 2 C... 5 3.3 Command Set... 5 3.3.1 M1 Forward... 6 3.3.2 M1 Reverse... 6 3.3.3 M1 Stop... 7 3.3.4 M1 Brake... 7 3.3.5 M2 Forward... 8 3.3.6 M2 Reverse... 8 3.3.7 M2 Stop... 9 3.3.8 M2 Brake... 9 3.3.9 All Stop... 10 3.3.10 All Brake... 10 3.3.11 All Forward... 10 3.3.12 All Reverse... 11 3.3.13 Set PWM Frequency... 11 3.3.14 Set I 2 C Address... 12 3.3.15 Read I 2 C Address... 12 4 Prosedur Pengujian... 13 5 Contoh Aplikasi dan Program... 13 Lampiran A. Skematik SPC NEO DC MOTOR 2.4A... 15 2
1. PENDAHULUAN Smart Peripheral Controller / SPC NEO DC MOTOR 2.4A merupakan sebuah modul pengendali motor DC yang ringkas dan handal serta cocok untuk aplikasi robotik. Modul ini dapat digunakan untuk mengendalikan arah dan kecepatan putaran 2 buah motor DC menggunakan metode Pulse Width Modulation (PWM). Modul ini sudah dilengkapi dengan dual full H-bridge driver serta antarmuka UART level TTL dan I 2 C sehingga dapat dengan mudah dihubungkan dengan sistem lain. 1.1. SPESIFIKASI SPC NEO DC MOTOR 2.4A Spesifikasi SPC NEO DC MOTOR 2.4A 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 A3995. Kemampuan Arus Kontinu tiap driver 2,4 A. Pilihan frekuensi PWM yang tersedia 21,68 khz, 2,71 khz (default), 338,8 Hz, dan 84,7 Hz. Pin Input/Output kompatibel dengan level tegangan TTL dan CMOS. Dilengkapi dengan antarmuka UART TTL dan I 2 C. Jika menggunakan I 2 C, SPC NEO DC MOTOR 2.4A 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 DC MOTOR 2.4A 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, A3995.pdf, dan Manual SPC Neo DC Motor 2.4A.pdf. 2. PERANGKAT KERAS SPC NEO DC MOTOR 2.4A 2.1. TATA LETAK KOMPONEN SPC NEO DC MOTOR 2.4A 3
2.2. KONEKTOR DAN PENGATURAN JUMPER Konektor INTERFACE (J2) berfungsi sebagai konektor untuk catu daya modul, antarmuka UART TTL, dan antarmuka I 2 C. Pin Nama Fungsi 1,2 VIN Terhubung ke catu daya (4,8 5,4 Volt) 3 SCL I 2 C-bus clock input 4 SDA I 2 C-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 (8 Volt 36 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 M11 dan M12 terhubung ke motor DC 1, sedangkan M21 dan M22 terhubung ke motor DC 2. Jumper SCL-SDA (J4) berfungsi untuk mengaktifkan resistor pull-up untuk pin SDA dan SCL pada antarmuka I 2 C. Jumper SCL-SDA J4 Fungsi SCL SDA Pull-up tidak aktif (jumper terlepas) SCL SDA Pull-up aktif (jumper terpasang) Penting! Apabila lebih dari satu modul dihubungkan pada I 2 C-bus maka jumper SCL-SDA (J4) salah satu modul saja yang perlu dipasang. Pengaturan alamat I 2 C dapat dilakukan melalui antarmuka UART TTL. LED M1 IND (D3) berfungsi sebagai indikator kondisi Motor DC 1. LED M2 IND (D4) berfungsi sebagai indikator kondisi Motor DC 2. 4
3. ANTARMUKA SPC NEO DC MOTOR 2.4A SPC NEO DC MOTOR 2.4A memiliki antarmuka UART TTL dan I 2 C 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 DC MOTOR 2.4A, maka SPC NEO DC MOTOR 2.4A akan mengirimkan data melalui jalur TX TTL. Perintah dan parameter yang bisa digunakan dapat dilihat pada bagian 3.3. 3.2. ANTARMUKA I 2 C Modul SPC NEO DC MOTOR 2.4A memiliki antarmuka I 2 C. Pada antarmuka I 2 C ini, modul SPC NEO DC MOTOR 2.4A bertindak sebagai slave dengan alamat sesuai dengan telah ditentukan sebelumnya melalui perintah UART (lihat bagian 3.3.12). Antarmuka I 2 C pada modul SPC NEO DC MOTOR 2.4A mendukung bit rate sampai dengan maksimum 50 khz. Semua perintah yang dikirim melalui antarmuka I 2 C diawali dengan start condition dan kemudian diikuti dengan pengiriman 1 byte alamat modul SPC NEO DC MOTOR 2.4A. Setelah pengiriman alamat, selanjutnya master harus mengirim 1 byte data yang berisi <nomor perintah> dan (jika diperlukan) 1 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 I 2 C. Start + 1 1 1 0 X X X 0 + Alamat Tulis X X X X X X X X + X X X X X X X X + Command Parameter (jika ada) Stop 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 I 2 C. 5
3.3.1. M1 FORWARD Fungsi Mengendalikan putaran maju motor DC 1 Perintah 0x30 Parameter <pwm level> 0-255 persentase duty cycle yang diberikan (0 = 0% ; 255 = 100%). Keterangan Pada kondisi forward, M11 akan mengeluarkan tegangan sebanding dengan nilai PWM sedangkan M12 akan terhubung dengan MGND. Pada kondisi forward, LED indikator M1 berwarna hijau. Arah motor dan nilai PWM tidak akan disimpan di EEPROM. Saat modul SPC baru power on, nilai PWM pada saat power on adalah 0 (nol) dan motor pada kondisi stop (LED indikator M1 berwarna jingga/oranye). 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 hexadesimal 0x80: User : 0x30 0x80 i2c_write(0x30); i2c_write(0x80); // Perintah M1 Forward // nilai PWM 3.3.2. M1 REVERSE Fungsi Mengendalikan putaran mundur motor DC 1 Perintah 0x31 Parameter <pwm level> 0-255 persentase duty cycle yang diberikan (0 = 0% ; 255 = 100%). Keterangan Pada kondisi reverse, M12 akan mengeluarkan tegangan sebanding dengan nilai PWM sedangkan M11 akan terhubung dengan MGND. Pada kondisi reverse, LED indikator M1 berwarna merah. Arah motor dan nilai PWM tidak akan disimpan di EEPROM. Saat modul SPC baru power on, nilai PWM pada saat power on adalah 0 (nol) dan motor pada kondisi stop (LED indikator M1 berwarna jingga/oranye). 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 hexadesimal 0x40: User : 0x31 0x40 6
i2c_write(0x31); i2c_write(0x40); // Perintah M1 Reverse // nilai PWM 3.3.3. M1 STOP Fungsi Menghentikan putaran motor DC 1 Perintah 0x32 Parameter - Keterangan Pada kondisi stop, M11 dan M12 akan berada pada kondisi tri state / high impedance. Pada kondisi stop, LED indikator M1 berwarna jingga/oranye. Contoh dengan antarmuka UART untuk menghentikan putaran motor DC yang terhubung ke M1: User : 0x32 i2c_write(0x32); // Perintah M1 Stop 3.3.4. M1 BRAKE Fungsi Menghentikan putaran motor DC 1 secara cepat Perintah 0x33 Parameter - Keterangan Pada kondisi brake, M11 dan M12 akan terhubung ke MGND. Pada kondisi brake, LED indikator M1 akan menyala berwarna hijau dan merah secara bergantian. Contoh dengan antarmuka UART untuk menghentikan putaran motor DC yang terhubung ke M1 secara cepat: User : 0x33 i2c_write(0x33); // Perintah M1 Brake 7
3.3.5. M2 FORWARD Fungsi Mengendalikan putaran maju motor DC 2 Perintah 0x34 Parameter <pwm level> 0-255 persentase duty cycle yang diberikan (0 = 0% ; 255 = 100%). Keterangan Pada kondisi forward, M21 akan mengeluarkan tegangan sebanding dengan nilai PWM sedangkan M22 akan terhubung dengan MGND. Pada kondisi forward, LED indikator M2 berwarna hijau. Arah motor dan nilai PWM tidak akan disimpan di EEPROM. Saat modul SPC baru power on, nilai PWM pada saat power on adalah 0 (nol) dan motor pada kondisi stop (LED indikator M2 berwarna jingga/oranye). Contoh dengan antarmuka UART untuk mengendalikan kecepatan putaran maju motor DC yang terhubung ke M2. Misalkan duty cycle yang diinginkan 10% (0,1 * 255 = 26) atau setara dengan bilangan desimal 26 dan bilangan hexadesimal 0x1A: User : 0x34 0x1A i2c_write(0x34); i2c_write(0x1a); // Perintah M2 Forward // nilai PWM 3.3.6. M2 REVERSE Fungsi Mengendalikan putaran mundur motor DC 2 Perintah 0x35 Parameter <pwm level> 0-255 persentase duty cycle yang diberikan (0 = 0% ; 255 = 100%). Keterangan Pada kondisi reverse, M22 akan mengeluarkan tegangan sebanding dengan nilai PWM sedangkan M21 akan terhubung dengan MGND. Pada kondisi reverse, LED indikator M2 berwarna merah. Arah motor dan nilai PWM tidak akan disimpan di EEPROM. Saat modul SPC baru power on, nilai PWM pada saat power on adalah 0 (nol) dan motor pada kondisi stop (LED indikator M2 berwarna jingga/oranye). Contoh dengan antarmuka UART untuk mengendalikan kecepatan putaran mundur motor DC yang terhubung ke M2. Misalkan duty cycle yang diinginkan 90% (0,9 * 255 = 230) atau setara dengan bilangan desimal 230 dan bilangan hexadesimal 0xE6: User : 0x35 0xE6 8
i2c_write(0x35); i2c_write(0xe6); // Perintah M2 Reverse // nilai PWM 3.3.7. M2 STOP Fungsi Menghentikan putaran motor DC 2 Perintah 0x36 Parameter - Keterangan Pada kondisi stop, M21 dan M22 akan berada pada kondisi tri state / high impedance. Pada kondisi stop, LED indikator M2 berwarna jingga/oranye. Contoh dengan antarmuka UART untuk menghentikan putaran motor DC yang terhubung ke M2: User : 0x36 i2c_write(0x36); // Perintah M2 Stop 3.3.8. M2 BRAKE Fungsi Menghentikan putaran motor DC 2 secara cepat Perintah 0x37 Parameter - Keterangan Pada kondisi brake, M21 dan M22 akan terhubung ke MGND. Pada kondisi brake, LED indikator M2 akan menyala berwarna hijau dan merah secara bergantian. Contoh dengan antarmuka UART untuk menghentikan putaran motor DC yang terhubung ke M2 secara cepat: User : 0x37 i2c_write(0x37); // Perintah M2 Brake 9
3.3.9. ALL STOP Fungsi Menghentikan putaran motor DC 1 dan 2 secara bersamaan Perintah 0x38 Parameter - Keterangan Perintah ini menjalankan perintah M1 STOP dan M2 STOP secara bersamaan. Contoh dengan antarmuka UART untuk menghentikan putaran motor DC yang terhubung ke M1 dan M2 secara bersamaan: User : 0x38 i2c_write(0x38); // Perintah All Stop 3.3.10. ALL BRAKE Fungsi Menghentikan putaran motor DC 1 dan 2 secara cepat dan bersamaan Perintah 0x39 Parameter - Keterangan Perintah ini menjalankan perintah M1 BRAKE dan M2 BRAKE secara bersamaan. Contoh dengan antarmuka UART untuk menghentikan putaran motor DC yang terhubung ke M1 dan M2 secara cepat dan bersamaan: User : 0x39 i2c_write(0x39); // Perintah All Brake 3.3.11. ALL FORWARD Fungsi Perintah Parameter Mengendalikan putaran maju motor DC 1 dan 2 secara bersamaan 0x3A <pwm level> 0-255 persentase duty cycle yang diberikan (0 = 0% ; 255 = 100%). Keterangan Perintah ini menjalankan perintah M1 FORWARD dan M2 FORWARD secara bersamaan dengan nilai PWM yang sama. 10
Contoh dengan antarmuka UART untuk mengendalikan kecepatan putaran maju motor DC yang terhubung ke M1 dan M2. Misalkan duty cycle yang diinginkan 100% atau setara dengan bilangan desimal 255 dan bilangan hexadesimal 0xFF: User : 0x3A 0xFF i2c_write(0x3a); i2c_write(0xff); // Perintah All Forward // nilai PWM 3.3.12. ALL REVERSE Fungsi Perintah Parameter Mengendalikan putaran mundur motor DC 1 dan 2 secara bersamaan 0x3B <pwm level> 0-255 persentase duty cycle yang diberikan (0 = 0% ; 255 = 100%). Keterangan Perintah ini menjalankan perintah M1 REVERSE dan M2 REVERSE secara bersamaan dengan nilai PWM yang sama. Contoh dengan antarmuka UART untuk mengendalikan kecepatan putaran mundur motor DC yang terhubung ke M1 dan M2. Misalkan duty cycle yang diinginkan 75% (0,75 * 255 = 191) atau setara dengan bilangan desimal 191 dan bilangan hexadesimal 0xBF: User : 0x3B 0xBF i2c_write(0x3b); i2c_write(0xbf); // Perintah All Reverse // nilai PWM 3.3.13. SET PWM FREQUENCY Fungsi Perintah Parameter Mengatur frekuensi PWM 0x40 <select> 0-3 nilai 0 berarti frekuensi PWM = 21,68 khz nilai 1 berarti frekuensi PWM = 2,71 khz nilai 2 berarti frekuensi PWM = 338,8 Hz nilai 3 berarti frekuensi PWM = 84,7 Hz Keterangan Frekuensi default yang digunakan adalah 2,71 khz. 11
Pilihan frekuensi PWM akan disimpan di EEPROM. Pada saat modul SPC baru power on, frekuensi PWM yang digunakan adalah frekuensi yang terakhir tersimpan. Contoh dengan antarmuka UART untuk mengatur agar frekuensi PWM yang digunakan adalah 338,8 Hz: User : 0x40 0x02 i2c_write(0x40); i2c_write(0x02); // Perintah Set PWM Freq // pilihan frekuensi 3.3.14.SET I 2 C ADDRESS Fungsi Mengubah alamat I 2 C Perintah 0x41 Parameter <0xAA> <0x55> <newaddress> Keterangan Perintah ini hanya dapat dilakukan dengan menggunakan jalur komunikasi UART. Modul SPC akan menggunakan alamat I 2 C yang baru setelah melalui siklus power off. Alamat I 2 C <newaddress> yang diperbolehkan dapat dilihat pada tabel berikutnya. Jika alamat baru yang diberikan tidak sesuai, maka alamat I 2 C tidak akan diubah (tetap alamat sebelumnya). Alamat I 2 C default adalah 0xE0. Data alamat I 2 C disimpan di EEPROM sehingga tidak akan hilang saat power off. Alamat I 2 C Alamat Tulis I 2 C Alamat Baca I 2 C 0xE0 0xE1 0xE2 0xE3 0xE4 0xE5 0xE6 0xE7 0xE8 0xE9 0xEA 0xEB 0xEC 0xED 0xEE 0xEF Contoh dengan antarmuka UART untuk mengganti alamat I 2 C dari 0xE0 menjadi 0xE2: User : 0x41 0xAA 0x55 0xE2 3.3.13.READ I 2 C ADDRESS Fungsi Perintah Membaca alamat I 2 C sekarang 0x42 12
Parameter - Respon <I 2 CAddress> Keterangan Perintah ini hanya dapat dilakukan dengan menggunakan jalur komunikasi UART. Alamat I 2 C modul SPC juga dapat diketahui melalui jumlah kedip warna hijau LED indikator saat modul SPC baru power on. Jika alamat I 2 C adalah 0xE0 maka LED indikator akan berkedip hijau 1 kali. Jika alamat I 2 C adalah 0xE2 maka LED indikator akan berkedip hijau 2 kali. Jika alamat I 2 C adalah 0xE4 maka LED indikator akan berkedip hijau 3 kali dan demikian seterusnya sampai alamat I 2 C 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 9-12 Volt ke VM modul SPC NEO DC MOTOR 2.4A. 2. Setelah LED indikator berkedip hijau yang menandakan alamat I 2 C, LED indikator M1 dan M2 akan berwarna jingga/oranye. 3. Kirimkan perintah M1 Forward dengan nilai PWM 255 melalui antarmuka UART TTL.. 4. LED indikator M1 akan berwarna hijau dan jika diukur tegangan antara pin M11 dan M12, maka hasil akan mendekati nilai tegangan catu daya motor yang diberikan pada pin VM. 5. Kirimkan perintah M2 Reverse dengan nilai PWM 255 melalui antarmuka UART TTL. 6. LED indikator M2 akan berwarna merah dan jika diukur tegangan antara pin M22 dan M21, maka hasil akan mendekati nilai tegangan catu daya motor yang diberikan pada pin VM. 5. CONTOH APLIKASI DAN PROGRAM Sebagai contoh aplikasi, dimisalkan modul SPC NEO DC MOTOR 2.4A digunakan untuk menggerakkan 2 buah motor DC dengan antarmuka I 2 C atau antarmuka UART. Modul DT-AVR Low Cost Micro System (LCMS) dengan mikrokontroler ATmega8535 digunakan sebagai master. VM (8V 36V ) VIN (+5 V ) M1 M2 M11 M12 M21 M22 SPC NEO DC MOTOR 2.4A (alamat 0xE0) SDA SCL SDA (PORTD.2) SCL (PORTD.3) DT-AVR LCMS MGND (Ground Catu Daya Motor) 13 PGND (Ground Catu Daya Digital)
VM (8V 36V ) VIN (+5 V ) M1 M2 M11 M12 M21 M22 SPC NEO DC MOTOR 2.4A (alamat 0xE0) TXD RXD RX (PORTD.0) TX (PORTD.1) DT-AVR LCMS MGND (Ground Catu Daya Motor) PGND (Ground Catu Daya Digital) Sebagai contoh program untuk aplikasi di atas, pada DVD yang disertakan pada saat pembelian modul SPC NEO DC MOTOR 2.4A 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 "M1 Forward" dan "M2 Forward" masing-masing dengan nilai PWM 255 ke modul SPC (untuk contoh I 2 C menggunakan alamat modul SPC 0xE0). Setelah perintah dikirim, DT-AVR LCMS akan menunggu selama 3000 ms sebelum mengirimkan perintah "All Brake" ke SPC. Setelah perintah dikirim, DT-AVR LCMS akan kembali menunggu selama 3000 ms. DT-AVR LCMS akan mengirimkan perintah "M1 Reverse" dan "M2 Reverse" masing-masing dengan nilai PWM 128 ke modul SPC dan kembali diikuti dengan jeda selama selama 3000 ms. Kemudian program diakhiri dengan DT-AVR LCMS mengirimkan perintah "Äll 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 14
LAMPIRAN A. Skematik SPC NEO DC MOTOR 2.4A 15