Mini sumo robot amacı, tasarlanan ve programlanan robotların bir birleri ile mücadele etmesidir. Mini sumo robot kendisi gibi bir başka mini sumo robot ile bir ringe koyulur. Ring, yerden biraz yüksek, siyah zemini olan daire şeklinde bir ahşaptır. Dairenin çevresi ince beyaz boya ile çevrilidir. Robotlar aynı anda birbirlerine arkası dönük şekilde çalıştırılır. Amaçları diğer robotu çemberden dışarı atıp kendisinin içeride kalmasıdır.
Malzeme ve Devre
Devre 1
Ana karttır. Baskı devre yapılması için çıktısı aşağıdaki linkte vardır. Üzerindeki numaralandırılmamış tüm elemanlar zaten bağlantısı ve geliş yerinden de anlaşılacağı gibi standart elemanlarıdır diyot, direnç, kapasitör vs.
- İşlemci PIC 16F877
- Kumanda devresi için bağlantı noktası.
- Beyaz-Siyah Algılaması için kullanılan CNY70 sensörlerinin bağlantı noktası
- 3 adet mesafe ölçen sensör SHARP sensör bağlantıları. + ve – üstteki 2 giriş. Diğerleri sol, sağ ve ön sensörlerin analog derğer pinleri.
- Sol 2 teker için L298N motor sürücüsü.
- Sağ 2 teker için L298N motor sürücüsü.
- Sol tekerlerin girişleri
- Sağ tekerlerin girişleri.
- Başlama modunu belirlemek için kullanılacak üç adet switch buton.
Devre 2
Kumanda devresidir. Her kumanda ile çalışır. İlk başta kumanda tanıtılır sonra o kumanda ile başlatılıp durdurulur. Ana devreye entegre olarak yapmalısınız.
Devre 3
CNY70 sensörlerinin devresidir. Bu sönsörler beyaz ve siyah renk algılayıcıları olarak robotun ringden dışarı çıkmasını engelleyecektir. Robotun ön ve arka olmak üzere en uç orta noktalarına monte edilir.
İşlemci Programlama
CCS C ile programlanmıştır. PIC C kodları:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 |
#include <16F877.h> #device adc=8 #FUSES NOWDT //No Watch Dog Timer #FUSES HS //High speed Osc (> 4mhz) #FUSES NOPUT //No Power Up Timer #FUSES NOPROTECT //Code not protected from reading #FUSES NOBROWNOUT //Reset when brownout detected #FUSES NOLVP //Low Voltage Programming on B3(PIC16) or B5(PIC18) #FUSES NOCPD //No EE protection #FUSES NOWRT //Program memory not write protected #FUSES NODEBUG //No Debug mode for ICD #FUSES NOCPD #use delay(clock=20000000) void dur(){ output_low(pin_c0); output_low(pin_c3); output_low(pin_c5); output_low(pin_d2); output_low(pin_c2); output_low(pin_d1); output_low(pin_c7); output_low(pin_c4); } void ileri(){ dur(); output_high(pin_c0); output_high(pin_c3); output_high(pin_c5); output_high(pin_d2); } void geri(){ dur(); output_high(pin_c4); output_high(pin_c2); output_high(pin_c7); output_high(pin_d1); } void sag(){ dur(); output_high(pin_c4); output_high(pin_c7); output_high(pin_c0); output_high(pin_c3); } void sol(){ dur(); output_high(pin_c2); output_high(pin_d1); output_high(pin_c5); output_high(pin_d2); } int8 on,sa,so,x; void main() { output_high(pin_d3); output_high(pin_c6); output_high(pin_d0); output_high(pin_c1); output_high(pin_e0); setup_adc_ports(AN0_AN1_AN2_AN3_AN4); setup_adc(ADC_CLOCK_DIV_32); set_tris_b(0x01); delay_ms(2000); /* if(input(pin_d6)==1) {} // 1 numaralı anahtar açık ise else if(input(pin_d5)==1) {} // 2 numaralı anahtar açık ise else if(input(pin_d4)==1) {} // 3 numaralı anahtar açık ise */ //anahtar 1 saga dönerek başla if(input(pin_d6)==1){ x=1; while(TRUE){ if(input(pin_b0)==0){ ileri(); delay_ms(700); x=3;} else if(input(pin_b1)==0){ geri(); delay_ms(700); x=0; } else { set_adc_channel(0); delay_us(10); on=read_adc(); set_adc_channel(1); delay_us(10); sa=read_adc(); set_adc_channel(2); delay_us(10); so=read_adc(); if(on>45){x=0; ileri();} else if(sa>45){x=1; sag();} else if(so>45){x=2; sol();} else { if(x==0)ileri(); else if(x==1)sag(); else if(x==2) sol(); else geri(); } } } } //anahtar 2 sola dönerek başla else if(input(pin_d5)==1){ x=2; while(TRUE){ if(input(pin_b0)==0){ ileri(); delay_ms(700); x=3;} else if(input(pin_b1)==0){ geri(); delay_ms(700); x=0; } else { set_adc_channel(0); delay_us(10); on=read_adc(); set_adc_channel(1); delay_us(10); sa=read_adc(); set_adc_channel(2); delay_us(10); so=read_adc(); if(on>45){x=0; ileri();} else if(sa>45){x=1; sag();} else if(so>45){x=2; sol();} else { if(x==0)ileri(); else if(x==1)sag(); else if(x==2) sol(); else geri(); } } } } //anahtar 3 geri giderek başla else if(input(pin_d4)==1){ x=3; while(TRUE){ if(input(pin_b0)==0){ ileri(); delay_ms(700); x=3;} else if(input(pin_b1)==0){ geri(); delay_ms(700); x=0;} else { set_adc_channel(0); delay_us(10); on=read_adc(); set_adc_channel(1); delay_us(10); sa=read_adc(); set_adc_channel(2); delay_us(10); so=read_adc(); if(on>45){x=0; ileri();} else if(sa>45){x=1; sag();} else if(so>45){x=2; sol();} else { if(x==0)ileri(); else if(x==1)sag(); else if(x==2) sol(); else geri(); } } } } } |
Dosya Linki
https://github.com/fatihyldrim/MiniSumoRobot
abi rica etsem bana isis çizimini gönderirmisin ellerine sağlık çok güzel olmuş
“Dosya Linki” yazan yerde tüm çizimler ve kodlar var abim oradan indirebilirsin.
Süper ötesi bir paylaşım. Artık herkes arduinoya felan yöneliyor ama bu işin temeli pic tir. bununla öğrenen diğerlerini yalar yutar.
Dosya linki yazan yere girdim ama devre çizimini Bulamadım.Fth.ft.workspace diye bir file var onu açamadım.Onun içinde mi acaba
“Proteus” programını indir o programla çizimleri açabilirsin. Birden fazla çizim var.
Abi.Ben de proteus 8 var.Olmadı.7’yi de indirdim yine olmadı.Hangi sürümü indireyim.Direk isis’i mi indireyim ya da ?
Direk isis ve ares indir öyle dene.
merhaba mini sumo robotunuzu yaptim.
elin koluna saglik. sadece sizden istedigim.
pic16f877 oslator ayari. onu ogrenmek
bide pic16f629. kodu gondermen. mumkunmu
hayirli. islerdilerim. isvecten. selamlar. bahaddin ates
merhaba hayirli isler dilerim. devre calistirdim. motorlar. calisiyor. cny 70 calisiyor
sharp sensörler. 3 adet bagladim. anolog. devre uzerindeki. 3 adet led. var. ortadaki. yaniyor. digerler.
calismiyor. modul aldim. pic 12f629. robot. icin. fjär kontrola. denedim. robotu. calistirmadi. baska robota. calisiyor. sizden. ricam. bu devrenize.pic16f877. hanki. pine baglanacak. modul.. hayirli isler. dilerim. size.
hayirli ramazanlar. dilerim
Bahaddin bey malesef elimde o kod yok. Kumanda ile yapmak zorunda değilsiniz. Kumandanın aktif edildiği yere normal açma kapama butonu koyarak yapın. Yada başka yerden kumanda devresi entegre edin. 2 numaralı entegrenin datasheetini açıp yukardaki devreyi takip ederseniz aktivasyon pinini bulabilirsiniz.
Tavsiyem önce kumandasız robotu çalıştırmanız sonra kumandalı denemeniz olur.
link çalışmıyor linki yenileyebilirmisiniz
Link çalışıyor github.com’a erişiminiz varsa girebilirsiniz.