ولت متر AC در آردوینو. ولت متر بلوتوث مبتنی بر آردوینو. ورودی های آنالوگ و مقاومت های کششی

یک نمودار مفید برای کسانی که دوست دارند با آردوینو آزمایش کنند ارائه شده است. این یک ولت متر دیجیتال ساده است که می تواند به طور قابل اعتماد ولتاژ DC را در محدوده 0 تا 30 ولت اندازه گیری کند. برد آردوینو طبق معمول می تواند توسط یک باتری 9 ولتی تغذیه شود.

همانطور که احتمالا می دانید، از ورودی های آنالوگ آردوینو می توان برای اندازه گیری ولتاژ DC در محدوده 0 تا 5 ولت استفاده کرد و این محدوده را می توان افزایش داد.
استفاده از دو مقاومت به عنوان تقسیم کننده ولتاژ. تقسیم کننده ولتاژ اندازه گیری شده را تا سطح ورودی های آنالوگ آردوینو کاهش می دهد. و سپس برنامه مقدار واقعی ولتاژ را محاسبه خواهد کرد.

سنسور آنالوگ روی برد آردوینو وجود ولتاژ را در ورودی آنالوگ تشخیص می دهد و آن را برای پردازش بیشتر توسط میکروکنترلر به شکل دیجیتال تبدیل می کند. در شکل، ولتاژ به ورودی آنالوگ (A0) از طریق یک تقسیم کننده ولتاژ ساده متشکل از مقاومت های R1 (100 کیلو اهم) و R2 (10 کیلو اهم) تامین می شود.

با این مقادیر تقسیم کننده، برد آردوینو را می توان با ولتاژ از 0 تا
55 ولت در ورودی A0 ولتاژ اندازه گیری شده را تقسیم بر 11 داریم، یعنی 55 ولت / 11 = 5 ولت. به عبارت دیگر هنگام اندازه گیری 55 ولت در ورودی آردوینو، حداکثر مقدار مجاز 5 ولت داریم. در عمل، بهتر است محدوده 0 - 30 ولت را روی این ولت متر بنویسید تا باقی بماند.
حاشیه امن!

یادداشت

اگر قرائت های نمایشگر با قرائت های یک ولت متر صنعتی (آزمایشگاهی) منطبق نباشد، لازم است مقادیر مقاومت R1 و R2 را با ابزار دقیق اندازه گیری کرده و این مقادیر را به جای R1=100000.0 و R2= وارد کنید. 10000.0 در کد برنامه. سپس باید ولتاژ واقعی بین پایه های 5 ولت و "Ground" برد آردوینو را با یک ولت متر آزمایشگاهی اندازه گیری کنید. نتیجه مقدار کمتر از 5 ولت خواهد بود، به عنوان مثال، 4.95 ولت خواهد بود. این مقدار واقعی باید در خط کد درج شود
vout = (مقدار * 5.0) / 1024.0 به جای 5.0.
همچنین سعی کنید از مقاومت های دقیق با تلرانس 1% استفاده کنید.

مقاومت‌های R1 و R2 در برابر افزایش ولتاژ ورودی محافظت می‌کنند اما به یاد داشته باشید که هر ولتاژ بالای 55 ولت می‌تواند به برد آردوینو آسیب برساند. علاوه بر این، این طراحی انواع دیگری از حفاظت (در برابر نوسانات ولتاژ، معکوس شدن قطبیت یا اضافه ولتاژ) را ارائه نمی دهد.

برنامه ولت متر دیجیتال

/*
ولت متر DC
یک DVM آردوینو بر اساس مفهوم تقسیم کننده ولتاژ
T.K.Hareendran
*/
#عبارتند از
ال سی دی LiquidCrystal (7، 8، 9، 10، 11، 12);
int analogInput = 0;
float vout = 0.0;
float vin = 0.0;
شناور R1 = 100000.0; // مقاومت R1 (100K) -متن را ببینید!
شناور R2 = 10000.0; // مقاومت R2 (10K) - متن را ببینید!
مقدار int = 0;
تنظیم خالی())(
pinMode (Input analog، INPUT)؛
lcd.begin(16, 2);
lcd.print ("ولت متر DC");
}
حلقه خالی()
// مقدار را در ورودی آنالوگ بخوانید
value = analogRead(analogInput);
vout = (مقدار * 5.0) / 1024.0; // متن را ببینید
vin = vout / (R2/(R1+R2));
اگر (vin<0.09) {
vin=0.0;//بیانیه برای لغو خواندن ناخواسته!
}
lcd.setCursor(0, 1);
lcd.print("INPUT V= ");
lcd.print(vin);
تاخیر (500);
}

نمودار شماتیک آردوینو ولت متر

لیست اجزاء

برد آردوینو Uno
مقاومت 100 کیلو اهم
مقاومت 10 کیلو اهم
مقاومت 100 اهم
مقاومت تریمر 10 کیلو اهم
صفحه نمایش LCD 16?2 (Hitachi HD44780)



این مقاله نحوه رابط Arduino و PC و انتقال داده ها از ADC به PC را نشان می دهد. این برنامه برای ویندوز با استفاده از Visual C++ 2008 Express نوشته شده است. برنامه ولت متر بسیار ساده است و جای پیشرفت زیادی دارد. هدف اصلی آن نشان دادن نحوه کار با پورت COM و تبادل داده بین کامپیوتر و آردوینو بود.

ارتباط بین آردوینو و کامپیوتر:

  • گرفتن خوانش از ADC زمانی شروع می شود که کامپیوتر دستورات Arduino 0xAC و 0x1y را ارسال می کند. در– شماره کانال ADC (0-2)؛
  • خواندن پس از دریافت دستورات 0xAC و 0x00 توسط آردوینو متوقف می شود.
  • هنگام خواندن، آردوینو دستورات 0xAB 0xaa 0xbb را هر 50 میلی‌ثانیه به رایانه ارسال می‌کند، که aa و bb حداکثر و حداقل نتایج اندازه‌گیری هستند.

برنامه برای آردوینو

می توانید اطلاعات بیشتری در مورد ارتباط سریال در arduino.cc بخوانید. این برنامه بسیار ساده است، بیشتر آن صرف کار با پورت موازی می شود. پس از پایان خواندن داده ها از ADC، مقدار ولتاژ 10 بیتی (0x0000 – 0x0400) را در قالب متغیرهای 16 بیتی (INT) دریافت می کنیم. پورت سریال (RS-232) اجازه می دهد تا داده ها در بسته های 8 بیتی منتقل شوند. لازم است متغیرهای 16 بیتی را به 2 قسمت 8 بیتی تقسیم کنیم.

Serial.print(ولتاژ>>8,BYTE);

Serial.print(ولتاژ%256,BYTE);

بایت های متغیر را 8 بیت به سمت راست منتقل می کنیم و سپس بر 256 تقسیم می کنیم و نتیجه را برای کامپیوتر ارسال می کنیم.

می توانید سورس کد کامل نرم افزار آردوینو را دانلود کنید

ویژوال C++

من فرض می کنم که شما قبلاً دانش اولیه برنامه نویسی C++ برای ویندوز را دارید، اگر نه، از Google استفاده کنید. اینترنت پر از آموزش برای مبتدیان است.

اولین کاری که باید انجام دهید این است که پورت سریال را از نوار ابزار به فرم پایین اضافه کنید. این به شما امکان می دهد برخی از پارامترهای مهم پورت سریال را تغییر دهید: نام پورت، نرخ باود، عمق بیت. این برای افزودن کنترل‌ها به پنجره برنامه، تغییر این تنظیمات در هر زمان، بدون کامپایل مجدد برنامه مفید است. من فقط از گزینه انتخاب پورت استفاده کردم.

پس از جستجوی پورت های سریال موجود، اولین پورت به صورت پیش فرض انتخاب می شود. چگونه انجام می شود:

آرایه< String ^>^ serialPorts = nullptr;

serialPorts = serialPort1->GetPortNames();

this->comboBox1->Items->AddRange(SerialPorts);

this->comboBox1->SelectedIndex=0;

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

serialPort1->Open();

serialPort1->Close();

برای خواندن صحیح داده ها از یک پورت سریال، باید از رویدادها (در مورد ما، وقفه) استفاده کنید. انتخاب نوع رویداد:

با دوبار کلیک کردن روی "DataReceived" لیست کشویی را باز کنید.

کد رویداد به طور خودکار تولید می شود:

اگر اولین بایت وارد شده به پورت سریال 0xAB باشد، اگر این بدان معناست که بایت های باقیمانده اطلاعات ولتاژ را حمل می کنند.

private: System:: Void serialPort1_DataReceived(System::Object^ فرستنده، System::IO::Ports::SerialDataReceivedEventArgs^ e) (

char unsigned data0, data1;

if (SerialPort1->ReadByte()==0xAB) (

data0=serialPort1->ReadByte();

data1=serialPort1->ReadByte();

ولتاژ=ریاضی::Round((float(data0*256+data1)/1024*5.00),2);

data_count ++;

serialPort1->ReadByte();

داده های پورت سریال را بنویسید و بخوانید

یک مشکل کوچک برای من ارسال داده های RAW هگز از طریق پورت سریال بود. از دستور Write() استفاده شد. اما با سه آرگومان: آرایه، شماره بایت شروع، تعداد بایت‌های برای نوشتن.

خصوصی: سیستم:: دکمه خالی2_کلیک_1(سیستم::شیء^ فرستنده، سیستم::EventArgs^ e) (

کانال char بدون امضا=0;

channel=this->listBox1->SelectedIndex;

آرایه^شروع =(0xAC,(0x10+کانال));

آرایه^توقف =(0xAC,0x00);

serialPort1->Write(start,0,2);

this->button2->Text="Stop";

) دیگر (

serialPort1->Write(stop,0,2);

this->button2->Text="Start";

همین!

مقاله اصلی به زبان انگلیسی (ترجمه: الکساندر کاسیانوفبرای سایت cxem.net)

نحوه ساخت یک ولت متر دوگانه خانگی بر اساس پلتفرم Arduino UNO با استفاده از نمایشگر LCD 1602A را شرح می دهد. در برخی موارد لازم است دو ولتاژ ثابت به طور همزمان اندازه گیری و با هم مقایسه شوند. این ممکن است برای مثال هنگام تعمیر یا راه اندازی یک تثبیت کننده ولتاژ DC به منظور اندازه گیری ولتاژ در ورودی و خروجی آن یا در موارد دیگر مورد نیاز باشد.

نمودار شماتیک

با استفاده از ماژول میکروکنترلر جهانی ARDUINO UNO و نمایشگر LCD دو خطی نوع 1602A (بر اساس کنترلر HD44780) می توانید به راحتی چنین دستگاهی بسازید. در یک خط ولتاژ U1 را نشان می دهد، در خط دیگر - ولتاژ U2.

برنج. 1. نمودار شماتیک یک ولت متر دوگانه با نمایشگر 1602A در آردوینو UNO.

اما، اول از همه، می خواهم به شما یادآوری کنم که ARDUINO UNO یک ماژول آماده نسبتا ارزان است - یک برد مدار چاپی کوچک که میکروکنترلر ATMEGA328 روی آن قرار دارد، و همچنین تمام سخت افزارهای لازم برای عملکرد آن، از جمله یک پروگرامر و منبع تغذیه USB.

برای کسانی که با ARDUINO UNO آشنایی ندارند، به شما توصیه می کنم ابتدا مقالات L.1 و L.2 را مطالعه کنند. مدار یک ولت متر دوبل در شکل نشان داده شده است. 1. برای اندازه گیری دو ولتاژ از 0 تا 100 ولت (عملا تا 90 ولت) طراحی شده است.

همانطور که از نمودار مشخص است، یک ماژول نمایشگر کریستال مایع نوع H1 1602A به پورت های دیجیتال D2-D7 برد ARDUINO UNO متصل شده است. نشانگر LCD توسط یک تثبیت کننده ولتاژ 5 ولت که بر روی برد تثبیت کننده ولتاژ 5 ولت قرار دارد تغذیه می شود.

ولتاژهای اندازه گیری شده به دو ورودی آنالوگ A1 و A2 عرضه می شوند. در مجموع شش ورودی آنالوگ A0-A5 وجود دارد که می توانید هر دو را انتخاب کنید. در این حالت A1 و A2 انتخاب می شوند. ولتاژ در پورت های آنالوگ فقط می تواند مثبت باشد و فقط در محدوده صفر تا ولتاژ تغذیه میکروکنترلر، یعنی اسمی تا 5 ولت باشد.

خروجی پورت آنالوگ توسط ADC میکروکنترلر به شکل دیجیتال تبدیل می شود. برای به دست آوردن نتیجه در واحدهای ولت، باید آن را در 5 ضرب کنید (با ولتاژ مرجع، یعنی در ولتاژ تغذیه میکروکنترلر) و بر 1024 تقسیم کنید.

برای اینکه بتوان ولتاژهای بیشتر از 5 ولت یا بهتر بگوییم بیشتر از ولتاژ تغذیه میکروکنترلر را اندازه گیری کرد، زیرا ولتاژ واقعی در خروجی تثبیت کننده 5 ولتی روی برد ARDUINO UNO ممکن است با 5 ولت متفاوت باشد و معمولاً کمی پایین تر، باید از تقسیم کننده های مقاومتی معمولی در ورودی استفاده کنید. در اینجا اینها تقسیم کننده های ولتاژ در مقاومت های R1، R3 و R2، R4 هستند.

در این حالت، برای رساندن قرائت های دستگاه به مقدار واقعی ولتاژ ورودی، باید تقسیم نتیجه اندازه گیری را بر ضریب تقسیم تقسیم کننده مقاومتی در برنامه تنظیم کنید. و ضریب تقسیم، بیایید آن را "K" نشان دهیم، با استفاده از فرمول زیر قابل محاسبه است:

K = R3 / (R1+R3) یا K = R4 / (R2+R4)،

به ترتیب برای ورودی های مختلف ولت متر دوبل.

بسیار جالب است که مقاومت های موجود در تقسیم کننده ها لزوماً نباید از دقت بالایی برخوردار باشند. می توانید مقاومت های معمولی را بگیرید، سپس مقاومت واقعی آنها را با یک اهم متر دقیق اندازه گیری کنید و این مقادیر اندازه گیری شده را در فرمول جایگزین کنید. مقدار "K" را برای یک مقسوم‌کننده خاص دریافت خواهید کرد که باید در فرمول جایگزین شود.

برنامه ولت متر

برنامه C++ در شکل 2 نشان داده شده است.

برنج. 2. کد منبع برنامه.

برای کنترل نشانگر LCD تصمیم گرفته شد از پورت های D2 تا D7 برد ARDUINO UNO استفاده شود. در اصل، پورت های دیگری امکان پذیر است، اما من اینگونه تصمیم گرفتم از آنها استفاده کنم.

برای اینکه نشانگر با ARDUINO UNO تعامل داشته باشد، باید یک برنامه فرعی را برای کنترل آن در برنامه بارگذاری کنید. چنین روتین هایی "کتابخانه" نامیده می شوند و "کتابخانه" های مختلفی در بسته نرم افزاری ARDUINO UNO وجود دارد. برای کار با یک نشانگر LCD مبتنی بر HD44780، به کتابخانه LiquidCrystal نیاز دارید. بنابراین، برنامه (جدول 1) با بارگذاری این کتابخانه شروع می شود:

این خط فرمان بارگذاری این کتابخانه را در ARDUINO UNO می دهد. در مرحله بعد، باید پورت های ARDUINO UNO را اختصاص دهید که با نشانگر LCD کار می کنند. من پورت های D2 تا D7 را انتخاب کردم. شما می توانید دیگران را انتخاب کنید. این پورت ها توسط خط تخصیص داده می شوند:

LiquidCrystal led(2، 3، 4، 5، 6، 7);

پس از آن، برنامه به عملکرد واقعی ولت متر ادامه می دهد. برای اندازه گیری ولتاژ تصمیم گرفته شد از ورودی های آنالوگ A1 و A2 استفاده شود. این ورودی ها در خطوط داده شده است:

int analogInput=1;

int analogInput1=2;

برای خواندن داده ها از پورت های آنالوگ، از تابع analogRead استفاده کنید. خواندن داده ها از پورت های آنالوگ در خطوط زیر انجام می شود:

vout=analogRead(analogInput);

voutl=analogRead(analoglnput1);

سپس، ولتاژ واقعی با در نظر گرفتن نسبت تقسیم تقسیم کننده ولتاژ ورودی محاسبه می شود:

ولت=vout*5.0/1024.0/0.048 ;

ولت1=vout1*5.0/1024.0/0.048;

در این خطوط عدد 5.0 ولتاژ خروجی تثبیت کننده برد ARDUINO UNO است. در حالت ایده آل، باید 5 ولت باشد، اما برای اینکه ولت متر به درستی کار کند، ابتدا باید این ولتاژ اندازه گیری شود. منبع تغذیه را وصل کنید و ولتاژ +5 ولت را در کانکتور POWER برد با یک ولت متر نسبتاً دقیق اندازه گیری کنید. چه اتفاقی می افتد، سپس به جای 5.0 در این خطوط وارد کنید، به عنوان مثال، اگر 4.85 ولت باشد، خطوط به شکل زیر در می آیند:

ولت=وات*4.85/1024.0/0.048;

ولت1=vout1*4.85/1024.0/0.048;

در مرحله بعد، باید مقاومت های واقعی مقاومت های R1-R4 را اندازه گیری کنید و ضرایب K (نشان داده شده به عنوان 0.048) را برای این خطوط با استفاده از فرمول ها تعیین کنید:

K1 = R3 / (R1+R3) و K2 = R4 / (R2+R4)

فرض کنید K1 = 0.046، و K2 = 0.051، بنابراین می نویسیم:

ولت=vout*4.85/1024.0/0.046 ;

ولت1=vout1*4.85/1024.0/0.051;

بنابراین، باید با توجه به ولتاژ واقعی خروجی تثبیت کننده 5 ولتی برد ARDUINO UNO و با توجه به ضرایب تقسیم واقعی تقسیم کننده های مقاومتی، متن برنامه را تغییر دهید. پس از این، دستگاه با دقت کار می کند و نیازی به تنظیم و کالیبراسیون نخواهد داشت.

با تغییر ضرایب تقسیم تقسیم کننده های مقاومتی (و بر این اساس، ضرایب "K")، می توانید محدودیت های اندازه گیری دیگری ایجاد کنید، و لزوماً برای هر دو ورودی یکسان نیست.

Karavkin V. RK-2017-01.

ادبیات:

  1. Karavkin V. - فلاشر درخت کریسمس در ARDUINO به عنوان درمانی برای ترس از میکروکنترلرها. RK-11-2016.
  2. Karavkin V. - فرکانس سنج در ARDUINO. RK-12-2016.

سلام، هابر! امروز می خواهم مبحث "تقاطع" آردوینو و اندروید را ادامه دهم. در مقاله قبلی در مورد دستگاه بلوتوث صحبت کردم و امروز در مورد ولت متر بلوتوث DIY صحبت خواهیم کرد. یکی دیگر از این دستگاه ها را می توان ولت متر هوشمند، ولت متر "هوشمند" یا فقط یک ولت متر هوشمند، بدون نقل قول نامید. نام خانوادگی از نظر دستور زبان روسی نادرست است، با این حال، اغلب در رسانه ها یافت می شود. در پایان مقاله در مورد این موضوع رای داده می شود، اما پیشنهاد می کنم با نمایش عملکرد دستگاه شروع کنید تا متوجه شوید مقاله در مورد چیست.


سلب مسئولیت: این مقاله برای علاقه مندان به آردوینو معمولی است که معمولاً با برنامه نویسی اندروید آشنایی ندارند، بنابراین مانند مقاله قبلی، با استفاده از محیط توسعه بصری App Inventor 2 برای برنامه های اندروید، اپلیکیشنی برای گوشی هوشمند ایجاد می کنیم.
برای ساختن یک ولت متر بلوتوث DIY، باید دو برنامه نسبتاً مستقل بنویسیم: یک طرح برای آردوینو و یک برنامه کاربردی برای اندروید.
ابتدا باید بدانید که سه گزینه اصلی برای اندازه گیری ولتاژ با استفاده از آردوینو وجود دارد، صرف نظر از اینکه در کجا باید اطلاعات را خروجی بگیرید: به پورت کام، صفحه متصل به آردوینو یا گوشی هوشمند.
حالت اول: اندازه گیری ولتاژ تا 5 ولت. در اینجا یک یا دو خط کد کافی است و ولتاژ مستقیماً به پین ​​A0 می رسد:
int value = analogRead(0) // خواندن قرائت از A0
ولتاژ = (مقدار / 1023.0) * 5; // فقط در صورتی درست است که Vcc = 5.0 ولت باشد
حالت دوم: برای اندازه گیری ولتاژهای بیشتر از 5 ولت از تقسیم کننده ولتاژ استفاده می شود. مدار بسیار ساده است و کد هم همینطور.

طرح

int analogInput = A0;
شیر شناور = 0.0;
ولتاژ شناور = 0.0;
شناور R1 = 100000.0; //Battery Vin-> 100K -> A0
شناور R2 = 10000.0; //Battery Gnd -> Arduino Gnd و Arduino Gnd -> 10K -> A0
مقدار int = 0;

تنظیم خالی () (
Serial.begin(9600);
pinMode (Input analog، INPUT)؛
}

حلقه خالی() (
value = analogRead(analogInput);
val = (مقدار * 4.7) / 1024.0;
ولتاژ = val / (R2/(R1+R2));
Serial.println(ولتاژ);
تاخیر (500);
}


آردوینو اونو
ماژول بلوتوث
مورد سوم. هنگامی که نیاز به دریافت اطلاعات دقیق تری در مورد ولتاژ دارید، باید از ولتاژ منبع تغذیه استفاده کنید، که مثلاً هنگام تغذیه با باتری می تواند کمی تغییر کند، بلکه ولتاژ تثبیت کننده داخلی آردوینو 1.1 ولت است مدار در اینجا یکسان است، اما کد کمی طولانی تر است. من این گزینه را با جزئیات تجزیه و تحلیل نمی کنم، زیرا قبلاً در مقالات موضوعی به خوبی توضیح داده شده است، اما روش دوم برای من کاملاً کافی است، زیرا منبع تغذیه من از درگاه USB لپ تاپ پایدار است.
بنابراین ما اندازه‌گیری ولتاژ را مرتب کردیم، حالا بیایید به نیمه دوم پروژه برویم: ایجاد یک برنامه اندروید. ما برنامه را مستقیماً از مرورگر در محیط توسعه بصری برای برنامه های اندرویدی App Inventor 2 ایجاد خواهیم کرد. به وب سایت appinventor.mit.edu/explore بروید، با استفاده از حساب Google خود وارد شوید، روی دکمه ایجاد، پروژه جدید کلیک کنید و توسط به سادگی با کشیدن و رها کردن عناصر چیزی شبیه به این طرح ایجاد خواهیم کرد:

من گرافیک را خیلی ساده کردم، اگر کسی گرافیک جالب تری می خواهد، به شما یادآوری کنم که برای این کار باید به جای فایل های jpeg از فایل های png. با پس زمینه شفاف استفاده کنید.
حالا به تب Blocks بروید و منطق برنامه را در آنجا ایجاد کنید چیزی شبیه به این:


اگر همه چیز درست شد، می توانید روی دکمه Build کلیک کنید و apk. را در رایانه من ذخیره کنید، و سپس برنامه را دانلود و بر روی تلفن هوشمند خود نصب کنید، اگرچه راه های دیگری برای آپلود برنامه وجود دارد. در اینجا برای هر کسی راحت تر است. در نتیجه، من به این برنامه رسیدم:


من می دانم که افراد کمی از محیط توسعه بصری App Inventor 2 برای برنامه های اندروید در پروژه های خود استفاده می کنند، بنابراین ممکن است سوالات زیادی در مورد کار در آن ایجاد شود. برای پاسخ به برخی از این سؤالات، من یک ویدیوی دقیق در مورد نحوه ساخت چنین برنامه ای "از ابتدا" تهیه کردم (برای مشاهده آن باید به YouTube بروید):

P.S. مجموعه ای از بیش از 100 مطلب آموزشی در آردوینو برای مبتدیان و حرفه ای ها

نمودار شماتیک یک ولت متر دوقطبی خانگی در Arduino Uno و با نمایشگر 1602A. در مقاله "ولت متر دو برابر در ARDUINO UNO" (L.1)، نویسنده توضیحاتی در مورد ولت متر و برنامه ای برای اندازه گیری همزمان و نشان دادن دو ولتاژ ثابت ارائه کرد. اگر نیاز به اندازه گیری همزمان دو ولتاژ ثابت و مقایسه آنها داشته باشید، بسیار راحت است.

این ممکن است مورد نیاز باشد، برای مثال، هنگام تعمیر یا راه اندازی یک تثبیت کننده ولتاژ DC به منظور اندازه گیری ولتاژ در ورودی و خروجی آن، یا در موارد دیگر.

با این حال، مدارهایی با منبع تغذیه دوقطبی وجود دارد که ولتاژ در نقطه ای از مدار نسبت به "صفر" مشترک می تواند مثبت یا منفی باشد.

نمودار شماتیک

در اینجا اصلاح مدار و برنامه را شرح می دهیم تا دستگاه بتواند ولتاژ مثبت و منفی را اندازه گیری و نمایش دهد.

برای شروع، ولتاژهای اندازه گیری شده به دو ورودی آنالوگ A1 و A2 عرضه می شوند. در مجموع شش ورودی آنالوگ A0-A5 وجود دارد که می توانید هر دو را انتخاب کنید. در این حالت A1 و A2 انتخاب می شوند. ولتاژ در پورت های آنالوگ فقط می تواند مثبت و فقط در محدوده صفر تا ولتاژ تغذیه میکروکنترلر باشد، یعنی به طور اسمی تا 5 ولت.

خروجی پورت آنالوگ توسط ADC میکروکنترلر به شکل دیجیتال تبدیل می شود. برای به دست آوردن نتیجه در واحدهای ولت، باید آن را در 5 ضرب کنید (با ولتاژ مرجع، یعنی در ولتاژ تغذیه میکروکنترلر) و بر 1024 تقسیم کنید.

برنج. 1. نمودار شماتیک یک ولت متر دوقطبی در آردوینو Uno و 1602A.

برای اینکه بتوان ولتاژهای بیشتر از 5 ولت یا بهتر بگوییم بیشتر از ولتاژ تغذیه میکروکنترلر را اندازه گیری کرد، زیرا ولتاژ واقعی در خروجی تثبیت کننده 5 ولتی روی برد ARDUINO UNO ممکن است با 5 ولت متفاوت باشد و معمولاً کمی پایین تر، باید از تقسیم کننده های مقاومتی معمولی در ورودی استفاده کنید.

در اینجا اینها تقسیم کننده های ولتاژ در مقاومت های R1، R3 و R2، R4 هستند. اما اگر لازم باشد ولتاژ کمتر از صفر اندازه گیری شود چه؟ در این مورد، تنها یک راه برای خروج از وضعیت وجود دارد - افزایش سطح ورودی صفر. در حالت ایده آل، به نصف ولتاژ تغذیه نیاز دارید، یعنی تا 2.5 ولت. در این حالت داده 2.5 ولتی به ولتاژ ورودی اضافه می شود.

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

برد ARDUINO UNO علاوه بر تثبیت کننده ولتاژ 5 ولت دارای منبع ولتاژ 3.3 ولت می باشد. بنابراین می توان از آن به عنوان یک "صفر مجازی" برای ورود استفاده کرد.

تغییرات در مدار در شکل 1 قابل مشاهده است. در مقایسه با گزینه اول، ورودی "صفر" به سادگی از صفر مشترک به منبع +Z.ZV بازآرایی شده است. بنابراین، هنگامی که ولتاژ ورودی مثبت است، در ورودی بیش از 3.3 ولت است (اما نه بیشتر از 5 ولت - این حد بالایی اندازه گیری است)، و در صورت منفی - کمتر از 3.3 ولت (اما نه کمتر از OV - این حد پایین اندازه گیری است).

افزایش محدودیت‌های اندازه‌گیری (مدول) توسط یک تقسیم‌کننده مقاومتی به دست می‌آید و نشان‌دهنده ولتاژ ورودی واقعی عرضه‌شده به X2 و X3 با تفریق نرم‌افزاری مقدار 3.3 ولت از ولتاژ ورودی‌های میکروکنترلر به دست می‌آید.

این برنامه در جدول 1 نشان داده شده است. این را می توان در خطوط مشاهده کرد:

ولت=(vout*5.0/1024.0-3.3)/0.048 ;

voltl=(voutl*5.0/1024.0-3.3)/0.048;

عدد 3.3 دقیقاً همین ولتاژ ورودی "صفر مجازی" است.

در این خطوط عدد 5.0 ولتاژ خروجی تثبیت کننده برد ARDUINO UNO است. در حالت ایده آل، باید 5 ولت باشد، اما برای اینکه ولت متر به درستی کار کند، ابتدا باید این ولتاژ اندازه گیری شود. منبع تغذیه را وصل کنید و ولتاژ +5 ولت را در کانکتور POWER برد با یک ولت متر نسبتاً دقیق اندازه گیری کنید.

چه اتفاقی می افتد، سپس به جای 5.0 در این خطوط وارد کنید. به عنوان مثال، اگر "5 ولت" در واقع 4.85 ولت و "3.3 ولت" در واقع 3.32 ولت باشد، خطوط به این شکل خواهند بود:

ولت=(vout*4.85/1024.0-3.32)/0.048;

voltl=(voutl*4.85/1024.0-3.32)/0.048;

در مرحله بعد، باید مقاومت های واقعی مقاومت های R1-R4 را اندازه گیری کنید و ضرایب K (نشان داده شده به عنوان 0.048) را برای این خطوط با استفاده از فرمول ها تعیین کنید:

K1 = R3 / (R1+R3) و K2 = R4 / (R2+R4)

فرض کنید K1 = 0.046، و K2 = 0.051، بنابراین می نویسیم:

ولت=(vout*4.85/1024.0-3.32)/0.046;

voltl=(voutl*4.85/1024.0-3.32)/0.051;

بنابراین، با توجه به ولتاژ واقعی خروجی تثبیت کننده های 5 ولتی و 3.3 ولتی برد ARDUINO UNO و با توجه به ضرایب تقسیم واقعی تقسیم کننده های مقاومتی، باید متن برنامه را تغییر دهید.

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

با تغییر ضرایب تقسیم تقسیم کننده های مقاومتی (و بر این اساس، ضرایب "K")، می توانید محدودیت های اندازه گیری دیگری ایجاد کنید، و لزوماً برای هر دو ورودی یکسان نیست.

یادآور می شوم که ماژول نمایشگر کریستال مایع نوع 1602A H1 به پورت های دیجیتال D2-D7 برد ARDUINO UNO متصل می شود. نشانگر LCD توسط یک تثبیت کننده ولتاژ 5 ولت که بر روی برد تثبیت کننده ولتاژ 5 ولت قرار دارد تغذیه می شود.

برای اینکه نشانگر با ARDUINO UNO تعامل داشته باشد، باید یک برنامه فرعی را برای کنترل آن در برنامه بارگذاری کنید. چنین روتین هایی "کتابخانه" نامیده می شوند و "کتابخانه" های مختلفی در بسته نرم افزاری ARDUINO UNO وجود دارد. برای کار با یک نشانگر LCD مبتنی بر HD44780، به کتابخانه LiquidCrystal نیاز دارید. بنابراین، برنامه (جدول 1) با بارگذاری این کتابخانه شروع می شود:

این خط فرمان بارگذاری این کتابخانه را در ARDUINO UNO می دهد. سپس، باید پورت های ARDUINO UNO را اختصاص دهید که با نشانگر LCD کار می کنند. من پورت های D2 تا D7 را انتخاب کردم. شما می توانید دیگران را انتخاب کنید. این پورت ها توسط خط تخصیص داده می شوند:

LiquidCrystal led(2، 3، 4، 5، 6، 7);

پس از آن، برنامه به عملکرد واقعی ولت متر ادامه می دهد.

Karavkin V. RK-06-17.

ادبیات: 1. Karavkin V. - دو ولت متر روی ARDUINO UNO. RK-01-17.

 
مقالات توسطموضوع:
کارت های سوخت را با حروف بزرگ در 1c بنویسید
افزایش تردد وسایل نقلیه در جاده‌های مسکو و منطقه و همچنین در شهرهای بزرگ منطقه، نیاز به ایجاد شرایط پیشرفته‌تر و مطلوب‌تر برای همکاری بین سازمان‌های سوخت و مشتریان آنها را ایجاد کرده است. هزینه و کیفیت سوخت، اپرا
ال ای دی پیرانا - آنها چیست؟
در مقالات قبلی خود بارها فرآیند ساخت برد برای نصب انواع ماژول های ال ای دی در خودرو را شرح داده ایم. استفاده از روش LUT فرصت های بسیار گسترده ای را برای تحقق جسورانه ترین ایده ها فراهم می کند. با این حال، اخیرا همه چیز
ال ای دی پیرانا - آنها چیست؟
در مقالات قبلی خود بارها فرآیند ساخت برد برای نصب انواع ماژول های ال ای دی در خودرو را شرح داده ایم. استفاده از روش LUT فرصت های بسیار گسترده ای را برای تحقق جسورانه ترین ایده ها فراهم می کند. با این حال، اخیرا همه چیز
تعیین خرابی منبع ضربه های خارجی در خودرو روش های تعیین نقص عملکرد کمک فنر
در این مقاله در مورد این موضوع صحبت خواهیم کرد همانطور که می دانید کمک فنرها نقش بسیار مهمی در تضمین ایمنی خودرو دارند. علاوه بر این، این نقش به طور قابل توجهی توسط بسیاری از رانندگان دست کم گرفته می شود. اما اگر این پیوندها فرسوده شده و کاملاً کارکرد ندارند