{"id":93,"date":"2013-10-15T13:29:51","date_gmt":"2013-10-15T10:29:51","guid":{"rendered":"http:\/\/www.scozturk.com\/?p=93"},"modified":"2025-08-27T10:16:32","modified_gmt":"2025-08-27T10:16:32","slug":"pic-ile-servo-motor-kontrolu","status":"publish","type":"post","link":"http:\/\/18.193.70.38\/?p=93&lang=tr","title":{"rendered":"PIC ile servo motor kontrol\u00fc"},"content":{"rendered":"<p><strong>A- Gerekli Malzemeler:<\/strong><\/p>\n<p>1 &#8211; 1 adet 16F877A mikrodenetleyici<br \/>\n2 &#8211; 1 adet k\u0131rm\u0131z\u0131 LED<br \/>\n3 &#8211; 1 adet 220 ohm diren\u00e7<br \/>\n4 &#8211; 1 adet 4k7 diren\u00e7<br \/>\n5 &#8211; 2 adet 22pF kapasit\u00f6r<br \/>\n6 &#8211; 1 adet 20Mhz kristal<br \/>\n7 &#8211; 1 adet LM7805 reg\u00fclat\u00f6r<br \/>\n8 &#8211; 1 adet servo motor<br \/>\n9 &#8211; 2 adet d\u00fc\u011fme<br \/>\n10- 2 adet 10k diren\u00e7<\/p>\n<p><strong>B- A\u00e7\u0131klamalar:<\/strong><\/p>\n<p>Bu uygulamada PIC 16F877A mikrodenetleyicisini kullanarak bir servo motoru kontrol edece\u011fiz. Kontrol ederken iki d\u00fc\u011fme kullanaca\u011f\u0131z. D\u00fc\u011fmelerin birine bas\u0131ld\u0131\u011f\u0131nda servo bir y\u00f6ne, di\u011ferine bas\u0131ld\u0131\u011f\u0131nda servo ba\u015fka bir y\u00f6ne ve d\u00fc\u011fmelere bas\u0131lmad\u0131\u011f\u0131nda bir y\u00f6ne d\u00f6necektir.<br \/>\nKullanaca\u011f\u0131m\u0131z servo motorun 3 adet i\u011fnesi bulunmaktad\u0131r. \u0130lk i\u011fne (sar\u0131 kablo) veri i\u011fnesidir. \u0130kinci i\u011fne (k\u0131rm\u0131z\u0131 kablo) gerilim (5V) ve \u00fc\u00e7\u00fcnc\u00fc i\u011fne (siyah kablo) toprakt\u0131r. Servo motor veri i\u011fnesinden gelen 20ms lik veriyi al\u0131r ve bu verideki 1 (yani +5V) miktar\u0131na g\u00f6re y\u00f6n\u00fcn\u00fc ayarlar. Mesela:<br \/>\n<!--more--><\/p>\n<div>\n<ol start=\"1\">\n<li>bit_set(b_kapisi,7);<\/li>\n<li>delay_us(2400);<\/li>\n<li>bit_clear(b_kapisi,7);<\/li>\n<li>delay_ms(17);<\/li>\n<li>delay_us(600);<\/li>\n<\/ol>\n<\/div>\n<p>Kodu ile B kap\u0131s\u0131n\u0131n yedinci i\u011fnesine ba\u011fl\u0131 bir servo motoru 2,4ms 1 ve 17,6ms 0 vererek saat y\u00f6n\u00fcnde d\u00f6nd\u00fcrebiliyoruz. Motoru ortalamak i\u00e7in ise a\u015fa\u011f\u0131daki kodu kullan\u0131yoruz:<\/p>\n<div>\n<ol start=\"1\">\n<li>bit_set(b_kapisi,7);<\/li>\n<li>delay_us(1500);<\/li>\n<li>bit_clear(b_kapisi,7);<\/li>\n<li>delay_ms(17);<\/li>\n<li>delay_us(1500);<\/li>\n<\/ol>\n<\/div>\n<p>G\u00f6r\u00fcld\u00fc\u011f\u00fc gibi 1,5ms 1 ve 18,5ms 0 verilmesi motoru ortal\u0131yor. Benzer \u015fekilde 0,6ms 1 ve 19,4ms 0 vererek motoru saat y\u00f6n\u00fcn\u00fcn tersinde bir konuma getirebiliriz. Burada dikkat edilmesi gereken \u015fey g\u00f6nderilen sinyaldeki 1 (yani +5V) s\u00fcresinin 0,6ms ile 2,4ms aras\u0131nda de\u011fi\u015fmesidir. Daha b\u00fcy\u00fck veya daha k\u00fc\u00e7\u00fck (servo motorun \u00f6zelliklerine g\u00f6re bu 0,6ms ve 2,4ms de\u011ferleri oynama g\u00f6sterecektir) de\u011ferler istenmeyen sonu\u00e7lar do\u011furacakt\u0131r.<br \/>\nUnutulmamas\u0131 gereken bir detay servo motorun d\u00fcz DC motorun aksine belirli bir konuma (bizim yukar\u0131daki verilerle belirtti\u011fimiz) gelindi\u011finde durmas\u0131d\u0131r. Yani a\u00e7\u0131l\u0131 d\u00f6nd\u00fcrme gibi i\u015flemler yap\u0131labilir.<br \/>\nD\u00fc\u011fmeler ba\u011flan\u0131rken de pull-down diren\u00e7lerin ba\u011flanmas\u0131na \u00f6zen g\u00f6sterilmelidir (aksi takdirde A kap\u0131s\u0131ndan veri okunurken istenmeyen sonu\u00e7lar elde edilecektir).<\/p>\n<p><strong>C- Devre \u015eemas\u0131 (ISIS):<\/strong><\/p>\n<p><a title=\"devre_sema.JPG\" href=\"http:\/\/web.archive.org\/web\/20120425203644\/http:\/\/www.scozturk.com\/wp-content\/uploads\/2007\/06\/devre_sema.JPG\"><img decoding=\"async\" alt=\"devre_sema.JPG\" src=\"http:\/\/web.archive.org\/web\/20120425203644im_\/http:\/\/www.scozturk.com\/wp-content\/uploads\/2007\/06\/devre_sema.kucukresim.JPG\" \/><\/a><\/p>\n<p><a title=\"pic_2dsn.txt\" href=\"http:\/\/web.archive.org\/web\/20120425203644\/http:\/\/www.scozturk.com\/wp-content\/uploads\/2008\/03\/pic_2dsn.txt\">pic_2dsn.txt<\/a> (uzant\u0131s\u0131n\u0131 .DSN olarak de\u011fi\u015ftiriniz)<\/p>\n<p><strong>D- Kod (CCS C):<\/strong><\/p>\n<p><em>pic_2.hex : <\/em><a title=\"pic_2.txt\" href=\"http:\/\/web.archive.org\/web\/20120425203644\/http:\/\/www.scozturk.com\/wp-content\/uploads\/2007\/12\/pic_2.txt\">pic_2.txt<\/a> (uzant\u0131s\u0131n\u0131 .hex olarak de\u011fi\u015ftiriniz)<\/p>\n<p><em>pic_2.c :<\/em><\/p>\n<div>\n<ol start=\"1\">\n<li>#include\u00a0&#8220;D:\\scozturk\\pic_2.h&#8221;<\/li>\n<li><\/li>\n<li>#BYTE\u00a0a_kapisi\u00a0=\u00a00x05\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/\u00a0A\u00a0kap\u0131s\u0131n\u0131\u00a0tan\u0131mla<\/li>\n<li>#BYTE\u00a0b_kapisi\u00a0=\u00a00x06\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/\u00a0B\u00a0kap\u0131s\u0131n\u0131\u00a0tan\u0131mla<\/li>\n<li><\/li>\n<li>void\u00a0ayarla()<\/li>\n<li>{<\/li>\n<li>setup_adc_ports(NO_ANALOGS);<\/li>\n<li>setup_adc(ADC_OFF);<\/li>\n<li>setup_psp(PSP_DISABLED);<\/li>\n<li>setup_spi(FALSE);<\/li>\n<li>setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);<\/li>\n<li>setup_timer_1(T1_DISABLED);<\/li>\n<li>setup_timer_2(T2_DISABLED,0,1);<\/li>\n<li>setup_comparator(NC_NC_NC_NC);<\/li>\n<li>setup_vref(FALSE);<\/li>\n<li>}<\/li>\n<li><\/li>\n<li>void\u00a0main()<\/li>\n<li>{<\/li>\n<li>int\u00a0i;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/\u00a0D\u00f6ng\u00fclerde\u00a0kullan\u0131lan\u00a0saya\u00e7<\/li>\n<li>ayarla();\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/\u00a0PIC&#8217;i\u00a0ayarla<\/li>\n<li>delay_ms(2000);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/\u00a02\u00a0saniye\u00a0bekle<\/li>\n<li>set_tris_a(0xFF);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/\u00a0A\u00a0kap\u0131s\u0131n\u0131\u00a0giri\u015f\u00a0olarak\u00a0kullanaca\u011f\u0131m\u0131zdan\u00a0giri\u015f\u00a0olarak\u00a0ayarlayal\u0131m<\/li>\n<li>set_tris_b(0x00);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/\u00a0B\u00a0kap\u0131s\u0131n\u0131\u00a0\u00e7\u0131k\u0131\u015f\u00a0olarak\u00a0ayarlayal\u0131m<\/li>\n<li>bit_set(b_kapisi,0);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/\u00a0RB0\u00a0daki\u00a0LED&#8217;i\u00a0yak<\/li>\n<li>for(\u00a0;\u00a0;\u00a0)\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/\u00a0Sonsuz\u00a0d\u00f6ng\u00fc<\/li>\n<li>{<\/li>\n<li>if(bit_test(a_kapisi,0))\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/\u00a0RA0\u00a0daki\u00a0d\u00fc\u011fmeye\u00a0mi\u00a0bas\u0131lm\u0131\u015f?<\/li>\n<li>{<\/li>\n<li>for(i\u00a0=\u00a00\u00a0;\u00a0i\u00a0&lt;\u00a05\u00a0;++i)\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/\u00a0Servo\u00a0motoru\u00a0sa\u011fa\u00a0d\u00f6nd\u00fcr<\/li>\n<li>{<\/li>\n<li>bit_set(b_kapisi,7);<\/li>\n<li>delay_us(2400);<\/li>\n<li>bit_clear(b_kapisi,7);<\/li>\n<li>delay_ms(17);<\/li>\n<li>delay_us(600);<\/li>\n<li>}<\/li>\n<li>}<\/li>\n<li>else\u00a0if(bit_test(a_kapisi,1))\u00a0\u00a0\u00a0\u00a0\/\/\u00a0RA1\u00a0deki\u00a0d\u00fc\u011fmeye\u00a0mi\u00a0bas\u0131lm\u0131\u015f?<\/li>\n<li>{<\/li>\n<li>for(i\u00a0=\u00a00\u00a0;\u00a0i\u00a0&lt;\u00a05\u00a0;++i)\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/\u00a0Servoyu\u00a0sola\u00a0d\u00f6nd\u00fcr<\/li>\n<li>{<\/li>\n<li>bit_set(b_kapisi,7);<\/li>\n<li>delay_us(600);<\/li>\n<li>bit_clear(b_kapisi,7);<\/li>\n<li>delay_ms(17);<\/li>\n<li>delay_us(2400);<\/li>\n<li>}<\/li>\n<li>}<\/li>\n<li>else<\/li>\n<li>{<\/li>\n<li>for(i\u00a0=\u00a00\u00a0;\u00a0i\u00a0&lt;\u00a05\u00a0;++i)\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/\u00a0Servoyu\u00a0ortala<\/li>\n<li>{<\/li>\n<li>bit_set(b_kapisi,7);<\/li>\n<li>delay_us(1500);<\/li>\n<li>bit_clear(b_kapisi,7);<\/li>\n<li>delay_ms(17);<\/li>\n<li>delay_us(1500);<\/li>\n<li>}<\/li>\n<li>}<\/li>\n<li>}<\/li>\n<li>}<\/li>\n<\/ol>\n<\/div>\n<p><em>pic_2.h :<\/em><\/p>\n<div>\n<ol start=\"1\">\n<li>#include\u00a0&lt;16F877A.h&gt;<\/li>\n<li>#device\u00a0*=16<\/li>\n<li>#device\u00a0adc=8<\/li>\n<li><\/li>\n<li>#FUSES\u00a0NOWDT\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/No\u00a0Watch\u00a0Dog\u00a0Timer<\/li>\n<li>#FUSES\u00a0HS\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/High\u00a0speed\u00a0Osc\u00a0(&gt;\u00a04mhz)<\/li>\n<li>#FUSES\u00a0NOPUT\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/No\u00a0Power\u00a0Up\u00a0Timer<\/li>\n<li>#FUSES\u00a0NOPROTECT\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/Code\u00a0not\u00a0protected\u00a0from\u00a0reading<\/li>\n<li>#FUSES\u00a0NODEBUG\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/No\u00a0Debug\u00a0mode\u00a0for\u00a0ICD<\/li>\n<li>#FUSES\u00a0NOBROWNOUT\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/No\u00a0brownout\u00a0reset<\/li>\n<li>#FUSES\u00a0NOLVP\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/No\u00a0low\u00a0voltage\u00a0prgming,\u00a0B3(PIC16)\u00a0or\u00a0B5(PIC18)\u00a0used\u00a0for\u00a0I\/O<\/li>\n<li>#FUSES\u00a0NOCPD\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/No\u00a0EE\u00a0protection<\/li>\n<li>#FUSES\u00a0NOWRT\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/Program\u00a0memory\u00a0not\u00a0write\u00a0protected<\/li>\n<li><\/li>\n<li>#use\u00a0delay(clock=20000000)<\/li>\n<\/ol>\n<\/div>\n<p><strong>E- Devrenin Resmi:<\/strong><\/p>\n<p><a title=\"devre_resim.JPG\" href=\"http:\/\/web.archive.org\/web\/20120425203644\/http:\/\/www.scozturk.com\/wp-content\/uploads\/2007\/06\/devre_resim.JPG\"><img decoding=\"async\" alt=\"devre_resim.JPG\" src=\"http:\/\/web.archive.org\/web\/20120425203644im_\/http:\/\/www.scozturk.com\/wp-content\/uploads\/2007\/06\/devre_resim.kucukresim.JPG\" \/><\/a><\/p>\n<p><strong>F- Vidyo:<\/strong><\/p>\n<p><a href=\"http:\/\/www.youtube.com\/watch?v=6bgZcMow_c8\" target=\"_blank\">Vidyo 1 <\/a><\/p>\n<p><a href=\"http:\/\/www.youtube.com\/watch?v=Uaro4vw7yzA\" target=\"_blank\">Vidyo 2 <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A- Gerekli Malzemeler: 1 &#8211; 1 adet 16F877A mikrodenetleyici 2 &#8211; 1 adet k\u0131rm\u0131z\u0131 LED 3 &#8211; 1 adet 220 ohm diren\u00e7 4 &#8211; 1 adet 4k7 diren\u00e7&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[207,221],"tags":[],"class_list":["post-93","post","type-post","status-publish","format-standard","hentry","category-donanim-tr","category-mikrodenetleyici-tr"],"_links":{"self":[{"href":"http:\/\/18.193.70.38\/index.php?rest_route=\/wp\/v2\/posts\/93","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/18.193.70.38\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/18.193.70.38\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/18.193.70.38\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/18.193.70.38\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=93"}],"version-history":[{"count":1,"href":"http:\/\/18.193.70.38\/index.php?rest_route=\/wp\/v2\/posts\/93\/revisions"}],"predecessor-version":[{"id":1137,"href":"http:\/\/18.193.70.38\/index.php?rest_route=\/wp\/v2\/posts\/93\/revisions\/1137"}],"wp:attachment":[{"href":"http:\/\/18.193.70.38\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=93"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/18.193.70.38\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=93"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/18.193.70.38\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=93"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}