آموزش MSP430آموزش ها

آموزش آنالوگ به دیجیتال و اندازه گیری ولتاژ در لانچ پد MSP430

سلام. آموزش استفاده از آنالوگ به دیجیتال ADC در لانچ پد MSP430 را آماده کردیم.

یکی از ویژگیهای متداول که در اکثر پروژه های الکترونیک استفاده می شود ، مبدل آنالوگ به دیجیتال ADC است. این مبدل های آنالوگ به دیجیتال می توانند ولتاژ را از سنسورهای آنالوگ مانند سنسور دما ، سنسور شیب ، سنسور جریان ، سنسور فلکس و موارد دیگر بخوانند. بنابراین در این آموزش یاد خواهیم گرفت که چگونه از ADC در MSP430G2 استفاده کنیم تا ولتاژهای آنالوگ را با استفاده از Energia IDE بخوانیم. ما یک پتانسیومتر کوچک را به برد MSP متصل می کنیم و یک ولتاژ متغیر را به یک پین آنالوگ ارائه می دهیم ، ولتاژ را می خوانیم و آن را در سریال مانیتور و ال سی دی کاراکتری نمایش می دهیم.

درک ماژول ADC، آنالوگ به دیجیتال چیست ؟

به من اعتماد کنید ، خواندن ولتاژ آنالوگ نهایتا 10 دقیقه طول خواهد کشید تا MSP430G2 را وصل و برنامه ریزی کنید. اما ، بگذارید مدتی را برای درک ماژول ADC در برد MSP بگذرانیم تا بتوانیم از آن به طور مؤثر در کلیه پروژه های آینده خود استفاده کنیم.

میکروکنترلر یک دستگاه دیجیتالی است ، به این معنی که می تواند فقط 1 و 0 را درک کند. اما در دنیای واقعی همه چیز مانند دما ، رطوبت ، سرعت باد و … وجود دارد که از نظر ماهیت آنالوگ هستند. به منظور درک این تغییرات آنالوگ ، میکروکنترلر از ماژولی به نام ADC استفاده می کند. انواع مختلفی از ماژول های ADC در دسترس هستند ، در MSP ما ماژول آنالوگ به دیجیتال 8 کانال و با وضوح 10 بیتی از نوع SAR است.

SAR ADC با کمک یک مقایسه کننده و برخی معادلات منطقی کار می کند. این نوع ADC از ولتاژ مرجع (که متغیر است) استفاده می کند و ولتاژ ورودی را با ولتاژ مرجع با استفاده از مقایسه کننده مقایسه میشود.

وضوح 10 بیتی : این ADC دارای 8 کانال 10 بیتی آنالوگ به دیجیتال است. در اینجا اصطلاح 8 کانال حاکی از آن است که 8 پین ADC وجود دارد که با استفاده از آن می توانیم ولتاژ آنالوگ را اندازه بگیریم. اصطلاح 10 بیتی حاکی از رزولوشن ADC است. 10 بیتی به معنای 2 به توان ده (210) است که یعنی 1024 است. این عدد تعداد مراحل برای ADC ما است ، بنابراین دامنه مقادیر آنالوگ به دیجیتال ما از 0 تا 1023 خواهد بود. مقدار از 0 به 1023 افزایش می یابد. بر اساس مقدار ولتاژ در هر مرحله، مقدار دیجیتال از مقدار آنالوگ با فرمول زیر محاسبه میشود :

درک ماژول ADC، آنالوگ به دیجیتال چیست ؟

بنابراین با تغییر هر 2.93 میلی ولت در مقدار آنالوگ، مقدار دیجیتال 1 عدد تغییر میکند. توجه داشته باشید در کامپایلر Energia ولتاژ مرجع روی 3 ولت تنظیم شده است. میتوانید با دستور analogReference () میزان ولتاژ مرجع را تغییر دهید.

همچنین نحوه رابط ADC با سایر میکروکنترلرها را بررسی کنید:

شماتیک مدار پروژه اندازه گیری ولتاژ در MSP430

در آموزش قبلی ما نحوه برقراری ارتباط ال سی دی با MSP430G2 را یاد گرفتیم، اکنون فقط می خواهیم یک پتانسیومتر را به MSP430 اضافه کنیم تا یک ولتاژ متغیر برای آن فراهم شود و مقدار ولتاژ را روی LCD نمایش دهیم.

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

شماتیک مدار پروژه اندازه گیری ولتاژ در MSP430

همانطور که مشاهده می کنید در اینجا دو پتانسیومتر وجود دارد که یکی از آنها برای تنظیم کنتراست LCD استفاده می شود و دیگری برای تهیه یک ولتاژ متغیر برای لانچ پد MSP430 استفاده می شود. برای ارائه ولتاژ متغیر به لانچپد پتانسیومتر در یک سمت به Vcc وصل می شود و سمت دیگر به Ground متصل می شود. پین میانی (سیم آبی) به پین ​​P1.7 وصل شده است. این پین P1.7 یک ولتاژ متغیر از 0 ولت (GND) تا 3.5 ولت (Vcc) فراهم می کند. بنابراین باید مقدار ولتاژ پین P1.7 را بخوانیم و مقدار دیجیتالی آن را روی ال سی دی نمایش دهیم.

در Energia ، باید بدانیم که پین ​​P1.7 به کدام کانال آنالوگ تعلق دارد؟ این کانال را می توان با مراجعه به تصویر زیر یافت.

توضیحات پین های MSP430G2

پین P1.7 را در سمت راست مشاهده می کنید ، این پین متعلق به A7 (کانال 7) است. به طور مشابه ، می توانیم شماره کانال مربوطه را برای سایر پین ها نیز پیدا کنیم. شما می توانید از پین های A0 تا A7 برای خواندن ولتاژ های آنالوگ استفاده کنید. من A7 را انتخاب کرده ام.

همچنین اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید

برنامه نویسی MSP430 برای آنالوگ به دیجیتال

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

ما با تعریف پین های LCD شروع می کنیم. اینجا مشخص می کند که پین ​​های LCD به کدام پین MSP430 متصل هستند.

#define RS 2
#define EN 3
#define D4 4
#define D5 5
#define D6 6
#define D7 7

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

#include <LiquidCrystal.h> //فراخوانی کتابخانه ال سی دی کاراکتری
LiquidCrystal lcd(RS, EN, D4, D5, D6, D7); //اعلام پین های ال سی دی

در داخل تابع setup() ما یک پیام مقدمه برای نمایش در صفحه LCD قرار می دهیم.

  lcd.begin(16, 2); //تعریف ال سی دی 16*2
  lcd.setCursor (0,0); //ستون اول ردیف اول
  lcd.print("MSP430G2553"); //نمایش پیام
  lcd.setCursor(0, 1);   //ستون اول ردیف دوم
  lcd.print("IRENX.IR"); //نمایش پیام

سرانجام ، در داخل عملکرد void loop () ما خواندن ولتاژ پین ​​A7 را شروع می کنیم. همانطور که قبلاً بحث کردیم میکروکنترلر یک دستگاه دیجیتالی است و نمی تواند مستقیماً ولتاژ آنالوگ را بخواند. با استفاده از تکنیک SAR ، سطح ولتاژ به عددی بین 0 تا 1024 تبدیل می شود. این مقادیر، مقادیر ADC نامیده می شوند ، برای بدست آوردن این مقدار ADC ، به سادگی از خط زیر استفاده کنید.

  int val = analogRead(A7);    // خواندن ولتاژ در پین A7

در اینجا تابع analogRead () برای خواندن مقدار آنالوگ پین استفاده می شود ، ما A7 را در داخل آن مشخص کرده ایم زیرا ولتاژ متغیر را به پین ​​P1.7 وصل کرده ایم. سرانجام این مقدار را در متغیری به نام “Val” ذخیره می کنیم. نوع این متغیر عدد صحیح است زیرا ما فقط مقادیری از 0 تا 1024 دریافت خواهیم کرد تا در این متغیر ذخیره شوند.

مرحله بعدی محاسبه مقدار ولتاژ از مقدار ADC خواهد بود. برای این کار فرمول های زیر را داریم.

ولتاژ = (مقدار ADC / وضوح ADC) * ولتاژ مرجع

Voltage = (ADC Value / ADC Resolution) * Reference Voltage

در اینجا ما می دانیم که وضوح ADC میکروکنترلر ما 1024 است. مقدار ADC در خط قبلی نیز یافت می شود. ولتاژ مرجع برابر با ولتاژی است که میکروکنترلر در آن کار می کند. هنگامی که برد MSP430 از طریق کابل USB تغذیه می شود ، ولتاژ عامل 3.6 ولت است. همچنین می توانید ولتاژ کار را با استفاده از مولتی متر در سراسر Vcc و پین GND روی برد اندازه گیری کنید. بنابراین فرمول فوق مطابق شکل زیر در پرونده ما متناسب است.

  float voltage = (float(val)/1024) * 3.6;

پس از محاسبه مقدار و ولتاژ ADC ، تمام آنچه باقی مانده است نمایش نتیجه در LCD است که می تواند با استفاده از خطوط زیر انجام شود

  lcd.setCursor(0, 0);   // ستون اول ردیف اول
  lcd.print("ADC Val:");
  lcd.print(val); //نمیاش مقدار آنالوگ به دیجیتال
  lcd.setCursor(0, 1);   // ستون اول ردیف دوم
  lcd.print("Voltage:");
  lcd.print(voltage); //نمایش مقدار ولتاژ

در اینجا مقدار ADC را در خط اول و مقدار ولتاژ در خط دوم نشان داده ایم. و پس از هر 100 میلی ثانیه مقدار را بروز میکنیم.

کد کامل

کد کامل پروژه اندازه گیری ولتاژ و راه اندازی مبدل آنالوگ به دیجیتال با برد MSP430 در باکس زیر آورده شده است.

#define RS 2
#define EN 3
#define D4 4
#define D5 5
#define D6 6
#define D7 7

#include <LiquidCrystal.h>
LiquidCrystal lcd(RS, EN, D4, D5, D6, D7);

void setup() {
  lcd.begin(16, 2); 
  lcd.setCursor (0,0); 
  lcd.print("MSP430G2553"); 
  lcd.setCursor(0, 1);  
  lcd.print("IRENX.IR");
   delay(2000); 
   lcd.clear();
}

void loop() {
  int val = analogRead(A7); 
  Voltage = (ADC Value / ADC Resolution) *
  float voltage = (float(val)/1024) * 3.6;
  lcd.setCursor(0, 0);
  lcd.print("ADC Val:");
  lcd.print(val);
  lcd.setCursor(0, 1); 
  lcd.print("Voltage:");
  lcd.print(voltage); 
}

فیلم عملکرد اندازه گیری ولتاژ با لانچ پد MSP430

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

قسمت بعد : استفاده از PWM در لانچ پد MSP430 و کنترل نور LED

نظرتان را در مورد این مطلب با ستاره دادن اعلام کنید
امیدوارم این مطلب برای شما مفید بوده باشد. نظرات ، مشکلات و پیشنهادات خود را در پایین صفحه اعلام کنید
محمد رحیمی

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید را قرار دهم. مالکیتی بر مطالب ارائه شده ندارم. اکثر فعالیت بنده در زمینه ترجمه است. (در خصوص سوال در مورد این مطلب از قسمت نظرات همین مطلب اقدام کنید)

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *