انجمن های تخصصی الکترونیک و رباتیک تکنوالکترو
PCB ربات مسیر یاب - نسخه‌ی قابل چاپ

+- انجمن های تخصصی الکترونیک و رباتیک تکنوالکترو (http://forum.techno-electro.com)
+-- انجمن: روباتیک (http://forum.techno-electro.com/Forum-%D8%B1%D9%88%D8%A8%D8%A7%D8%AA%DB%8C%DA%A9)
+--- انجمن: دسته بندی ربات ها (http://forum.techno-electro.com/Forum-%D8%AF%D8%B3%D8%AA%D9%87-%D8%A8%D9%86%D8%AF%DB%8C-%D8%B1%D8%A8%D8%A7%D8%AA-%D9%87%D8%A7)
+---- انجمن: مسیریاب (http://forum.techno-electro.com/Forum-%D9%85%D8%B3%DB%8C%D8%B1%DB%8C%D8%A7%D8%A8)
+---- موضوع: PCB ربات مسیر یاب (/Thread-PCB-%D8%B1%D8%A8%D8%A7%D8%AA-%D9%85%D8%B3%DB%8C%D8%B1-%DB%8C%D8%A7%D8%A8)

صفحه‌ها: 1 2 3 4 5 6 7 8 9 10 11 12 13 14


RE: PCB ربات مسیر یاب - Arash90 - 6-5-1390

اون دوتا سنسور که جلو قرار دارن اگه با هم از خط خارج بشن اونوقت میشه فهمید پیچ 90 درجه بوده.


RE: PCB ربات مسیر یاب - Soheil - 8-5-1390

ما منتظر برنامه ایم!!


RE: PCB ربات مسیر یاب - امیرحسین - 9-5-1390

این هم برنامه کامل من (در حدی گذاشتم که ربات از خط خارج نمیشه ) هر کسی دوست داشت کاملش رو خودش بنویسه
کد php:
#include <mega16.h>
// SPI functions
#include <spi.h>
#include <delay.h>
// OCR1B  en1 rast
// OCR1A  en2 chap
// Declare your global variables here
unsigned char in,var,rast,chap,vasat_1,vasat_2;   


void forward()
{
 
PORTD.0=0;
 
PORTD.1=1;
 
PORTD.2=0;
 
PORTD.3=1;
}
void left_l()
{
 
PORTD.0=0;
 
PORTD.1=1;
 
PORTD.2=1;
 
PORTD.3=1;
 }
void left_h()
{
 
PORTD.0=0;
 
PORTD.1=1;
 
PORTD.2=1;
 
PORTD.3=0;
}
void right_l()
{
  
PORTD.0=1;
  
PORTD.1=1;
  
PORTD.2=0;
  
PORTD.3=1;
}
void right_h()
{
 
PORTD.0=1;
 
PORTD.1=0;
 
PORTD.2=0;
 
PORTD.3=1;
}
void last_act()
{
chap= var&0b00110000;
rast= var&0b11000000;
vasat_1=var&0b01110000;
vasat_2=var&0b11100000;
  if(
vasat_1==0b01110000
 {
   
OCR1A=50;
   
OCR1B=50;
    
left_h();
 }
  if(
vasat_2==0b11100000
 {
   
OCR1A=50;
   
OCR1B=50;
    
right_h();
 }
 if(
vasat_1!=0b01110000 && vasat_2!=0b11100000 ){
 if(
chap!=0b00000000)
 {
OCR1A=50;
OCR1B=50;
left_h();
 }
 if(
rast!=0b00000000
 {
   
OCR1A=50;
   
OCR1B=50;
right_h();
 }


 }

void main(void)
{


// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
PORTA=0x00;
DDRA=0x00;


// Port B initialization
// Func7=In Func6=Out Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
// State7=T State6=0 State5=T State4=T State3=T State2=T State1=T State0=T 
PORTB=0x00;
DDRB=0x40;


// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
PORTC=0x00;
DDRC=0x00;


// Port D initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out 
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 
PORTD=0x00;
DDRD=0xFF;


// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;


// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 125.000 kHz
// Mode: Ph. correct PWM top=00FFh
// OC1A output: Non-Inv.
// OC1B output: Non-Inv.
// Noise Canceler: On
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0xA1;
TCCR1B=0x83;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;


// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;


// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;


// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;


// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;


// SPI initialization
// SPI Type: Slave
// SPI Clock Rate: 500.000 kHz
// SPI Clock Phase: Cycle Start
// SPI Clock Polarity: Low
// SPI Data Order: MSB First
SPCR=0x45;
SPSR=0x00;
OCR1B=25;
OCR1A=25;
forward();
while (
1)
{
// Place your code here
in=PINA;


 switch(
in)
{
 
case 
0b00000000:    
last_act();
break;


//ghesmate marboot be mostaghim
case 0b11111011:
OCR1B=40;
OCR1A=40;
forward();
var=
in;
break;


case 
0b00001111:
OCR1B=40;
OCR1A=40;
forward();
var=
in;
break;


case 
0b01101111:
OCR1B=40;
OCR1A=40;
forward();
var=
in;
break;


case 
0b10011111
OCR1B=40;
OCR1A=40;
forward();
var=
in;
break;   
      
case 
0b00000111:
OCR1B=40;
OCR1A=40;
forward();
var=
in;
break;


case 
0b00001011:
OCR1B=30;
OCR1A=30;
forward();
var=
in;
break;


case 
0b01101011:
OCR1B=40;
OCR1A=40;
forward();
var=
in;
break;


case 
0b10011011:
OCR1B=40;
OCR1A=40;
forward();
var=
in;
break;


case 
0b11111111:
OCR1B=15;
OCR1A=15;
forward();
var=
in;
break;


case 
0b00001100:
OCR1B=25;
OCR1A=25;
forward();
var=
in;
break;


case 
0b01101100:
OCR1B=30;
OCR1A=30;
forward();
var=
in;
break;


case 
0b10011100:
OCR1B=30;
OCR1A=30;
forward();
var=
in;
break;


case 
0b11000111:
OCR1B=25;
OCR1A=25;
forward();
var=
in;
break;


case 
0b00110111:
OCR1B=25;
OCR1A=25;
forward();
var=
in;
break;


 
// ghesmate marboot be rast
 
case 0b00001101:    // piche 5 daraje
OCR1B=40;        // en1 rast
OCR1A=25;        // en2 chap
forward();
var=
in;
break;


case 
0b10000000:  //saghi
OCR1A=30;
OCR1B=8;
right_h();
var=
in;
break;


case 
0b01000000:  
OCR1A=40;
OCR1B=20;
forward();
var=
in;
break;


case 
0b01001000:    // piche 30 daraje
OCR1B=22;
OCR1A=50;
right_l();
var=
in;
break;


case 
0b10001000:    // piche 60  daraje
OCR1B=10;
OCR1A=50;
right_h();
var=
in;
break;


case 
0b11000101:    // gusheye daayere
OCR1B=35;
OCR1A=25;
forward();
var=
in;
break;


case 
0b11001000:    // piche 90 daraje
OCR1B=40;
OCR1A=40;
right_h();
var=
in;
break;


case 
0b10001100:    
OCR1B=40;
OCR1A=45;
right_h();
var=
in;
break;


case 
0b01001100:    // piche 150 daraje
OCR1B=40;
OCR1A=45;
right_h();
var=
in;
break;


case 
0b11000000:    // piche 90 daraje 2
OCR1B=35;
OCR1A=35;
right_h();
var=
in;
break;




// ghesmate marboot be chap


case 0b00001110:    // piche 5 daraje
OCR1B=28;
OCR1A=40
forward();
var=
in;
break;


case 
0b00010000:
OCR1A=10;
OCR1B=50;
forward();
var=
in;
break;


case 
0b00101000:    // piche 30 daraje
OCR1B=50;
OCR1A=10;
forward();
var=
in;
 break;


case 
0b00011000:    // piche 60  daraje
OCR1B=40;
OCR1A=25;
left_l();
var=
in;                     
break;


case 
0b00110110:    // gusheye daayere
OCR1B=28;
OCR1A=45;
forward();
var=
in;
break;


case 
0b00111000:    // piche 90 daraje
OCR1B=50;
OCR1A=40;
left_h();
var=
in;
break;


case 
0b00011100:    // piche 120 daraje
OCR1B=30;
OCR1A=30;
left_h();
var=
in;
break;


case 
0b00101100:    // piche 150 daraje
OCR1B=40;
OCR1A=40;
left_h();
var=
in;
break;


case 
0b00110000:    // 90 daraje 2
OCR1B=25;
OCR1A=45;
left_h();
var=
in;
break;


case 
0b00111100:    // piche 150 daraje
OCR1B=45;
OCR1A=30;
left_h();
var=
in;
break;


case 
0b00000001:  
OCR1B=45;
OCR1A=22;
forward();
var=
in;
break;


case 
0b00000010:  
OCR1B=22;
OCR1A=45;
forward();
var=
in;
break;


case 
0b00000011:   
OCR1B=40;
OCR1A=40;
forward();
var=
in;
break;


case 
0b01000111:   
OCR1B=40;
OCR1A=40;
forward();
var=
in;
break;


case 
0b00100111:    
OCR1B=40;
OCR1A=40;
forward();
var=
in;   
break;


case 
0b10000111:  
 
OCR1B=40;
OCR1A=40;
forward();
var=
in;
break;


case 
0b00010111:     
 
OCR1B=40;
OCR1A=40;
forward();
var=
in;
break;


case 
0b00000100:   
OCR1B=25;
OCR1A=25;
forward();
var=
in;
break;


case 
0b00001000:    
last_act();


break;


case 
0b00000110:     
OCR1B=28;
OCR1A=40;
forward();
var=
in;
break;


case 
0b00000101:    
OCR1B=45;
OCR1A=28;
forward();
var=
in;
break;


case 
0b00100000:   
OCR1B=45;
OCR1A=25;
forward();
var=
in;
break;


case 
0b01110000:   
OCR1B=35;
OCR1A=35;
left_h();
var=
in;
break;


case 
0b11100000:    
OCR1B=35;
OCR1A=35;
right_h();
var=
in;
break;


 }
 }
 } 
این هم عکس آرایش سنسور ها برای تحلیل برنامه نیاز دارید . پیشنهاد می کنم دوستان دیگر هم برنامه هاشون و تصاویر آرایش سنسور هاشون را با شماره گذاری قرار بدهند.



RE: PCB ربات مسیر یاب - Arash90 - 9-5-1390

راجع به اینکه گفتید اگه ربات کامل از خط خارج شد باید با دستور and حال قبلی سنسور ها رو بررسی کرد باید بگم که فکر نکنم توی بسکام چنین حالتی وجود داشته باشه چون بعد از هر بار خونده شدن سنسورها،اطلاعات قبلی متغیر پاک میشه و اطلاعات جدید خونده شده از ADC داخل متغیر ریخته میشه.به نظر من اگر ربات در حین مسابقه کامل از خط خارج شد میشه دستور حرکت به عقب رو به ربات داد تا ربات به عقب برگرده.مطمئنا خط رو دوباره پیدا میکنه! نظر شما چیه؟


RE: PCB ربات مسیر یاب - Soheil - 9-5-1390

میشه به جای پورت A به پورت C وصل کرد سنسور هارو؟
من برنامه ای که شما داده بودیرو در کدویژن کپی کردم و وقتی در پروتئوس شبیه سازیش میکنم موتور ها نمیچرخن!!
مشکل از کجاست؟


RE: PCB ربات مسیر یاب - امیرحسین - 9-5-1390

نقل قول: راجع به اینکه گفتید اگه ربات کامل از خط خارج شد باید با دستور and حال قبلی سنسور ها رو بررسی کرد باید بگم که فکر نکنم توی بسکام چنین حالتی وجود داشته باشه چون بعد از هر بار خونده شدن سنسورها،اطلاعات قبلی متغیر پاک میشه و اطلاعات جدید خونده شده از ADC داخل متغیر ریخته میشه.به نظر من اگر ربات در حین مسابقه کامل از خط خارج شد میشه دستور حرکت به عقب رو به ربات داد تا ربات به عقب برگرده.مطمئنا خط رو دوباره پیدا میکنه! نظر شما چیه؟

من هر بار آخرین شرط را در یک متغیر ذخیره می کنم که یک کپی از اون داشته باشم و پاک نشه :
اگر توجه کنید var=in;
نقل قول: میشه به جای پورت A به پورت C وصل کرد سنسور هارو؟
من برنامه ای که شما داده بودیرو در کدویژن کپی کردم و وقتی در پروتئوس شبیه سازیش میکنم موتور ها نمیچرخن!!

مشکل از کجاست؟
بله مشکلی نیست ففط برنامه کمی تغییر می کند
شاید سخت افزار شما با من متفاوت است . اگر وقت شد پروتیوس ربات خودم رو براتون آپلود می کنم


RE: PCB ربات مسیر یاب - Arash90 - 9-5-1390

حق با شماست.من هم متغیر رو کپی میکنم تا بتونم وضعیت قبلی رو چک کنم.
حالا سعی میکنم برنامه ی کامل شده رو به زبان بسکام بنویسم.


RE: PCB ربات مسیر یاب - Soheil - 12-5-1390

(9-5-1390، 12:28 عصر)امیرحسین نوشته است: شاید سخت افزار شما با من متفاوت است . اگر وقت شد پروتیوس ربات خودم رو براتون آپلود می کنم

امیرحسین جان ما منتظریم!!Heart


RE: PCB ربات مسیر یاب - امیرحسین - 13-5-1390

این هم برای آقا سهیل عزیز ...
چیدمان سنسور ها هم براتون در نظر گرفتم که راحت برنامه رو متوجه بشوید.
موفق باشید


RE: PCB ربات مسیر یاب - Soheil - 13-5-1390

ممنون امیرحسین جان!
اگر بخوایم از LM324 استفاده کنیم چه تغییراتی باید بدیم؟؟