اطلاعیه

Collapse
No announcement yet.

مشکل در افزایش بورد tsop1238

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

    مشکل در افزایش بورد tsop1238

    سلام
    من یک کدی نوشتم که با تایمر 0 پالس با فرکانس 38 کیلو هرتز میسازه و با adc مقدار خروجی tsop1238 رو استخراج میکنم...
    ولی بوردش فقط 5 سانت هست... وقتی دستم رو نزدیک میکنم عدد 1015 رو دریافت میکنم وقتیم دور میکنم 0....
    نباید بوردش بیشتر باشه ؟ چرا اینجوریه :sad:
    فرستنده ها با یک ترانزیستور به هم وصل شده اند و به gnd وصل میشم.فرکانس میکرو 8 مگ
    فرکانس تایمر 8 مگ هست و هر .125 میکرو ثانیه 1 دونه میشمره (بدون تقسیم فرکانسی )

    تولید فرکانسی 38 کیلو هرتز 50% duty cycle :

    256- 152 = 104

    104 * .125 = 13 میکرو ثانیه تاخیر

    کدهای مربوط به سنسور :
    --------------------

    کد:
    #include <mega32.h>
    #include <delay.h> 
    #include <stdlib.h> 
    #include <string.h> 
    #asm
      .equ __lcd_port = 0x18 ;//PORTB
    #endasm
    #include <lcd.h>
    #define MIN_STEP 1.8
    char s1[8];
    int mode = 0 ;
    int count = 0 ;
    int a=1023;
    
    /**************************** ADC SETTING ***************************/
    unsigned int adc_data;
    #define ADC_VREF_TYPE 0x40
    interrupt [ADC_INT] void adc_isr(void)
    {
      adc_data=ADCW;
    }
    unsigned int read_adc(unsigned char adc_input)
    {
    ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
    #asm
      in  r30,mcucr
      cbr r30,__sm_mask
      sbr r30,__se_bit | __sm_adc_noise_red
      out mcucr,r30
      sleep
      cbr r30,__se_bit
      out mcucr,r30
    #endasm
    return adc_data;
    } 
      
    /**************************** ADC SETTING ***************************/
    
    /**************************** IR SENSOR 38KHz ***************************/
    interrupt [TIM0_OVF] void timer0_ovf_isr(void)
    {  
    //IR 38KHz Send  
      TCNT0 = 152;
      PORTB.3 =~ PORTB.3;
    
    }
     
    /**************************** IR SENSOR 38KHz ***************************/
    main(){
      int i=0;
      lcd_init(16) ; 
      lcd_gotoxy(0,0); 
      lcd_putsf("Start");
        
      
      //********************* PORT A *******************************
      DDRA = 0x00;
      ADMUX=ADC_VREF_TYPE;
      ADCSRA=0x8F;
      SFIOR&=0xEF;
      
      //********************* PORT A ******************************* 
      //********************* PORT B ******************************* 
      DDRB=0xFF; 
      
      //--B.3 ==>> 38khz sender --
      PORTB.3= 1; //IR GND Q ON 
      
      // Other Pin Connect To Lcd 
      //********************* PORT B ******************************* 
         
      //********************* TIMER ******************************* 
      TCCR0=0x01;  // ferq timer = 8MHz
      TCNT0 = 152; // SEND 38KHZ IR-TX  
      TIMSK=0x01; //TIMER0 FOR >> IR sensor 38khz  
       
      
      //********************* TIMER ******************************* 
      
      
      #asm("sei")  
      
      while(1){
        
      
      //IR Sensor Test 38KHz --- // 
            
        delay_ms(200);
        lcd_clear(); 
        
        lcd_gotoxy(0,0);
        lcd_putsf("F:");
        a=read_adc(3);
        itoa(a,s1);
        lcd_puts(s1); 
        
        lcd_putsf(" U3: ");
        a=read_adc(0);
        itoa(a,s1);
        lcd_puts(s1) ; 
    
          
        lcd_gotoxy(0,1); 
        lcd_putsf("U1: ");
        a=read_adc(1);
        itoa(a,s1);
        lcd_puts(s1); 
    
           
        lcd_putsf(" U2: ");
        a=read_adc(2);
        itoa(a,s1);
        lcd_puts(s1);
    
       //--- IR Sensor Test 38KHz --- // 
            
      }
      
    }

    #2
    پاسخ : مشکل در افزایش بورد tsop1238

    سلام

    کسی نمیدونه مشکل من چیه ؟! باید از PWM استفاده کنم به جای duty cycle 50% تا بوردش بیشتر بشه ؟
    برای 50% من 13 میکرو ثانیه تاخیر میدم واسه تایم روشن بودن و خاموش بودن که دامنه هرپالس میشه 26 میکرو ثانیه و یک موج 38 کیلو هرتز میسازه...درسته دیگه؟

    من از این مدار استفاده میکنم :


    فاصله 15 تا 30 سانت مد نظر من هست...

    دیدگاه

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