![sd21](http://www.robot-electronics.co.uk/images/sd21.jpg)
Gambar : SD21
![:D](http://s0.wp.com/wp-includes/images/smilies/icon_biggrin.gif?m=1305292933g)
Untuk spesifikasi lengkapnya, bisa langsung kunjungi :
http://www.robot-electronics.co.uk/htm/sd21tech.htm
Sekedar share pengalaman saya menggunakan SD21, kalo menggunakan SD21 untuk mode “Group Move” (menggerakkan beberapa servo secara bersamaan dengan sudut yg berbeda tetapi waktu yang diberikan sama) kita harus menghitung kecepatan dan delay dari masing – masing servo tersebut secara manual. Nah, untuk mempermudah menghitungnya, bisa menggunakan aplikasi “SD21 Speed and Delay Counter” yang dibikin oleh temen saya (Credit to : Mas Tiara Bagus S.P.A.) dan bisa di download disini :
http://www.mediafire.com/?etcxro8op78cyr5
Cukup untuk perkenalan SD21 nya. Yang akan saya bahas kali ini adalah gimana cara make SD21 ini untuk mengontrol 10 buah RC-Servo (Hitec HS-7955TG). Disini saya menggunakan Channel Servo 1 – 10 pada SD21 nya dan untuk Power Supply ke servonya saya memakai Batre LiPo 11,1V/1300mAH + UBEC (Ultimate Battery Eliminator Circuit) 6V/8A dan saya pisahkan dari Power Supply untuk controller dan Mikro masternya..
Berikut hasilnya :
Listing Programnya :
'Oleh : Pramudita J.I. (joe4cva) 'Elektronika Dan Instrumentasi 'Universitas Gadjah Mada $regfile = "m32def.dat" $framesize = 42 $swstack = 42 $hwstack = 42 $crystal = 16000000 $baud = 9600 Const Sd21_slaveid = &HC2 Declare Function Sd21_version() As Byte Declare Sub Posisi(byval Servo As Byte , Byval Position As Word) Declare Sub Kecepatan(byval Servo As Byte , Byval Speed As Byte) Config Scl = Portc.0 Config Sda = Portc.1 Dim I As Byte I2cinit Print "SD21 Testprogramm " Print "SD21 Firmware Version:" ; Sd21_version() Wait 2 Do 'Kecepatan Channel_Servo , Nilai_Kecepatan (Nilai Kecepatan antara 0 - 255) Kecepatan 1 , 80 Kecepatan 2 , 80 Kecepatan 3 , 80 Kecepatan 4 , 80 Kecepatan 5 , 80 Kecepatan 6 , 80 Kecepatan 7 , 80 Kecepatan 8 , 80 Kecepatan 9 , 80 Kecepatan 10 , 80 For I = 0 To 2 'Posisi Channel_Servo , Sudut_Servo (Sudut servo dalam lebar pulsa dg satuan uS antara 800 - 2200) Posisi 1 , 800 Posisi 2 , 800 Posisi 3 , 800 Posisi 4 , 800 Posisi 5 , 800 Posisi 6 , 800 Posisi 7 , 800 Posisi 8 , 800 Posisi 9 , 800 Posisi 10 , 800 Waitms 500 Posisi 10 , 2200 Posisi 9 , 2200 Posisi 8 , 2200 Posisi 7 , 2200 Posisi 6 , 2200 Posisi 5 , 2200 Posisi 4 , 2200 Posisi 3 , 2200 Posisi 2 , 2200 Posisi 1 , 2200 Waitms 500 Next I Kecepatan 1 , 60 Kecepatan 2 , 60 Kecepatan 3 , 60 Kecepatan 4 , 60 Kecepatan 5 , 60 Kecepatan 6 , 60 Kecepatan 7 , 60 Kecepatan 8 , 60 Kecepatan 9 , 60 Kecepatan 10 , 60 Posisi 1 , 1500 Posisi 2 , 1500 Posisi 3 , 1500 Posisi 4 , 1500 Posisi 5 , 1500 Posisi 6 , 1500 Posisi 7 , 1500 Posisi 8 , 1500 Posisi 9 , 1500 Posisi 10 , 1500 Waitms 700 Posisi 3 , 800 Posisi 8 , 800 Waitms 500 Posisi 3 , 2200 Posisi 8 , 2200 Waitms 700 Posisi 3 , 1500 Posisi 8 , 1500 Waitms 700 Posisi 1 , 800 Posisi 6 , 800 Posisi 2 , 800 Posisi 7 , 800 Posisi 4 , 2200 Posisi 9 , 2200 Posisi 5 , 2200 Posisi 10 , 2200 Waitms 700 Posisi 1 , 2200 Posisi 6 , 2200 Posisi 5 , 800 Posisi 10 , 800 Waitms 600 Posisi 1 , 800 Posisi 2 , 2200 Posisi 4 , 800 Posisi 5 , 2200 Posisi 6 , 800 Posisi 10 , 2200 Posisi 7 , 2200 Posisi 9 , 800 Waitms 700 Posisi 1 , 1500 Posisi 2 , 1500 Posisi 4 , 1500 Posisi 5 , 1500 Posisi 6 , 1500 Posisi 7 , 1500 Posisi 9 , 1500 Posisi 10 , 1500 Waitms 700 Loop End Function Sd21_version() As Byte Local Firmware As Byte Local I2cread As Byte I2cread = Sd21_slaveid + 1 I2cstart I2cwbyte Sd21_slaveid I2cwbyte 64 I2cstop I2cstart I2cwbyte I2cread I2crbyte Firmware , Nack I2cstop Sd21_version = Firmware End Function Return Sub Posisi(byval Servo As Byte , Byval Position As Word) Local Register As Byte Local Lowpos As Byte Local Highpos As Byte Register = Servo - 1 Register = Register * 3 Register = Register + 1 Lowpos = Low(position) Highpos = High(position) I2cstart I2cwbyte Sd21_slaveid I2cwbyte Register I2cwbyte Lowpos I2cwbyte Highpos I2cstop End Sub Return Sub Kecepatan(byval Servo As Byte , Byval Speed As Byte) Local Register As Byte Register = Servo - 1 Register = Register * 3 I2cstart I2cwbyte Sd21_slaveid I2cwbyte Register I2cwbyte Speed I2cstop End Sub Return
Tidak ada komentar:
Posting Komentar