شبیه سازی پمپ آب با میکروکنترلر Atmega32

مقدمه:با صنعتي شدن كشور ها مديريت منابع ابي از حالت هاي دستي به سمت حالت هاي اتوماتيك و الكتريكي پيش رفته است. امروزه در اكثر مناطق براي كنترل اب از پمپ هاي جابه جا كننده(مكنده) اب استفاده مي شود و براي كنترل مخازن وجو فردي ناظر براي روشن و خاموش كردن پمپ ها ضروري است اما با پيشرفت تكنولوژي توليد و توسعه كيت هاي كنترل كننده اب نسبت به قبل افزايش يافت كه جايگزين مناسبي براي فرد ناظر مي باشد. در اين پروژه ما با نرم افزار هاي Proteus و Code Vision يك كنترلر پمپ اب طراحي كرده ايم كه علاوه بر قطع و وصل كردن پمپ اب ميزان اب مخزن را در مانيتوري كوچك نمايش مي دهد.ابزار ها :در اين پروژه از دو ابزار Proteus و Code Vision استفاده شده است. در اين پروژه از برد ATMEGA32 براي توسعه استفاده شده است.Proteus :شرح : proteus برنامه اي کاربردي و کارآمد براي دوستان الکترونيکي! با استفاده از اين نرم افزار ميتوانيد براحتي انواع مدارها , ميکروکنترلرها , ميکروپروسسر هارا طراحي و حتي اجرا کرد تا مشاهده نمود در حالات مختلف اين مدار چه واکنشي نشان ميدهد و جه خروجي خواهد داشت و در صورت وجود هر گونه خطا برنامه را ديباگ کرد در ادامه ويژگي هاي اين برنامه کاملا شرح داده ميشود.نرم افزار پروتئوس دو بخش اصلي دارد.بخش Schematic Capture براي طراحي و شبيه سازي مدارات الکترونيکي و بخش PCB Layout براي طراحي برد مدار چاپي است.در بخش Schematic Capture نرم افزار پروتئوس مي توان مدارات الکترونيکي آنالوگ و ديجيتال را شبيه سازي کرد.يکي از قابليت هاي نرم افزار پروتئوس اين است که از برخي ميکروکنترلرهاي AVR، برخي ميکروکنترلرهاي شرکت Microchip Technology، برخي ميکروکنترلرهاي شرکت NXP Semiconductor، برخي ميکروکنترلرهاي شرکت STMicroelectronics و ... پشتيباني مي کند و مي توان با استفاده از نرم افزار پروتئوس به شبيه سازي مدارات مبتني بر اين ميکروکنترلرها و ديباگ و شبيه سازي نرم افزاري برنام? نوشته شده براي اين ميکروکنترلرها پرداخت.اين نرم‌افزار از نظر قدرت، آساني و انعطاف‌پذيري به‌ويژه براي مبتدي‌ها و نسبت به نرم‌افزارهاي ديگر، بسيار مورد توجه قرار گرفته‌است.قابليت‌هاي نرم افزار Proteus:طراحي مدارات الکترونيکيشامل ابزار‌هاي لازم براي طراحي حرفه‌ايمدلسازي دستگاه‌هاي قابل برنامه ريزيطراحي مسيريابي‌هاي پيشرفتهصرفه جويي در وقت و هزينه طراحي مدارشبيه سازي مدارات ميکرو کنترلري در سطح بسيار حرفه‌ايدارا بودن کليه المان‌هاي اندازه گيري واقعي نظير اسيلوسکوپ، سيگنال ژنراتور، ولت متر، آمپر متر و...امکان افزودن کتاب خانه‌هاي قدتمند و دارار بودن کليه قطعات الکترونيکامکان طراحي pcb براي مدار شبيه سازي شده بدون نياز به تغيير دادن مدارامکان ديباگ کردن برنامه‌ها و اجراي خط به خط آن‌ها در ميکرو کنترلرو ...Code Vision :شرح : يک نرم افزار تخصصي براي رشته هاي برق و الکترونيک (گرايش سخت افزار) مي باشد. در واقع اين نرم افزار يک کامپايلر براي زبان برنامه نويسي C مي باشد که براي برنامه نويسي ميکروکنترلر هاي AVR از آن استفاده مي شود. اين برنامه محيط برنامه نويسي و کامپايل کردن برنامه نوشته شده براي برنامه ريزي ميکروکنترلر را براي شما فراهم مي کند.بسياري از افراد حتي کساني که رشته کامپيوتر مي باشند با اين نرم افزار بخوبي آشنا مي باشند. آخرين نسخه اين برنامه قدرت بسيار بيشتري پيدا کرده است و از طرفي مشکلات قبلي آن برطرف شده است. اين برنامه در تمامي نسخه هاي ويندوز قابل نصب است.Page BreakATMEGA32:میکروکنترلر ATMega32یک میکروکنترلر ۸بیتی کم مصرف از تکنولوژی CMOSو از خانواده MEGA AVR است که بر اساس معماری RISCبهبود یافته می باشد. با اجرای دستورات قدرتمند در یک سیکل راMHz ) در هرMillions Instruction Per Second ( مخفف1MIPS کلاک این میکرو سرعتی معادل فراهم می کند. یعنی زمانی که فرکانس کاری میکرو 1مگاهرتز است ، میکرو می تواند یک میلیون دستور العمل در هر ثانیه انجام دهد. این قابلیت به طراح سیستم این اجازه را می دهد تا توان مصرفی میکرو را برحسب سرعت پردازش مورد نیاز پروژه مدیریت کندکارایی بالا ، توان مصرفی کم ، یک میکروکنترلر ۸بیتی از خانواده AVRدارای معماری RISCبهبود یافتهدارای 1۳1دستورالعمل قدرتمند که اکثر آنها تنها در یک سیکل کلاک اجرا می شونددارای ۳2رجیستر عمومی ۸بیتی همه منظورهعملکرد کاملا پایدارسرعتی حداکثر تا MIPS 1۶در فرکانس MHz1۶دارای ضرب کننده جداگانه داخلی که در دو کلاک سیکل عمل ضرب را انجام می دهددارای حافظه غیر فرار برای برنامه و دیتا32کیلوبایت حافظه فلش داخلی قابل برنامه ریزیپایداری : تا 10،000بار نوشتن و پاک کردنEEPROMبایت حافظه102۴ -پایداری : تا 100،000بار نوشتن و پاک کردن2کیلوبایت حافظه SRAMداخلیدارای قفل برنامه برای حفاظت نرم افزاری از حافظهقابلیت ارتباط به صورت JTAGتحت استاندارد)(IEEE std. 1149.1قابلیت مشاهده تمامی رجیسترها و متوقف کردن برنامه روی دستور خاص جهت عیب یابیبرنامه ریزی حافظه فلش، ،EEPROMفیوزبیت ها و بیت های قفل ) ( Lock Bitsاز طریقارتباطJTAG62خصوصیات جانبی میکروکنترلردو تایمر/کانتر ۸بیتی و یک تایمر/کانتر 1۶بیتییک کانتر زمان حقیقی ) (RTCبا اسیلاتور جداگانه۴کانال برایPWM۸کانال برای مبدل آنالوگ به دیجیتال 10بیتی۸کانال معمولی یک طرفه۷کانال تفاضلی ( که این قابلیت فقط در بسته بندی TQFPوجود دارد)دارای 2کانال تفاضلی با گین قابل برنامه ریزی 10 ، 1و 200برابر کنندهقابلیت ارتباط با پروتکل سریال دوسیمهI2Cدارای پورت USARTسریال قابل برنامه ریزیقابلیت ارتباط سریال SPIبه صورت MasterیاSlaveدارای تایمر قابل برنامه ریزی Watchdogبا اسیلاتور داخلی جداگانهدارای مقایسه کننده آنالوگ داخلیخصوصیات ویژه میکروکنترلرریست خودکار میکرو در هنگام روشن شدنشناسایی ولتاژ تغذیه ورودی قابل برنامه ریزی و ریست خودکار میکرودارای اسیلاتور RCداخلی کالیبره شدهمنابع وقفه داخلی و خارجیدارای ۶حالت خواب ) ( Sleep Modeبرای کم مصرف شدن میکروورودی/خروجی و بسته بندیدارای 32 خط ورودی/خروجی قابل برنامه ریزیدر بسته بندی های مختلف 40پایه ، PDIPMLFپایه۴۴ وTQFP پایه۴۴ولتاژهای کاریATMega32Lولت در۵٫۵ تا۷ -ATMega32ولت در۵٫۵ تا۵ -فرکانس های کاری63ATMega32LبرایMHz ۸ تا0 -ATMega32برایMHz 1۶ تا0 –طراحي هاي انجام شده در Proteus :اين طرح كلي طراحي شده در پروتئوس است كه داراي بخش هاي مختلفي مي باشد هر بخش به صورت جداگانه در زير توضيح داده مي شود:بخش بالا كليد هايي اند كه نشان دهنده مقادير سنسور هاي داخل مخزن اب مي باشند. در مخزن اب ما 4 سنسور وجود دارند كه يكي از ان ها در 25 درصد ظرفيت مخزن و يكي ديگر در 50 درصد ضرفيت مخزن و ديگري در 75 درصد ظرفيت مخزن و اخري در 100 درصد ضرفيت مخزن قرار دارند كه وقتي اب به ان سطح برسد ان سنسور ها فعال مي شوند. اين فرايند را توسط 4 كليد مدل سازي كرده ايم.اين چهار مقاوت كه به يك سر ان به زمين وصل است و سر ديگري هر كدام از ان ها به كليد وصل است كه مقدار اوليه كليد را pull down سخت افزاري يا صفر مي كند.در اين قسمت از 3 گيت AND استفاده شده است كه به اين منظور اسا اگر سنسور 75 درصد روشن شود بايد سنسور هاي قبلي ان نيز روشن شده باشند تا اكتيو شود يعني سنسور هاي 25 درصد و 50 درصد هم بايد اكيو باشند. . اين مسئله براي سنسور هاي 50 درصد و 75 درصد و 100 درصد به اجرا در امده است براي همين 3 عدد گيت AND داريم.در اين قسمت يك مانيتور كوچك داريم كه داراي 2 رديف است و 16 خانه در هر رديف كه در ان اطلاعات روشن يا خاموش بودن متور و ميزان لول اب با توجه به خروجي هاي سنسور ها نمايش داده مي شود.اين برد همان برد ATMEGA32 است كه براي توسعه ي مدل از اين برد استفاده شده است . در پروتئوس نيازي به مشخص كردن برق تيست بخش برق مدل هاي پروتئوس به صورت خودكار وصل مي باشند.در اين بخش متور DC تعريف شده است. كه براي مدل اوليه اين متور با برق خود دستگاه كار مي كند و ولتاژ ان 5volt مي باشد. در اينده مي توان با هر گونه پمپ ابي اين پروژه را پياده سازي كرد فقط كافيست اين پورت را به بخش كنترلي دستگاه وصل كرد(ممكن است براي اين كار نياز به يك مبدل ديگر باشد, طرح اين مبدل بستگي به پمپ اب انتخابي دارد.)كد هاي نوشته شده در Code Vision :ابتدا در نرم افزار code vision يك پروژه جديد مي سازيم و با استفاده از wizard نرم افزار نوع برد و نوع مانيتور را مشخص مي كنيم و همچنين مشخص مي كنيم كه اين مانيتور به كدام پورت ها وصل است. سپس كد ها را به گونه زير مي نويسيم:#include <mega32.h>#include <delay.h>#include <stdio.h>// Alphanumeric LCD functions#include <alcd.h>// Declare your global variables herevoid main(void){lcd_init(16);DDRB=0X00;PORTB=0X00;DDRC=0XFF;PORTC=0b00000000;lcd_gotoxy(0,0);lcd_putsf("MOTOR = OFF");lcd_gotoxy(0,1);lcd_putsf("WATER_Level=0% ");while (1){if(PINB.0==1){//level 100% motor offPORTC=0b00000000;lcd_gotoxy(0,0);lcd_putsf("MOTOR = OFF");lcd_gotoxy(0,1);lcd_putsf("WATER_Level=100%");}else if(PINB.1==1){//level 75% motor onPORTC=0b00000001;lcd_gotoxy(0,0);lcd_putsf("MOTOR = ON ");lcd_gotoxy(0,1);lcd_putsf("WATER_Level=75% ");}else if(PINB.2==1){//level 50% motor onPINC.0=1;lcd_gotoxy(0,0);lcd_putsf("MOTOR = ON ");lcd_gotoxy(0,1);lcd_putsf("WATER_Level=50% ");}else if(PINB.3==1){//level 25% motor onPORTC=0b00000001;lcd_gotoxy(0,0);lcd_putsf("MOTOR = ON ");lcd_gotoxy(0,1);lcd_putsf("WATER_Level=25% ");}else{//level 0% motor onPORTC=0b00000001;lcd_gotoxy(0,0);lcd_putsf("MOTOR = ON ");lcd_gotoxy(0,1);lcd_putsf("WATER_Level=+0% ");}}نتيجه گيري:اين پروژه يك مدل كارامد براي ساخت كيت كنترل كننده اب است. و با تهيه سنسور ها و برد مي توان اين پروژه را به صورت عملي بست و كيت كنترل كننده داراي مانيتور را ساخت. چالش اصلي اين پروژه براي ساخت اين است كه برق برد و متور با هم تفاوت دارند و نياز به دو منبع مجزا برا ان ها است يا يك اداپتور براي برد مي باشد.