Jumat, 29 Juli 2011

SMART AVR dengan Tiny I2C Stepper Controller

Project baru saya untuk mengisi blog ini adalah bagaimana mengakses pengendali motor stepper yang berbasis I2C yang saya namakan "tiny stepper controller" (TSC). TSC ini saya rancang mempunyai spesifikasi sebagai berikut:


  • protocol data menggunakan komunikasi I2C

  • 2 motor stepper dengan kerja secara individual

  • 4 mode yang dapat di aplikasikan ke masing - masing motor

  • addressable sampai dengan 8 buah device tiny stepper conctroller

Ragkaian tiny stepper conctroller dapat dengan mudah dihubungkan dengan SMART AVR seperti gambar berikut:

protocol untuk tiny stepper conctroller menggunakan I2C, dimana protokol ini sudah tersedia di dalam Smart AVR dan beberapa contoh program telah saya berikan misalnya mengakses real time clock RTC DS1307.

Di dalam TSC ini menggunakan komunikasi I2C dalam satu kali frame pengiriman data meliputi I2CDEV, I2CAL dan I2CDAT seperti ditunjukkan gambar berikut



Dalam aplikasi program Device address dari tiny stepper conctroller adalah 01100xxx0 dimana nilai x adalah posisi switch dari S2, S1 dan S0. I2CDAT adalah referensi speed yang merupakan lebar delay sebesar 0.5mS/step I2CAL merupakan Address Low yang berfungsi sebagai pengatur mode masing masing motor yang dapat dijabarkan sebagai berikut:



  • 1000 0000 --> motor B dir. X

  • 0100 0000 --> motor B dir. Y

  • 0010 0000 --> motor B hold

  • 0001 0000 --> motor B no power

  • 0000 1000 --> motor A dir. X

  • 0000 0100 --> motor A dir. Y

  • 0000 0010 --> motor A hold

  • 0000 0001 --> motor A no power

Untuk dir X maupun Y adalah arah putar motor ke kiri atau ke kanan tergantung dari wiring motor yang digunakan.

Pengoprasian TSC dengan menggunakan SMART AVR Basic sangat mudah, hanya menggunakan perintah WRITE I2C, maka motor steper akan melakukan perintah - perintah yang kita berikan.

Contoh tampilan video dapat di download di:
https://www.youtube.com/watch?v=Z_Sq5gD_oqk


Contoh program untuk TSC ini saya berikan dengan posisi S2, S1 dan S0 terbuka sehingga I2CDEV = 01101110B = 110Dec.
Listing programnya:

'*****************************

INIT:
GOSUB DEVICE_ADD
DELAY = 10

START:
I2CAL = 4
I2CDAT = 30
WRITE I2C
IF I2CEF = 1 THEN ERROR0
DELAY = 10
I2CAL = 64
I2CDAT = 3
WRITE I2C
IF I2CEF = 1 THEN ERROR0
DELAY = 10
I2CAL = 128
I2CDAT = 30
WRITE I2C
IF I2CEF = 1 THEN ERROR0
DELAY = 25
I2CAL = 64
I2CDAT = 2
WRITE I2CIF I2CEF = 1 THEN ERROR0
DELAY = 40
I2CAL = 4
I2CDAT = 10
WRITE I2C
IF I2CEF = 1 THEN ERROR0
DELAY = 25
I2CAL = 8
I2CDAT = 2
WRITE I2C
IF I2CEF = 1 THEN ERROR0
GOSUB WAIT
I2CAL = 128
I2CDAT = 150
WRITE I2C
IF I2CEF = 1 THEN ERROR0
DELAY = 50
I2CAL = 4
I2CDAT = 2
WRITE I2C
IF I2CEF = 1 THEN ERROR0
DELAY = 20

FOR VAR5 = 1 TO 5
I2CAL = 128
I2CDAT = 20
WRITE I2C
GOSUB WAIT
I2CAL = 8
WRITE I2C
DELAY = 10
I2CAL = 64
I2CDAT = 10
WRITE I2C
GOSUB WAIT
I2CAL = 4
WRITE I2C
DELAY = 10
NEXT VAR5

I2CAL = 1
WRITE I2C
GOSUB WAIT
I2CAL = 16
WRITE I2C
DELAY = 100
GOTO START
DEVICE_ADD:
I2CDEV = 110
I2CCA = 1
I2CAH = 0
I2CEF = 0
RETURN
ERROR0:
DELAY = 10
GOTO START
WAIT:
DELAY = 1
RETURN
'******* END of Program *************


Demikian contoh project yang bisa saya bagikan semoga bermanfaat.

Salam

Hendryawan

henel.automation@gmail.com


Tidak ada komentar:

Posting Komentar