اطلاعیه

Collapse
No announcement yet.

مشکل ساده با برنامه ساده

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

    #31
    پاسخ : مشکل ساده با برنامه ساده

    قسمتی که مربوط به ترانزیستورها و رله هست را قطع کردم ولی متاسفانه همچنون ولتاژ حدود 2.7 ولت روی کلیه پایه های صفر میکرو وجود داره که باعث شده LED روشن دیده شود
    چه کار کنم صفر ولت بشه؟

    دیدگاه


      #32
      پاسخ : مشکل ساده با برنامه ساده

      من مدار تغذیه ای رو نمیبینم!
      چون پروتئوس برای میکرو تغذیه ای نذاشته
      اگه اون مواردی که گفتم نباشه پس حتما ایراد از خود تغذیه هست.
      یه کاری بکنین:
      برای اطمینان از صحت کار میکرو یه برنامه چشمک زن بنویسین.

      مدار تغذیه رو هم اضافه کنین تا بهتر بتونم ایراد رو پیدا کنم.
      [glow=green,2,300][b]بشر ممکن الخطاست
      درخت هرچه پربار تر سر به زیر تر[/glow]

      دیدگاه


        #33
        پاسخ : مشکل ساده با برنامه ساده

        از یک شارژر موبایل نوکیا که داخلش تغذیه سوئیچینگ الکترونیکی هست استفاده کردم که 5.7 ولت ، 800 میلی هم هست
        که به ترمینالها مشخص شده روی برد زیر وصل کردم

        دیدگاه


          #34
          پاسخ : مشکل ساده با برنامه ساده

          نوشته اصلی توسط imanxx_81
          برنامه زیر را ببینید ، خوب کار می کنه ولی وقتی وارد حلقه ست و ریست میشه دیگه خارج نمی شه
          $regfile = "m16def.dat" ' specify the used micro
          $crystal = 8000000 ' used crystal frequency

          Dim I As Byte
          Dim J As Byte
          Dim G As Byte
          Dim S As Byte
          Dim Y As Byte
          Dim Z As Byte

          S = 5
          Y = 5
          Z = 5

          I = 1
          J = 1
          G = 1

          Config Pinb.0 = Input ' Config inputs
          Config Pinb.1 = Input
          Config Pinb.2 = Input

          Config Portd.0 = Output ' Config output
          Config Portd.1 = Output ' Config output
          Config Portd.2 = Output ' GREEN LED


          do

          If Pinb.0 = 1 Then
          For I = 1 To S
          Set Portd.0
          Waitms 2
          Reset Portd.0
          Waitms 2
          INCR I
          Next
          endif



          If Pinb.1 = 1 Then
          For J = 1 To Y
          Set Portd.1
          Waitms 2
          Reset Portd.1
          Waitms 2
          Incr J
          Next
          endif


          If Pinb.2 = 1 Then
          For G = 1 To Z
          Set Portd.2
          Waitms 2
          Reset Portd.2
          Waitms 2
          Incr G
          Next
          End If
          loop
          داداش شما در حلقه ی for - next نباید از incr استفاده می کردی چون خود دستور for با توجه به step معین شده مثل شمارنده عمل کرده و هر بار به اندازه step به متغییر جلوی for اضافه می کنه!

          دیدگاه


            #35
            پاسخ : مشکل ساده با برنامه ساده

            نوشته اصلی توسط imanxx_81
            از یک شارژر موبایل نوکیا که داخلش تغذیه سوئیچینگ الکترونیکی هست استفاده کردم که 5.7 ولت ، 800 میلی هم هست
            که به ترمینالها مشخص شده روی برد زیر وصل کردم
            بدون رگولاتور؟ همینجوری مستقیم؟

            اگه یه آداپتور 9 ولت رو با یه رگولاتور وصل کنی صد بار بهتر از اینه که مستقیم بدی به یه تغذیه سویچینگ.

            برای تغذیه آی سی فقط رگولاتور خطی.

            از اون گذشته. AVR مگه حداکثر 5.5 ولت نیست؟ شما 0.2 ولت اضافه دادی.

            بعدشم از کجا میدونی خروجی آداپتور ثابت میمونه. اونه همیشه ریپل دارن.
            [glow=green,2,300][b]بشر ممکن الخطاست
            درخت هرچه پربار تر سر به زیر تر[/glow]

            دیدگاه


              #36
              پاسخ : مشکل ساده با برنامه ساده

              نوشته اصلی توسط امیر حسین بیگدلی
              بدون رگولاتور؟ همینجوری مستقیم؟

              اگه یه آداپتور 9 ولت رو با یه رگولاتور وصل کنی صد بار بهتر از اینه که مستقیم بدی به یه تغذیه سویچینگ.

              برای تغذیه آی سی فقط رگولاتور خطی.

              از اون گذشته. AVR مگه حداکثر 5.5 ولت نیست؟ شما 0.2 ولت اضافه دادی.

              بعدشم از کجا میدونی خروجی آداپتور ثابت میمونه. اونه همیشه ریپل دارن.
              جناب آقای بیگدلی
              امروز رگولاتور 7805 خریدم دیروز بازار بسته بود
              ممنون درست شد ، البته یک قطعی ریز هم تو منفی میکرو بود که باعث می شد 2 ولت سر GND میکرو بیفته
              این بخش برد که عکسش فرستادم الان درست کار می کنه، فقط دو مشکل ریز داره
              1- نرم افزاری: که قبلاً هم بهش اشاره کردم برنامه را نتوانستم خوب بنویسیم و هدفم این بود که هر بار دکمه را فشار می دهیم خروجی توسیکل قطع و وصل بره و هربار برای بار دوم فشرده شود مدار همانجا قطع بشه ولی برنامه فقط در انتهای سیکل اگر برای بار دوم زده شه مدار خروجی را قطع می کنه
              2- شاسی ها را باید یک مقدار نگه داشت تا خروجی فعال بشه و گرنه با یک لحظه فشردن خروجی فعال نمیشه و انگار اتفاقی نیفتاده
              کریستال خارجی نگذاشتم موثره!

              3- مشکل دیگه اینه که زمانی بخش دوم مدار که تو شماتیک کشیدمش فقط بخش رله هاست وقتی وصلش می کنم یک خروجی فعال میشه خروجی های دیگه نیز فعال میشه و عملکرد مدار مختل ی شه
              یک دیود هم مطابق شماتیک شکل زیر اضافه کردم ولی درست نشد

              دیدگاه


                #37
                پاسخ : مشکل ساده با برنامه ساده

                خیلی این برد اعصابم خراب کرده
                مطابق شماتیک فوق دو برد جدا تهیه کردم که مطابق خطوط کشیده شده بهم وصل شده اند
                قبل از وصل کردن برد رله ها ، مشکل شماره 3 پست قبلی که با فعال شدن یک خروجی ، دیگر خروجی ها فعال نمی شود ولی متاسفانه با وصل برد رله ها ( البته فقط دو رله داشتم و سومی هنوز نخریدم) اگر یکی خروجی فعال شود دیگر کانال چراغ LED و رله دیگر هم فعال می شود
                نحوه سیم کشی هم با خط نشان داده ام

                دیدگاه


                  #38
                  پاسخ : مشکل ساده با برنامه ساده

                  شماتیک و عکس برد را که گذاشتم
                  فایل زیر نیز شبیه سازی کامل مداره با پروتئوس که کامل جواب داده ولی در عمل نویز ناشی از رله باعث ایجاد مشکل و عملکرد غیر عادی در میکرو می شد
                  که خودم به کمک یکی از دوستان eca که در inbox پیام گذاشته بود رفع کردم
                  اگر در شکل ببینید تغذیه هم رله و هم میکرو از یک نقطه بود که بعد از رگولاتور بود که بعد از جدا کردن تغذیه رله از میکرو که در واقع مثبت رله را به قبل از میکرو و دقیقاً بعد از خروجی آداپتور زدم و تغذیه مثبت میکرو را به بعد از رگولاتور زدم عملکرد درست شد :applause:

                  فقط مشکل نرم افزار مانده که لطفاً کمک کنید
                  1- نرم افزاری: که قبلاً هم بهش اشاره کردم برنامه را نتوانستم خوب بنویسیم و هدفم این بود که اگر بار اول دکمه را فشار می دهیم خروجی توسیکل قطع و وصل بره و اگر برای بار دوم فشرده شود مدار آن کانال همانجا قطع بشه ولی برنامه فقط در انتهای سیکل اگر برای بار دوم زده شه مدار خروجی را قطع می کنه

                  http://s5.picofile.com/file/81892713...Relay.rar.html


                  بخشی از برنامه که مربوط به یک کانال است و مورد داره
                  کد:
                  Enable Timer0
                  Enable Interrupts
                  On Timer0 T0_isr
                  Start Timer0
                  Timer0 = 178
                  
                  Main:
                  Do
                  Debounce Pinb.1 , 0 , Led0
                  Loop
                  
                  Led0:
                  A = 1 : B = 0 : Incr M
                  Goto Main
                  
                  T0_isr:
                  Timer0 = 178
                  
                  
                  If A = 1 Then
                    If M = 1 Then
                     Set Portd.0
                     C = 0 : D = 0
                    End If
                     Incr M
                     Incr C
                     If C = 200 Then
                       C = 0
                       Toggle Portd.0
                       Incr D
                       If D = 10 Then
                        Set Portd.0
                        A = 0
                       End If
                     End If
                  End If
                  
                  
                  If A = 1 Then
                    If M = 3 Then
                     Reset Portd.0
                     A = 0
                    End If
                    M = 0
                  End If

                  دیدگاه


                    #39
                    پاسخ : مشکل ساده با برنامه ساده

                    سلام :bye
                    واقعا مدار جالبی شده خوشم اومد ازش. :applause:
                    مشکل برنامه رو هم میتونیم با هم حل کنیم.
                    من سعی میکنم تا فردا برنامه صحیح رو قرار بدم.
                    اگه مشکلی تو هرکدوم از بخش ها پیش اومد بگین. :read:
                    Telegram:
                    @reza_br_2489


                    Instagram:
                    _amp_c

                    دیدگاه


                      #40
                      پاسخ : مشکل ساده با برنامه ساده

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

                      فقط وقتی پروگرم می کنم نتایج با برنامه وشبیه سازی خیلی فرق می کنه، زمان با زمان تنظیمی در نرم افزار فرق داره و خروجی ثابت نمیشه و همش چشمک میزنه
                      کریستال خارجی 8MHz استفاده کردم، فیوز بیتها را در بسکام مطابق شکل زیر چه جوری باید تنظیم کنم؟

                      دیدگاه


                        #41
                        پاسخ : مشکل ساده با برنامه ساده

                        سلام. دوستان من هم مطالب رو دنبال می کنم ، چرا کسی جواب نمی ده ، تنظیمات فیوز بیتها توی بسکام چطوریه؟

                        دیدگاه


                          #42
                          پاسخ : مشکل ساده با برنامه ساده

                          برای تنظیم فیوز بیت به تصویر زیر دقت کنید. در این تصویر فیوز بیت میکرو بر روی 8 مگ داخلی تنظیم شده است.


                          نکات بسیار مهم در تهیه پروگرامر که متاسفانه فراموش میشود!

                          دیدگاه


                            #43
                            پاسخ : مشکل ساده با برنامه ساده

                            نوشته اصلی توسط lachini
                            برای تنظیم فیوز بیت به تصویر زیر دقت کنید. در این تصویر فیوز بیت میکرو بر روی 8 مگ داخلی تنظیم شده است.

                            متشکر زمانیکه 8 مک داخلی انتخاب میشه این خط زیر از برنامه باید نوشته بشه یا نه؟ در حالت خارجی چه خط زیر نوشته بشه؟
                            crystal = 8000000

                            دیگر فیوز بیتها چه؟ مثلاً CKOPT چه باید انتخاب بشوند؟

                            دیدگاه


                              #44
                              پاسخ : مشکل ساده با برنامه ساده

                              مقدار فرکانس اسیلاتور در برنامه همیشه باید مشخص باشد تا بر اساس آن کمپایلر میزان دقیق تاخیرها بتواند ایجاد کند. پس دستور فوق باید نوشته شود و براساس فرکانس انتخاب شده توسط شما تعیین میشود. مثلا در این مثال که از 8 مگ داخلی استفاده کردید باید 8000000 و برای حالتی که کریستال خارجی 16 مگ استفاده میکنید باید مقدار 16000000 را بنویسید.

                              مقدار CKOPT فقط در مواردی که کریستال خارجی استفاده میکنید. میتوانید مورد استفاده قرار دهید. البته کاملا اختیاری بوده و مزایای آن در دیتا شیت توضیح داده شده است.
                              پس اگر الان از 8 مگ داخلی استفاده میکنید به این گزینه CKPOT نیازی ندارید.

                              نکات بسیار مهم در تهیه پروگرامر که متاسفانه فراموش میشود!

                              دیدگاه

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