Akses Motor Servo dengan Pemrograman BASCOM AVR


Nah pada postingan kali ini ane mau ngeshare nih buat temen2 yg mungkin saat ini pengen tahu tentang apa itu motor servo dan bagaimana pemrogramannya… ni ane jelasin sedikit yg ane tahu ya…😀

Nah dipasaran itu terdapat dua jenis tipe motor servo yaitu servo standard dan servo rotation (continuous). Dimana biasanya untuk tipe standar hanya dapat melakukan pergerakan sebesar 180° sedangkan untuk tipe continuous dapat melakukan rotasi atau 360°. Contoh gambar di bawah ini adalah Servo dari Hitech dan dalemannya (hush saru c*k… hehehe ^_^)

Nah didalam motor servo tersebut terdapat motor DC, komposisi gearbox dan rangkaian kontrolernya.  Rangkaian kontrol pada motor servo digunakan untuk mengendalikan motor DC yang ada pada motor servo tersebut, oleh sebab itu untuk mengendalikan motor servo cukup hanya dengan cara memberikan pulsa-pulsa tertentu kepada rangakain kontrolernya. Nah kalo Gearbox pada motor servo berfungsi untuk meningkatkan torsi. Dikarenakan bentuknya yang compact motor servo sering  digunakan di dunia robotika, aeromodeling, car remote controler dsb.


hmmm cuma segitu teori yg ane tahu… langsung deh selanjutnya ane jelasin tentang pin pada motor servo yaitu mempunyai 3 buah pin yang terdiri dari VCC, GND dan SIGNAL/KONTROL. Berikut adalah konfigurasi pin motor servo berdasarkan merk.

Hehehe sama aja ya… Cuma beda warna doank… buat yg suka warna putih beli aja futaba begitu juga buat yg suka ma warna kuning beli ja hitec (ngaco…. :D)

Nah selanjutnya yang temen2 harus fahami lebih jauh lagi ato yg paling penting adalah mengetahui timing penggunaan servo tersebut (biasanya dijelasin di datasheetnya). Secara umum untuk mengakses motor servo tipe standard adalah dengan cara memberikan pulsa high selama 1,5 ms dan mengulangnya setiap 20 ms, maka posisi servo akan berada ditengah atau netral (0°). Untuk pulsa 1 ms maka akan bergerak berkebalikan arah jarum jam dengan sudut -90°.  Dan pulsa high selama 2 ms akan bergerak searah jarum jam sebesar 90°. Untuk lebih jelasnya perhatikan gambar berikut ini.

Untuk servo tipe continuous berbeda timing pengontrolannya… ya gitu deh teori timingnya hehehee😀 Karakteristik lamanya pulsa high yang diberikan  untuk mengatur motor servo tergantung dari merk servo yang kita gunakan dengan mengacu kepada datasheet. So jangan terpaku pada teori timming diatas. Itu cuma buat pemahaman saja temen2… untuk lebih akurat dan presisinya temen dapat melakukannya secara ekperiment berlandaskan teori tersebut dan melihat spesifikasi servo temen2 pada datasheetnya. Good luck selamat berekperiment ^_^

Capek ya… baca tulisan diatas heheee maaf ya ane gak to do point alias muter2 dulu ke teorinya… maksud ane supaya temen2 dapat lebih faham tentang apa itu motor servo. Oke deh selanjutnya kita coba untuk memprogram motor servo dengan BASCOM AVR (hush ini bukan temen nya ember bukan juga bakso complit wkwkwkwk :D) oiya untuk ekperiment servo kali ini ane di bantu software PROTEUS so gak perlu punya servo dulu buat mrogramnya cukup maen simulasi aja dan baru dari hasil simulasi ini ane terapkan ke REAL WORLD😀 nah ni dia susunan komponenya pada PROTEUS:

Kalo di running hasilnya kayak gini temen2:

Nah yg ane lingkaran merah itu adalah kondisi netral dari servo… di simulasi aja susah untuk presisi pada sudut 0 derajat ada error sebesar +3 derajat (ya masih kecil sih dan biasa ditolerir ^_^), nah ni dia potongan program untuk posisi netral.

Pada pemrograman servo menggunakan BASCOM AVR terlebih dahulu temen2 konfigurasi jumlah servo yang temen2 ingin gunakan dan status dari port servo temen2 diset sebagai output, contohnya temen2 gunakan 3 servo (maksimum yg dapat digunakan adalah 16 servo). Nah kalo untuk reload penjelasanya adalah “The reload value specifies the interval of the timer in uS” sebagai contoh reload temen set pada nilai 10 itu artinya “servos with 10 uS resolution(steps)”. Nah yang terpenting terakhir temen2 jangan lupa untuk mengaktifkan interrupt timernya cukup dengan menuliskan “Enable Interrupts

Berikut ini contoh program dengan kondisi:

  1. Servo 1 berputar ke kiri dengan sudut -90 derajat
  2. Servo 2 berputar ke kanan dengan sudut +90 derajat
  3. Servo 3 meneng ae hehehehehee ^_^

Dan ni dia potongan programmnya :

Hasil simulasi proteus :

Nah untuk ekperiment temen2 semua nih… coba deh lakukan perubahan nilai pada reload dan nilai pada step nya lalu amati apa yg terjadi… nanti temen2 akan memahaminya. Selamat mencoba ^_^

12 responses to this post.

  1. Posted by BOWO on Februari 8, 2012 at 6:33 pm

    salam kenal mas fahmi. mau tanya kalau untuk menggerakan 2 servo dg kecepatan sudut berbeda tapi eksekusinya berjalan pada waktu yang sama gimana ya mas???
    contoh:

    for p=104 to 150 step 5
    servo(1)=p
    wait T1
    next
    for p=104 to 150 step 3
    servo(2)=p
    wait T2
    next
    end

    kalau untuk program diatas nanti resultnya yang dieksekusi adalah gerak servo1 dulu baru servo2(eksekusi program secara seri). saya kepinginya dua servo itu berputar pada waktu start bersamaan tapi beda kecepatan(eksekusi pararel).Mohon pencerahan sang master hehehehe. trims

    Balas

  2. Posted by safri on Februari 14, 2012 at 1:56 pm

    mas, gimana caranya kalau mau akses port I2c menggunakan bascom untuk mengontrol servo kontroller????
    di sini saya menggunakan 18 servo. sehingga harus menggunakan servo kontroller. tetapi modul servo kontrollernya menggunakan interface I2c untuk interface dengan microkontroller masternya.

    Balas

  3. Posted by reins on Juni 9, 2012 at 8:22 am

    mas saya mau nxa.. saya mau menghidupkan kipas menggunakan mikro dan sensor suhu ni dia programmnya ‘————————–
    ‘Pengatur Kecepatan Motor DC
    ‘————————–
    $regfile = “m16def.dat”
    ‘Jika menggunakan ATMega16 maka diganti dengan “m16.dat”
    $crystal = 12000000
    ‘————————–SET_PENGATURAN PUTARAN
    Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Prescale = 1024
    Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc.4 , Db6 = Portc.3 , Db7 = Portc.2 , E = Portc.6 , Rs = Portc.7 ‘Pin LCD yang dihubungkan ke mikro
    Config Lcd = 16 * 2

    Compare1a = 100
    Compare1b = 10
    ‘————————–SET_TOMBOL
    Pwm1a = 200
    ‘———–
    Ddrb.0 = 0
    Portb.0 = 1
    Ddrb.1 = 0
    Portb.1 = 1
    ‘————————–
    Config Adc = Single , Prescaler = Auto , Reference = Avcc
    Start Adc

    Dim Putar As Integer
    Dim Dataadc As Word
    Dim Datasuhu As Single
    Const Vreff = 5

    Relay Alias Porta.1
    Inisialisasi:
    Gosub Init_devices
    ‘========================================================
    ‘ “”””MULAI””””
    ‘========================================================
    Putar = 1
    Do
    ‘—————————-
    Dataadc = Getadc(2)
    Datasuhu = Dataadc / 1024
    Datasuhu = Datasuhu * Vreff
    Datasuhu = Datasuhu * 100

    Locate 1 , 1
    Lcd “suhu:” ; Fusing(datasuhu , “# . ##”)
    Wait 1

    If Datasuhu >= 30 Then
    Waitms 200
    Putar = Putar + 1
    End If

    If Datasuhu 7 Then
    Putar = 1
    End If

    If Putar < 1 Then
    Putar = 7
    End If
    '—————————
    If Putar = 7 Then
    Pwm1a = 25
    End If

    If Putar = 6 Then
    Pwm1a = 50
    End If

    If Putar = 5 Then
    Pwm1a = 70
    End If

    If Putar = 4 Then
    Pwm1a = 90
    End If

    If Putar = 3 Then
    Pwm1a = 150
    End If

    If Putar = 2 Then
    Pwm1a = 200
    End If
    Waitms 300

    Loop
    Init_devices:
    Ddra = &B00000010
    Relay = 1
    Return
    '————————— end , tapi saat saya coba dia mutarnya gak sesuai suhunya… dia mutar seenaknya saja.. saya mau bt kipasnya pelan dan cepat.. tapi gak bisa.. mohon bantuannya makasih.

    Balas

  4. aku mah nggak ngerti sama beginian😀

    Balas

  5. mas mau nanya ni…kalau program motor servo continuous itu timing chart-nya gimana? sebenarnya apa bisa si servo continue itu di program kalau misal udah 360 drajat trus berhenti?

    Balas

  6. mas minta source code bascom nya donk ?

    Balas

  7. Perkenalkan mas bro, kalau kami melayani dan menerima service servo , namun layanan service servo kami untuk skala pabrik atau mesin industri yang menggunakan servo, kalau ada yang tanya unutk service servo kelas hobiest bsa kami sarankan ke mas bro tidak?

    Balas

  8. Posted by Ngr on Agustus 26, 2015 at 7:25 pm

    Mas fahmi,,saya salut banget dgn mas fahmi mau berbagi untuk sesama.itu mulia sekali mas,,,saya pemula dan blum bgtu paham dgn bascom dan saya mau belajar.apa mas fahmi jual ebook ttg bascom yg ada contoh beserta penjelasannya,,krn bnyk saya liat kata kata ysng anehh,,hee hee tapi saya gak ngerti maksudnya,,bisa dbantu mas, email saya mas. mayura280783marta@gmail.com ,trimksh mas

    Balas

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: