اطلاعیه

Collapse
No announcement yet.

ADC در روبات میکرو موس

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

    ADC در روبات میکرو موس

    سلام دوستان
    من ADC رو در روبات میکرو موسم راه انداختم اما مشکلی که هس تنها مقادیری که روی LCD من دارم 255(در صورتی که ADC0 به 5 ولت متصل بشه) ، 143(به جایی متصل نباشه) و 0( اگه به زمین وصل بشه). اگه خروجی سنسورم رو به ADC0 بدم هیچ تغییر نیمیکنه و همیشه 143 هست ...

    اینم کد هام :
    کد:
    #include <mega32.h>
    #include <delay.h>
    
    // Alphanumeric LCD functions
    #include <alcd.h>      
    #include <stdlib.h>
    
    #define ADC_VREF_TYPE 0x40
    
    // Read the AD conversion result
    unsigned int read_adc(unsigned char adc_input)
    {
    ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
    // Delay needed for the stabilization of the ADC input voltage
    delay_us(10);
    // Start the AD conversion
    ADCSRA|=0x40;
    // Wait for the AD conversion to complete
    while ((ADCSRA & 0x10)==0);
    ADCSRA|=0x10;
    return ADCW;
    }
    
    // Declare your global variables here
    
    void main(void)
    {
    char temp[100];
    unsigned int t;
    // Declare your local variables here
    
    // Input/Output Ports initialization
    // Port A 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 
    PORTA=0x00;
    DDRA=0x00;
    
    // Port B 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 
    PORTB=0x00;
    DDRB=0x00;
    
    // Analog Comparator initialization
    // Analog Comparator: Off
    // Analog Comparator Input Capture by Timer/Counter 1: Off
    ACSR=0x80;
    SFIOR=0x00;
    
    // ADC initialization
    // ADC Clock frequency: 500.000 kHz
    // ADC Voltage Reference: AREF pin
    ADMUX=ADC_VREF_TYPE & 0xff;
    ADCSRA=0x87; //0x81
    
    
    lcd_init(16);
    
    while (1)
       {    
          t = read_adc(0)>>2;
          itoa(t,temp);
          lcd_puts(temp);
          delay_ms(50);
          lcd_clear();
          if(t>140 && t<255)
          {
            PORTD=0xFF;       
            PORTC=0xFF;
          //   delay_ms(50);
          }
          else
          {
            PORTD=0x00;
            PORTC=0x00; 
          //   delay_ms(50);
          }
       }
    }

    #2
    پاسخ : ADC در روبات میکرو موس

    سلام مهندس!!!
    مطمئنی که سنسورات سالم هستند؟ با ولتمتر یه تستی بکن ببین خروجی سنسور ها با تحریک کردن سنسور عوض میشن یا نه؟
    long time ago,people who sacrificed their sleep,family,food,laugher and other joys of life
    were called SAINTS
    NOW,they are called
    ENGINEERS

    دیدگاه


      #3
      پاسخ : ADC در روبات میکرو موس

      یه چیز دیگه هم یادم رفت بگم...زمین میکرو با زمین سنسور یکیه؟
      اگه نه باید یکیش کنی هاااا!!!!!
      long time ago,people who sacrificed their sleep,family,food,laugher and other joys of life
      were called SAINTS
      NOW,they are called
      ENGINEERS

      دیدگاه


        #4
        پاسخ : ADC در روبات میکرو موس

        سلام دوست عزیز :smile:
        آره سنسورها سالم هستن. ولتاژ خروجی با با کم و زیاد شدن فاصله مانع تغییر میکنه.
        زمین سنسور ها و میکرو هم یکی هستن ...
        هیچ چیز این ربات به اندازه ی ADCایش من و اذیت نکرد :angry:

        دیدگاه


          #5
          پاسخ : ADC در روبات میکرو موس

          بازم سلام!
          شما با توجه به اون delay_us(10); که گذاشتین حتما باید کلاک adc رو روی 125کیلو تنظیم کنین هاااااا ! البته این فرکانس حداکثر فرکانسی هست که adc میکرو mega32 میتونه باهاش درست کار کنه! اونجا رو یه تستی بنمممویییید!!! :biggrin:



          // ADC Clock frequency: 500.000 kHz
          long time ago,people who sacrificed their sleep,family,food,laugher and other joys of life
          were called SAINTS
          NOW,they are called
          ENGINEERS

          دیدگاه


            #6
            پاسخ : ADC در روبات میکرو موس

            تذکر : در کدی که نوشته شده DDR پورت C و D خروجی نشده !

            همچنین به جای
            ; t = read_adc(0)>>2
            بهتره adc رو مستقیماً بریزید توی متغییر مورد نظر، یعنی:
            ;(t = read_adc(0
            ______________
            نحوه راه اندازی سنسور هاتون به چه شکل هست؟
            مداری که استفاده کردید رو ترسیم کنید. شاید اشکال معلوم بشه!
            مقدار مقاومت ها رو هم ذکر کنید.
            نوع سنسور هم همین طور.
            همواره يادمان باشد:
            1-مردان بزرگ اراده مي کنند و مردان کوچک آرزو
            2-افراد بزرگ، هميشه به دنبال ايده هاي بزرگند و افراد کوچک به دنبال افراد بزرگ
            3-هميشه سعي کن آنقدر کامل باشي که بزرگترين تنبيه تو براي ديگران گرفتن خودت از آنها باشد.

            دیدگاه


              #7
              پاسخ : ADC در روبات میکرو موس

              سلام به دوستای گلم :biggrin:
              دست همه درد نکنه ، جواب گرفتم :wow:

              از لطف شما هم ممنون احمد آقا ...
              اگر مشکلی بود مزاحم میشیم حالا :biggrin:

              دیدگاه

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