Skip to main content

Smooting Servo Motor Controller (menggerakkan servo secara smoot)

Pada tutorial kali ini akan saya jelaskan bagaimana caranya menggerakkan motor servo secara halus (smoot). ini biasanya digunakan untuk aplikasi - aplikasi tertentu tergantung kebutuhan.
pada postingan sebelumnya telah dibahas cara beserta program mengendalikan motor servo akantetapi tidak secara smooting artinya motor selalu bergerak konstan dalam kecepatan penuh menuju posisi yang di perintahkan dan mempertahankannya. nah.....kali ini saya menggunakan sedikit modifikasi program yaitu pada bagian sepeti pada potongan program berikut ini.

gambar diatas adalah cara membuat motor bergerak lebih smoot (halus). untuk pengaturan konfigurasi pada Code Vision AVR menggunakan ATtiny2313 adalah sama seperti pada artikle sebelumnya yaitu seperti gambar berikut ini.
Prinsipnya
  1. Memberikan delay atau waktu tunda pada selah penambahan angka yang di berikan ke motor servo. semakain besar delay yang diberikan akan semakin lamban pergerakannnya berlaku sebaliknya. 
  2. Pengulangan FOR pada program adalah dihitung sesuai kebutuhan misalkan dari posisi angka100 ingin menjadikan ke posisi angka 80 maka pengulangannya adalah sebanyak 20x. 

Download
  1. Listing Program Smooting Servo Motor Controller ATtiny2313
  2. Datasheet ATtiny2313

cukup mudah kan? silahkan si sedot aja ya.......gw ikhlash kok wkwkwkwkwkwk
salam anak pulau.....:-)  

Related Post
  1. Pemrograman-banyak-motor-servo menggunakan interrupt timer ATtiny2313
  2. Pemrograman-satu-motor-servo menggunakan interrupt timer ATtiny2313
  3. Rangkain servo motor controller ATmega8
  4. Menghitung Timer interrupt pada pemrogramna motor servo
  5. http://www.digitdude.com/2010/08/motor-servo-mg90-tower-pro-menggunakan.html
  6. Blue Arrow 4.3 Gram Micro Servo For Futaba, Hitec, JR, GWS Receivers
  7. 322HD Standard Servo

Comments

  1. Mas mau tanya nie...gimana klo servu yg digunakan ada 10...terima kasih mas...!!!

    ReplyDelete
  2. oalah AR.........pura2 gak tau ni........tu sama dengan 2 servo ar.....tinggal tambah inisialisasi variable trus dipasang di interrupnya aja....sama kok caranya dnegan yang 2 servo yg kemarin aq posting.

    ReplyDelete
  3. Thanks mas.., servo controler bisa saya terapin..!!

    Tapi saya mo tanya nih gy nih mas Inzar...!!

    klo ada 2 IC :
    IC master & IC slave..,

    IC master sbg Main Controller sdngkn IC slave sbg Servo controller..,
    truz untuk mengubungkan k 2 IC pake komunikasi Serial..,

    klo blh Tau Programnya gmn yak..??
    Mohon Bantuan'y Mas..!!! thanks berat nih..!!

    ReplyDelete
  4. komunikasi serial tingal panggil getchar() trus yg diterima kan karakter maka keduanya di sesuaikan. kalo mau lebih bagus lagi pakai interup serialnya di RX interrup pada master. sehingga data tidak akan pernah kehilangan. tapi ambil datanya di rx_buffer[index keberapa?]

    kalo sempat saya posting caranya. belom sempat buat programnya ni.

    ReplyDelete
  5. mas, numpang nimbrung nih...
    mau tanya.. servox=23; maksudnya apa ya??

    berikan ak pencerahan.... heheheheee

    ReplyDelete
  6. maksudnya servox=23 adalah servo tersebut diberi pwm atau nilai 23 sehingga bergerak ke suatu posisi. bisa disebut dengan posisi awal saat robot atau system dijalankan. (posisi awal servo bisa di set sesukanya)

    ReplyDelete
  7. mas kalo mo gerakin servo dr suatu sudut ke sudut tertentu dgn halus gmn mas?
    misalnya dari sudut 0 ke 90 hbs itu berhenti,
    q bingung mas...

    ReplyDelete
  8. ganti aja delaynya. makin besar akan semakin lambat. untuk menentukan sudutnya ganti aja angka pada intruksi for yang 40 menjadi angka lain untuk menggerakkan ke 90 derajat. ingat angka itu bukan dalam bentuk derajat.

    ReplyDelete
  9. uda q coba mas tapi kok berulang trs ya mas,misal uda nyampe 90,entr dlm waktu agak lama balik ke posisi awal trs ke 90 lg.
    biar tetep di 90 trs gmn ya mas???

    ReplyDelete
  10. program pada link download diatas memang servo bolak balik. jadi programnya pangkas aja.
    buang yang bagian program pengurangan
    seperti dibawah ini:

    for(i=1;i<=40;i++)

    {

    servox--;

    servoy--;

    delay_ms(30);

    }

    delay_ms(1000);



    for(i=1;i<=40;i++)

    {

    servox--;

    servoy--;

    delay_ms(30);

    }

    delay_ms(1000);

    ReplyDelete
  11. ok mas nanti q coba,thanks ya mas maaf ngrepotin...
    hehehe...

    ReplyDelete
  12. mas kl gerakin servo pake pwm gmn ya mas???

    ReplyDelete
  13. bisa aja tapi beda................
    liat sini gambarnya ada.
    PWM harus memenuhi syarat pensinyalan motor servo yaitu 1 sampai dengan 2 ms.

    ReplyDelete
  14. mas ada contoh program CVAVR or BASCOM untuk menggerakkan motor stepper secara looping gag?
    tolong kirim ke email donk
    denysafari89@gmail.com

    ReplyDelete
  15. motor stepper itu kan lampu berjalan. sama programnnya dengan running led. hidup delay hidup lain lagi delay hidup ya gitu terus. kalo mau putar balik ya balik aja jalannya lampu. ntar nyusul kalo ada. sementara gak posting dulu.

    ReplyDelete
  16. mas klw tuk atmega listing program nya bisa gak yaa mas??

    ReplyDelete
  17. sama aja . ikutin aja langkahnya cuma ganti type chip aja. caranya sama kok.

    ReplyDelete
  18. mas mw tanya listing ini bisa g di pake buat gaerkin servo pake sensor, soalnya q coba pake IF g ada reaksinya...
    kalaw bisa, listingnya gmn y?,

    ReplyDelete
  19. bisa, if yang digunakan harus mendeteksi sensor. asumsikan sebagai tombol terlebihdahulu.
    kemudian didalam fungsi if tersebut letakkan intruksi gerak servo. (didalam if ada if lagi.) seperti itu kira2.

    ReplyDelete
  20. Mas, maksdnya if dalam if tu gmana y?, bisa g mas kasi conthnya?, klw bisa kirim aja ke email tondekan_asli@yahoo.com, soalnya q buat g bisa..

    ReplyDelete
  21. This comment has been removed by the author.

    ReplyDelete
  22. gan mo tanya neh..
    saya coba pake atmega8535....
    kok bagiab yg ini .

    #pragma optsize-
    CLKPR=0x80;
    CLKPR=0x00;
    #ifdef _OPTIMIZE_SIZE_
    #pragma optsize+
    #endif

    bikin eror ya.. tapi kalo di apus malah gk eror...

    ReplyDelete
  23. itu bawaannya ATtiny2313 kalo di konfigurasi pake wizard. soalnya ane pake wizard jadi gak paham bener sama register2 seperti itu. tapi pada judulnya tertulis
    // Crystal Oscillator division factor: 1
    coba baca datasheet.

    sedangkan di ATmega jika di setting melalui wizart seperti gambar diatas gak muncul yg begituan.

    ReplyDelete
  24. trus kalo program buat di atmega gimana donk..??

    yg penting intinya sama.. supaya motor servo bergerak halus/lambat..

    mohon bimbingannya..

    ReplyDelete
  25. buat project baru trus pilih chip atmega nya kemudian lakukan setting seperti gambar di atas. cuma ganti chip aja. kemudian copy paste program seperti tampilan diatas ke while(1)

    ReplyDelete
  26. makasih banyak atas tutor nya.. sudah saya coba.. dan berhasil..

    tapi kalo pengen ganti derajat.. mana yg harus di rubah yah..

    ReplyDelete
  27. sedikit penjelasan singkat:
    nilai diatas while(1) yang "servox=23" dan "servoy=23". itu adalah nilai posisi mula2 motor servo.

    kemudian dalam while(1) ada intruksi "servox--" dan ++ juga untuk servoy seperti itu juga.

    nah....nilai penjumlahan dan pengurangannya itu ada di pengulangan fornya, pada intruksi for

    for(i=1;i<=40;i++)

    ganti2 aja angka 40 nya.
    untuk cepat lambantnya motor atau mengatur smootnya ganti pada delay dalam fungsi for. yang pada gambar diatas "delay_ms(30)". itu aja di ganti2 ntar gerakan smootnya juga berubah.

    ReplyDelete
  28. maap sebelumnya mau nanya, untuk contoh kasus diatas kabel sinyal (kuning) motor servo dikonekin ke mikon di portB, betul? pin berapa yah?

    ReplyDelete
  29. iya. PORTB nya apa aja terserah yang di setting sebagai output seperti gambar di atas. PB0, PB1, PB2.
    nah. ntar di paling atas program (coba download contoh program) ada :

    #define servox PORTB.0

    itu untuk menentukan pin mana yang digunakan yang terhubung dnegan motor servo.

    ReplyDelete
  30. gana kalo langsung pake

    servox=35;

    servox=25;

    tapi perubahan putarannya kok kasar yah..

    bisa gk kalo langsung ngasih nilai tapi gerakannya lembut kya program punya gan.. hehe

    ReplyDelete
  31. gini caranya

    void servo(unsigned char nilai)
    {
    for(i=1;i<=nilai;i++)
    {
    servox--;
    servoy--;
    delay_ms(30);
    }
    }

    letakakn fungsi diatas main program.
    penggunaan seperti ini dalam while(1)

    while(1)
    {
    servo(25);
    }

    misalnya seperti itu.

    ReplyDelete
  32. wah theme web na baru ya Gan..!! keren juga.. hehe

    ReplyDelete
  33. rencananya mau diganti balik seperti kemarin. ini agak bingung sayanya.....maklum udah kebiasaan make yg lama. full widget

    ReplyDelete
  34. blum terbiasa mungkin.. :)

    ngomong2

    kalo saya jadiin gini bisa gk.ya..
    ceritanya saya pengen pake 3 motor servo ketika port mikon saya kasih 0xFE
    ketiga motor servo bergerak nya beda2..
    {
    case 0xFE: servox=25; //misal putar 30 drajat
    servoy=30; //misal putar 50 drajat
    servoz=15; //misal putar 20 drajat
    ;break;
    default : servox=10;
    servoy=10;
    servoz=10;
    };

    nah program ini pengen pake fungsi yg ini biar gerakannya halus juga... bisa gk yah

    void servo(unsigned char nilai)
    {
    for(i=1;i<=nilai;i++)
    {
    servox--;
    servoy--;
    delay_ms(30);
    }
    }

    letakakn fungsi diatas main program.
    penggunaan seperti ini dalam while(1)

    while(1)
    {
    servo(25);
    }

    ReplyDelete
  35. bisa. menggunakan fungsi yang pernah saya buat.
    akantetapi fungsi tersebut masih ada kekurangan yaitu kita harus tau kondisi servo sudah bernilai berapa sehingga dapat ditentukan didalam fungsi ingin melakukan penambahan atau pengurangan.

    jika posisi default adalah 10 maka prosesnya jika ingin menjalankan menjadi 25,30,dan 15.
    akan dilakukan secara bersamaan dengan pembagian terlebihdahulu.

    intinya harus dibagi rata dulu. agar servo mampu memulai gerakan secara serentak dan berhenti secara serentak. contohnya pada servo yg targetnya 30 dan 15 itu habis dibagi kan? jadi pada fungsi yang pernah saya buat sebelumnya dimasukkan nilai

    servo(15);

    dan untuk servo dengan target 30 digunakan

    servoy+2;

    ReplyDelete
  36. Gan ada cara lain gk.. selain cara di atas..

    supaya bisa lebih simple progrmnya..

    ReplyDelete
  37. hhhmmmm......ane coba2 juga dulu ya....soalnya lagi sibuk penelitian JACII ni....keep waiting aja di keep moving forward.
    :-)

    ReplyDelete
  38. mas klo kontrol servo menggunakan stick ps2 dengan komunikasi spi gimanaya..?

    ReplyDelete
  39. pakai konfigurasi stick ps ? coba ambil data dulu dari komuni kasi spi stik pada artikle lain. di blog saya belom ada caranya. coba cari pengambilan data spi stick ps2 ke lcd nnti dari data tersebut akan mudah diterapkan untuk berbagai hal.

    semoga saran saya membantu.

    ReplyDelete

Post a Comment

Popular posts from this blog

PCB Jam Digital 7 Segmen Mengunakan ATmega8 (PCB,SCH dan Firmware Download)

akhirnya tercapai juga ni......
mau upload yang satu ini. langsung ke TKP aja. semoga bermanfaat.



rangkaian skematicnya seperti berikut ini


rangkaian diatas menggunakan NET sehingga dengan hanya mengganti nama pada tiap PIN komponen maka dengan mudah langsung terhubung secara otomatis. terlihat lebih rapi kan..........? jika kita menggunakan kabel semuanya. mungkin yg liatnya udah pusing duluan. tp jangan panik.......... disini saya sertakan link download PCB dan skematic diatas.
Download..... PCB jam digital ATmega8Skematik Jam Digital ATmega8Firmware jam digital ATmega8Main Program jam digital ATmega8 (sudah OK)Sub rutin program jam digital ATmega8Project file programListing komponencara gabung program karkulasi.c dan program utamaHasil rangkaian Jam digital ATmega8 Semua file download diatas terutama pada main program dan sub rutin harus di gabungkan untuk dapat di kompilasi menjadi file [dot]HEX,  atau bisa langsung gunakan file firmware dan diisi ke mikrokontroller ATmega8. terima…

Minimum System ATmega8535/16/32 PCB Menggunakan Software Eagle

perhatkan screen shot berikut ini, mungkin dah pada tau kalo ngeliat ni rangkaian. soalnya sangat - sangat simple and sangat mudah untuk dibuat apalagi kalau menggunakan cara membuat PCB seperti yang telah saya jelaskan pada posting sebelum - sebelumnya.


gambar diatas merupakan PCBminimum system ATmega8535 / ATmega16 / ATmega32. kenapa demikian?
karena konfigurasi pin dari jenis Microcontroller diatas adalah sama, hanya dibedakan pada memorinya saja.
perhatikan juga tata letak komponennya yang hanya sedikit he he he...

untuk posisi port udah tersusun rapi dikaenakan konfigurasi pin mikrokontroller ini sudah berurutan jadi gak susah - susah deh...
untuk lebih jelasnya bisa langsung lihat data sheetnya aja oke? berikut juga saya sertakan PCB nya menggunakan eagle versi 5.0.0

download
[1] ATmega8535
[2] ATmega16
[3] ATmega32
[4] Minimum system Mikrokontroller ATmega8535/16/32

ada pertanyaan? silahkan....
ada permintaan? monggo......
salam anak pulau aje ye......:-)

Related Article
[1] Mini…

Perbaiki Baterai Lithium Polymer (li-po)

kalo ngetik ni key word seperti diatas tu....bakalan nyasar kesini...
nah......

gak usah banyak basa-basi deh.
malam ini ada masalah besar yang terjadi pada baterai line tracer kesayanganku, sebuah Lithium Polymer di nyatakan rusak oleh chargernya sendiri... begitu tega dia mengkhianati pasangannya... ngaur aja ni....

tu....kasus ini udah buat saya rugi sampe Rp. 180 Rb untuk sebuah harga baterai Lithium Polymer yang memiliki tegangan 7,4 dimana terdapat 2 buah cell baterai didalamnya.

ada beberapa hal yang perlu diperhatikan kalau pakai baterai Li-po ini.

pada baterai
1. baterai akan rusak jika tegangan di tiap cellnya dibawah 3,5 Volt. normalnya 3.7.

2. mengisi ulang baterai hanya bisa dilakukan dengan charger khusus yang telah diatur khusus menjaga tegangan tetap stabil, jika menggunakan charger biasa maka baterai dalam jangka waktu panjang akan menggelembung.

pada charger (yang murahan ni....)
1. tegangan input charger menggunakan 12 DC
2. led merah akan menyala jika power input charger…