اطلاعیه

Collapse
No announcement yet.

آسانسور با avr

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

    آسانسور با avr

    سلام
    من میخوام یه چیزی شبیه آسانسور بسازم که 12 طبقه داره
    می خوام وقتی به هر طبقه رسید اون طبقه رو روی lcd نشون بده این قسمتش مشکلی نداره
    من می خوام هر طبقه (شمارش) توی eeprom ذخیره کنه
    وقتی برق قطع شده بعد از وصل شدنش نشون بده روی lcd کدم طبقه است با این قسمتش مشکل دارم
    ممنون
    موفق باشید

    #2
    پاسخ : آسانسور با avr

    با چه زبانی می نویسید؟
    www.icesi.ir

    دیدگاه


      #3
      پاسخ : آسانسور با avr

      علاوه بر این که زبان برنامه نویسیش مهمه ، انتخاب درست نوع کنترلر هم ضروریه . اگه به صورت یه کار کاملا صنعتیه که پیشنهاد می کنم با PLC انجام بدی .

      دیدگاه


        #4
        پاسخ : آسانسور با avr

        اگه بخوان این پرژه رو عملی کنن من پیشنهاد میکنم ایمنی در کار رو فراموش نکنن چون طراحی آسانسور خیلی هم راحت نیست.


        بحث ترمز های اضطراری خودش یه دنیاییه
        www.icesi.ir

        دیدگاه


          #5
          پاسخ : آسانسور با avr

          اگه خواستید آسانسور بسازی اینو فراموش نکن که اگه برق قطع شد آسانسور باید خودشو به نزدیک ترین طبقه برسونه.
          در طراحی آسانسور باید همه ی احتمالات رو در نظر بگیری که چند تاشو دوستان معرفی کردن.
          در ضمن به قول آقا حامد شما اگه از plc استفاده کنی بهتر و صنعتی تر هستش.
          موفق باشی

          دیدگاه


            #6
            پاسخ : آسانسور با avr

            من هم با نظر دوستان کاملا موافقم
            اما برای سوالی که کردی:
            باید از یک حالت میکانیکی استفاده کنی.
            یعنی با رد شدن از هر طبقه یک چیزی مثل یک زبانه یک چرخ پره دار رو یک دونه تغییر بده.وقتی برق قطع بشه چیزی تغییر نکرده
            خدا گفت : به جهنم ببریدش، او برگشت و با تعجب به خدا نگاه کرد. خدا گفت : به بهشت ببریدش. فرشتگان پرسیدند: چرا؟! خدا گفت : او هنوز به من امیدوار است...

            دیدگاه


              #7
              پاسخ : آسانسور با avr

              سلام
              نه اونقدر که شما فکر میکنید خود آسانسور نیست در واقع نشوندهندی طبقات آسانسور هست
              زبان برنامه نویسی bascom
              نوع میکرو atmega32
              من فقط با نشوندادن این که بعد از قطع برق کدوم طبقه است مشکل دارم
              یعنی با خوندن eeprom
              ممنون
              موفق باشید

              دیدگاه


                #8
                پاسخ : آسانسور با avr

                خب اگه این جوریه که خیلی سادست.
                تو به هر نحوی بالاخره متوجه وضعیت آسانسور میشی دیگه.
                پس یه عدد داری که شماره طبقه ای که آسانسور هست رو نشون میده.( فرض می کنیم اون رو تو EEP می ریزی)
                هر دفعه که مقدار EEP تغییر کرد ( یعنی رفت به یه طبقه دیگه) مقدار EEP رو تو خونه حافظه EEPROM بریز. با این دستور:
                Writeeeprom EEP,0
                Waitms 5
                با این کار خونه 0 حافظه با شماره طبقه پر میشه.

                هر وقت هم خواستی اون رو بخونی این طوری عمل کن:
                Readeeprom EEP,0
                با این کار آخرین وضعیت آسانسور رو تو EEP می ریزی.

                در ضمن فیوز بیت مرتبط با EEPROM رو هم فعال کن.

                دیدگاه


                  #9
                  پاسخ : آسانسور با avr

                  سلام
                  خسته نباشید
                  این برنامه ای هست که من نوشتم ولی نمی دونم اشکالش چی هست که این خطا هارو می ره؟
                  Error:7 Line:0 IF THEN expected[125],in File:
                  Error:123 Line:0 END IF expected,in File:
                  وقتی هم که روش دوبار کلیک می کنم هیچ خطی رو به عنوان خطا نشون نمی ده
                  به نظر شما مشکلش چی هست؟
                  یک سئوال دیگه:
                  بعد از دستور Writeeeprom
                  waitms 4 گذاشتن تاخیر ضروری هست؟
                  برای این دستور Readeeprom
                  هم می خواد؟
                  ممنون
                  موفق باشید
                  $regfile "m32def.dat"
                  $crystal = 8000000
                  Config Pinc.0 = Input
                  Config Pinc.1 = Input
                  Config Pinc.2 = Input
                  Config Pinc.3 = Input
                  Config Pinc.4 = Input
                  Config Pinc.5 = Input
                  Config Pinc.6 = Input
                  Config Pinc.7 = Input
                  Config Pina.0 = Input
                  Config Pina.1 = Input
                  Config Pina.2 = Input
                  Config Pina.3 = Input
                  Dim A As Byte
                  Dim B As Byte
                  If Pinc.0 = 1then
                  Readeeprom B , 0
                  Locate 1 , 0
                  Lcd B
                  If Pinc.1 = 1then
                  Readeeprom B , 1
                  Locate 1 , 1
                  Lcd B
                  If Pinc.2 = 1then
                  Readeeprom B , 2
                  Locate 1 , 2
                  Lcd B
                  If Pinc.3 = 1then
                  Readeeprom B , 3
                  Locate 1 , 3
                  Lcd B
                  If Pinc.4 = 1then
                  Readeeprom B , 4
                  Locate 1 , 4
                  Lcd B
                  If Pinc.5 = 1then
                  Readeeprom B , 5
                  Locate 1 , 5
                  Lcd B
                  If Pinc.6 = 1then
                  Readeeprom B , 6
                  Locate 1 , 6
                  Lcd B
                  If Pinc.7 = 1then
                  Readeeprom B , 7
                  Locate 1 , 7
                  Lcd B
                  If Pina.0 = 1then
                  Readeeprom B , 8
                  Locate 1 , 8
                  Lcd B
                  If Pina.1 = 1then
                  Readeeprom B , 9
                  Locate 1 , 9
                  Lcd B
                  If Pina.2 = 1then
                  Readeeprom B , 10
                  Locate 1 , 10
                  Lcd B
                  If Pina.3 = 1then
                  Readeeprom B , 11
                  Locate 1 , 11
                  Lcd B
                  Do
                  If Pinc.0 = 1then
                  A = 1
                  Writeeeprom A , 0
                  waitms 4
                  Locate 1 , 0
                  Lcd A
                  If Pinc.1 = 1then
                  A = 2
                  Writeeeprom A , 0
                  waitms 4
                  Locate 1 , 1
                  Lcd A
                  If Pinc.2 = 1then
                  A = 3
                  Writeeeprom A , 2
                  waitms 4
                  Locate 1 , 2
                  Lcd A
                  If Pinc.3 = 1then
                  A = 4
                  Writeeeprom A , 3
                  waitms 4
                  Locate 1 , 3
                  Lcd A
                  If Pinc.4 = 1then
                  A = 5
                  Writeeeprom A , 4
                  waitms 4
                  Locate 1 , 4
                  Lcd A
                  If Pinc.5 = 1then
                  A = 6
                  Writeeeprom A , 5
                  waitms 4
                  Locate 1 , 5
                  Lcd A
                  If Pinc.6 = 1then
                  A = 7
                  Writeeeprom A , 6
                  waitms 4
                  Locate 1 , 6
                  Lcd A
                  If Pinc.7 = 1then
                  A = 8
                  Writeeeprom A , 7
                  Locate 1 , 7
                  Lcd A
                  If Pina.0 = 1then
                  A = 9
                  Writeeeprom A , 8
                  waitms 4
                  Locate 1 , 8
                  Lcd A
                  If Pina.1 = 1then
                  A = 40
                  Writeeeprom A , 9
                  waitms 4
                  Locate 1 , 9
                  Lcd A
                  If Pina.2 = 1then
                  A = 11
                  Writeeeprom A , 10
                  waitms 4
                  Locate 1 , 10
                  Lcd A
                  If Pina.3 = 1then
                  A = 12
                  Writeeeprom A , 11
                  waitms 4
                  Locate 1 , 11
                  Lcd A
                  Loop
                  End

                  دیدگاه


                    #10
                    پاسخ : آسانسور با avr

                    بدون توجه به چیزی که نوشتی باید بگم که Syntax دستور If رو درست نخوندی. ببین اگه از دستور If استفاده می کنی باید دقت کنی که حتما بعد از دستورات زیر مجموعه اون از End If استفاده کنی. مگر این که فقط یه دستور داشته باشی که اون رو هم باید در خط If بنویسی.

                    حتما به Help نرم افزار و دستور If مراجعه کن.

                    حتما بعد از دستور Writeeeprom تاخیر بذار.
                    برای خوندن از حافظه نیازی به تاخیر نیست.

                    دیدگاه


                      #11
                      پاسخ : آسانسور با avr

                      سلام.

                      همونطور که حامد جان گفت از دستور END IF پایان هر if استفاده کن.

                      برای پیکربندی پورت c به عنوان ورودی از دستور config portc=input هم میتونی به جای اون 8 خط استفاده کنی.

                      www.icesi.ir

                      دیدگاه


                        #12
                        پاسخ : آسانسور با avr

                        سلام
                        آقا config خوب جواب نمیده(لااقل برای من) از روش زیر برای پیکره بندی مثلا پورت D استفاده کنید.
                        ddrD = & b111111111
                        توضیح:
                        اول ddr را بنوسید بعد اسم پورتتان را در کنارش بنویسید.
                        اون عدد هایی هم که نوشتم مفهومش اینه:
                        به ترتیب از چپ به راست پین های اون پورت خاص شروع می شه یعنی :01234567
                        حالا اگه هر کدوم از این پین ها را یک کنید یعنی آن پین به عنوان خروجی است و اگر صفرش کنید یعنی ورودی است.
                        یه سری به آخر صفحه ی 167 تا اول صفحه ی بعدش توی کتاب کاهه بزنید بد نیست.
                        منم خودم اول این مشکل را داشتم و وقتی به جای config از ddr استفاده کردم مشکلم حل شد.

                        دیدگاه


                          #13
                          پاسخ : آسانسور با avr

                          سلام
                          من متوجه منظورتون دقیقا نشدم
                          یعنی بعد از هر if یک end if بذارم؟
                          ببخشید من این قدر مزاحم می شم
                          موفق باشید

                          دیدگاه


                            #14
                            پاسخ : آسانسور با avr

                            ببیینید شما وقتی از دستور if استفاده میکنید باید در پایان همون خط عملکرد if رو بیان کنید مثل کد زیر:
                            IF A=10 THEN GOTO MILAD
                            خط بالا میگه اگه Aبرابر با 10 شد سپس به برچسب میلاد بپر. (تو این کد شما دستور IF رو به پایان رسوندی).
                            دستور بالا فقط یه کار برای شما انجام میده اونم فقط به برچسب میلاد میپره و لی بعضی مواقع شما میخواید چندین کار رو انجام بدید مثل کد خودتون:

                            If Pina.3 = 1then
                            A = 12
                            Writeeeprom A , 11
                            waitms 4
                            Locate 1 , 11
                            Lcd A

                            دیگه کد بالا رو توضیح نمیدم خودتون واردین و شما پس از دستور IF پنج کار رو انجام دادی ولی هنوز IF رو به پایان نرسوندی برای همین هم بعد از آخرین دستور از کد END IF استفاده کنید.

                            چند خط از برنامه رو من براتون اصلاح میکنم تا ببینید به چه صورته:

                            If Pinc.0 = 1then
                            Readeeprom B , 0
                            Locate 1 , 0
                            Lcd B
                            END IF
                            If Pinc.1 = 1then
                            Readeeprom B , 1
                            Locate 1 , 1
                            Lcd B
                            END IF
                            If Pinc.2 = 1then
                            Readeeprom B , 2
                            Locate 1 , 2
                            Lcd B
                            END IF
                            If Pinc.3 = 1then
                            Readeeprom B , 3
                            Locate 1 , 3
                            Lcd B
                            END IF

                            امید وارم توضیح من براتون واضح باشه. :smile:
                            www.icesi.ir

                            دیدگاه


                              #15
                              پاسخ : آسانسور با avr

                              سلام
                              ممنون از راهنمای هاتون
                              یک دنیا تشکر

                              دیدگاه

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