یکی از جالب ترین و پر طرفدار ترین پروژه های خانواده AVR ساخت ولتمتر دیجیتال با LCD کاراکتری می باشد.
در این مطلب قصد داریم علاوه بر آموزش ساخت ولتمتر دیجیتال با میکروکنترلر ، شما را با نمونه ای از دستورات و کتابخانه هاء پر استفاده در محیط کد ویژن آشنا کنیم.
خب میریم سراغ پروژه
در برنامه خط هایی که در جلوی آن ها your self// نوشته شده است باید توسط شما نوشته شود ، مابقی را توسط کد ویزارد هم می توانید بنویسید.
برای شروع پروژه برنامه ی code vision avr را باز کنید و از نوار ابزار (toolbar) روی File کلید کرده و new سپس project را انتخاب کنید و پنجره ای که باز می شود را ok کنید (این پنجره به شما می گوید آیا می خواهید از code wizard استفاده کنید و ما تایید می کنیم) در مرحله بعد باید نوع آیسی خود را مشخص کنید (AT90,ATtiny,ATmega را انتخاب کنید و روی ok کلید کنید).
وارد کردن اطلاعات در code wizard
۱ـ در قسمت chip settings نوع میکرو کنترلر خود و کلاک آن را با توجه به مشخصات آیسی که در اختیار دارید انتخاب کنید.
۲ـ Analog to Digital Converter را انتخاب کنید و تیک ADC Enabled را بزنید سپس ولتاژ مرجع (Reference voltage) و نرخ نمونه برداری را به صورت زیر تنظیم نمایید (ولتاژ مرجع ورودی را پایه Vref قرار داده ایم که در عمل به مثبت تغیه میکرو وصل می شود و نرخ نمونه برداری را رو کم ترین مقدار قرار میدهیم زیرا برای این پروژه نرخ نمونه برداری بالا مناسب نیست!).
۳ـ Alphanumeric LCD را انتخاب نمایید و تیک Enable آن را بزنید و در بخش characters/Line تعداد ستون های LCD که می خواهید از آن در این پروژه استفاده کنید را بنویسید و سپس در بخش connections پورت مورد نظر خود را برای استفاده از LCD انتخاب کنید (توجه داشته باشید که نمی توانید از پورت A به این منظور استفاده کنید به دلیل فعال بودن ADC مثلا من در ATmega32 پورت C را انتخاب کردم ولی در موقع پروگرام کردن JTAG را غیر فعال کردم در کل راحت ترین کار استفاده از پورت B و D است).
۴ـ از نوار ابزار روی Program کلید کنید و تیک گزینه …Generate code را بر دارید (کد اضافی تولید می کند برای قسمت های غیر فعال میکرو) سپس Generate,Save & Exit را بزنید که در این مرحله باید محل ذخیره فایل هارا مشخص کنید.
توضیحات مهم در برنامه
در خط 18: متغیری به نام buff معرفی کرده ایم که اعداد به صورت رشته در آن ذخیره می شوند و ظرفیت ۱۶ رشته را دارد.
در خط 19: متغیری به نام x معرفی کرده ایم که حجم آن 16bit می باشد.
در خط 20: متغیری به نام volt معرفی کرده ایم که حجم آن 32bit از نوع اعشاری می باشد.
در خط 38: متغیر x را برابر قرار می دهیم با مقداری که وارد پایه adc.0 شده است این مقدار ۱۰ بیتی است و میتواند از ۰ تا ۱۰۲۳ باشد.
در خط 39: در این قسمت ما تابعی نوشتیم که مقدار x را به یک عدد اعشاری از ۰ تا ۲۰ تبدیل می کند و این عدد در متغیر volt قرار می گیرد.
درخط 40: sprintf یکی از توابع stdio است که آن را باید در قسمت کتابخانه ها (header files) در بالای برنامه معرفی کنید.
نکته(۱): بعد از (v) حتما یک فاصله بگذارید.
نکته(۲): برای نمایش اعداد متغیر اعشاری در LCD باید تنظیماتی را در قسمت C compiler اعمال کنید.
درخط 41: این دستور باعث می شود نوشتن کاراکتر ها بر روی LCD از ستون و خط اول آغاز شود که جایگزین دستور ()lcd_clear می باشد.(به دلیل پرش مداوم تصویر در LCD از دستور ()lcd_clear استفاده نکرده ایم)
درخط 42: این دستور رشته های موجود در متغیر buff را بر روی LCD نمایش می دهد.
درخط 43: این دستور 50ms مکث ایجاد می کند.(دلیل استفاده از این دستور پایداری هر چه بیشتر مقدار ولتاژ بر روی LCD است)
توضیحات مهم در سخت افزار
در این پروژه برای اندازه گیری ولتاژ از روش تقسیم ولتاژ مقاومتی استفاده کرده ایم به عنوان مثال اگر بخواهیم ولتاژ ۰ تا ۲۰ ولت را اندازه بگیریم و ولتاژ مرجع ما ۵ ولت باشد چهار مقاومت 10K را با هم سری می کنیم و مانند تصویر زیر آن را به میکرو وصل می کنیم.
خازن C1 برای پایداری بهتر مقدار ولتاژ به کار گرفته شده است.
تست عملی ولتمتر دیجیتال با میکروکنترلر AVR
نشانی ایمیل شما منتشر نخواهد شد. بخشهای موردنیاز علامتگذاری شدهاند *
کليه حقوق اين سايت متعلق به سام نیک میباشد