مقدمه:
با صنعتي شدن كشور ها مديريت منابع ابي از حالت هاي دستي به سمت حالت هاي اتوماتيك و الكتريكي پيش رفته است. امروزه در اكثر مناطق براي كنترل اب از پمپ هاي جابه جا كننده(مكنده) اب استفاده مي شود و براي كنترل مخازن وجو فردي ناظر براي روشن و خاموش كردن پمپ ها ضروري است اما با پيشرفت تكنولوژي توليد و توسعه كيت هاي كنترل كننده اب نسبت به قبل افزايش يافت كه جايگزين مناسبي براي فرد ناظر مي باشد. در اين پروژه ما با نرم افزار هاي 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 Break
ATMEGA32:
میکروکنترلر ATMega32یک میکروکنترلر ۸بیتی کم مصرف از تکنولوژی CMOSو از خانواده MEGA AVR است که بر اساس معماری RISCبهبود یافته می باشد. با اجرای دستورات قدرتمند در یک سیکل راMHz ) در هرMillions Instruction Per Second ( مخفف1MIPS کلاک این میکرو سرعتی معادل فراهم می کند. یعنی زمانی که فرکانس کاری میکرو 1مگاهرتز است ، میکرو می تواند یک میلیون دستور العمل در هر ثانیه انجام دهد. این قابلیت به طراح سیستم این اجازه را می دهد تا توان مصرفی میکرو را برحسب سرعت پردازش مورد نیاز پروژه مدیریت کند
کارایی بالا ، توان مصرفی کم ، یک میکروکنترلر ۸بیتی از خانواده AVR
دارای معماری RISCبهبود یافته
دارای 1۳1دستورالعمل قدرتمند که اکثر آنها تنها در یک سیکل کلاک اجرا می شوند
دارای ۳2رجیستر عمومی ۸بیتی همه منظوره
عملکرد کاملا پایدار
سرعتی حداکثر تا MIPS 1۶در فرکانس MHz1۶
دارای ضرب کننده جداگانه داخلی که در دو کلاک سیکل عمل ضرب را انجام می دهد
طراحي هاي انجام شده در 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 here
void 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 off
PORTC=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 on
PORTC=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 on
PINC.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 on
PORTC=0b00000001;
lcd_gotoxy(0,0);
lcd_putsf("MOTOR = ON ");
lcd_gotoxy(0,1);
lcd_putsf("WATER_Level=25% ");
}
else
{
//level 0% motor on
PORTC=0b00000001;
lcd_gotoxy(0,0);
lcd_putsf("MOTOR = ON ");
lcd_gotoxy(0,1);
lcd_putsf("WATER_Level=+0% ");
}
}
نتيجه گيري:
اين پروژه يك مدل كارامد براي ساخت كيت كنترل كننده اب است. و با تهيه سنسور ها و برد مي توان اين پروژه را به صورت عملي بست و كيت كنترل كننده داراي مانيتور را ساخت. چالش اصلي اين پروژه براي ساخت اين است كه برق برد و متور با هم تفاوت دارند و نياز به دو منبع مجزا برا ان ها است يا يك اداپتور براي برد مي باشد.