درخواست كمك براي رفع اشكال برنامه بيسيك يك دما سنج

mrkit

عضو جدید
سلام
استاد يه مدار دماسنج با مگا8 و سون سگمنت اول لطف كنيد ببينيد برنامه ايراد داره يا نه . بعد مشكل مدار اينه تو پروتئوس عالي كار ميكنه ولي روي برد سرعت زياده رقم يكان تند تند با شماره بعدي عوض ميكنه و چشمك ميزنه و وقتي مثلا عدد يك روشنه 2 يا 3 تا از سگمنت هايي كه بايد خاموش باشند كم نور روشن هستند .
در ضمن من اين برنامه رو ننوشتم فقط يه تغيير كوچيك توش دادم و بجاي سنسور دما يه پتانسيومتر گذاشتم اگه امكانش هست برنامه رو برام اصلاح كنيد .
سپاسگزارم

http://rozup.ir/info/405560/1470742181
 

Pro.Eng

متخصص plc
کاربر ممتاز
سلام.
دلیل مشکل میتونه دقت سیستم باشه. یا زمان سنجی در برنامه میکروتون. یا نویز یا ...
در ضمن شما پایه PC1 رو زمین کردید !!! و در متن برنامه توسط GetADC مقدار اون رو خوندید. این کار چه کمکی به شما میکنه !؟ همیشه مقدار 0 خوانده میشه. و تأثیری در عملکرد سیستم نخواهد داشت. اگر میخاید با یک مقدار مقایسه انجام بدید پس باید به اون مقداری غیر از 0 اعمال کنید. حالا یا از تغییر پتانسیومتر یا از طریق مقاومت های PULL UP یا PULL DOWN یا ترکیبی از اونها.
در برنامتون ، ADC شما با قدرت تفکیک 1024 ( PRESCALER =AUTO ) و رفرنس 2.56 ولت ( INTERNAL ) عمل میکنه.
یعنی 0 تا 2.56 ولت رو به 1024 قسمت مساوی تقسیم میکنه. پس مقدار دیجیتال شده شما بین 0 تا 1024 خواهد بود. مثلاً اگر 1.28 ولت اعمال بشه به ورودی مقدار دیجیتال تقریباً برابر با 500 خواهد بود.
پس اگر فرض کنیم پتانسیومتر و مقاومت های ورودی ، ولتاژی بین 0 تا 2.5 ولت رو ایجاد میکنن پس مقدار متغیر A بین 0 تا 1024 تغییر خواهد کرد.
حالا با توجه به اینکه سنسور شما در هر دمایی چه ورودی خواهد داشت میتونید تصمیم بگیرید که در دمای معین چه مقداری بین 0 تا 1024 خواهید داشت.
پس هر جهش در صعود عدد دیجیتالی برابر خواهد بود با 2.65 تقسیم بر 1024 یا 2.5 میلی ولت.
پس وقتی مثلاً 1 ولت به ورودی اعمال شود عدد دیجیتال شده ما برابر با 400 خواهد بود. و اگر فرض کنیم این ولتاژ که مربوط به خروجی سنسور هستش برابر با 30 درجه هستش ، پس 30 درجه مقدار A=400 رو به ما خواهد داد.
با توجه به رابطه دما - ولتاژ خروجی برای سنسورتون میتونید برنامه ی مورد نظر رو بنویسید. تمامی روابط هم خطی هستند.
دما ولتاژی بین 0 تا 5 به شما خواهد داد. ولتاژ 0 تا 5 عددی بین 0 تا 1024 به شما خواهد داد. ( البته در اینجا باید REFRENCE رو خارجی در نظر بگیرید تا بتونید از حداکثر بازه دمایی سنسور بهره ببرید. اگر REFRENCE رو داخلی در نظر بگیرید فقط تا محدوده دمایی 2.56 ولت متناسب با سنسور قادر به اندازه گیری خواهید بود. )
پس بعد از اینکه از ADC خواندید و ضرب در طول جهش کردید ولتاژ به دست میاد. ولتاژ رو به دما تبدیل میکنید ( دیتا شیت سنسور ) و بعد MOD میکنید و بعد تقسیم میکنید و بعد روی 7SEG نشون میدید.
با توجه به اینها خودتون میتونید مشکلات برنامه رو بگیرید.
در ضمن فاصله بین سنسور تا میکرو رو کوتاه در نظر بگیرید تا نویز کم بشه. برای AVCC و AREF هم از نویز گیر های سلفی استفاده کنید.
موفق باشید.
 
بالا