سبد خرید 0

سبد خرید شما خالی است.

آموزش تنظیم وضوح LCD کاراکتری با پتانسیومتر

PosterPotentionmeter

 آموزش تنظیم وضوح LCD کاراکتری با پتانسیومتر

در این مقاله قصد داریم آموزش پروژه عملی تنظیم وضوح LCD کاراکتری با پتانسیومتر چرخشی و همچنین تعییین شمارنده بر روی  میکروکنترلر را خدمت شما آموزش دهیم. در این مطلب به سادگی برنامه نویسی میکروکنترلر آردوینو را برای کنترل پتانسیومتر و LCD کاراکتری اجرا می کنیم. پیشنهاد ما جهت آشنایی بیشتر، مطالعه مقالات بردهای آردوینو، اجزاء سخت افزار بردهای آردوینو و نرم افزار آردوینو، روش نصب و کدنویسی در سایت IOENET است. در ادامه مراحل را گام به گام با هم پیش می بریم.

موضوع دوره : تنظیم شفافیت صفحه نمایش LCD کاراکتری

وسائل مورد نیاز: برد آردوینو UNO ، سیم جامپر، LCD کاراکتری2×16 ، برد بورد، کابل Type A TO B ، یک عدد مقاومت ΩK 10 و یک عدد پنانسیومتر

کاربرد : تنظیم شدت نور در صفحه نمایش های کاراکتری، تنظیم ولتاژ شارژر باتری ها، کنترل ولتاژ ورودی در مدارهای الکترونیکی، تنظیم سطح سیگنال آنالوگ و تنظیم فرکانس رادیو

 

معرفی قطعات تنظیم وضوح LCD کاراکتری با پتانسیومتر:

مرحله اول:  بر اساس موضوع این آموزش و  همچنین تهیه وسائل مورد نیاز، ابتدا بر طبق شکل(3) شماتیک مدار را می­­ بندیم. بستن و ارتباط قطعات را اصطلاحا وایرینگ مدار(سیم کشی) می­ گوییم که در این پروژه با استفاده از سیم جامپر نری-نری و یا نری-مادگی انجام می­ شود. برای این کار لازم است شناخت اولیه از پایه­ های قطعات داشته باشید؛ که در ادامه با این قطعات آشنا خواهیم شد.

16x2_lcd-PINOUT1

الف) در شکل روبرو نمایشگر LCD16x2 کاراکتری نمایش داده می شود. این نمایشگر، همانطور که در تصویر مشخص است، ماژولی با 16 پایه است که به ترتیب از سمت چپ به راست قرار دارند. دو پایه GND(VSS) ولتاژ صفر زمین و VDD(VCC) ولتاژ تغذیه 5 ولت است که به همین ترتیب به برد آردوینو متصل می شوند. سومین پایه Contrast (VO/VE)  نام دارد که برای تنظیم شدت نور صفحه نمایش و قابلیت دید کاراکترها در LCD به همراه یک مقاومت از 1KΩتا 10KΩ(کیلو اهم) قابل تنظیم و استفاده است. پایه بعدی به نام  RS(Register Select) است که برای انتخاب رجیستر تعریف می شود.

پایه پنجم (Read/Write)RW نام دارد، که در اکثر موارد به زمین متصل می شود. زبرا که ما تنها از طریق آردوینو، عمل نوشتن کاراکترها بر روی LCD را انجام می دهیم و عمل خواندن صورت نمی گیرد. پایه ششم یا (Enable pin)EN، همانند RS یک پایه کنترلی برای LCD است که به پین های دیجیتال (GPIO) برد آردوینو متصل می شوند.

سپس از D0 تا D7 پایه های اطلاعات و یا دیتا(Data)  هستند که قرار است از طریق آنها، کاراکترها بر روی LCD به نمایش درآیند. LCD می تواند در دو حالت کار کند. ایتدا در حالت 4 بیتی که با پایه های D4 تا D7 فعال می شود و دوم در حالت 8 بینی که از D0 تا D7 استفاده می کند. که معمولا حالت اول به خاطر استفاده از پایه و پیچیدگی کمتر، کاربرد بیشتری دارد.

نهایتا دو پایه (+)BLK و (-)BLK را داریم. این دو پایه ولتاژ تغذیه ی که برای روشنایی نور پس زمینه LCD لازم است را تامین می کنند. که برای فعال سازی پایه (+)BLK بهتر است قبل از اتصال آن به پایه 5 ولت برد آردوینو از یک مقاومت 100Ω استفاده شود. و پایه (-)BLK  ولتاژ صفر زمین متصل خواهد شد.

 

ب) در شکل دوم، شما یک پتانسیومتر چرخشی را مشاهده می کنید که در اصطلاح انگلیسی به آن  Rotary Potentiometer و به اختصار به آن POT می گویند. به طور کلی پتانسیومترها به سه دسته چرخشی، خطی و دیجیتال تقسیم می شوند که هر نوع کاربرد خاص خودش را دارد.

 

این ماژول که از خانواده Rotery Encoder Module(KY-040) است، و از نوع پتانسیومترهای نوع چرخشی به حساب می آید؛ معمولا برای کنترل ولتاژ تغذیه قابل تنظیم به بخشی از مدارهای الکترونیکی و الکتریکی استفاده می شود. به عنوان نمونه می توان به کنترل کننده صدا یک ترانزیستور رادیوئی اشاره کرد. برای آشنایی بیشتر با عملکرد آن در ادامه با ما همراه باشید.

 این پتانسیومتر دارای دو کنتاکت انتهایی است که در میان آنها یک مقاومت یکنواخت سیمی، بصورت نیم دایره قرار می گیرد. همچنین این ماژول دارای یک ترمینال میانی است که توسط یک کنتاکت کشویی به دستگیره چرخشی اتصال دارد و سپس به مقاومت متصل می شود. با تغییر زاویه و چرخش دستگیره، کنتاکت کشویی بر روی مقاومت سیمی می لغزد. نتیجه این کار موجب گرفته شدن ولتاژ در میان کنتاکت انتهایی مقاومتی و کشویی است.

 

hero-product-master1                 potentiometer2

                                                            شکل(1)                                                                                                    شکل(2)

 

از ویژگی های این پتانسیومتر های چرخشی می توان به دقت بالا با استفاده از تکنیک ارزیابی، تعیین نقطه تعادل که در غیر این صورت صفر در نظر گرفته می شود، عدم وابستگی پتانسیومتر به مقاومت منبع تغذیه به دلیل تعادل آن و نبود جریان در سرتاسر پتانسیومتر اشاره کرد. این ماژول دارای سه پایه ارتباطی است. GNDپایه اول است که ولتاژ صفر(زمین) را از GND برد آردوینو دریافت می کند. پایه دوم OutPut به دستگیره متصل است که در اثر حرکت بر روی کنتاکت مقاومت، اتصال الکترونیکی ایجاد می شود. پایه سوم VCC که به منبع تغذیه با ولتاژ مثبت که در اینجا منظور پین 5 ولت برد آردوینو، متصل می شود.

 

Control-LCD-with-Potentionmeter

شکل (3) :شماتیک مدار تنظیم شفافیت صفحه نمایش LCD کاراکتری با تعریف شمارنده

 

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

مرحله دوم : برنامه ریزی میکروکنترلر این برد از طریق محیط Arduino IDE انجام می شود. که در این قسمت کدهای Sketch  مربوط به هر قطعه را خط به خط  برای شما توضیح داده ایم.

  • در ابتدا وارد محیط برنامه IDE Arduino می شویم و یک Sketch  جدید ایجاد می کنیم.
  • مرحله دوم، تعیین برد مورد نظر یعنی Uno است که می توانید از قسمت نوار ابزار دسترسی سریع بر روی Board Manager بروید و از لیست بیرون رونده گزینه Uno را انتخاب کنید و یا از منوی Tools و زیر منوی  Board این کار را انجام دهید.
  • مرحله سوم، معرفی توابع کتابخانه قطعات الکترونیکی به Sketch برای ارتباط با برد آردوینو است.

توجه: برخی توابع به صورت پیش فرض در کتابخانه وجود ندارد و نیاز است شما، با اتصال به اینترنت و سپس از داخل محیط Arduino IDE اقدام به نصب برنامه کنید. برای این کار از منوی دسترسی سریع، بر روی Library Manager کلیک کنید و بعد از آن قطعه مورد نظر را جستجو کرده و سعی کنید نسخه­ تازه ای از تابع کتابخانه ی آن را دانلود کنید. برخی توابع کتابخانه ای بصورت پیش فرض در برنامه آردوینو تعریف شده اند. که برای دسترسی به آنها کافی است به منوی Sketch و سپس زیر منوی Include Library بروید و از لیست موارد ظاهر شده، گزینه مورد نظر را بر اساس پروژه انتخاب کنید.

بدین منظور و برای این برنامه توابع کتابخانه ای پیش فرض را از منوی Sketch و سپس زیر منوی Include Library نصب کنید.

#include <SPI.h>            // برای زمانبندی انتقال داده ها بر اساس پالس های ساعت است SPI قرار دادن تابع
#include <Wire.h>           //تابع وایرینگ مدار است

توابع کتابخانه ای برای ماژول LCD کاراکتری با رفتن به منوی Tools و سپس انتخاب گزینه Library Manager نصب کنید. و یا از طریق منوی دسترسی سریع این کار را انجام دهید.

#include <LiquidCrystal.h>  // LCD 16x2 تابع کتابخانه ای صفحه نمایشگر

سپس معرفی هر پایه رابط کاربری LCD به هر شماره پین مربوطه بر روی برد آردوینو صورت می گیرد.

const int rs = 12, en = 11, d4 = 2, d5 = 3, d6 = 4, d7 = 5;  
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

در اقدام بعدی، وارد حلقه های اصلی Sketch و تعریف مقدار دهی اولیه برنامه می شویم. در ادامه خط به خط مهم از برنامه توضیح داده می شود.

void setup() {         // در حلقه اصلی برنامه
  Serial.begin(9600);  // مقدار دهی اولیه نرخ انتقال برای سریال مانیتور
  lcd.begin(16, 2);    //  تعریف تعداد 2 سطر و 16 ستون های برای نمایش کاراکتری

  lcd.print("WELCOME IOENET");  //LCD چاپ پیام بر روی
  Serial.println("☺►WELCOME TO IOENET"); //چاپ پیام بر روی سریال مانیتور
  delay(2000);                  // تاخیر دو ثانیه ای
  / for (int positionCounter = 0; positionCounter < 16; positionCounter++) { 
     //  تعریف موقعیت شمارنده در 16 پیکسل سطری و ستونی
    lcd.scrollDisplayRight();                                                 // تغییر مکان به اندازه یک پیکسل به سمت راست
    delay(150);                                                               // تاخیر یک بیتی
  }
     lcd.clear();                       //کاراکتری LCD پاک کردن صفحه
  lcd.setCursor(1, 0);               // موقعیت درج عبارت در سطر اول
  lcd.print("Count Seconds!");       // LCD چاپ عبارت شمارش ثانیه ها بر روی
  Serial.println("Count Seconds!");  // چاپ عبارت شمارش ثانیه ها بر روی سریال مانیتور
}

سپس به بخش حلقه تکرار برنامه می رسیم.

void loop() {                     // وارد حلقه نکرار برنامه می شویم
  for (int i = 0; i < 10; i++) {  // 9 تعریف متغییر شمارنده اعداد از 0 تا
    lcd.setCursor(6, 1);          //در موقعیت مکانی سطر دوم و ستون ششم
    lcd.print(i);                 // LCD چاپ عدد بر روی
   Serial.println(i);            //  چاپ عدد بر روی سریال مانیتور
    delay(1000);                  //با تاخیر 1 ثانیه
  }
}

 

مرحله سوم: پس از نوشتن برنامه بالا، نیاز است کابل (Type A to B) را که در Port USB مشخص شده در کامپیوتر و یا لپ تاپ قرار دارد را به برد آردوینو متصل کنید. در این مرحله شماره (Port COM) به طور خودکار توسط برنامه شناسایی می شود. همچنین می توانید از منوی  Tools و زیر منوی Port، درگاه مشخص دیگری را که فعال کردید برای برد خود انتخاب کنید.

نکته: حتما دقت کنید نرح ارسال یا سرعت ارسال داده (Baud Rate) بر روی سریال مانیتور با مقدار تعیین شده برنامه برابر باشد. به عنوان مثال در این برنامه این میزان بر روی 9600  تنظیم شده است.

خروجی برنامه: در نهایت خروجی برنامه بر رویLCD باید به صورت زیر نمایش داده شود.

 

 

// ************************************************ www.ioenet.ir *****************************************************
// *******************************   به تعریف و اجرای شمارنده LCD کاراکتری به آردوینو به همراه تنظیم شدت نور و شفافیت LCD پروژه آموزشی معرفی *************************************

#include <LiquidCrystal.h>  //   کاراکتری LCD 16x2 تابع کتابخانه ای صفحه نمایشگر
#include <SPI.h>            // به جهت زمانبندی انتقال داده ها بر اساس پالس های ساعت است SPI قرار دادن تابع
#include <Wire.h>           //تابع وایرینگ مدار است

// به هر شماره پین که بر روی برد آردوینو مرتبط است LCD معرفی هر پایه رابط کاربری
const int rs = 12, en = 11, d4 = 2, d5 = 3, d6 = 4, d7 = 5;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);


void setup() {         // در حلقه اصلی برنامه
  Serial.begin(9600);  // مقدار دهی اولیه نرخ انتقال برای سریال مانیتور
  lcd.begin(16, 2);    //  تعریف تعداد 2 سطر و 16 ستون های برای نمایش کاراکتری

  lcd.print("WELCOME IOENET");            //LCD چاپ پیام بر روی
  Serial.println("☺►WELCOME TO IOENET");  ////LCD چاپ پیام بر روی
  delay(2000);                            // تاخیر دو ثانیه ای
  for (int positionCounter = 0; positionCounter < 16; positionCounter++) {
    //  تعریف موقعیت شمارنده در 16 پیکسل سطری و ستونی
    lcd.scrollDisplayRight();  // تغییر مکان به اندازه یک پیکسل به سمت راست
    delay(150);                // تاخیر یک بیتی
  }

  lcd.clear();                       //کاراکتری LCD پاک کردن صفحه
  lcd.setCursor(1, 0);               // موقعیت درج عبارت در سطر اول
  lcd.print("Count Seconds!");       // LCD چاپ عبارت شمارش ثانیه ها بر روی
  Serial.println("Count Seconds!");  // چاپ عبارت شمارش ثانیه ها بر روی سریال مانیتور
}

void loop() {                     // وارد حلقه نکرار برنامه می شویم
  for (int i = 0; i < 10; i++) {  // 9 تعریف متغییر شمارنده اعداد از 0 تا
    lcd.setCursor(6, 1);          //در موقعیت مکانی سطر دوم و ستون ششم
    lcd.print(i);                 // LCD چاپ عدد بر روی
    Serial.println(i);            //  چاپ عدد بر روی سریال مانیتور
    delay(1000);                  //با تاخیر 1 ثانیه
  }
}
//****************************************************  موفق باشید  ****************************************************

 

دیدگاه شما

برای ارسال دیدگاه لطفا ابتدا وارد سایت شوید .

وارد شوید

برگشت به بالا
تجهیزات شبکه و هوشمند سازی