اطلاعیه

Collapse
No announcement yet.

مشکل در قطع و وصل شدن رله با avr

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

    مشکل در قطع و وصل شدن رله با avr

    با سلام،برای روشن خاموش کردن یه موتور 220 از یه رله استفاده کردم که که میکرو فرمان قطع و وصل رو میده،ولی این رله درست قطع و وصل نمیشه،مدارو بدون برق 220 امتحان میکنم،رله به درستی قطع و وصل میشه،ولی وقتی برق 220 وصل میشه،رله نه درست وصل میشه نه درس قطع،به خصوص در قطع شدن،مشکل از کجا میتونه باشه؟از یه بافر uln2003 استفاده کردم نشد،قبلش یه اپتوکوپلر گذاشتم نشد،با هر مداری گذاشتم رله کار میکنه ولی همون مشکل قطع و وصل رو داره،ممنون میشم کمکم کنید،تاپیک ها رو خوندم ولی بازم چیزی پیدا نکردم

    #2
    پاسخ : مشکل در قطع و وصل شدن رله با avr

    با سلام
    از یک ترانزیستور با جریان مناسب برای قطع و و صل رله استفاده نمایید در مدار تغذیه ترانزیستور از یک خازن الکترولیت 100 میکرو استفاده کنید .همچنین دیود هرزگرد دو سر فیلد رله فراموش نشود .

    دیدگاه


      #3
      پاسخ : مشکل در قطع و وصل شدن رله با avr

      تغذیه avr شما چیه؟

      دیدگاه


        #4
        پاسخ : مشکل در قطع و وصل شدن رله با avr

        از پاور کامپیوتر استفاده میکنم،میشه مشکل از برنامه باشه که نوشتم؟

        دیدگاه


          #5
          پاسخ : مشکل در قطع و وصل شدن رله با avr

          شماتیک بزارین

          دیدگاه


            #6
            پاسخ : مشکل در قطع و وصل شدن رله با avr

            نوشته اصلی توسط arvinfx نمایش پست ها
            شماتیک بزارین
            تو برنامم دستکاری کردم وقفه رو تغییر دادم،یه جورایی درست تر شد،
            الان وقفه رو حساس به لبه بالارونده کردم ولی در عمل بعضی وقتا به لبه پایین رونده وقفه عمل میکنه،مشکل از چی میتونه باشه؟
            اینم کداری برنامم:
            /*
            * dht11.c
            *
            * Created: 5/10/2018 921 AM
            * Author : Mgh
            */
            #ifndef F_CPU
            #define F_CPU 1000000 /* CPU CLOCK FREQUENCY */
            #endif


            #include <avr/io.h>
            #include <stdlib.h>
            #include <stdio.h>
            #include <util/delay.h>
            #include <math.h>
            #include <avr/interrupt.h>
            #include <avr/sleep.h>
            #include "LCD16x2_4bit.h"
            #include "DHT.h"


            #define SLEEP_MODE_IDLE 0


            float hum,temp;
            char buffer[17];
            float arr_ave_h[10]={ 0 },arr_ave_t[10]={ 0 };
            volatile int count = 0,sec = 0,min = 0,hour = 0,day = 0,i=0,Rotate_flag=0,display_flag=0;
            char str[10];
            float humidity,Temperature;


            /*
            PORTA:
            lcd setting
            PORTD:
            0=>turn on Heater
            1=>turn on Fan
            2=>Rotation interrupt
            3=>display on - start duration interrupt
            4=>Rotation
            5=>sensor dht11
            */


            void WDT_ON()
            {
            /*
            Watchdog timer enables with typical timeout period 2.1
            second.
            */
            WDTCR = ( 1<<WDE)|( 1<<WDP2)|( 1<<WDP1)|(1<<WDP0);
            }
            void WDT_OFF()
            {
            /*
            This function use for disable the watchdog timer.
            */
            WDTCR = ( 1<<WDTOE)|( 1<<WDE);
            WDTCR = 0x00;
            }


            ISR(TIMER1_COMPA_vect) {
            WDT_OFF();
            cli();
            count++;
            if (count >= 10)
            {
            sec++;
            count = 0;
            if (sec >= 60)
            {
            min++;
            PORTD |= (1 << 4);
            sec = 0;
            if (min >= 60)
            {
            hour++;

            min = 0;
            if (hour >= 24)
            {
            day++;
            hour = 0;
            }
            }
            }
            }
            sei();
            }


            ISR(TIMER0_COMP_vect){
            sprintf(buffer,"T=%0.1fC H=%0.1f%%",avreage(arr_ave_t),avreage(arr_ave_h));
            sprintf(str,"%02d:%02d:%02d:%02d",day,hour,min,sec );
            lcd_gotoxy(0,0);
            lcd_print(buffer);
            lcd_gotoxy(0,1);
            lcd_print(str);
            i++;
            if(i == 10){
            i=0;
            }
            if (day <= 18)
            {
            humidity = 60;
            Temperature = 37.7;
            }
            else
            {
            humidity = 73;
            Temperature = 37.3;
            }
            }


            ISR(INT0_vect)
            {


            PORTD &= ~(1 << 4);
            }


            ISR(INT1_vect)
            {

            PORTD |= (1 << 4);


            }


            int main(void)
            {
            lcdinit();
            DHT_Setup();


            WDT_ON();


            DDRD = 0b00010011;
            PORTD = 0b00001100;


            TCCR0 |= (1 << WGM01) | (1 << CS00) | (1 << CS02);
            OCR0 = 0x60;
            TIFR |= (1 << OCF0);
            TIMSK |= (1 << OCIE0);
            TCNT0 = 0;


            TCCR1B |= (1 << WGM12) | (1 << CS01);
            OCR1A = 0x30D3;
            TIMSK |= (1 << OCIE1A);


            //interrupt 0,1
            GICR |= 1<<INT0 | 1<<INT1;
            MCUCR |= 1<<ISC00 | 1<<ISC01 | 1<<ISC10 | 1<<ISC11;
            GIFR |= 1<<INT0 | 1<<INT1;


            sei();


            set_sleep_mode(SLEEP_MODE_IDLE);
            sleep_mode();
            while(1)
            {

            DHT_Read(&temp,&hum);
            arr_ave_t[i]=temp;
            arr_ave_h[i]=hum;


            _delay_ms(1000);


            }
            }

            دیدگاه

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