Page 1 of 4
Servo Signal Generator
Posted: 21 Aug 2013, 14:38
by coyo
Saya bikin proyek ini karena ada permintaan dr seorang sahabat.
Sekalian di-sharing aja buat belajar sama2, sapa tau ada Suhu yg bersedia ngasih masukan.
Sebetulnya ini sama aja dengan servo tester, cuma yg ini ada 3 channel.
Kenapa cuma 3 channel? soalnya beliau mintanya cuma 3 channel, sebetulnya dibuat lebih juga bisa hehehe...
Penampakannya seperti ini:

sangat sederhana bukan? Total ada 3 trimpot, masing2 1 trimpot untuk mengontrol 1 servo
Re: Servo Signal Generator
Posted: 21 Aug 2013, 14:52
by iwan21
Saya enggak punya masukan, cuman nunggu hibahan aja kalo udah jadi

Re: Servo Signal Generator
Posted: 21 Aug 2013, 14:53
by coyo
Ini skematik & simulasinya:

Terlihat di oscilloscope, sinyal yg masuk ke servo. Yg paling atas untuk SERVO1, berikutnya untuk SERVO2 & SERVO3
Sesuai dengan posisi trimpot: VR1 => minimal; VR2 => tengah; VR3 => maksimal
Kekurangannya: signal servo3 menunggu signal servo2, signal servo2 menunggu signal servo1, seperti terlihat di layar oscilloscope
Re: Servo Signal Generator
Posted: 21 Aug 2013, 14:54
by coyo
Ini source code-nya:
Code: Select all
$regfile = "m48def.dat" 'MCU yg dipakai ATMEGA48
$crystal = 8000000 'Frekuensi 8MHz (internal clock, tanpa kristal)
$hwstack = 32 'default use 32 for the hardware stack
$swstack = 10 'default use 10 for the SW stack
$framesize = 40 'default use 40 for the frame space
Config Pind.5 = Output ' PD5 (Pin 11) sebagai output
Config Pind.6 = Output ' PD6 (Pin 12) sebagai output
Config Pind.7 = Output ' PD7 (Pin 13) sebagai output
' Untuk clock 4MHz satuan dalam 1uS (microdetik),
' jadi untuk 8 MHz harus dikalian 2
Const Servomax = 4000 ' = 2000uS * 2
Const Servocen = 3000 ' = 1500uS * 2
Const Servomin = 2000 ' = 1000uS * 2
' Nilainya dari GETADC berkisar antara 0~1023
' Sedangkan pulsa yg akan dihasilkan berkisar 2000~4000
' Pengali = (servo max-servomin)/1024) = 1.95 dibulatkan jadi 2
' Penambah = Servocen - 1024
Const Pengali = 2
Const Penambah = 1976
' Definisikan variable yg dipakai
Dim A As Word
Dim B As Word
Dim C As Word
' Konfigurasi ADC (Analog to Digital Converter)
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
Do
A = Getadc(0) ' baca nilai Trimpot 1
B = Getadc(1) ' baca nilai Trimpot 2
C = Getadc(2) ' baca nilai Trimpot 3
A = A * Pengali
A = A + Penambah
B = B * Pengali
B = B + Penambah
C = C * Pengali
C = C + Penambah
Pulseout Portd , 5 , A ' kirim sinyal ke Servo 1
Pulseout Portd , 6 , B ' kirim sinyal ke Servo 2
Pulseout Portd , 7 , C ' kirim sinyal ke Servo 3
Waitms 13 ' tunggu selama 13 milidetik
Loop ' ulangi terus sampai bosen
End
Re: Servo Signal Generator
Posted: 21 Aug 2013, 14:55
by coyo
iwan21 wrote:Saya enggak punya masukan, cuman nunggu hibahan aja kalo udah jadi

udah jadi 1 Suhu, tp dah diambil yg pesen hehehe.......
Re: Servo Signal Generator
Posted: 21 Aug 2013, 15:03
by coyo
Lanjutt.......
Masalah tadi gara2 pake perintah PULSEOUT
Setelah baca2 lagi, ternyata BASCOM menyediakan perintah SERVO, hasilnya jd seperti ini:

sekarang udah ga ada acara tunggu-menunggu sinyal lagi

Re: Servo Signal Generator
Posted: 21 Aug 2013, 15:03
by coyo
ini source code-nya:
Code: Select all
$regfile = "m48def.dat" ' MCU yg dipakai ATMEGA48
$crystal = 8000000 ' Frekuensi 8MHz (internal clock, tanpa kristal)
$hwstack = 32 ' default use 32 for the hardware stack
$swstack = 10 ' default use 10 for the SW stack
$framesize = 40 ' default use 40 for the frame space
Config Pind.5 = Output ' PD5 (Pin 11) sebagai output
Config Pind.6 = Output ' PD6 (Pin 12) sebagai output
Config Pind.7 = Output ' PD7 (Pin 13) sebagai output
Config Servos = 3 , Servo1 = Portd.5 , Servo2 = Portd.6 , Servo3 = Portd.7 , Reload = 10
Const Servomin = 59 ' = 1000uS
Const Servocen = 88 ' = 1500uS
Const Servomax = 117 ' = 2000uS
Const Jangkah = Servomax - Servomin
' Definisikan variable yg dipakai
Dim A(3) As Word
Dim I As Byte
Dim J As Byte
Dim Pengali As Single
Dim Hitung As Single
Pengali = Jangkah / 1024
' Konfigurasi ADC (Analog to Digital Converter)
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
Enable Interrupts ' perintah servo memerlukan Interrupts
Do
For I = 1 To 3 Step 1
J = I - 1 ' I = 1~3 (untuk no.servo), J = 0~2(untuk getADC)
A(i) = Getadc(j) ' baca nilai Trimpot
Hitung = A(i) * Pengali
A(i) = Hitung + Servomin
Servo(i) = A(i) ' kirim sinyal ke Servo
Next
Waitms 100 ' tunggu selama 100 milidetik
Loop ' ulangi terus sampai bosen
End
Re: Servo Signal Generator
Posted: 21 Aug 2013, 15:58
by NF
............ada suhu....................................
..............kapan dibuat massal ?

Re: Servo Signal Generator
Posted: 21 Aug 2013, 16:25
by coyo
tergantung yg order, klo emang banyak yg butuh tinggal dibuat massal hehehe......
Re: Servo Signal Generator
Posted: 21 Aug 2013, 17:01
by NF
.............nah....., setelah ntar suhu roji dan suhu darwin dapet , saya mau produk ini
