PDA

نسخه کامل مشاهده نسخه کامل : درخواست امداد! برای رفع اشکال برنامه



ne555
13-09-2013, 17:00
سلام دوستان.
این پروژه پایان ترم من هست،

AUTOMATIC ROOM LIGHT CONTROLLER WITH BIDIRECTIONAL VISITOR COUNTER


[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]



چیزی که ساختم:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])

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


درستش اینه که به این ترتیب عمل کنه:
شمارش +



تحریک سنسور یک
تحریک سنسور دو


شمارش منفی:


تحریک سنسور دو
تحریک سنسور یک


ولی مشکل اینه که برای شمارش منفی باید اینجوری کنم:



تحریک سنسور دو و ماندن دست جلو سنسور
تحریک سنسور یک و ماندن دست جلو سنسور
برداشتن دست از جلو سنسور یک
برداشتن دست از جلو سنسور دو



عیب یابی انجام دادم و به احتمال قوی بخش های سخت افزاری مشکلی ندارند و مشکل از برنامه هست.


برنامه اسمبلی این پروژه:






برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدالبته من فایلHex رو از این ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])سایت دانلود کردم و مستقیم ریختم رو میکرو:




برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

ne555
14-09-2013, 11:13
Help me
:n28:

mad86
15-09-2013, 04:19
ببينيد خودتون ميگيد اشكال سخت افزاري نداره ، ديباگ كردن نرم افزار هم ازونجايي كه با اسمبلي هست خيلي زمانبره و...

من توصيه ميكنم برنامه رو با بيسيك يا سي و زبان هاي سطح بالاتر خودتون بنويسيد، خودتون هم الگوريتمش رو در آورديد. وبجاي اين همه سختي بديد با اسمبلي ، با دوتا فرمان IF وقتي پالس مياد متغيري رو increase و decrease كنيد

فقط توضيح اينكه شما همونطور ك گفتيد وقتي كسي وارد ميشه ممكنه چندين پالس اشتباه در اثر برخورد دست و...بوجود بياد كه اين لينك كه گذاشتيد اين مشكل رو -اگر اشتباه نكنم- با يك مونواستابل 555 حل كرده. يعني وقتي يك پالس ورودي مياد چند لحظه زمان رو نگه ميداره تا شخص از جلو سنسور عبوركنه. كه بنظر من ميشد اين رو با يك تاخير (چيزي شبيه تاخيري كه براي ميكروسوئيچ ها در نظر ميگيريم) هم ايجاد كنيم كه نيازي به 555 هم نبود. بجاي 8051 هم ميشه از avr كمك بگيريد . بجاي اون فوتو ديود ها هم از آشكارسازهاي گيرنده تلويزيون( گيرنده كنترل مادون قرمز تلويزيون هاي پارس و..) كه درواقع يك آي سي هست كه احتمال خطا رو بشدت مياره پايين فقط تو قسمت فرستنده بايد از يك اسيلاتور استفاده كنيد

بهرحال اين مدار داراي خطاي زيادي هست و هركسي كه وارد بشه ميتونه سريع برگرده يا مثلا زياد جلو سنسور بمونه و اطلاعات غلط فرستاده بشه. بايد با افزايش تعداد سنسورها و يا استفاده از PIR ها يا روش هاي ديگر، وجود شخص رو داخل و يا خارج تشخيص بديد و خطاهاي احتمالي رو به حداقل برسونيد


[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

ne555
15-09-2013, 18:33
ممنونم دوست من. امید داشتم با رفع اشکال همین برنامه مشکلش حل بشه. و اگر الان بتونید در رفع اشکال همین برنامه کمک کنید ممنون میشم.
آخه خودم هم هیچی از برنامه نویسی یاد نگرفتم! در حد پاسینگ بود.
میزان زمان مونو استابل رو هم تغییر دادم و تغییری توی عملکرد مدار ایجاد نشد و بخاطر این مطمئن شدم مشکل از برنامه هست.