اطلاعیه

Collapse
No announcement yet.

ساخت گیرنده RFID 125KHz

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    ساخت گیرنده RFID 125KHz

    با سلام .
    در این تاپیک میخوام نحوه ساخت یک ریدر RFID 125KHz رو آموزش بدم.(البته تا اونجایی که خودم بلدم و یاد گرفتم :mrgreen
    شماتیک و سخت افزار رو میتونید از لینک های زیر ببینید.(البته لینک دانلود کاملشو پایین قرار میدم ):
    http://avr-projrcts.epage.ir/images/...projrcts-3.jpg
    http://avr-projrcts.epage.ir/images/...projrcts-2.jpg
    http://avr-projrcts.epage.ir/images/...s-IMAG0571.jpg
    در این مدار از یک ATMega8 و یک LM358 استفاده شده.
    الهم صل علی محمد و آل محمد و عجل فرجهم
    www.adaksell.com

    #2
    پاسخ : ساخت گیرنده RFID 125KHz

    در برنامه اش در ابتدا یک فرکانس 125 کیلو هرتز توسط تایمر 2 روی پایه OC2 ایجاد میکنیم و سپس از طریق پایه ICP1 و تایمر 1 کد منچستری که ایجاد شده رو میخونیم.
    وقتی کد منچستر ایجاد شده رو انکد کنیم به 64 بیت میرسیم که باید مثل شکل زیر پردازش بشن :
    http://avr-projrcts.epage.ir/images/...g%20timing.JPG
    الهم صل علی محمد و آل محمد و عجل فرجهم
    www.adaksell.com

    دیدگاه


      #3
      پاسخ : ساخت گیرنده RFID 125KHz

      حالا برنامه میکرو رو که با codevision نوشته شده رو قرار میدم تا استفاده کنید.
      البته برنامه یه خطاهایی داره که باید کامل بشه ولی تو خوندن کارت و کدگشایی منچستر هیچ ایرادی نداره.

      //************************************************** ************
      #include <mega8.h>
      #include <alcd.h>
      #include <stdio.h>
      #include <delay.h>
      //************************************************** *****
      unsigned int recieve_temp;
      unsigned char rec_id[150];
      unsigned char man_id[65];
      unsigned char tag_id[65];
      char buf[2];
      unsigned int count;
      unsigned char i;
      unsigned int j;
      unsigned char check_bits;
      unsigned char id_hex_val[10];
      unsigned char id_count;
      bit checkbits_flag;
      bit timer1_flag;
      //************************************************** ************
      interrupt [TIM1_CAPT] void timer1_capt_isr(void)
      {
      if(count<150)
      {
      recieve_temp=ICR1L+(ICR1H*256);
      TCNT1H=0x00 >> 8;
      TCNT1L=0x00 & 0xff;
      count++;
      if(recieve_temp>1150 && recieve_temp<1300)rec_id[count]=3;
      if(recieve_temp>850 && recieve_temp<1000)rec_id[count]=2;
      if(recieve_temp>550 && recieve_temp<700)rec_id[count]=1;
      if(count>=150)
      {
      timer1_flag=1;
      }
      }
      }
      //************************************************** ************
      void checking_9bit(void)
      {
      for(i=0;i<=150;i++)
      {
      if(rec_id[i]==1)
      {
      if(rec_id[i+1]==1)
      {
      if(rec_id[i+2]==1)
      {
      if(rec_id[i+3]==1)
      {
      if(rec_id[i+4]==1)
      {
      if(rec_id[i+5]==1)
      {
      if(rec_id[i+6]==1)
      {
      if(rec_id[i+7]==1)
      {
      if(rec_id[i+8]==1)
      {
      checkbits_flag=1;
      check_bits=i;
      }
      }
      }
      }
      }
      }
      }
      }
      }
      if(checkbits_flag==1)break;
      }
      if(checkbits_flag==1)
      {
      for(i=check_bits;i<=check_bits+52;i++)
      {
      man_id[i-check_bits]=rec_id[i];
      }
      }
      checkbits_flag=0;
      }
      //************************************************** ************
      void tabdil(void)
      {
      tag_id[0]=1;
      id_count=1;
      for(i=0;i<=52;i++)
      {
      if(man_id[i]==1)
      {
      tag_id[id_count]=tag_id[id_count-1];
      id_count++;
      }
      if(man_id[i]==2)
      {
      if(tag_id[id_count-1]==1)
      {
      tag_id[id_count]=0;
      id_count++;
      }
      else if(tag_id[id_count-1]==0)
      {
      tag_id[id_count]=0;
      id_count++;
      tag_id[id_count]=1;
      id_count++;
      }
      }
      if(man_id[i]==3)
      {
      if(tag_id[id_count-1]==1)
      {
      tag_id[id_count]=0;
      id_count++;
      tag_id[id_count]=1;
      id_count++;
      }
      else if(tag_id[id_count-1]==0)
      {
      tag_id[id_count]=1;
      id_count++;
      tag_id[id_count]=0;
      id_count++;
      }
      }
      }
      }
      //************************************************** ************
      void mohasebe(void)
      {
      id_hex_val[0]=tag_id[13]+(tag_id[12]*2)+(tag_id[11]*4)+(tag_id[10]*8);
      id_hex_val[1]=tag_id[18]+(tag_id[17]*2)+(tag_id[16]*4)+(tag_id[15]*8);
      id_hex_val[2]=tag_id[23]+(tag_id[22]*2)+(tag_id[21]*4)+(tag_id[20]*8);
      id_hex_val[3]=tag_id[28]+(tag_id[27]*2)+(tag_id[26]*4)+(tag_id[25]*8);
      id_hex_val[4]=tag_id[33]+(tag_id[32]*2)+(tag_id[31]*4)+(tag_id[30]*8);
      id_hex_val[5]=tag_id[38]+(tag_id[37]*2)+(tag_id[36]*4)+(tag_id[35]*8);
      id_hex_val[6]=tag_id[43]+(tag_id[42]*2)+(tag_id[41]*4)+(tag_id[40]*8);
      id_hex_val[7]=tag_id[48]+(tag_id[47]*2)+(tag_id[46]*4)+(tag_id[45]*8);
      id_hex_val[8]=tag_id[53]+(tag_id[52]*2)+(tag_id[51]*4)+(tag_id[50]*8);
      id_hex_val[9]=tag_id[58]+(tag_id[57]*2)+(tag_id[56]*4)+(tag_id[55]*8);
      }
      //************************************************** ************
      void namayesh(void)
      {
      lcd_clear();
      lcd_gotoxy(0,0);
      for(j=0;j<=9;j++)
      {
      sprintf(buf,"%d ",id_hex_val[j]);
      lcd_puts(buf);
      }
      delay_ms(1000);
      count=0;
      timer1_flag=0;
      for(i=0;i<=149;i++)rec_id[i]=0;
      for(i=0;i<=64;i++)
      {
      man_id[i]=0;
      tag_id[i]=0;
      }
      }
      //************************************************** ************
      void main(void)
      {
      {
      DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (1<<DDB3) | (0<<DDB2) | (0<<DDB1) | (0<<DDB0);
      PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (1<<PORTB0);
      DDRC=(0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (0<<DDC0);
      PORTC=(0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0);
      DDRD=(0<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);
      PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);
      TCCR0=(0<<CS02) | (0<<CS01) | (0<<CS00);
      TCNT0=0x00;
      TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10);
      TCCR1B=(1<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (1<<CS11) | (0<<CS10);
      TCNT1H=0x00;
      TCNT1L=0x00;
      ICR1H=0x00;
      ICR1L=0x00;
      OCR1AH=0x00;
      OCR1AL=0x00;
      OCR1BH=0x00;
      OCR1BL=0x00;
      ASSR=0<<AS2;
      TCCR2=(0<<PWM2) | (0<<COM21) | (1<<COM20) | (1<<CTC2) | (0<<CS22) | (0<<CS21) | (1<<CS20);
      TCNT2=0xE3;
      OCR2=0x26;
      TIMSK=(0<<OCIE2) | (0<<TOIE2) | (1<<TICIE1) | (0<<OCIE1A) | (0<<OCIE1B) | (0<<TOIE1) | (0<<TOIE0);
      MCUCR=(0<<ISC11) | (0<<ISC10) | (0<<ISC01) | (0<<ISC00);
      UCSRB=(0<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (0<<RXEN) | (0<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);
      ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0);
      SFIOR=(0<<ACME);
      ADCSRA=(0<<ADEN) | (0<<ADSC) | (0<<ADFR) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (0<<ADPS1) | (0<<ADPS0);
      SPCR=(0<<SPIE) | (0<<SPE) | (0<<DORD) | (0<<MSTR) | (0<<CPOL) | (0<<CPHA) | (0<<SPR1) | (0<<SPR0);
      TWCR=(0<<TWEA) | (0<<TWSTA) | (0<<TWSTO) | (0<<TWEN) | (0<<TWIE);
      lcd_init(16);
      #asm("sei&quot
      }
      while (1)
      {
      if(timer1_flag==1)
      {
      checking_9bit();
      tabdil();
      mohasebe();
      namayesh();
      }
      }
      }
      الهم صل علی محمد و آل محمد و عجل فرجهم
      www.adaksell.com

      دیدگاه


        #4
        پاسخ : ساخت گیرنده RFID 125KHz

        تو برنامه بالا ترتیب پایه های استفاده شده رو هم قرار میدم. اگه کسی تونست برنامه رو کامل تر کنه بذاره تا بقیه هم استفاده کنن.
        PORTD0----RS
        PORTD1---RW
        PORTB2---E
        PORTD4---D4
        PORTD5---D5
        PORTD6---D6
        PORTD7---D7
        PORTB0---INPUT
        PORTB3---OUTPUT
        اگه کسی سوالی داشت در خدمتم.
        الهم صل علی محمد و آل محمد و عجل فرجهم
        www.adaksell.com

        دیدگاه


          #5
          پاسخ : ساخت گیرنده RFID 125KHz

          ;
          ;
          ;
          الهم صل علی محمد و آل محمد و عجل فرجهم
          www.adaksell.com

          دیدگاه


            #6
            پاسخ : ساخت گیرنده RFID 125KHz

            ممنون :applause:. من سخت افزار این مدار با attiny13 دارم . باید برنامه تغییر بدم و تست کنم

            دیدگاه


              #7
              پاسخ : ساخت گیرنده RFID 125KHz

              مقادیر قطعات به ترتیب زیر می باشد :
              R1=15
              R2=100
              R3=22K
              R4=220K
              R5=100
              R6=15
              R7=220K
              R8=120K
              R9=220K
              R10=1.5K
              R11=100
              تمامی خازنها بجز C4 و C8 و C9 دارای مقدار 100nF هستند
              خازن C4=4.7nF می باشد
              خازنهای C8=C9=22pF می باشند.
              دیودها همگی 1N4148
              زنر 5.1V
              Q1=2N2222
              Q2=BC327
              U1=ATMEGA8A
              U2=LM358P
              مشخصات آنتن هنوز اندازه گیری نشده که در اولین فرصت مقدارسلفی و طول و مقاومتش اندازه گیری میشه و به اطلاعتون میرسه . انشأالله...
              الهم صل علی محمد و آل محمد و عجل فرجهم
              www.adaksell.com

              دیدگاه


                #8
                پاسخ : ساخت گیرنده RFID 125KHz

                مشخصات آنتن :
                طول سیم : 289 سانتی متر
                ضخامت سیم : 0.2 میلی متر
                L=322uH
                R=5 OHM
                آنتن از 17 دور سیم پیچ به عرض 2.5 در طول 6 سانتی متر تشکیل شده.
                ;
                الهم صل علی محمد و آل محمد و عجل فرجهم
                www.adaksell.com

                دیدگاه


                  #9
                  پاسخ : ساخت گیرنده RFID 125KHz

                  پروژه کامل رو پلود کردم . اینم لینکش :
                  http://s7.picofile.com/file/82375463...OJECT.rar.html
                  الهم صل علی محمد و آل محمد و عجل فرجهم
                  www.adaksell.com

                  دیدگاه


                    #10
                    پاسخ : ساخت گیرنده RFID 125KHz

                    کدوم قسمت برنامه را باید تغییر داد تا تگی که داریم رو سریالشو نشون بده و پس از اون رله رو وصل کنه(در صورت تعریف شدن که این تگ رو بشناسه) اما با تگ دیگه ای رله باز نشه؟ الان همون 10 رقم سریال رو صفر نشون میده
                    Every one can do everything so why you do this awful thing.

                    دیدگاه


                      #11
                      پاسخ : ساخت گیرنده RFID 125KHz

                      این سخت افزار کاملا تست شده و با اطمینان درست کار میکنه و بارها توسط خودم و همکارام تست شده . برنامه رو درست کامپایل کنید و داخل میکرو بریزید . با سخت افزاری که قرار داده شده (پایه ها مهم هستند چون از قابلیت های اختصاصی اون پایه ها استفاده شده)شماره سریال کارت نشون داده میشه . شما آنتن و کارتتونو چک کنید . حتما ایرادی وجود داره . در ضمن باید برنامه تونو جوری تغییر بدبد که با یک بار خوندن کارت شماره های اون داخل حافظه eeprom ذخیره بشه و هر دفعه با اون مقایسه بشه .
                      ولی در کل از بابت برنامه و سخت افزار اطمینان داشته باشید .
                      الهم صل علی محمد و آل محمد و عجل فرجهم
                      www.adaksell.com

                      دیدگاه


                        #12
                        پاسخ : ساخت گیرنده RFID 125KHz

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

                        دیدگاه


                          #13
                          پاسخ : ساخت گیرنده RFID 125KHz

                          نوشته اصلی توسط mohammadpwm
                          سلام
                          مقدار کریستال چقدره؟
                          10 مگاهرتزه؟
                          بله 10 مگا هرتزه.
                          البته اگر فرکانس کریستالو تغییر بدید باید برای تایمر ها مقادیر جدیدی تعریف کنید و محاسباتش تغییر میکنه .
                          الهم صل علی محمد و آل محمد و عجل فرجهم
                          www.adaksell.com

                          دیدگاه


                            #14
                            پاسخ : ساخت گیرنده RFID 125KHz

                            نوشته اصلی توسط مجتبی رضازاده
                            مشخصات آنتن :
                            طول سیم : 103 سانتی متر
                            ضخامت سیم : 0.2 میلی متر
                            L=322uH
                            R=5 OHM
                            آنتن از 17 دور سیم پیچ به عرض 2.5 در طول 6 سانتی متر تشکیل شده.
                            ;
                            این مشخصات سیم مطمئنی درسته؟
                            سیم 0.2 میلی متر درسته؟
                            و طول سیم 103 سانتی متر درسته؟
                            گاه سکوت معجزه می کند و همیشه بودن در فریاد نیست.

                            دیدگاه


                              #15
                              پاسخ : ساخت گیرنده RFID 125KHz

                              حق با شماست طول سیم رو اشتباه نوشته بودم که اصلاحش کردم. 289 سانتی متر درسته. بقیه مشخصات درست بوده.
                              الهم صل علی محمد و آل محمد و عجل فرجهم
                              www.adaksell.com

                              دیدگاه

                              لطفا صبر کنید...
                              X