اطلاعیه

Collapse
No announcement yet.

راهنمایی برای اتصال خروجی مدار Infra-red Level Detector به ورود

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

    #16
    پاسخ : راهنمایی برای اتصال خروجی مدار Infra-red Level Detector به ورود

    من خیلی بسکام کار نمیکنم ولی فکر کنم این شکل برنامه نوشتن خیلی اشتباهه
    [glow=red,2,300]تاپیک های ایجاد شده[/glow]

    دیدگاه


      #17
      پاسخ : راهنمایی برای اتصال خروجی مدار Infra-red Level Detector به ورود

      خروجی آی سی 2 حد پایین ولتاژ 12ولت است که به پایه منفی led وصل شده در این صورت با مداری که در پست قبل گذاشتم در برنامه ار حد بالا استفاده کنم یا حد پایین ولتاژ.
      اگه امکانش هست برنامه به زبان C را برام بنویسید.
      باتشکر

      دیدگاه


        #18
        پاسخ : راهنمایی برای اتصال خروجی مدار Infra-red Level Detector به ورود

        درباره برنامه توضیح نمیدین؟
        [glow=red,2,300]تاپیک های ایجاد شده[/glow]

        دیدگاه


          #19
          پاسخ : راهنمایی برای اتصال خروجی مدار Infra-red Level Detector به ورود

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

          گه امکانش هست برنامه به زبان C را برام بنویسید.
          شما بگین آخه می خواین چی کار کنین . وقتی سیگنال دریافت شد خروجی پ امپ 0 میشه یا 1 ؟
          بعدش می خواین میکرو براتون چی کار کنه ؟

          دیدگاه


            #20
            پاسخ : راهنمایی برای اتصال خروجی مدار Infra-red Level Detector به ورود

            درباره برنامه توضیح نمیدین؟
            چشم الان توضیح میدم
            شما بگین آخه می خواین چی کار کنین . وقتی سیگنال دریافت شد خروجی پ امپ 0 میشه یا 1 ؟
            وقتی بین سنسورها مانع قرار میگیره LED خاموش میشه و با رفع مانع LED روشن میشه.یعنی وقتی مانع باشه خروجی 0 و گرنه 1
            بعدش می خواین میکرو براتون چی کار کنه ؟
            ازمدار سنسور دوتا درست کردم و می خواهم به پایه های PA1,PA2 وصل کنم و یک شاسی هم به پایه PA0 وصل کنم.
            اگر شاسی فشرده شده(پایه PA0ولتاژ بالاداشت)وضعیت دوتا سنسور کنترل بشه (پایه PA1,PA2) اگر پایه PA1 ولتاژ بالا داشت
            سه تا پایه مثلا PD0,PD1,PD2 رو یک کنه و اگر پایه PA2 ولتاژ بالا داد سه تا پایه PD0,PD1,PD2 رو صفر کنه.
            اگر دوباره شاسی فشرده شده(پایه PA0ولتاژ بالاداشت)وضعیت دوتا سنسور کنترل بشه اگر پایه PA2 ولتاژ بالا داشت
            از سه تا پایه PD0,PD1,PD2 پایه PD2 رو یک کنه و اگر پایه PA1 ولتاژ بالا داد PD2 رو صفر کنه.
            ببحشید که توضیحات طولانی شد از این خلاصه تر نتونستم بنویسم.
            ممنونم ار توجه شما

            دیدگاه


              #21
              پاسخ : راهنمایی برای اتصال خروجی مدار Infra-red Level Detector به ورود

              نوشته اصلی توسط alireza094
              وقتی بین سنسورها مانع قرار میگیره LED خاموش میشه و با رفع مانع LED روشن میشه.یعنی وقتی مانع باشه خروجی 0 و گرنه 1
              فکر میکنم خروجی برعکس هست
              LED وقتی خاموش میشه که خروجی 1 باشه!!!

              نوشته اصلی توسط alireza094
              ازمدار سنسور دوتا درست کردم و می خواهم به پایه های PA1,PA2 وصل کنم و یک شاسی هم به پایه PA0 وصل کنم.
              اگر شاسی فشرده شده(پایه PA0ولتاژ بالاداشت)وضعیت دوتا سنسور کنترل بشه (پایه PA1,PA2) اگر پایه PA1 ولتاژ بالا داشت
              سه تا پایه مثلا PD0,PD1,PD2 رو یک کنه و اگر پایه PA2 ولتاژ بالا داد سه تا پایه PD0,PD1,PD2 رو صفر کنه.
              اگر دوباره شاسی فشرده شده(پایه PA0ولتاژ بالاداشت)وضعیت دوتا سنسور کنترل بشه اگر پایه PA2 ولتاژ بالا داشت
              از سه تا پایه PD0,PD1,PD2 پایه PD2 رو یک کنه و اگر پایه PA1 ولتاژ بالا داد PD2 رو صفر کنه.
              اگه درست متوجه شده باشم شما با شاسی میخوای منطق برنامه عوض کنی. یعنی هربار که کلید فشار بدی مدار عکس حالت قبلی عمل کنه؟

              برنامه یه اشکال بزرگ داره
              اگه حالتی باشه که هر دو ورودی 1 باشن چه تصمیمی باید گرفت؟
              [glow=red,2,300]تاپیک های ایجاد شده[/glow]

              دیدگاه


                #22
                پاسخ : راهنمایی برای اتصال خروجی مدار Infra-red Level Detector به ورود

                اگر دوباره شاسی فشرده شده(پایه PA0ولتاژ بالاداشت)وضعیت دوتا سنسور کنترل بشه اگر پایه PA2 ولتاژ بالا داشت
                از سه تا پایه PD0,PD1,PD2 پایه PD2 رو یک کنه و اگر پایه PA1 ولتاژ بالا داد PD2 رو صفر کنه.
                بعد از این حالت برمیگرده به اون حالت اولی ؟ یعنی اگه برای بار سوم شاسی فشار داده شد .

                دیدگاه


                  #23
                  پاسخ : راهنمایی برای اتصال خروجی مدار Infra-red Level Detector به ورود

                  فکر میکنم خروجی برعکس هست
                  LED وقتی خاموش میشه که خروجی 1 باشه!!!
                  وقتی مانع نیست خروجی پ امپ 10.5ولته و وقتی مانع هست ولتاژخروجی 1.2 ولت میشه.
                  اگه درست متوجه شده باشم شما با شاسی میخوای منطق برنامه عوض کنی. یعنی هربار که کلید فشار بدی مدار عکس حالت قبلی عمل کنه؟
                  درسته البته بستگی داره به حالت سنسورها . باسه خروجی سه تا رله فعال یا یکی فعال میشه که یک موتور رو چپ و راست میکنه.
                  برنامه یه اشکال بزرگ داره
                  اگه حالتی باشه که هر دو ورودی 1 باشن چه تصمیمی باید گرفت؟
                  فرقی نمیکنه موتور به یک طرف باید روشن بشه.
                  بعد از این حالت برمیگرده به اون حالت اولی ؟ یعنی اگه برای بار سوم شاسی فشار داده شد .
                  درسته .
                  اگه فشرده بشه PA1ولتاژ بالاست و سه پایه یک میشه و ...

                  دیدگاه


                    #24
                    پاسخ : راهنمایی برای اتصال خروجی مدار Infra-red Level Detector به ورود

                    [left][pre][center][right][left]
                    کد:
                    // External Interrupt(s) initialization
                    // INT0: On
                    // INT0 Mode: Falling Edge
                    // INT1: Off
                    // INT2: Off
                    GICR|=0x40;
                    MCUCR=0x02;
                    MCUCSR=0x00;
                    GIFR=0x40;
                    ابتدا یه وقفه مثل وقفه صفرو فعال میکنی و میای تو سابروتینش مینویسی :

                    کد:
                    interrupt [EXT_INT0] void ext_int0_isr(void)
                    {
                    if(sign==1)
                    {
                    
                    
                    if(pinA.1==1)
                    {
                    PORTD.0=1
                    PORTD.1=1
                    PORTD.2=1
                    
                    }
                    
                    
                    if(pinA.2==1)
                    {
                    PORTD.0=0
                    PORTD.1=0
                    PORTD.2=0
                    }
                    sign=0;
                    }
                    
                    if(sign==0)
                    {
                    
                    if(pinA.1==1)
                    {
                    PORTD.2=0
                    }
                    
                    
                    if(pinA.2==1)
                    {
                    
                    
                    PORTD.2=0
                    }
                    sign=1;
                    }
                    
                    
                    
                    }
                    sign هر بار عوض میشه و هر دفعه که کلید زده میشه یکشیشو اجرا میکنه .
                    این واسه کویژن هست . اکه می خوای بسکام بنویسی معادل اینو با بسکام بنویس .
                    جزئیاتشم خودت برس دیگه .


                    دیدگاه


                      #25
                      پاسخ : راهنمایی برای اتصال خروجی مدار Infra-red Level Detector به ورود

                      :nice:
                      باتشکر از اساتیدی که به من کمک کردن و مرا راهنمایی کردند.
                      لطفا ببینید شماتیک و برنامه زیر درسته


                      کد:
                      #include <mega16.h>
                      void main(void)
                      {
                        PORTA=0x00;  DDRA=0xF8;
                        PORTB=0x00;  DDRB=0xFF;
                        PORTC=0x00;  DDRC=0xFF;
                        PORTD=0x00;  DDRD=0xFF;
                        // External Interrupt(s) initialization
                        // INT0: On
                        // INT0 Mode: Falling Edge
                        // INT1: Off
                        // INT2: Off
                        GICR|=0x40;
                        MCUCR=0x02;
                        MCUCSR=0x00;
                        GIFR=0x40;
                        while (1)
                         {
                          interrupt [EXT_INT0] void ext_int0_isr(void)
                          {
                            if(sign==1)
                            {
                              if(pinA.1==1)
                              {
                                PORTD.0=1
                                PORTD.1=1
                                PORTD.2=1
                              }
                              if(pinA.2==1)
                              {
                                PORTD.0=0
                                PORTD.1=0
                                PORTD.2=1
                              }
                              sign=0;
                            }
                            if(sign==0)
                            {
                              if(pinA.1==1)
                              {
                                PORTD.2=0
                              }
                              if(pinA.2==1)
                              {
                                PORTD.2=0
                              }
                              sign=1;
                            }
                          }
                      
                         }
                      }

                      دیدگاه


                        #26
                        پاسخ : راهنمایی برای اتصال خروجی مدار Infra-red Level Detector به ورود

                        متاسفانه کلید رو باید به پایه 16 بزنی . برای پایه 16 که خروجیه یکی دیگه در نظر بگیر .
                        تو اول اینتراپت
                        کد:
                        #ASM (CLI)
                        وآخرش 
                         #ASM (SEI)
                        اولش وقفه رو غیر فعال بعد فعال میکنه .
                        
                        همچنین در اول اینتراپت یه تاخیر 100 میلی ثانیه بذار
                        
                        DELAY_MS(100)
                        
                        آخرشم یه تاخیر 2 3 ثانیه ای بذار
                        به پایه ای که کلید وصل میشه به اون یه خازن 4.7 میکرو یا بیشتر یا یه کم کمتر بذار که یه طرفش به زمینه .یه مقاومت 10 کیلو یه طرفش به VCC . و اون طرف کلیدو به زمین وصل کن .چون حساس به لبه ی پایین روندش کردیم .

                        ماشااالله خیلی پشت کار داری . اینطور که میری تا صبح به نتیجه میرسی :applause:

                        دیدگاه


                          #27
                          پاسخ : راهنمایی برای اتصال خروجی مدار Infra-red Level Detector به ورود

                          متاسفانه کلید رو باید به پایه 16 بزنی . برای پایه 16 که خروجیه یکی دیگه در نظر بگیر .

                          به پایه ای که کلید وصل میشه به اون یه خازن 4.7 میکرو یا بیشتر یا یه کم کمتر بذار که یه طرفش به زمینه .یه مقاومت 10 کیلو یه طرفش به VCC . و اون طرف کلیدو به زمین وصل کن .چون حساس به لبه ی پایین روندش کردیم .
                          اینم اصلاح شد ببینید درسته

                          #ASM (CLI)
                          وآخرش
                          #ASM (SEI)
                          اولش وقفه رو غیر فعال بعد فعال میکنه .

                          همچنین در اول اینتراپت یه تاخیر 100 میلی ثانیه بذار

                          DELAY_MS(100)

                          آخرشم یه تاخیر 2 3 ثانیه ای بذار
                          لطفا بیشترتوضیح دیدی منظورتون رو نفهمیدم
                          ماشااالله خیلی پشت کار داری . اینطور که میری تا صبح به نتیجه میرسی :applause:
                          لطف دارید اینا همش بخاطر راهنمایی های شماست اگه راهنمایی نمی کردید به اینجا نمیرسیدم

                          دیدگاه


                            #28
                            پاسخ : راهنمایی برای اتصال خروجی مدار Infra-red Level Detector به ورود

                            اگه گفته شما درست باشه که خروجی پ امپ در سطح پایین برابر 1.2 ولته احتمالا میکرو در تشخیص 0 منطقی دچار اشکال میشه!!!
                            [glow=red,2,300]تاپیک های ایجاد شده[/glow]

                            دیدگاه


                              #29
                              پاسخ : راهنمایی برای اتصال خروجی مدار Infra-red Level Detector ب&#160

                              اگه گفته شما درست باشه که خروجی پ امپ در سطح پایین برابر 1.2 ولته احتمالا میکرو در تشخیص 0 منطقی دچار اشکال میشه!!!
                              یه مانع بین سنسور قرار دادم و ولتاژ با ولت متر اندازه گیری کردم و ولتاژ 1.2 رو نشون داد
                              برای اینکه مشکلی پیش نیاد چه باید کرد؟

                              دیدگاه


                                #30
                                پاسخ : راهنمایی برای اتصال خروجی مدار Infra-red Level Detector به ورود

                                ما وقفه رو حساس به لبه ی پایین رونده کردیم . باید یه طرف کلیدو به جای 5 ولت به گراند وصل کنی .
                                وگرنه تنظیماتو واسه لبه ی بالا رونده کنی :
                                کد:
                                // External Interrupt(s) initialization
                                // INT0: On
                                // INT0 Mode: Rising Edge
                                // INT1: Off
                                // INT2: Off
                                GICR|=0x40;
                                MCUCR=0x03;
                                MCUCSR=0x00;
                                GIFR=0x40;

                                CLI وقفه ی سراسری رو در ابتدا که وارد وقفه شد غیر فعال میکنه ودر آخرش با SEI فعال میکنه .
                                تاخیر 100 میلی ثانیه نیاز نیست .
                                آخر وقفه یه تاخیر 2 ثانیه ای بذار . چون اجرای کل برنامه ی وقفت شاید 1 میلی ثانیه هم طول نکشه . اگه کلیدت لغزش داشته باشه ، وقفه دو بار اجرا میشه .

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

                                منظورم از وقفه interrupt [EXT_INT0] void ext_int0_isr(void) هستش که اینو باید بیرون main بذاری .
                                داخل main یه while(1);
                                خالی بذاری کافیه .
                                میکرو در این حلقه همیشه منتظر میمونه و وقتی کلیدو زدی میره تا وقفه رو اجرا کنه .وقفه رو که اجرا کرد ،برمی گرده به while(1)

                                دیدگاه

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