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

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

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

  • در آموزش از یک برد سازگار با آردوینو استفاده کردیم - SunFounder Uno / Mars (http://bit.ly/2tkaMba)
  • کابل داده USB
  • 2 پتانسیومتر (50k)
  • LCD1602 - http://bit.ly/2ubNEfi
  • هیئت توسعه - http://bit.ly/2slvfrB
  • پرش های متعدد

قبل از اتصال، ابتدا نگاهی به نحوه عملکرد آن بیندازیم.

از برد SunFounder Uno برای قسمت اصلی پردازش داده های ولت متر، LCD1602 به عنوان صفحه، پتانسیومتر برای تنظیم کنتراست LCD و دیگری برای جداسازی ولتاژ استفاده کنید.

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

LCD1602 دارای دو حالت 4 بیتی و 8 بیتی است. هنگامی که IO MCU کافی نیست، می توانید حالت 4 بیتی را انتخاب کنید که فقط از پین های D4 ~ D7 استفاده می کند.

برای اتصال آنها جدول را دنبال کنید.

مرحله 4: پتانسیومتر را به LCD1602 وصل کنید

پایه وسط پتانسیومتر را به پین ​​Vo در LCD1602 و هر یک از پایه های دیگر را به GND وصل کنید.

پایه میانی پتانسیومتر را به پایه A0 SunFounder Uno و یکی از پایه های دیگر را به 5 ولت و دیگری را به GND وصل کنید.

مرحله 6: کد را بارگیری کنید

کد مانند این است:

#شامل / ********************************************** * **** / const int analogIn = A0؛ // پتانسیومتر به ال سی دی LiquidCrystal A0 (4، 6، 10، 11، 12، 13) متصل شود؛ // lcd (RS, E, D4, D5, D6.D7) شناور val = 0؛ // متغیر را به صورت مقدار = 0 تعریف کنید / ************************************** ** **************** / void setup () (Serial.begin (9600)؛ // راه اندازی سریال lcd.begin (16، 2)؛ // تنظیم موقعیت کاراکترهای روی LCD به عنوان خط 2، ستون 16 lcd.print ("مقدار ولتاژ:")؛ // چاپ "مقدار ولتاژ:") / ******************* ********************************** / حلقه خالی () (val = analogRead (A0)؛ // خواندن مقدار پتانسیومتر به val val = val / 1024 * 5.0؛ // تبدیل داده ها به مقدار ولتاژ مربوطه به روش ریاضی Serial.print (val)؛ // چاپ تعداد val در مانیتور سریال Serial.print ("V")؛ // چاپ واحد به صورت V، مختصر ولتاژ در مانیتور سریال lcd.setCursor (6،1)؛ // مکان نما را در خط 1، ستون 6 قرار دهید. از اینجا کاراکترها نمایش داده می شوند. lcd.print (val)؛ // چاپ تعداد v al بر روی LCD lcd.print ("V")؛ // سپس واحد را به صورت V چاپ کنید، کوتاه شده برای ولتاژ در LCD تاخیر (200). // 200 میلی‌ثانیه صبر کنید)

پتانسیومتر را بچرخانید تا ولتاژ LCD1602 را در زمان واقعی بررسی کنید.

در اینجا یک چیز دشوار است. بعد از اینکه کد را اجرا کردم، نمادها روی LCD نمایش داده شدند. سپس کنتراست صفحه را تنظیم کردم (محو شدن از سیاه به سفید) با چرخش پتانسیومتر در جهت عقربه های ساعت یا خلاف جهت عقربه های ساعت تا زمانی که صفحه نمایش کاراکترها را به وضوح نشان دهد.

دو باتری را برای اندازه گیری ولتاژ آنها بردارید: 1.5 ولت و 3.7 ولت، اتصال پتانسیومتر دوم را با پایه A0 و GND قطع کنید، یعنی پتانسیومتر را از مدار خارج کنید. انتهای سیم A0 را به آند باتری و مدار GND را به کاتد ببندید. آنها را دوباره به برق وصل نکنید، در غیر این صورت با یک اتصال کوتاه روی باتری مواجه خواهید شد. مقدار 0V اتصال معکوس است.

بنابراین ولتاژ باتری روی LCD نمایش داده می شود. ممکن است بین مقدار و مقدار اسمی خطایی وجود داشته باشد زیرا باتری کاملاً شارژ نشده است. و به همین دلیل است که باید ولتاژ را اندازه بگیرم تا بفهمم آیا می توانم از باتری استفاده کنم یا خیر.

PS:اگر با نمایشگر مشکل دارید - به این سؤالات متداول برای LCDها مراجعه کنید - http://wiki.sunfounder.cc/index.php?title=LCD1602/I2C_LCD1602_FAQ.

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

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

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

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

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

Serial.print (ولتاژ >> 8، BYTE)؛

Serial.print (ولتاژ% 256، BYTE)؛

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

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

ویژوال c ++

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

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

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

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

serialPorts = serialPort1-> GetPortNames ();

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

this-> comboBox1-> SelectedIndex = 0;

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

serialPort1-> Open ();

serialPort1-> Close ();

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

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

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

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

خصوصی: سیستم :: سریال باطلPort1_DataReceived (سیستم :: شی ^ فرستنده، سیستم :: IO :: پورت ها :: SerialDataReceivedEventArgs ^ e) (

char unsigned data0, data1;

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

data0 = serialPort1-> ReadByte ();

data1 = serialPort1-> ReadByte ();

ولتاژ = ریاضی :: گرد ((شناور (داده 0 * 256 + داده 1) /1024*5.00), 2);

data_count ++;

serialPort1-> ReadByte ();

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

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

خصوصی: System :: Void button2_Click_1 (سیستم :: شی ^ فرستنده، سیستم :: EventArgs ^ e) (

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

channel = this-> listBox1-> SelectedIndex;

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

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

serialPort1-> Write (شروع، 0،2);

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

) دیگر (

serialPort1-> Write (توقف، 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 ولت) طراحی شده است.

همانطور که از نمودار مشخص است، یک ماژول نشانگر کریستال مایع نوع 1602A H1 به درگاه های دیجیتال 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 "کتابخانه" های مختلفی وجود دارد. کتابخانه LiquidCrystal برای کار با LCD مبتنی بر HD44780 مورد نیاز است. بنابراین، برنامه (جدول 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 ولت باشد، خطوط به این صورت می شوند:

ولت = vout * 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.

داده های اولیه و بازبینی

بنابراین در این مرحله یک ولت متر DC با محدودیت 0..20 ولت داریم (قسمت قبل را ببینید). حالا آمپرمتر 0..5a به آن اضافه می کنیم. برای انجام این کار، مدار را کمی تغییر می دهیم - به یک گذرگاه تبدیل می شود، یعنی هم ورودی و هم خروجی دارد.

من قسمت مربوط به صفحه نمایش را روی LCD حذف کردم - تغییر نمی کند. در اصل، عنصر جدید اصلی شنت Rx 0.1 اهم است. زنجیره R1-C1-VD1 برای محافظت از ورودی آنالوگ استفاده می شود. منطقی است که همان را در ورودی A0 قرار دهید. از آنجایی که جریان های به اندازه کافی بزرگ را فرض می کنیم، الزامات نصب وجود دارد - خطوط برق باید با یک سیم به اندازه کافی ضخیم ساخته شوند و مستقیماً به پایانه های شنت متصل شوند (به عبارت دیگر، آنها لحیم شده اند)، در غیر این صورت قرائت ها از واقعیت دور خواهند بود. همچنین نکته ای در مورد جریان وجود دارد - در اصل ، ولتاژ مرجع 1.1 ولت به شما امکان می دهد در شنت ثبت نام کنید جریان 0.1 اهم تا 11 آمپر با دقت کمی بدتر از 0.01a، اما وقتی چنین ولتاژی در Rx کاهش می یابد، توان آزاد شده از 10 وات فراتر می رود که اصلا جالب نیست. برای حل این مشکل، می‌توان از تقویت‌کننده‌ای با بهره ۱۱ روی یک آپمپ با کیفیت بالا و شنت ۱۰ میلی‌اهم (۰.۰۱Ω) استفاده کرد. اما در حال حاضر ما زندگی خود را پیچیده نخواهیم کرد و به سادگی خود را به جریانی تا 5 آمپر محدود می کنیم (در حالی که توان Rx را می توان به ترتیب 3-5 وات انتخاب کرد).

در این مرحله، یک شگفتی در انتظار من بود - معلوم شد که ADC کنترلر دارای یک مخلوط صفر نسبتاً بزرگ است - حدود -3 میلی ولت. یعنی ADC به سادگی سیگنال های کمتر از 3 میلی ولت را نمی بیند و سیگنال های سطح کمی بالاتر با عدم دقت مشخصه 3 میلی ولت قابل مشاهده است که خطی بودن را در ابتدای محدوده خراب می کند. یک جستجوی سریع هیچ ارجاع صریحی به چنین مشکلی ارائه نکرد (تغییر صفر طبیعی است، اما باید به میزان قابل توجهی کوچکتر باشد)، بنابراین کاملاً ممکن است این مشکل از یک نمونه Atmega 328 خاص باشد. 0.06 ولت) برای جریان - یک مقاومت کششی در گذرگاه 5 ولت. مقاومت با یک خط نقطه نشان داده می شود.

منبع

نسخه کامل این ولت آمپر متر (در نسخه I2C) را می توانید از لینک انتهای مطلب دانلود کنید.در مرحله بعد، تغییرات در کد منبع را به شما نشان خواهم داد. خواندن ورودی آنالوگ A1 با همان میانگین ولت متر اضافه شد. در واقع، این همان ولت متر است، فقط بدون تقسیم کننده، و ما آمپر را طبق فرمول اهم دریافت می کنیم: I = U / Rx (به عنوان مثال، اگر افت ولتاژ در Rx = 0.01 V، آنگاه جریان 0.1A است). من همچنین AmpMult ثابت بهره فعلی را برای آینده معرفی کردم. ثابت AmpRx با مقاومت شنت ممکن است برای محاسبه عدم دقت مقاومت شنت تنظیم شود. خوب، از آنجایی که این در حال حاضر یک ولت آمپر متر است و هنوز فضایی در صفحه نمایش 1602 وجود دارد، با دریافت عملکرد اضافی پیچیده، باید مصرف برق فعلی را بر حسب وات نمایش داد.

.... // ورودی آنالوگ #define PIN_VOLT A0 #define PIN_AMP A1 // ولتاژ مرجع داخلی (انتخاب) const float VRef = 1.10; // نسبت تقسیم کننده مقاومتی ورودی (Rh + Rl) / Rl. IN 0.2) InVolt + = 3; // تبدیل به ولت (در: 0..1023 -> (0..VRef) مقیاس شده توسط Mult) float Volt = InVolt * VoltMult * VRef / 1023; float Amp = InAmp * VRef / AmpMult / AmpRx / 1023; // برای محاسبه سقوط روی شانت، 2 خط را از نظر خارج کنید // float RxVolt = InAmp * VRef / 1023 / AmpMult; // ولت - = RxVolt; شناور وات = ولت * آمپر; // خروجی داده lcd.setCursor (8, 0); lcd.print (وات)؛ lcd.print ("W"); lcd.setCursor (0, 1); lcd.print (ولت); lcd.print ("V"); lcd.setCursor (8، 1); lcd.print (آمپر)؛ lcd.print ("A"); )

پیوندها

  • کتابخانه LiquidCrystal_I2C برای تنظیم pinout

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


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

طرح

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

تنظیم خالی () (
Serial.begin (9600);
pinMode (analogInput، 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 آموزش آردوینو برای مبتدیان و حرفه ای ها

مقالات مرتبط برتر