در این پست از سایت اِمیک, یک پروژه ساده ولی در عین حال بسیار کاربردی به نام پروژه کنترل سطح اب مخزن قرار داده شده است. این پروژه با استفاده از میکروکنترلر AVR طراحی و ساخته شده است.
عملکرد این پروژه به این صورت می باشد که ما با استفاده از یک سوئیچ شناور سطح اب یک مخزن را اندازه گیری می کنیم و در صورتی که اب مخزن کمتر از مقدار مورد نظر ما شد, سوئیچ شناور ان را تشخیص داده و یک پمپ اب را روشن می کند و زمانی که حجم اب مخزن به مقدار مورد نظر ما رسید پمپ اب را خاموش می کند. در انتهای مطلب می توانید کلیپ تست عملی پروژه را مشاهده کنید. در زیر تصویر یک سوئیچ شناور را مشاهده می کنید:
سوئیچ شناور دارای دو عدد سیم می باشد و مانند یک سوئیچ معمولی عمل می کند. زمانی که شناور ان پایین است مانند یک سوئیچ بسته عمل می کند و در واقع دو سیم ان اتصال کوتاه هستند و زمانی که شناور ان بالا است مانند یک سوئیچ باز عمل می کند و دو سییم ان اتصال باز هستند.
پروژه AVR کنترل سطح اب مخزن :
در زیر شماتیک این پروژه را مشاهده می کنید, برای دیدن تصویر در اندازه بزرگتر ان را ذخیره کنید.
همانطور که مشاهده می کنید در این پروژه از میکروکنترلر ATmega16 استفاده کرده ایم. یکی از دو سیم سوئیچ شناور به پایه 40 میکرو (پین 0 از پورت A) متصل شده و سیم دیگر ان به زمین (GND) متصل شده است. زمانی که سطح اب مخزن پایین است سوئیچ شناور وصل بوده و پایه 40 میکرو زمین می شود. زمانی که سطح اب مخزن بالا هست سوئیچ شناور قطع بوده و پایه 40 میکرو از طریق مقاومت بالاکش داخلی میکروکنترلر که در برنامه فعال کرده ایم, یک منطقی (VCC) می شود.
زمانی که سطح اب مخزن پایین است, میکروکنترلر از طریق ترانزیستور Q1 که در حالت سوییچینگ استفاده شده و رله پمپ اب را فعال می کند. همچنین یک LED قرمز نیز که به پایه 16 میکرو متصل است روشن می شود. همانطور که مشاهده می کنید ما از موتور پمپ اب 12 ولت در شماتیک بالا استفاده کرده ایم, البته از انجایی که در این پروژه برای قطع و وصل موتور پمپ از رله استفاده کرده ایم, شما می توانید موتورهای پمپ اب 220 ولت را هم به این پروژه متصل کنید (به حداکثر جریان پمپ اب و رله توجه شود)
زمانی که سطح اب مخزن بالا است, یک LED سبز رنگ متصل به پایه 15 میکرو روشن می شود و پمپ اب نیز خاموش است.
توجه کنید که پایه های تغذیه میکروکنترلر (پایه 10 و 11) را که در شماتیک بالا نیست, فراموش نکنید به تغذیه 5 ولت متصل کنید.
برنامه کدویژن :
در این پروژه فرکانس میکروکنترلر 1 مگاهرتز تنظیم شده است. در زیر برنامه نوشته شده به زبان C و کامپایلر کدویژن را مشاهده می کنید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
////////// WWW.EMIC.IR ////////// #include <mega16.h> #include <delay.h> void main(void) { DDRA=(0<<DDA7) | (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) | (0<<DDA0); PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (1<<PORTA0); DDRD=(0<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (1<<DDD2) | (1<<DDD1) | (1<<DDD0); PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0); while (1) { if(PINA.0==0) { //برابر صفر بود يا به عبارتي ديگر در صورتي که سوييچ شناور کمبود اب را تشخيص داده بود پمپ اب فعال مي شود A دستور شرطي روبرو در صورتي که پين 0 از پورت// PORTD.0=1; //فعال کردن پمپ اب// PORTD.1=0; //خاموش کردن ال اي دي سبز// PORTD.2=1; //روشن کردن ال اي دي قرمز// delay_ms(3000); } if(PINA.0==1) { //دستور روبرو در صورتي که سطح اب بالا بود و مخزن پر بود پمپ اب را خاموش مي کند// PORTD.0=0; //خاموش کردن پمپ اب// PORTD.1=1; //روشن کردن ال ای دی سبز// PORTD.2=0; //خاموش کردن ال ای دی قرمز// } } } |
برای جلوگیری از قطع و وصل شدن مکرر پمپ اب در لبه ی مرزی در خط 19 برنامه از delay استفاده شده است که شما می توانید به دلخواه مقدار ان را کمتر یا بیشتر کنید.
برنامه این پروژه بسیار ساده می باشد و توضیحات قسمت های مهم ان نوشته شده, اگر سوالی داشتید می تونید در قسمت نظرات مطرح کنید.
کلیپ تست عملی پروژه :
من برای تست پروژه, پمپ اب نداشتم و به همین خاطر بجای پمپ اب از یک موتور معمولی استفاده کردم.
پسورد فایل زیپ : www.emic.ir
نظر یادتون نره…
سلام
شما توی فایل پروتئوستون از سوئیچ شناور استفاده کردید اما برای ما ارورر میده
نسخه پروتئوس شما با ما متفاوت هست؟!
چطور میتونم از همین سوئیچ شناور استفاده کنم؟!
سلام, سوئیچ شناور استفاده شده قابل شبیه سازی نیست و فقط برای نمایش نحوه اتصال استفاده شده است. برای شبیه سازی در پروتئوس بجای سوئیچ شناور از یک سوئیچ معمولی استفاده کنید.
سلام خسته نباشید میشه طرح pcb بزارید ممنون میشم
سلام خسته نباشید
من برنامه رو ران که میکنم ارورمیده.علتش چیه؟
وبجای float liquid level switch چه دیتا شیت دیگه ای میتونم استفاده کنم؟
سلام, برای شبیه سازی می توانید بجای سوئیچ شناور از یک سوئیچ معمولی استفاده کنید.
سلام پمپ شناور اگر کامل تو اب باشه خراب نمیشه
این مدل که شما بستید چون پمپ بالای سطح اب هست زمانی که مخزن ما کوچیک است جواب میده ولی مخزن بزرگ باشه عملی نیست چون اگه اب زیر شناور بیاد با اینکه مخزن پور است پومپ روشن میشه
سلام همین پروژه رو برای کنترل از راه دور چطور باید ببندیم
سلام میخاستم ببینم میشه جای float liquid level switch یچیزه دیگه گذاشت؟
چون با این قطعه کد ران نمیشه ینی این قطعه رو نمیشناسه.
ممنون
سلام, برای شبیه سازی می تونید بجای سوئیچ شناور یک کلید معمولی قرار دهید
سلام باتری و موتور شماتیک pcb در پرئتیوس ندارن باید چکار کنیم که جابراش بزاریم که بعد روی برد سوراخ کنیم
سلام تو پرتیوس رله کار نمی کنه که موتور رو روشن کنه ولی led ها به ترتیبی که برنامه نوشتیم کار میکنن مشکل از کجاست
سلام, خودتون میگید دیگه مشکل از رله تو شبیه سازی هست احتمالا رله ای که استفاده کردید اکتیو نیست. بصورت عملی تست کنید
من میخام پروژه ببندم کدویزن آن ایا خراب نیست؟
سلام میشه برنامه شو با lcd بنویسین من هر کاری کردم نشد بنویسم مطلب درباره lcd هم خوندم اما بازم error میده
خون
لطفا کمک کنید چند روزه دارم تلاش میکنم نمیشه متاسفانه..
سلام, متاسفانه بدلیل مشغله کاری این امکان وجود ندارد. سوالی داشتید بپرسید راهنمایتون میکنم. چه اروری میده؟
جای سوئیچ شناور چی در پرتئیوس بزاریم بفهمیم مدارمون درست هست یانه
یک کلید معمولی
سلام اگر بخوایم عملکرد مدار رو روی lcd نمایش بده چه مراحلی رو باید انجام بدیم و روی برنامه نویسی ای سی چی اضافه کنیم
سلام, یک LCD کاراکتری به پورت B یا C متصل کنید و درون برنامه در دو شرط if که هر کدام را توضیح دادم برای چه حالتی از مخزن اب است, متن مورد نظرتون را برای نمایش روی lcd می نویسید. در صورتی که با دستورات مربوط به lcd کاراکتری اشنا نیستید این پست را مطالعه کنید
سلام مهندس برای اوردن اسم موتور و سطح سنج اب در پروتیوس چه کلمه ای بزنیم بیاد
مرسی از سایت خوبتون
سلام, برای موتور که همون motor و شناور هم در پروتئوس نیست من خودم شکل شناور را در پروتئوس کشیدم تا نحوه اتصالات در شماتیک بالا مشخص بشه و قابل شبیه سازی هم نیست
سلام
بجای bc547 میشه bc107 استفاده کرد؟اگه نمیشه مشابه bc547 کدوم ترانزیستوره؟
متشکر
سلام, بله از BC107 نیز می تونید استفاده کنید
سلام خوبین
ببخشین برنامشو نوشتن کار سختیه؟
من برنامه نویسی بلد نیستم چجوری میتونم درست کنم
سلام, برنامه این پروژه قرار داده شده و از انتهای مطلب می تونید فایل های پروژه را دانلود کنید. فقط کافیه که برنامه را روی میکرو پروگرام کنید