ساخت مولتی متر با آردوینو (آموزش کامل)

محتویات
مولتی متر یک ابزار ضروری در کارگاه شما برای ایجاد یا توسعه مدارهای الکتریکی است. بدون آن، اجرای یک پروژه بسیار دشوار خواهد بود. بنابراین، در این پست، ما تصمیم گرفتیم یک مولتی متر دیجیتال ارزان قیمت با استفاده از آردوینو و سایر قطعات ارزان قیمت بسازیم. این مولتی متر می تواند ولتاژ تا 24 ولت و همچنین دیود، مقاومت و افت ولتاژ را در یک LED اندازه گیری کند. همچنین دارای یک ویژگی بررسی اتصال با بوق است، بنابراین می توانید از آن برای شناسایی اتصال کوتاه استفاده کنید.
مدار مولتی متر دیجیتال با آردوینو
شماتیک کامل مولتی متر دیجیتال آردوینو در زیر نشان داده شده است. شماتیک ساده و قابل درک است.
تحلیل شماتیک ساده است: ما آردوینو داریم که به عنوان مغز پروژه ما کار می کند. در مدار از دو جفت کانکتور موزی برای اتصال ورودی خارجی استفاده کرده ایم. همانطور که در مدار بالا مشاهده می کنید، یک مقاومت 10K و دو مقاومت 4.7K به صورت موازی برای تشکیل یک تقسیم کننده ولتاژ داریم. با این پیکربندی تقسیم کننده ولتاژ و آردوینو، می توانیم حداکثر ولتاژ ورودی 24 ولت را اندازه گیری کنیم. لطفا توجه داشته باشید که ولتاژ ورودی بیش از 24 ولت می تواند به برد شما آسیب برساند.
در مرحله بعد، یک جفت سوکت موزی دیگر داریم که برای تست سلامت دیود و LED هستند، این تست ها با اندازه گیری یک افت ولتاژ معین در دستگاه تست انجام می شود. ما همچنین یک صفحه نمایش OLED 0.91 اینچی برای نمایش تمام داده های پردازش شده توسط آردوینو وصل کرده ایم و یک سوئیچ دکمه ای برای جابجایی بین تمام ویژگی های این مولتی متر داریم. در نهایت، ما دو بسته باتری 3.7 ولتی به صورت سری و یک رگولاتور 5 ولتی AMS1117-5.0 برای تغذیه کل مدار داریم.
قطعات مورد نیاز
اجزای مورد نیاز برای ساخت یک مولتی متر دیجیتال ساده هستند و به راحتی در فروشگاه های مختلف یافت می شوند. لیست کامل اجزا در زیر آورده شده است.
- آردوینو پرو میکرو
- دکمه فشاری
- مقاومت 1K
- مقاومت 10K
- 2* مقاومت 4.7K
- بازر
- نمایشگر OLED سایز 0.91 اینچ 128×32
- تاگل سوئیچ
- 4* سوکت موزی
- 2* باتری لیتیومی 3.7 ولت، 300 میلی آمپر
- رگولاتور AMS1117-5.0
کد آردوینو برای مولتی متر دیجیتال
کد آردوینو برای مولتی متر دیجیتال بسیار ساده و قابل درک است، کد کامل مولتی متر دیجیتال مبتنی بر آردوینو در فایل دانلودی انتهای مطلب قرار داده شده است.
ما کد خود را با فراخوانی تمام کتابخانههای مورد نیاز شروع میکنیم، برای این کار باید کتابخانه های SPI.h، Wire.h، Adafruit_GFX.h، Adafruit_SSD1306.h را داشته باشیم.
#include <SPI.h> #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h>
در مرحله بعد، ارتفاع و عرض صفحه نمایشگر را مشخص کرده ایم، سپس آدرس صفحه نمایش OLED را مشخص می کنیم.
#define SCREEN_WIDTH 128 // عرض صفحه نمایش OLED، بر حسب پیکسل #define SCREEN_HEIGHT 32 // ارتفاع صفحه نمایش OLED، بر حسب پیکسل #define OLED_RESET -1 // Reset pin # (یا -1 در صورت اشتراک گذاری پین بازنشانی آردوینو) #define SCREEN_ADDRESS 0x3C ///< به صفحه داده آدرس مراجعه کنید. 0x3D برای 128x64، 0x3C برای 128x32
در نهایت، ما یک نمونه از کتابخانه Adafruit_SSD1306 با نام display ایجاد کردهایم.
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
سپس، تمام متغیرهای مورد نیاز کد را مقداردهی اولیه کردیم.
int analogInput = 0; float vout = 0.0; float vin = 0.0; float R1 = 10000.0; // resistance of R1 (100K) -see text! float R2 = 2200.0; // resistance of R2 (2.2K) - see text! int value = 0; int mode = 0; int interval = 300; unsigned long previousMillis = 0; int raw = 0; int Vin = 5; float Vout = 0; float R11 = 1000; float R22 = 0; float buffer = 0;
در مرحله بعد، تابع setup خود را داریم، در تابع setup ابتدا ارتباط سریال را مقداردهی اولیه کرده ایم و پایه های ADC و پایه سوئیچ را به عنوان ورودی و پایه های دیگر را به عنوان خروجی تعیین کرده ایم.
Serial.begin(9600); pinMode(analogInput, INPUT); pinMode(9, OUTPUT); pinMode(7, INPUT_PULLUP); digitalWrite(9, HIGH); delay(40); digitalWrite(9, LOW); pinMode(13, OUTPUT);
در مرحله بعد، ما از متد begin() برای راه اندازی نمایشگر OLED استفاده میکنیم.
if (!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) { Serial.println(F("SSD1306 allocation failed")); for (;;); // اگر ارتباط با نمایشگر برقرار نبود همینجا می ایستد } }
بعد، تابع void loop() خود را داریکه در آن ما چهار حالت داری: mode0 تابع اندازه گیری ولتاژ است، mode1 برای حالت تست دیود است، mode2 برای حالت OHM متر است و در حالت چهارم تست اتصال کوتاه داریم. در این قسمت تمامی حالت ها را توضیح خواهیم داد.
در mode0 پین آنالوگ A0 را می خوانیم و مقدار را در متغیر value ذخیره می کنیم. حال مقدار اندازه گیری شده را محاسبه کرده و در متغیر vin ذخیره می کنیم. در نهایت داده ها را روی صفحه نمایش OLED نمایش می دهیم.
if (mode == 0) { // حالت اندازه گیری ولتاژ value = analogRead(A0); vout = (value * 5.0) / 1024.0; vin = vout / (R2 / (R1 + R2)); if (vin < 0.09) { vin = 0.0; //وضعیت اندازه گیری مناسب نیست } display.clearDisplay(); display.setTextSize(1); display.setTextColor(SSD1306_WHITE); display.setCursor(0, 0); display.println("Voltmeter Mode"); display.setTextSize(2); display.setCursor(10, 12); display.print((vin)); display.print("V"); display.display(); }
بعد در حالت 1 باید پین A2 را بخوانیم و افت ولتاژ مقاومت و دیود را محاسبه کنیم. اگر در درک این قسمت مشکل دارید، لطفاً به شماتیک مراجعه کنید.
if (mode == 1) { // حالت تست دیود value = analogRead(A2); vout = (value * 5.0) / 1024.0; // تبدیل به ولتاژ vout = 5 - vout; display.clearDisplay(); display.setTextSize(1); display.setTextColor(SSD1306_WHITE); display.setCursor(0, 0); display.println("Diode/LED Test"); display.setTextSize(2); display.setCursor(10, 12); display.print((vout)); display.print(" V"); display.display(); }
بعد، ما mode2 را داریم. mode2 حالت اهم متر است. در این حالت داده های ADC را از پایه A2 آردوینو می خوانیم و با استفاده از کد زیر مقدار مقاومت را محاسبه می کنیم.
if (mode == 2) { // حالت اهم متر raw = analogRead(A2); buffer = raw * Vin; Vout = (buffer) / 1024.0; buffer = (Vin / Vout) - 1; R22 = R11 * buffer; Serial.print(Vout); Serial.print("R2: "); Serial.println(R22); display.clearDisplay(); display.setTextSize(1); display.setTextColor(SSD1306_WHITE); display.setCursor(0, 0); display.println("OHM Meter Mode"); display.setTextSize(2); display.setCursor(2, 12); if (R22 < 1000) { display.setCursor(2, 12); display.print((R22)); display.print(" OHM"); } else { display.setCursor(10, 12); display.print((R22 / 1000)); display.print(" K"); } display.display(); //delay(300); }
در نهایت حالت چهارم مربوط میشود به بررسی اتصال کوتاه. در این حالت مقدار مقاومت را بررسی می کنیم و اگر مقدار کمتر از 100 باشد بازر را به صدا در می آوریم.
if (mode == 3) { // حالت بررسی اتصال کوتاه raw = analogRead(A2); buffer = raw * Vin; Vout = (buffer) / 1024.0; buffer = (Vin / Vout) - 1; R22 = R11 * buffer; Serial.print(Vout); Serial.print("R2: "); Serial.println(R22); display.clearDisplay(); display.setTextSize(1); display.setTextColor(SSD1306_WHITE); display.setCursor(0, 0); display.println("continuity Test Mode"); display.setTextSize(2); display.setCursor(2, 12); display.print((R22)); display.print(" OHM"); display.display(); if (R22 < 100) { digitalWrite(9, HIGH); } else { digitalWrite(9, LOW); } } previousMillis = currentMillis; }
در نهایت، یک شرط if دیگر داریم، در این شرط وضعیت دکمه را بررسی کرده ایم، اگر وضعیت دکمه LOW باشد، شمارنده مربوط به حالت را افزایش می دهیم تا منو تغییر کند.
if (digitalRead(7) == LOW) { delay(150); mode++; if (mode >= 4) mode = 0; Serial.println(mode); }
تست مولتی متر دیجیتال با آردوینو
پس از تکمیل فرآیند ساخت، آزمایش ویژگی های کلی این پروژه را آغاز کردیم و نتایجی که به دست آوردیم در زیر نشان داده شده است.
ما فرآیند آزمایش خود را با ولت متر شروع کردیم و متوجه شدیم که به کمی کالیبراسیون نیاز دارد، زیرا در حالت اندازه گیری ولتاژ زمانی که آن را با یک مولتی متر معمولی مقایسه کردیم، اختلاف 200 میلی ولت را نشان می داد.
در مرحله بعد حالت تست دیود/LED را داریم، در این حالت می توانید افت ولتاژ دیود یا LED را بررسی کنید.
در تصویر بالا مشاهده می کنید که ما یک LED سفید وصل کرده ایم و می توانید افت ولتاژ در LED را مشاهده کنید.
ما در حالت تست دیود، دیود را به مولتی متر متصل می کنیم و همانطور که می بینید افت ولتاژ را در نشان می دهد. دیود مورد آزمایش یک دیود شات است بنابراین افت 0.6 ولت بسیار دقیق است.
در نهایت حالت تست اتصال کوتاه را داریم. در این حالت همانطور که می بینید دو گیره را اتصال کوتاه کرده ایم و مولتی متر مقدار مقاومت سیم را نشان می دهد و بازر نیز صدا می دهد.
اینها همه ویژگی هایی است که این مولتی متر ارائه می دهد، اما جای زیادی برای بهبود وجود دارد. با استفاده از یک آی سی اضافی، می توانیم سوکت های موزی را تنها به یک جفت کاهش دهیم. میتوانیم آردوینو را با یک ESP جایگزین کنیم تا قابلیتهای بیسیم نیز اضافه کنیم.
موارد موجود در فایل : سورس کامل
برای دانلود فایل ها باید حساب کاربری داشته باشید ثبت نام / ورود
سلام
مقدار r2 چرا شده 2200 ؟؟