INFO TERBARU - www.indorobo.com

Jangan lupa TESTIMONI nya di link

CERITA SUKSES PENGUNJUNG

bagi yang sudah berhasil

CARI ARTIKEL DI KOLOM INI

Smooting Servo Motor Controller (menggerakkan servo secara smoot)

Written By inzar salfikar on Saturday, July 24, 2010 | Saturday, July 24, 2010

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

39 comments:

aryutomo said...

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

Inzar Salfikar said...

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.

J'KO said...

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..!!

Inzar Salfikar said...

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.

Satria Arief Aditya, Amd. said...

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

berikan ak pencerahan.... heheheheee

Inzar Salfikar said...

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)

joe said...

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...

Inzar Salfikar said...

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.

joe said...

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???

Inzar Salfikar said...

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);

joe said...

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

joe said...

mas kl gerakin servo pake pwm gmn ya mas???

Inzar Salfikar said...

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

deny said...

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

Inzar Salfikar said...

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.

Bona said...

mas klw tuk atmega listing program nya bisa gak yaa mas??

Inzar Salfikar said...

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

Olaf said...

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?,

Inzar Salfikar said...

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.

Olaf said...

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..

setsuna said...
This comment has been removed by the author.
setsuna said...

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...

Inzar Salfikar said...

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.

setsuna said...

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

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

mohon bimbingannya..

Inzar Salfikar said...

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)

setsuna said...

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

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

Inzar Salfikar said...

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.

Renharz said...

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

Inzar Salfikar said...

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.

atmasetya said...

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

Inzar Salfikar said...

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.

setsuna said...

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

Inzar Salfikar said...

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

atmasetya said...

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);
}

Inzar Salfikar said...

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;

setsuna said...

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

supaya bisa lebih simple progrmnya..

Inzar Salfikar said...

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

heri afandi said...

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

inzar salfikar said...

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.

Jangan lupa TESTIMONI nya di link

CERITA SUKSES PENGUNJUNG

bagi yang sudah berhasil

Post a Comment