تارا فایل

تبدیل کنتور الکترومغناطیسی به کنتور دیجیتالی اعتباری


بسم الله الرحمن الرحیم

عنوان پروژه:
تبدیل کنتور الکترومغناطیسی به کنتور دیجیتالی اعتباری

استاد راهنما:
جناب آقای دکتر جواد حدادنیا
استاد دفاع:
جناب آقای دکتر ابراهیم حسینی

ارائه دهندگان:
مینا عاشوری اشکلک
8418301267
و
عشرت حسن آبادی
8428301015

پاییز86
فهرست:
– مقدمه……………………………………………………………………………………….2
فصل اول :
– اساس کاردستگاههای اندازه گیری …………………………………………………. 3
– اساس کارکنتورالقایی تکفاز………………………………………………………………..5
فصل دوم :
-آشنایی با میکروکنترلرهای AVR ………………………………………………………..6
– مشخصات میکروکنترلرATmega16…………………………………………………..9
– مشخصات میکروکنترلرATmega8…………………………………………………..11
فصل سوم :
EEPROM – های خانواده AT24CXX………………………………………………….13
– ارتباط سریال دو سیمه I2C) یا (TWI…………………………………………………..15
– صفحه کلید ماتریسی ……………………………………………………………………..16
فصل چهارم :
– برنامه نرم افزاری شارژر……………………………………………………………….17
– طرح شماتیک سخت افزارشارژر……………………………………………………….25
– برنامه نرم افزاری کنتور………………………………………………………………..26
– طرح شماتیک سخت افزارکنتور…………………………………………………………31

مقدمه:
درکنتورهای الکترومغناطیسی ودیجیتالی مورد استفاده درکشور٬ مشترکین پس ازمصرف برق٬هزینه پرداخت می کنند.قطع برق مشترکین به دلیل نپرداختن هزینه مستلزم حضور مامور شرکت برق در محل٬وپرداخت هزینه وصل مجدد توسط مشترک می باشد.
عدم پرداخت هزینه برق مصرفی توسط بعضی از مشترکین شرکت برق را برآن داشت تا سعی به دریافت هزینه قبل از مصرف کند.پروژه تبدیل کنتور الکترومغناطیسی به کنتور دیجیتالی اعتباری گامی است به سوی پیشبرد این هدف.

اساس کار دستگاههای اندازه گیری:
اساس کارکلیه دستگاههای اندازه گیری عقربه ائی براساس تاثیرمیدان روی سیم حامل جریان است که مکانیسم آنها با هم فرق دارد. دردستگاه اندازه گیری با قاب گردان که در داخل میدان قرار گرفته دراثر عبورجریان(به نسبت جریان ورودی) عقربه حرکت خواهد نمود و برای اینکه با سرعت حرکت نکند از یک خفه کن استفاده می شود بنام آمپر یا دمفینگ.
نامگذاری دستگاه ها با توجه به مکانیزم آنها می باشد .مثلا اندکسیونی٬ قاب گردان٬ حرارتی٬ دینامیکی… که از شرح جزئیات دستگاهها صرفنظر می شود.
کنتورهای اندازه گیری الکتریکی
کنتوروسیـله ای است جهـت سنجش انـدازه گـیری انرژی مصرفی برق که قدرت مصرفی را نسبت به زمان ثبت می نماید. و واحد آن اگرP کیلووات و t ساعـت بـاشـد.
W = P.t ژول = وات ثانیه
چون واتهای مصرفی نسبت به زمان ثانیه خیلی خیلی زیاد است لذا با واحد بزرگترکیلووات ساعت سنجیده خواهد شد و اعدادی که نمراتورکنتورنشان می دهد براساس همین واحد است.
وات ثانیه
انواع کنتور: کنتورها با توجه نوع برق مصرفی به دو دسته تقسیم می شوند:
1-کنتورجریان مستقیم
2-کنتورجریان متناوب :
الف- کنتورواته یا موثر تکفاز
ب- کنتوردواته یا غیرموثر سه فاز
کنتورجریان متناوب واته کنتوری است که مقدار انرژی مصرفی مفید (وات) را می سنجد.
کنتورجریان متناوب دواته کنتوری که مقدار انرژی مصرفی غیرمفید (دواته یا وار) را اندازه گرفته و به آن وارمتر نیز گویند. مجموع دو قدرت واته و دواته را قدرت ظاهری گویند که بصورت برداری جمع می گردد. که ولت آمپر واحد آن خواهد بود.

وسیله ائی که قدرت ظاهری را اندازه بگیرد نداریم بنابراین ازدو وسیله ولتمتروآمپرمتراستفاده نموده و حاصل را در همدیگر ضرب می کنیم.
اگر دستگاهها سه فازه باشند اساس کاربرای سه فازه طراحی شده مثل سه کنتور تکفاز است.

البته این فرمولها در جریان متعادل سه فاز صادق است و اگرنامتعادل باشد باید جزبه جزاندازه گرفته شود و بعد با هم جمع شود. در اینجا به اساس کارکنتورتکفازمتناوب اکتفا می کنیم.
قستمهای مختلف کنتور القایی تکفاز (موثر)
این نوع کنتور که بر اساس القای الکترومغناطیسی کار می کند شامل قسمتهای زیر است.
1- بوبین ولتاژ
2- بوبین جریان
3- صفحه آلومینیمی دوار
4- چرخ دنده و محور
5- آهنربای دائم
6- شماره انداز
7- محفظه

شکل1-1
1.بوبین ولتاژ: سیم پیچ ولتاژ با تعداد دور بیشتر و قطر کمترنسبت به سیم پیچ جریان٬(ازسیم شماره 4 برای پیچیدن آن استفاده می شود )طراحی شده است که با بار موازی می شود.
2.بوبین جریان: این سیم پیچ جهت تحمل جریان های عبوری٬ با قطر بیشتر و دور کـمتر٬طراحی شده است. که با بار به صورت سری قرار گرفته است. برای تغییر تعداد دور سیم پیچ جریان از کم و زیاد کردن ورقه های نازک دینامو(رینگ های مسی و برنجی)استفاده می شود.
3.دیسک آلومینیومی دایره ای شکل: این دیسک هنگام مغناطیس شدن به حرکت درمی آیدو موجب به حرکت در آمدن چرخ دنده هایی که به شماره اندازمتصل اند می گردد(خلل وفرج روی صفحه برای افزایش استحکام مکانیکی صفحه قرار داده شده است).
4.پیچ تنظیم هسته بوبین ولتاژ: این پیچ بالانس صفحه دیسک را به عهده دارد٬تنظیم این پیچ موجب می شود تا در زمانیکه هیچ جریانی از کنتور کشیده نمی شود صفحه دیسک در حالت بالانس قرار گیرد و حرکت آن مطابق با کنتورهای استاندارد شرکت برق گردد.
5.آهنربای دائمی نعلی شکل: این آهنربا حکم ترمزرا برای صفحه دیسک زمانیکه هیچ نیرویی به صفحه وارد نمی شود٬ دارد.هرچه دهانه آهنربا نسبت به صفحه بیرون ترباشد خاصیت ترمزی بیشتر می گردد. تنظیم φ cosبه کمک پیچ روی آهنربا انجام می شود.

اساس کار کنتور
با توجه به شکل1-1 درکنتورازدوسیم پیچ اسـتفــاده شـده که یکی سیم پیچ جریان با قطر بیشتر و دور کـمتر٬ جهت تحمل جریان های عبوری و دومی سیم پیچ ولتاژ با تعداد دور بیشترو قطر کمتر٬ جهت تحمل فـشـار الـکتـریکـی که سیم پیچ ولتاژ همیشـه در مـدار اتـصـال دارد ولی تـا مـوقـعیکـه از سیم پیچ جریان بار گرفته نشود هیچگونه عکس العمل ندارد.
سیم پیچ ولتاژ به صورت موازی وسیم پیچ جریان به شکل سری با ورودی برق مشترک قرار
می گیرد.بنابراین سیم پیچ ولتاژ همیشه برق دار است و سیم پیچ جریان با استفاده مشترک از برق برق دار خواهد شد.این دو سیم پیچ به شکلی نسبت به هم قرار گرفته اند که با عبور جریان از سیم پیچ جریان, میدان مغناطیسی حاصل از دو سیم پیچ بر هم اثر می کنند.برآیند این دو میدان باعث ایجاد جریانهای فوکو در سطح صفحه آلومینیومی می شود.طبق قانون القای فاراده این جریان به همراه برآیند میدانها سبب چرخش صفحه آلومینیومی می گردد.
F=B.L.I.sin(Φ)
هر چه جریان عبوری از سیم پیچ جریان بیشتر باشد(مصرف بیشتر جریان) نیروی وارد بردیسک بیشتر ودیسک سریعتر می چرخد. بنابراین چرخش صفحه با مصرف رابطه مستقیم خواهد داشت.
طبق استانداردهای شرکت کنتور سازی ایران هر 375 دور چرخش صفحه معادل یک کیلووات ساعت است.

آشنایی مختصری با میکروکنترلرهای AVR:
AVR ها میکروکنترلرهای 8 بیتی از نوع CMOS با توان مصرفی پایین هستند که بر اساس ساختار پیشرفته RISC ساخته شده اند.پس از ساخت اولین نسخه های AVRدر سال 1996این سری از میکروکنترلرها توانست نظر علاقه مندان را به خود جذب کند.به طوری که امروزه یکی از پرمصرف ترین انواع میکروکنترلرها به حساب می آید.همان طور که می دانید نمی توان هیچ نوع میکروکنترلری را به عنوان بهترین معرفی کرد چرا که هر میکروکنترلر کاربردهای خاص خود را دارد و بر اساس خصوصیات داخلی اش می تواند تنها برای موارد ویژه ای به عنوان بهترین انتخاب گردد.ولی با این حال با مطالعه صفحات بعدی و آشنایی با امکانات و نرم افزارهای جانبی AVRمتوجه خواهید شد که در کل استفاده از AVRبر بقیه ارجحیت دارد.
AVRها با ساختار RISC دستورات را تنها در یک پالس ساعت اجرا می نمایند و به این ترتیب می توان به ازای هر یک مگا هرتز٬یک مگا دستور را در ثانیه (MIPS)اجرا کرده و برنامه را از لحاظ سرعت پردازش و نیز مصرف توان بهینه نمود.
AVRها٬ 32 رجیستر همه منظوره و مجموعه دستورات قدرتمندی را شامل می گردند.تمامی این 32 رجیستر مستقیما به ALUمتصل شده اند.بنابراین دسترسی به دو رجیستر در یک سیکل ساعت هم امکان پذیر است.این ساختار سبب می گردد تا سرعت آن نسبت به میکروکنترلرهای CISC تا10 برابرهم افزایش یابد.
خانواده میکروکنترلرهای AVR تراشه هایی پیشرفته با امکانات جانبی کامل هستند.زمانیکه شروع به یادگیری مفاهیم اصلی آنها نمایید ٬لذت فراگیری تمام جزئیاتشان آغازمی شود. میکروکنترلرهای AVRبه سه دسته تقسیم می شوند:
1.(ATtiny)Tiny AVR
2.(AT90S)Classic AVR
3.(ATmega)Mega AVR
تفاوت بین این سه نوع به امکانات موجود در آنها مربوط می شود.Tiny AVRها غالبا تراشه هایی با تعداد پایه و مجموعه دستورات کمتری نسبت به Mega AVRها می باشند و به عبارتی ازلحاظ پیچیدگی حداقل امکانات را دارند.Mega AVRها حداکثرامکانات را دارند و Classic AVRها جایی بین این دو نوع قرار می گیرند.البته از آنجایی که ازبین سه دسته ذکرشده lassic AVRقبل ازدو گروه دیگر تولید شده اند٬امروزه در طراحی های جدید کمترازآنها استفاده می شود وعملا هر یک از آنها با تراشه ای ازگروه Mega AVRیاTiny AVR جایگزین شده اند.
در جدول 1-2 بعضی ازانواع میکروکنترلرهای AVR که برای طراحی های جدید استفاده
نمی شوند٬همراه با جایگزین های مناسب برای آنها آورده شده است.
ممکن است با مشاهده اسم میکروکنترلرهای AVRاین سوال برای شما مطرح شود که این اسم چه اطلاعاتی را در بر دارد.اولین قسمت اسم(ATmega,AT90S,ATtiny)بیانگرنوع میکروکنترلر است.بعد از این قسمت یک عدد باقی می ماند. در صورتی که از سمت چپ عدد باقی مانده بزرگترین توان دو را انتخاب کنید مثال(16=2^4 162)در این صورت عدد انتخاب شده میزان حافظه FLASHدرآن میکرو را بیان می کند.

جایگزین مناسب
تراشه قدیمی
ATtiny23213
AT90S1200
ATtiny2313
AT90S2313
ATtiny25
AT90S2323
ATtiny25
AT90S4433
ATmega8
AT90S8515
ATmega8515
AT90S8535
ATmega8535
ATmega103
ATmega128
ATmega161
ATmega16
ATmega163
ATmega32
ATmega323
جدول1-2
بنا برآن چه گفته شد,میکروکنترلرهای AT90S8535,ATtiny13,ATtiny25
ATmega32,ATmega161, به ترتیب دارای حافظه ,flash2و1و8و16و32 کیلو هستند.البته این قاعده یک استثنا هم دارد و آن میکروکنترلرATmega103می باشد که 128کیلو بایت حافظه Flashدارد.
علاوه بر این ممکن است در انتهای اسم میکروکنترلر پسوندی هم وجود داشته باشد مثل (ATtiny28V,ATtiny28L).تفاوت تراشه هایی که تنها پسوند اسامی آنها با هم اختلاف دارد٬در میزان قابل قبول برای ولتاژ تغذیه و محدوده مجاز فرکانسی کریستال مورد استفاده می باشد. پسوندهای V,Lرا می توان به ترتیب ٬مخفف عبارتهای LOW POWERوVery low power دانست.به این ترتیب شاید به توان برای یک میکروکنترلر نوعی ٬جدول 2- 2 را ارائه نمود.

اسم میکروکنترلر
محدوده ولتاژ تغذیه
فرکانس قابل قبول کریستال
میکروکنترلر AVR بدون پسوند
4 – 5.5V
0 – 16MHZ
میکروکنترلر AVR با پسوند L
2.7 – 5.5V
0 – 8MHZ
میکروکنترلر AVR با پسوندV
1.8 – 5.5V
0 – 4MHZ
جدول 2-2: مشخصات یک میکروکنترلر نوعی با پسوندهای مختلف
البته باید تاکید کنیم که مقادیرذکرشده برای تمامی میکروکنترلرها دقیقا صدق نمی کند و برای اطمینان از مقادیردقیق باید به برگه اطلاعات آنها مراجعه کنید.در حقیقت هدف از ارائه جدول 2-2 بیان این مطلب است که در انتخاب میکروکنترلر AVRدو ویژگی توان مصرفی کم و فرکانس کاری بالاتر در تضاد می باشند و بسته به شرایط باید بین این دو مصالحه ای صورت پذیرد.با توجه به تنوع میکروکنترلرهای AVR ممکن است این سوال مطرح شود که برای انجام یک پروژه کدام میکروکنترلررا انتخاب کنیم؟حقیقت اینست که اصول همه میکروکنترلرهای AVRیکی است و تفاوت آنها درمیزان حافظه موجود برروی تراشه و امکانات جانبی می باشد.وبه عنوان مثال در بعضی از انواع میکروکنترلرهای AVR ترتیب پایه ها مشابه 89C51است و می تواند به جای آنها در مدار به کاررود.علی رغم اینکه دراکثر AVRها حداکثر فرکانس داخلی 16 مگا هرتز است ولی در بعضی از انواع ٬مثلا(ATtiny13)حداکثرفرکانس تایمرتا 64مگا هرتزافزایش یافته است.علاوه براین دربعضی ازانواع AVRبسته بندی میکروکنترلربه صورت TQFP یا MLF موجود است که کار با آنها درمقایسه با بسته بندی PDIP خصوصا برای افراد غیرحرفه ای مشکل است.
با توجه به مطالب بالا لازم است تا قبل از انتخاب یک میکروکنترلر ,امکانات مورد نیاز خود در پروژه را مشخص نمایید و بعد آنها را با مشخصات و امکانات جانبی انواع میکروکنترلرهای AVRمقایسه کنید تا بتوانید با حداقل هزینه ٬بهترین مورد را انتخاب کنید.
یکی از ویژگی های جالب میکروکنترلرهایAVR در مقایسه با دیگرمیکروکنترلرها ٬فیوز بیتها هستند.فیوز بیتها همانطورکه ازاسمشان پیداست فیوزبیتهایی هستند که در زمان برنامه ریزی تراشه قابل برنامه ریزی هستند و هر یک می تواند یکی از امکانات جانبی میکروکنترلر را فعال یا غیر فعال کندو یا نحوه استفاده از آن را مشخص نماید.ضمنا فیوز بیتها با پاک کردن میکرو پاک نمی شوند و حتی می توان آنها را قفل نمود.

خصوصیات ATmega16:
دارای 131 دستورقدرتمند است که اکثرآنها در یک سیکل ساعت اجرا می شوند.
حافظه:
16k بایت حافظهflash قابل برنامه ریزی.
مجهز به قسمت boot loader .
512 بایت حافظه EEPROMداخلی.
1k بایت حافظه SRAM داخلی.
قفل قابل برنامه ریزی برای امنیت نرم افزار.
امکانات جانبی:
ارتباط JTAG شامل اسکن کردن امکانات جانبی ٬پشتیبانی از دیباگ کردن تراشه و برنامه ریزی حافظه های Flash,EEPROMفیوزبیت های قفل.
دو تایمر /کانتر 8 بیتی با تقسیم کننده فرکانسی مجزا و دارای مد compar.
یک تایمر /کانتر 16 بیتی با تقسیم کننده فرکانسی مجزا و دارای مد هایcompar,capture.
دارای RTC(real-time clock).
چهار کانال PWM.
8 کانال ,ADC10بیتی.
8 کانال تک پایه .
7 کانال تفاضلی در بسته بندی TQFP.
2 کانال تفاضلی با بهره قابل تنظیم1X,10X,و20X.
ارتباط سریال دو سیمه(Two wire).
USARTسریال قابل برنامه ریزی.
ارتباط سریال SPIبه صورت slave/master.
Watchdog قابل برنامه ریزی با اسیلاتور مجزای داخلی .
مقایسه کننده آنالوگ داخلی.

دارای شش مد sleep :
Idle,ADC Noise reduction,Power-save,Power-down,Standby,Extended standby
ولتاژهای عملیاتی:
V2.7 تا v5.5 برای ATmega16L.
V4.5 تا V5.5 برای ATmega16.
فرکانس های کاری:
MHZ0 تا MHZ8 برای ATmega16L.
MHZ0 تا MHZ16 برای ATmega16.
خطوط I/O وانواع بسته بندی :
32 خط ورودی/خروجی قابل برنامه ریزی.
40 پایه در نوع PDIPو44 پایه در انواع TQFP,MLF.

خصوصیات 8ATmega:
دارای 130 دستور قدرتمند است که اکثر آنها در یک سیکل ساعت اجرا می شوند.
حافظه:
K8 بایت حافظهflash قابل برنامه ریزی.
مجهز به قسمت boot loader .
512 بایت حافظه EEPROMداخلی.
1k بایت حافظه SRAM داخلی.
قفل قابل برنامه ریزی برای امنیت نرم افزار.
امکانات جانبی:
دو تایمر /کانتر 8 بیتی با تقسیم کننده فرکانسی مجزا و دارای مد compar.
یک تایمر /کانتر 16 بیتی با تقسیم کننده فرکانسی مجزا و دارای مد هایcompar,capture.
دارای RTC(real – time clock).
8 کانال ADC دربسته بندی های TQFP و MLF.
شش کانال با دقت 10 بیت.
چهار کانال با دقت 8 بیت.
6 کانال ADC در بسته بندی PDIP.
چهار کانال با دقت 10 بیت.
دو کانال با دقت 8 بیت.
ارتباط سریال دو سیمه(Two wire).
USARTسریال قابل برنامه ریزی.
ارتباط سریال SPIبه صورت slave/master.
Watchdog قابل برنامه ریزی با اسیلاتور مجزای داخلی.
مقایسه کننده آنالوگ داخلی.
اسیلاتور RC داخلی کالیبره شده.

دارای پنج مد sleep:
Idle,ADC Noise sleep reduction,Power-save,Power-down,Standby
ولتاژهای عملیاتی:
V2.7 تا v5.5 برای L 8ATmega.
V4.5 تا V5.5 برای 8ATmega.
فرکانس های کاری:
MHZ0 تا MHZ8 برای L 8ATmega.
MHZ0 تا MHZ16 برای 8ATmega.
خطوط I/O وانواع بسته بندی :
23 خط ورودی/خروجی قابل برنامه ریزی.
28 پایه در نوع PDIPو32 پایه در انواع TQFP,MLF.

EEPROM های خانواده AT24CXX:
EEPROM های خانواده AT24CXX داده ها را به صورت ارتباط سریال I2C انتقال می دهند.اندازه حافظه این EEPROM ها از 1K تا 1M بیت تغییر می کند.این حافظه ها ساخت شرکت Atmel هستند و کاربا آنها به سادگی درمیکروکنترلرهای که ازارتباط I2C حمایت می کنند و حتی در میکروکنترلرهای ساده ٬بدون قابلیت I2C نیز به راحتی انجام می گیرد.
معرفی تراشه AT24C01:
ویژگی ها:
مصرف کم و کار با ولتاژهای استاندارد
(Vcc=4.5 to 5.5v)5.0 –
(Vcc=2.7 to 5.5v)2.7-
(Vcc=2.5 to 5.5v)2.5 –
(Vcc=1.8 to 5.5v)5.5 –
سازماندهی حافظه داخلی به صورت 128*8(1k) در AT24C01 و به صورت مشابه برای مابقی آنها.
قابلیت ارتباط سریال دو سیمه.
مجهزبه اشمیت تریگروفیلتردرورودیها برای حذف نویز.
پروتکل انتقال داده به صورت دو طرفه.
کار با فرکانس100KHZ با ولتاژهای(1.8V,2.5V,2.7V) و 400KHZبا ولتاژ5V) ( .
مجهز به پایه حفاظت ازنوشتن (Wire Protect) برای حفاظت ازداده ها به صورت سخت افزاری.
صفحه هشت بایتی درحافظه های باحجم 1kو 2k و صفحه 16بایتی درحافظه های با حجم 16k,8k,4k.
امکان نوشتن قسمتی ازیک صفحه.
قابلیت اعتماد بالا:
– تحمل: یک بیلیون بار نوشتن.
– حفظ اطلاعات: برای 100سال.
-8 پایه و 16 پایه درانواع بسته بندی SOICو JEDECو 8 پایه در انواع بسته بندی TSSOP,MSOP,PDIP.
جدول عملکرد AT24C01:
Function
Pin name
Address input
A0-A2
Serial data
SDA
Serial clock input
SCL
Wire protect
WP
No conect
NC

حافظهAT24C01 دارای 1024 بیت حافظه خواندنی سریال قابل برنامه ریزی با امکان پاک کردن به صورت الکتریکی را تامین می کند.این تراشه برای استفاده دراکثرکاربرد های صنعتی و تجاری که در آنها توان مصرفی کم و ولتاژ پایین لازم است٬مناسب هستند.ویژگی های الکتریکی این تراشه درجدول 1- 3 ذکر شده است.
-55 C تا +125 C
درجه حرارت مجاز
-1.0 V تا +7.0 V
ولتاژ مجاز برای پایه های ورودی و خروجی
6.25 V
حداکثر ولتاژ تغذیه مجاز
5.0 Ma
حداکثر جریان DCخروجی
جدول3 – 1
معرفی پایه ها :
پایه (Serial clock) SCL:
ازلبه مثبت کلاک این پایه ٬برای ورود داده به تراشه EEPROM و ازلبه منفی آن برای خروج داده ازتراشه استفاده می گردد.
پایه (Serial Data)SDA:
پایه SDA برای انتقال دوطرفه داده ها به صورت سریال استفاده می شود.این پایه به صورت open_drain است ومی تواند با چند وسیله open-drain یا open-collector دیگر OR گردد.
پایه های(Device/page Address)A2:0
پایه های A2,A1,A0ورودیهای آدرس تراشه AT24C01 هستند.در این صورت حداکثر می توان هشت حافظه 1K را از طریق یک باس SPI آدرس دهی نمود.
پایهwrite protect) WP):
تراشه AT24C01 یک پایه WP دارد که برای حفاظت از داده های موجود برروی حافظه دربرابر نوشتن به کار می رود. زمانی که این پایه به زمین (GND) متصل باشد ٬اعمال خواندن و نوشتن به صورت طبیعی انجام می شوند.هنگامی که این پایه به Vcc متصل گردد٬قابلیت حفاظت ازنوشتن فعال می گردد.
نحوه عملکرد حافظه:
انتقال داده و کلاک :
معمولاپایه SDA توسط یک وسیله خارجی بالانگه داشته می شود.داده موجود بر روی پایه SDA تنها زمانیکه SCL پایین است تغییرمی کند.تغییرات داده ٬درزمانیکه پایه SCL بالا است٬ یک حالت شروع یا توقف را بیان می کند.
حالت شروع(start condition):
تبدیل سطح پایه SDA ازیک به صفر٬درزمانیکه پایه SCL بالا است٬یک حالت شروع را تولید می کند که به دنبال آن می تواند هر دستوردیگری ارسال گردد.
حالت توقف(stop condition):
با تبدیل سطح پایه SDA از صفر به یک در زمانیکه پایه SDA بالا است ٬یک حالت توقف تولید می شود.
تصدیق(Acknowledge):
تمامی آدرسها و کلمات داده به صورت سریال و در قالب کلمات 8 بیتی بین EEPROM وبه وسیله Master جابجا می شوند.EEPROM با دریافت آخرین بیت داده در کلاک نهم ٬یک صفرارسال می کند تا به این ترتیب دریافت صحیح بایت را تایید نماید.
حالت Standby:
تراشه AT24C01از یک حالت standby برای کاهش توان مصرفی استفاده می کند.این حالت پس ازاتصال تغذیه به آن ویا بعد ازدریافت حالت توقف واتمام همه عملیات های داخلی فعال می گردد.
ارتباط سریال دو سیمه I2C) یا:(TWI
ارتباط سریال دو سیمه یک پروتکل ارتباطی سریال است که توسط شرکت Philips ارائه شده است.قابلیت های ارتباط سریال دو سیمه به صورت زیر است:
– یک واسطه ارتباطی ساده و درعین حال انعطاف پذیروقدرتمند ٬که تنها به دو خط باس نیازدارد.
– می تواند به صورت Master یا slave کار کند.
– وسیله می تواند به عنوان فرستنده یا دریافت کننده عمل کند.
– با داشتن فضای آدرس 7 بیتی ٬می تواند حداکثرتا 128 وسیله slave مختلف را آدرس دهی کند.
– از وجود چند Master حمایت می کند.
– حداکثر سرعت آن می تواند به 400KHZ برسد.
– به مدار حذف کننده نویز داخلی که اسپایکهای موجود بر روی خط باس را حذف می کند مجهز است.
– امکان تنظیم کامل آدرس Slave و حمایت ازفراخوانی های عمومی را دارد.
– در صورتیکه آدرس مربوط به خود را تشخیص دهد می تواند AVR را ازمدsleep بیدارکند.
عموما واسطه ارتباط سریال دو سیمه برای کاربا میکروکنترلرها مناسب به نظرمی رسد.
پروتکل PWI این امکان را به طراح می دهد تا حداکثر 128 وسیله مختلف را تنها با استفاده ازدو خط باس دوطرفه ٬یکی برای پالس ساعت(SCL) و دیگری برای داده (SDA) به یکدیگرمتصل کند.تنها سخت افزارخارجی که برای ایجاد این باس لازم است یک مقاومت pull-up برای هر یک از خطوط باس است.تمامی وسایل متصل به باس آدرسهای خاص خود را دارند و نحوه ارتباط بین آنها نیز توسط پروتکل TWI مشخص می شود.
درتمامی وسایلی که از TWIحمایت می کنند ٬درایوهای باس به صورت open-drain یا
open-collector می باشند. این ویژگی موجب می شود تا به صورتwire-and عمل کنند٬که این برای عملکرد صحیح باس ضروری است.بنابراین یک سطح پایین در خط باس TWI زمانی تولید می شود که خروجی یک یا چند وسیله صفر باشد و سطح بالا نیز تنها زمانی که تمامی وسایل TWI در حالت امپدانس بالا باشند٬حاصل می گردد.
تعداد وسایل مجازبرای اتصال به یک باس تنها توسط محدودیت ظرفیت باس که حداکثرباید 400 pf باشد و نیزفضای آدرس7بیتی slave مشخص می گردد.
صفحه کلید ماتریسی:
صفحه کلید ماتریسی (کیبوردها) از متداولترین وسایل ارتباطی برای انواع میکروکنترلرها و میکروپروسسورها به شمار می آیند.مسئله مهم در آنها تشخیص کلید فشار داده شده است.
در صفحه کلید ماتریسی برای تشخیص کلید فشار داده شده (مطابق برنامه ای که در ادامه بیان می کنیم) ٬میکروکنترلربه ترتیب تمامی ستونها را صفر می کند و سپس ردیفها را می خواند.اگرمقداریکی از ردیفها صفرباشد یعنی کلیدی فشرده شده است.

شمای کلی پروژه:

برنامه نرم افزاری کنتور دیجیتالی اعتباری :
نرم افزارپروژه به کمک زبان برنامه نویسی Codvitionنوشته شده است.
نرم افزارو سخت افزار پروژه شامل سه بخش کارت حافظه٬ کنتورو شارژرمی باشد.
دستگاه شارژردراداره برق مورد استفاده قرارمی گیرد٬مشترکین با مراجعه به شرکت برق و پرداخت هزینه کارت خود را شارژمی کنند.
کنتور٬ با اتصال کارت شارژ مبلغ شارژشده را دریافت می کند و از آن پس به کارخود ادامه می دهد(پس ازاتمام مبلغ شارژ شده کنتوربعد ازاعلام چندین اخطاربرق مصرف کننده را قطع می کند).
کارت حافظه شامل یک EEPROM با ظرفیت 1Kbاست که به صورت I2C با میکرودرارتباط است.که سخت افزار آن در شکل 1- 4 آمده است.

شکل 1-4

– نرم افزارشارژر:

پس اززدن کارت ازکاربرخواسته می شود که عدد شارژ را وارد نماید٬سپس با فشردن کلیدF2 عدد مورد نظردرحافظه نوشته می شود.با فشردن کلیدF3می توان ازصحت عدد نوشته شده درحافظه اطمینان حاصل کرد.
/*********************************************
Project : SHARGER
Date : 10/12/2007
Chip type : ATmega8
Program type : Application
Clock frequency : 1.000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 256
معرفی تراشه و توابع کتابخانه ای
********************************************/
#include <mega8.h>
#include <delay.h>
#asm
.equ __i2c_port=0x15
.equ __sda_bit=3
.equ __scl_bit=4
#endasm
#include <i2c.h>
#define eeprom_bus_address 0xa0
یافتن ردیف کلید فشرده شده
//************************************************
int s,r,c;
int ROW_FIND() {
if(PIND.4==0){
s=1; r=0; }
if(PIND.5==0){
s=1; r=1; }
if(PIND.6==0){
s=1; r=2; }
if(PIND.7==0){
s=1; r=3; }
return r; }
تابع ارسال فرامین به LCD
//***********************************
void command(char c) {
PORTB=c; PORTC.0=0;PORTC.1=0;PORTC.2=1;PORTC.2=0;
delay_ms(4); }
تابع ارسال دیتا به LCD
//************************************
void dis(char d) {
PORTB=d; PORTC.0=1;PORTC.1=0;PORTC.2=1;PORTC.2=0;
delay_ms(4); }

خواندن از حافظه
//*******************************************************************
unsigned char eeprom_read(unsigned char address){
unsigned char data=0;
i2c_start();
i2c_write(eeprom_bus_address);;
i2c_write(address);
i2c_start();
i2c_write(eeprom_bus_address | 1);
data=i2c_read(0);
i2c_stop();
return data; }
نوشتن در حافظه
//******************************************************************
void eeprom_write(unsigned char address,unsigned char data) {
i2c_start();
i2c_write(eeprom_bus_address);
i2c_write(address);
i2c_write(data);
i2c_stop();
delay_ms(10); }

برای وارد کردن عدد شارژ با نمایش پیغام ENTER NAMBER بر روی LCD از کاربر خواسته می شود تا عدد مورد نظر را وارد کند.
//*********************************************************************
void number(void) {
char n; char lcd_buffer1[16]={'*','*','*','*','*','E','N','T','E','R','*','*','*','*','*',' '};
char buffer[16]={'*','*','*','*','*','N','U','M','B','E','R','*','*','*','*','*'};
command(0x01); command(0x80);
for(n=0;n<=15;n++) {
dis(lcd_buffer1[n]); }
command(0xc0);
for(n=0;n<=15;n++) {
dis(buffer[n]); } }
برای نوشتن عدد شارژ بر روی کارت حافظه با نمایش پیغام FOR WRITE F2 بر روی LCD از کاربر خواسته می شود تا کلید F2 را فشار دهد.
//************************************************************
void write(void) {
char n; char lcd_buffer1[16]={'*','F','O','R',' ', 'W','R','I','T','E',' ',':',' ', 'F','2','*'};
command(0xc0);
for(n=0;n<=15;n++) {
dis(lcd_buffer1[n]); } }
برای اطمینان از صحت عدد شارژ بر روی کارت حافظه با نمایش پیغام FOR WRITE F3 بر روی LCD از کاربر خواسته می شود تا کلید F3 را فشار دهد.
//*************************************************
void complete(void) {
char n; char lcd[16]={'*','*','F','O','R',' ', 'R','E','A','D',' ',':','F','3','*','*'};
command(0xc0);
for(n=0;n<=15;n++) {
dis(lcd[n]); } }
برخی از کلیدهای صفحه کلید غیر قابل استفاده اند. در صورتیکه کاربرناخواسته هر کدام از این کلید ها را فشار دهد پیغام NO USE بر روی LCD نمایش داده می شود.
//*************************************************
void use(void) {
char n; char lcd_buffer1[16]={'*','*','*','*','*','N', 'O',' ','U','S','E','*','*','*', '*','*'};
command(0xc0);
for(n=0;n<=15;n++) {
dis(lcd_buffer1[n]); } }
معرفی متغیرها ٬ پورت های مورد استفاده و تشخیص کلید فشرده شده.
//*************************************************
void main(void) {
char code [4][4]={{1,2,3,11},{4,5,6,10},{7,8,9,15},{12,0,13,14}};
unsigned char key,m,n,z=0,t,k,p,i,j,data1,buffer[5];
PORTB=0x00; DDRB=0xFF; DDRD=0x0F; PORTC=0x00; DDRC=0x27; i2c_init();
command(0x38); command(0x0c);
number();
while (1) {
L1: PORTD=0xF0;
if(PIND==0xF0)
goto L1;
else
delay_ms(100);
if(s!=1){
c=0; PORTD=0XFE;
r=ROW_FIND();
l5: if(PIND!=0xFE)
goto l5; }
if(s!=1) {
c=1; PORTD=0XFD;
r=ROW_FIND();
l4: if(PIND!=0xFD)
goto l4; }
if(s!=1) {
c=2; PORTD=0XFB;
r=ROW_FIND();
l2: if(PIND!=0xFB)
goto l2; }
if(s!=1) {
c=3;PORTD=0XF7;
r=ROW_FIND();
l3: if(PIND!=0xF7)
goto l3; }
if(s!=0){
s=0; key=code[r][c];
if(key==11){
n=n–; m=m–; k–;
command(0x82+n);
dis(' '); }
if(key==12 || key==13 || key==14 )
use();
else if(key==15){
command(0x89);
dis('R');dis(':');
for (n=0;n<=4;n++) {
data1=eeprom_read(n);
command(0x8b+n);
dis(data1+48); }
for(n=0;n<=15;n++){
command(0xc0+n);
dis(' '); } }
else if(key!=10 & key!=11){
k=k++;
if(z!=1) {
command(0x01); n=0; z=1; }
command(0x80);
dis('W');dis(':');
command(0x82+n);
dis(key+48);
buffer[m]=key; n=n++; m=m++;
write(); }
else if(key==10 ){
p=5-k;
if(p!=0){
p–;
for(i=0;i<=p;i++){
eeprom_write(i, 0x00); } }
m=0;
for (j=i;j<=4;j++) {
eeprom_write(j, buffer[m]);
m++; }
k=0; m=0; n=0; t=1;
if(t!=0) {
complete(); t=0; } } }
};
}

طرح شماتیک سخت افزار شارژر:

2-نرم افزار کنتور :
کنتوربا شروع کارخود ازمصرف کننده می خواهد تا کارت شارژرا درون دستگاه قرار دهد. میکروبا خواندن مقدارشارژ که برحسب KWh است به مصرف کننده اجازه استفاده ازبرق را می دهد.
برای بالا بردن ضریب امنیت ٬میکرو پس ازخواندن مقدارشارژ٬مبلغ صفررا درون حافظه می نویسد.
همانطور که می دانیم درکنتورهر375 دورصفحه آلومینیومی معادل با 1kwh می باشد.هردورچرخش صفحه به وسیله سنسورهای مادون قرمزحس می گردد .پس از دریافت 375 پالس ارسالی از سنسورهای مادون قرمز وقفه سرریزتایمرمیکرو فعال می گردد(تایمردرمد کانترتعریف شده است) در وقفه تایمرازمبلغ شارژکاسته می شود.
قبل از اینکه مقدارشارژبه پایان برسد میکروبا نوشتن پیغام روی LCD و روشن و خاموش کردن LED قرارداده شده روی کنتوربه مصرف کننده اخطار می دهد و درنهایت برق را توسط کنتاکتور قطع می کند.
/***************************************************************
Project : kontor
Date : 10/16/2007
Chip type : ATmega16
Program type : Application
Clock frequency : 1.000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 256
معرفی تراشه و توابع کتابخانه ای
*********************************************/
#include <mega16.h>
#include <stdio.h>
#include <stdlib.h>
#include <delay.h>
#include <math.h>
#asm
.equ __i2c_port=0x18
.equ __sda_bit=4
.equ __scl_bit=3
#endasm
#include <i2c.h>
#define eeprom_bus_address 0xa0
تعریف متغیرهای عمومی
//***************************************************************
char data1,lcd_buffer[6],str[20]; int n=0,k=5; unsigned long int z=0,q,s=0,a;
خواندن از حافظه
//***************************************************************
unsigned char eeprom_read(unsigned char address){
unsigned char data=0;
i2c_start();
i2c_write(eeprom_bus_address);;
i2c_write(address);
i2c_start();
i2c_write(eeprom_bus_address | 1);
data=i2c_read(0);
i2c_stop();
return data;}

نوشتن در حافظه
//******************************************************************
void eeprom_write(unsigned char address,unsigned char data){
i2c_start();
i2c_write(eeprom_bus_address);
i2c_write(address);
i2c_write(data);
i2c_stop();
delay_ms(10);}
تابع ارسال فرامین به LCD
//******************************************************************
void command(char u){
delay_ms(10);
PORTA=u; PORTD.6=0;PORTD.5=0;PORTD.4=1;PORTD.4=0;}
تابع ارسال دیتا بهLCD
//***************************************************************
void dis(char r){
delay_ms(10);
PORTA=r; PORTD.6=1;PORTD.5=0;PORTD.4=1;PORTD.4=0;}
هنگام روشن کردن دستگاه با نمایش پیغام PLEASE PUT CARD از کاربر خواسته می شود تا کارت شارژ را درون کانکتور قرار دهد.
//*********************************************************************
void putcard(void) {
char lcd_buffer1[16]={'*','P','L','E','A','S','E',' ','P','U','T',' ','C','A','R','D'};
command(0x01); command(0x80);
for(n=0;n<=15;n++) {
dis(lcd_buffer1[n]); } }
بعد از وارد کردن کارت با فشردن کلید روی جعبه(که به وقفه خارجی متصل است) عدد شارژخوانده شده و در حافظه عدد صفر نوشته می شود.
//*******************************************************************
interrupt [EXT_INT0] void ext_int0_isr(void) {
z=0,k=5,data1=0; n=0;
delay_ms(500);
command(0x01);
for (n=0;n<=4;n++) {
data1=eeprom_read(n);
if(data1!=0 ) {
z=z+1;
if(n==4)
z=z-1; }
PORTC=data1;
command(0x80);
k=k-1;
z=(data1*(pow(10,k)))+z; }
s=z+q;
if(s>=88880)
PORTC.1=0; q=s;
for (n=4;n>=0;n–) {
eeprom_write(n,0x00); } }

بعد ازتشخیص 375 دور چرخش صفحه آلومینیمی توسط سنسورهای مادون قرمز در وقفه سرریز تایمر یک از مبلغ شارژ کاسته می شود.
//*****************************************************************
interrupt [TIM1_OVF] void timer1_ovf_isr(void) {
TCNT1H=0xFF;TCNT1L=0xFB; q=q-1; }
در تابع اصلی برنامه زمانیکه مقدار شارژ به پایان برسد با صفر شدن پایه PORTC.1 در میکروبرق مصرف کننده توسط کنتاکتور قطع خواهد شد.
//*****************************************************************
void main(void) {
long int c;
PORTA=0x00;DDRA=0xFF; PORTC=0x00;DDRC=0xFF; PORTD=0x04;DDRD=0xF0;PORTC.1=0;
i2c_init();
#asm ("sei") ;
GICR|=0x40; MCUCR=0x02; MCUCSR=0x00; GIFR=0x40;
ACSR=0x80;SFIOR=0x00;
TCCR1A=0x00;TCCR1B=0x07;TCNT1H=0xFF; TCNT1L=0xFB; TIMSK=0x04;
command(0x38); command(0x0c); command(0x01);
putcard();
//****************************************************************************** while (1) {
command(0xc0);
dis('S'); dis('H'); dis('A'); dis('R'); dis('G'); dis('E'); dis(':');
command(0x80);
for(n=0;n<=15;n++){
dis(' ') ;}
delay_ms(10); n=4; a=q;
for(n=4;n>=0;n–) {
c=a%10; a=a/10;
lcd_buffer[n]=c; }
for(n=0;n<=4;n++) {
command(0xc7+n);
dis(lcd_buffer[n]+48) ; }
command(0xcd);
dis('K'); dis('W'); dis('H');
if(q<=88884) {
command(0x80);
dis('!'); dis('!'); dis('!'); dis('!'); dis('N'); dis('O'); dis(' '); dis('S'); dis('H');
dis('A'); dis(' R'); dis('G'); dis('!'); dis('!'); dis('!');dis('!');
PORTC.0=1; delay_ms(100); PORTC.0=0; delay_ms(100); }
if(q==88880)
PORTC.1=1; };
}

طرح شماتیک سخت افزاربخش مربوط به کنتور:

منابع و مآخذ:

میکرو کنترلر AVR ـ امیر ره افروز
الکترونیک قدرت ـ رشید
تکنیک پالس ـ معتمدی

1


تعداد صفحات : 36 | فرمت فایل : WORD

بلافاصله بعد از پرداخت لینک دانلود فعال می شود