اطلاعیه

Collapse
No announcement yet.

طراحی متر الکترونیکی با AVR (فارسی) Digital Meter

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

    #16
    پاسخ : طراحی متر الکترونیکی با AVR (فارسی) Digital Meter

    7.4 است .

    مکانیزم خاصی نداره . شما یک چرخ ( هر نوع با قطر دلخواه ، حتی فولی بزرگ کولر آبی هم میشه ) را در نظر بگیر و محور مرکزی آنرا تر جیحا با یک کوپلینگ ( که میتونه یک تگه شیلنگ آب باشه ) به شافت اینکودر بده .

    موفق باشید

    دیدگاه


      #17
      پاسخ : طراحی متر الکترونیکی با AVR (فارسی) Digital Meter

      از همه دوستان تشکر میکنم اما من مشکلمو حل کردم دیگه مشکلی نیست فعلا ممنون از همکاری همه دوستان من بدون هیچ قطعه جانبی و فقط با 15 ترانزیستور معمولی مشکل رو حل کردم با CODEVISION هم برنامه رو نوشتم میذارمش شاید به درد کسی بخوره
      /************************************************** ***
      This program was produced by the
      CodeWizardAVR V1.25.9 Standard
      Automatic Program Generator
      © Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
      http://www.hpinfotech.com

      Project :
      Version :
      Date : 2009/03/03
      Author : F4CG
      Company : F4CG
      Comments:


      Chip type : ATmega8
      Program type : Application
      Clock frequency : 8.000000 MHz
      Memory model : Small
      External SRAM size : 0
      Data Stack size : 256
      ************************************************** ***/

      #include <mega8.h>
      #include <delay.h>

      int int_Number=0;

      void segment_putsf(int int_Number)
      {
      if (int_Number==0)
      PORTD=0X3F;
      else
      if (int_Number==1)
      PORTD=0X06;
      else
      if (int_Number==2)
      PORTD=0X5b;
      else
      if (int_Number==3)
      PORTD=0X4f;
      else
      if (int_Number==4)
      PORTD=0X66;
      else
      if (int_Number==5)
      PORTD=0X6d;
      else
      if (int_Number==6)
      PORTD=0X7d;
      else
      if (int_Number==7)
      PORTD=0X07;
      else
      if (int_Number==8)
      PORTD=0X7F;
      else
      if (int_Number==9)
      PORTD=0X6f;
      }

      void segment_puts(int int_Number)
      {
      int UInt_number=0;
      int uch_digit=0;
      unsigned char uch_TimeCounter=0;
      if (int_Number<10)
      {
      // while (uch_TimeCounter<=6)
      // {
      segment_putsf(int_Number);
      PORTB.3=0;
      delay_ms(10);
      PORTB.3=1;
      segment_putsf(0);
      PORTB.2=0;
      delay_ms(10);
      PORTB.2=1;
      segment_putsf(0);
      PORTB.1=0;
      delay_ms(10);
      PORTB.1=1;
      segment_putsf(0);
      PORTB.0=0;
      delay_ms(10);
      PORTB.0=1;
      // uch_TimeCounter++; // delay 1second
      // }
      }
      else
      if (int_Number>9 && int_Number<100)
      {
      // while (uch_TimeCounter<=6)
      // {
      uch_digit=int_Number%10;
      segment_putsf(uch_digit);
      PORTB.3=0;
      delay_ms(10);
      PORTB.3=1;
      UInt_number=int_Number/10;
      uch_digit=UInt_number%10;
      segment_putsf(uch_digit);
      PORTB.2=0;
      delay_ms(10);
      PORTB.2=1;
      segment_putsf(0);
      PORTB.1=0;
      delay_ms(10);
      PORTB.1=1;
      segment_putsf(0);
      PORTB.0=0;
      delay_ms(10);
      PORTB.0=1;
      // uch_TimeCounter++; // delay 1second
      // }
      }
      else
      if (int_Number>99 && int_Number<1000)
      {
      while (uch_TimeCounter<=6)
      // {
      uch_digit=int_Number%10;
      segment_putsf(uch_digit);
      PORTB.3=0;
      delay_ms(10);
      PORTB.3=1;
      UInt_number=int_Number/10;
      uch_digit=UInt_number%10;
      PORTB.2=0;
      segment_putsf(uch_digit);
      delay_ms(10);
      PORTB.2=1;
      UInt_number=UInt_number/10;
      uch_digit=UInt_number%10;
      PORTB.1=0;
      segment_putsf(uch_digit);
      delay_ms(10);
      PORTB.1=1;
      segment_putsf(0);
      PORTB.0=0;
      delay_ms(10);
      PORTB.0=1;
      // uch_TimeCounter++; // delay 1second
      // }
      }
      else
      if (int_Number>999 && int_Number<10000)
      {
      // while (uch_TimeCounter<=6)
      // {
      uch_digit=int_Number%10;
      segment_putsf(uch_digit);
      PORTB.3=0;
      delay_ms(10);
      PORTB.3=1;
      UInt_number=int_Number/10;
      uch_digit=UInt_number%10;
      segment_putsf(uch_digit);
      PORTB.2=0;
      delay_ms(10);
      PORTB.2=1;
      UInt_number=UInt_number/10;
      uch_digit=UInt_number%10;
      segment_putsf(uch_digit);
      PORTB.1=0;
      delay_ms(10);
      PORTB.1=1;
      UInt_number=UInt_number/10;
      uch_digit=UInt_number%10;
      segment_putsf(uch_digit);
      PORTB.0=0;
      delay_ms(10);
      PORTB.0=1;

      // uch_TimeCounter++; // delay 1second
      // }
      }
      }

      // Declare your global variables here
      void main(void)
      {
      // Declare your local variables here
      unsigned charuch_pin_status=0;
      // Input/Output Ports initialization
      // Port B 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
      PORTB=0xFF;
      DDRB=0xFF;

      // Port C initialization
      // Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
      // State6=T State5=T State4=T State3=T State2=P State1=P State0=P
      PORTC=0x07;
      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
      TCCR0=0x00;
      TCNT0=0x00;

      // Timer/Counter 1 initialization
      // Clock source: System Clock
      // Clock value: Timer 1 Stopped
      // Mode: Normal top=FFFFh
      // OC1A output: Discon.
      // OC1B output: Discon.
      // Noise Canceler: Off
      // Input Capture on Falling Edge
      // Timer 1 Overflow Interrupt: Off
      // Input Capture Interrupt: Off
      // Compare A Match Interrupt: Off
      // Compare B Match Interrupt: Off
      TCCR1A=0x00;
      TCCR1B=0x00;
      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: Timer 2 Stopped
      // Mode: Normal top=FFh
      // OC2 output: Disconnected
      ASSR=0x00;
      TCCR2=0x00;
      TCNT2=0x00;
      OCR2=0x00;

      // External Interrupt(s) initialization
      // INT0: Off
      // INT1: Off
      MCUCR=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;

      while (1)
      {
      // Place your code here
      if (charuch_pin_status==1)
      {
      if (PINC.0==0)
      {
      charuch_pin_status=0;
      segment_puts(int_Number);
      int_Number++;
      }
      }
      if (PINC.0==1)
      {
      charuch_pin_status=1;
      }
      if (PINC.1==0) // RESET
      int_Number=0;

      segment_puts(int_Number);

      };
      }
      سه کس را شنیدم که غیبت رواست وز این درگذشتی چهارم خطاست
      یکی پادشاهی ملامت پسند کز او بر دل خلق بینی گزند
      حلال است از او نقل کردن خبر مگر خلق باشند از او بر حذر
      دوم پرده بر بی حیائی متن که خود میآ‌درد پرده بر خویشتن
      ز حوضش مدار ای برادر نگاه که او میآ‌درافتد به گردن به چاه
      سوم کژ ترازوی ناراست خوی ز فعل بدش هرچه دانی بگوی

      دیدگاه


        #18
        پاسخ : طراحی متر الکترونیکی با AVR (فارسی) Digital Meter

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

        دیدگاه


          #19
          پاسخ : طراحی متر الکترونیکی با AVR (فارسی) Digital Meter

          نوشته اصلی توسط cde
          سلام من هر جا رفتم برای شفت اینکدر گیرم نیامد حتی اسمش هم به گوششون نخورده بود خواهش می کنم اسم .ادرس دقیق واسم مغازه رابهم بدین
          http://www.tabrizpeguh.com/sTabrizPeguh/default.aspx?page=Document&app=Documents&d ocId=22&docParId=13

          موفق باشید

          دیدگاه


            #20
            پاسخ : طراحی متر الکترونیکی با AVR (فارسی) Digital Meter

            شرکت تبریز پژوه

            دفتر مرکزی:

            تبریز- ابتدای دروازه تهران- روبروی آتش نشانی- اول خیابان کریم خان زند- ساختمان شماره 36

            کد پستی: 5167686111

            صندوق پستی: 5341-51575

            پست الکترونیک: info@tabrizpeguh.com

            تلفن:(10 خط) 3330490-0411

            نمابر: 3318200-

            این هم کاتولوگ شافت اینکودر
            فایل های پیوست شده

            دیدگاه


              #21
              پاسخ : طراحی متر الکترونیکی با AVR (فارسی) Digital Meter

              با سلام از اینکه دوباره مزاحم شدم ببخشید .می خواستم ببینم ایا از شفت انکدر 500پالس هم میتونم استفاره کنم در صورت استفاده نیاز به دستکاری برنامه دارد با نه ویک سوال دیگه ونوع خروجی شفت مثلا باینری و...را مشخص کنید

              دیدگاه


                #22
                پاسخ : طراحی متر الکترونیکی با AVR (فارسی) Digital Meter

                نوشته اصلی توسط cde
                با سلام از اینکه دوباره مزاحم شدم ببخشید .می خواستم ببینم ایا از شفت انکدر 500پالس هم میتونم استفاره کنم در صورت استفاده نیاز به دستکاری برنامه دارد با نه ویک سوال دیگه ونوع خروجی شفت مثلا باینری و...را مشخص کنید
                1- خیر فقط 5 ولت باشه. شما شافت اینکودر 500 پالس دیدید ؟ کجا میفروشند ؟

                2- فایل ضمیمه 2 پست قبل را داونلود کنید . نوع خروجی مشخص شده

                دیدگاه


                  #23
                  پاسخ : طراحی متر الکترونیکی با AVR (فارسی) Digital Meter

                  سلام اقا مجید از اینکه مزاحم شدم ببخشید
                  من مدار متر دجیتال را بستم ولی به یک مشکل بر خوردم قسمت پایین سون سگمنت زوشن نمی شود از نظر درست بودن پایه های سون سگمنت هم مطمن هستم که درست است وسون سگمنت هم سالم است از نظر پروگرام برنامه هم مشکل نداردچون برنامه runمی شود
                  در تایپیک یکی از دوستان نوشته بود که مشکل را با 15 ترانزیستور حل کردم اگر حل کرده نقشه مدار را ضمیمه بکنه.

                  دیدگاه


                    #24
                    پاسخ : طراحی متر الکترونیکی با AVR (فارسی) Digital Meter

                    با سلام خدمت اقا مجید

                    من مدار را بستم ولی قسمت پایین 7سگمنت زوشن نمی شود(c,d,e,f)پایه های 7سگمنت هم چک کردم درست بود
                    باتشکر

                    دیدگاه


                      #25
                      پاسخ : طراحی متر الکترونیکی با AVR (فارسی) Digital Meter

                      نوشته اصلی توسط cde
                      با سلام خدمت اقا مجید

                      من مدار را بستم ولی قسمت پایین 7سگمنت زوشن نمی شود(c,d,e,f)پایه های 7سگمنت هم چک کردم درست بود
                      باتشکر
                      احتمالا Jtag را Disable نکردید

                      نتیجه را اعلام بفرمایید

                      دیدگاه


                        #26
                        پاسخ : طراحی متر الکترونیکی با AVR (فارسی) Digital Meter

                        سلام

                        ایده ایی که در مورد کالیبراسیون دستگاه بکار برده شده جالبه ولی من متوجه نمیشم . میشه کمی توضیح بدید . میشه کالیبراسیون در 10 متر انجام بشه
                        مهم نيست كه چه انديشه اي در سر و چه ترسي در دل داريد؛ مهم آن است كه بيكار ننشينيد و دست به كاري بزنيد و وارد ميدان عمل بشويد.

                        نمي توانيد به كودكي بياموزيد كه از خود مواظبت كند، مگر آنكه او را آزاد بگذاريد تا براي مواظبت از خود بكوشد؛ ممكن است اشتباه كند، ولي دانايي او از ميان همين اشتباهات سرچشمه مي گيرد.

                        دیدگاه


                          #27
                          پاسخ : طراحی متر الکترونیکی با AVR (فارسی) Digital Meter

                          دوست عزیز

                          موقع کالیبریشن ،آ‌دستگاه بصورت کانتر کار می کند و در مسافت مشخص( که 100 متر تعیین شده) تعداد پالسها را می شمرد.

                          به زبان کاملا ساده یعنی اینکه مثلا 34545 پالس معادل 100 متر است . از تقسیم این دو بر هم مقادیر یک متر و یا حتی یک سانتی متر هم بدست می آید .

                          این مدل کالیبریشن باعث می شه که کالیبریشن مستقل از قطر چرخ عمل کنه.

                          بله در 10 متر هم میشه . فقط باید تغییراتی در برنامه اصلی بدهید.

                          موفق باشید

                          دیدگاه


                            #28
                            پاسخ : طراحی متر الکترونیکی با AVR (فارسی) Digital Meter

                            اگه اندازه قطرتون در حد معقولی کوچیک باشه اونوقت در مقابل یک دور کامل چون فاصله کمتری طی میشه میشه دقیق تر اندازه گیری کرد
                            مثلا اگه اینکدر خروجی اش 500 پالس باشه و مثلا یه دور کامل چرخ 10 سانتی متر جلوبره......... ولی اگه 100 سانتی متر بره جلو.........بقیه که معلومه
                            اینطوری مقدار خطا هم کمتر بشه

                            دیدگاه


                              #29
                              پاسخ : طراحی متر الکترونیکی با AVR (فارسی) Digital Meter

                              ممنون که جواب دادید
                              پس با این توضیحاتی که دادید لزومی نداره در 100 یا 10 متر کالیبراسیون انجام بشه ! در 1 متر هم میشه اینو انجام داد اینطور نیست ؟

                              مثلا در 1 متر 340 پالس میده در 10 متر 3400 خواهد داد .

                              درسته ؟ یا من اشتباه میکنم ؟؟؟!
                              مهم نيست كه چه انديشه اي در سر و چه ترسي در دل داريد؛ مهم آن است كه بيكار ننشينيد و دست به كاري بزنيد و وارد ميدان عمل بشويد.

                              نمي توانيد به كودكي بياموزيد كه از خود مواظبت كند، مگر آنكه او را آزاد بگذاريد تا براي مواظبت از خود بكوشد؛ ممكن است اشتباه كند، ولي دانايي او از ميان همين اشتباهات سرچشمه مي گيرد.

                              دیدگاه


                                #30
                                پاسخ : طراحی متر الکترونیکی با AVR (فارسی) Digital Meter

                                نوشته اصلی توسط segmex
                                ممنون که جواب دادید
                                پس با این توضیحاتی که دادید لزومی نداره در 100 یا 10 متر کالیبراسیون انجام بشه ! در 1 متر هم میشه اینو انجام داد اینطور نیست ؟

                                مثلا در 1 متر 340 پالس میده در 10 متر 3400 خواهد داد .

                                درسته ؟ یا من اشتباه میکنم ؟؟؟!
                                بله میتونه بشه ولی یک جزئی دقت پایین میاد . ( قابل گذشت است !!!آ‌)

                                چون ممکنه تو یک متر 340 پالس بده ولی تو 10 متر 3408 پالس بده.

                                دیدگاه

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