NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 2039 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 1 از 1

موضوع: فیلتر پایین گذر با کدویژن

  1. #1
    تازه وارد
    تاریخ عضویت
    Aug 2018
    نوشته ها
    2
    تشکر
    0
    تشکر شده 0 بار در 0 پست

    پیش فرض فیلتر پایین گذر با کدویژن

    سلام خسته نباشید من میخواستم فیلتر پایین گذر رو با کدویژن درست کنم یک فیلتر پایین گذر مرتبه اول ساده iir و اینها هم نه کدش رو نوشتم ولی متاسفانه ارور های بی مورد میده خواهش میکنم کمک کنید چون خیلی ضروری هستش کد هاشو پایین گذاشتم البته یه جاهاییش مربوط به کنترل دما و باند هیسترزیس هستش که مهم نیس دستور فیلتر از اونجایی که نوشتم low pass filter ایمیلم رو هم مینویسم که هر کی تونست کمک بکنه ایمیل به بزنه با تشکر
    a.r.amiri1996@gmail.com


    #include <mega32.h>

    #include <delay.h>
    unsigned int b;
    int temp ;
    float idc;
    float vdc;
    int Fs=1000 ; int Fc=50 ; int i;
    float y ;float x ;
    float a;
    float yk1=0;

    // Timer 0 overflow interrupt service routine
    interrupt [TIM0_OVF] void timer0_ovf_isr(void)
    {

    ////////////////////////hysteresis band
    idc=PINA.1;
    vdc=PINA.2;

    if ((idc>1.1*idc)||(0.9*idc<idc<1.1*idc)){
    PORTD.0=1;
    }
    else {
    PORTD.0=0;
    } ;
    if ((vdc>1.1*vdc)||(0.9*vdc<vdc<1.1*vdc)){
    PORTD.1=1;
    }
    else {
    PORTD.1=0;
    };
    ///////////////////low pass filter
    // void fanction(float y ,float x ){

    for( i = 0; i < 500; i++){
    a =1 – (exp^(-2*pi*(Fc/Fs)));
    y(i) = (a * x(i)) + ((1-a) * yk1(i)) ;

    };

    }








    #define ADC_VREF_TYPE 0xC0

    // 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)
    {
    // 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;

    // Port C 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
    PORTC=0x00;
    DDRC=0xFF;

    // 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: 1000.000 kHz
    // Mode: Normal top=0xFF
    // OC0 output: Disconnected
    TCCR0=0x02;
    TCNT0=0x00;
    OCR0=0x00;

    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: Timer1 Stopped
    // Mode: Normal top=0xFFFF
    // OC1A output: Discon.
    // OC1B output: Discon.
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    // Timer1 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: Timer2 Stopped
    // Mode: Normal top=0xFF
    // 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=0x01;

    // USART initialization
    // USART disabled
    UCSRB=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: 125.000 kHz
    // ADC Voltage Reference: Int., cap. on AREF
    ADMUX=ADC_VREF_TYPE & 0xff;
    ADCSRA=0x86;

    // SPI initialization
    // SPI disabled
    SPCR=0x00;

    // TWI initialization
    // TWI disabled
    TWCR=0x00;

    // Global enable interrupts
    #asm("sei")

    while (1)
    {
    b=read_adc(0);

    temp=b/4;
    if (temp>=40){
    PORTC.0=1;
    }
    else{
    PORTC.0=0;
    } ;

    }
    }

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

موضوعات مشابه

  1. مبدل افزایینده dc به dc
    توسط ghenaati_amir در انجمن طراحی و ساخت و آزمایش مدارت الکترونیک
    پاسخ: 0
    آخرين نوشته: 02-08-2017, 13:24
  2. ایجاد پالس با فرکانس پایین
    توسط sadeghbakhshi در انجمن الکترونیک
    پاسخ: 9
    آخرين نوشته: 22-12-2013, 23:46
  3. پاسخ: 4
    آخرين نوشته: 11-08-2009, 15:50

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •