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

ولت متر دیجیتال در آردوینو از طریق پورت سریال به کامپیوتر متصل می شود. ولت متر بلوتوث مبتنی بر آردوینو

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

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

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

با این مقادیر تقسیم کننده، ولتاژ از 0 به
55B. در ورودی 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 (analogInput، 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)

با مقداری اضافات

یکی از ویژگی های کمتر شناخته شده آردوینو و بسیاری دیگر از تراشه های AVR، توانایی اندازه گیری مرجع داخلی 1.1 ولت است. این تابع می تواند استفاده می شود برای بهبود دقتتوابع آردوینو - analogRead استفاده كردنمرجع استاندارد 5 ولت (در سیستم عامل های 5 ولت) یا 3.3 ولت (در سیستم عامل های 3.3 ولت).همچنین می تواند باشد برای اندازه گیری استفاده می شود Vcc به تراشه تغذیه می شود، ارائه می کند ابزار کنترل ولتاژ باتری بدون استفادهپین های آنالوگ گرانبها

انگیزه

حداقل وجود دارد حداقل دو دلیلبرای اندازه گیری تامین کننده ولتاژآردوینو ما (Vcc). اگر بخواهیم سطح ولتاژ باتری را پیگیری کنیم، یکی از آنها پروژه انرژی باتری ما است. علاوه بر این، زمانی که برق باتری (Vcc) نمی تواند 5.0 ولت باشد (مثلاً با 3 سلول 1.5 ولت تغذیه می شود)، و می خواهیم اندازه گیری های آنالوگ را دقیق تر کنیم - باید از یک مرجع داخلی 1.1 ولت یا یک مرجع ولتاژ خارجی استفاده کنیم. . چرا؟

معمولاً هنگام استفاده از analogRead () فرض می شود که ولتاژ تغذیه آنالوگ کنترلر 5.0 ولت است، در حالی که در واقعیت ممکن است اصلاً اینطور نباشد (مثلاً با 3 عنصر 1.5 ولت تغذیه می شود). اسناد رسمی آردوینو حتی ممکن است ما را به این فرض اشتباه هدایت کند. نکته این است که منبع تغذیه لزوما 5.0 ولت نیست، صرف نظر از سطح فعلی، این برق به Vcc تراشه تامین می شود. اگر منبع تغذیه ما تثبیت نشده باشد، یا اگر با باتری کار می کنیم، این ولتاژ ممکن است کمی متفاوت باشد. در اینجا چند کد نمونه برای نشان دادن این مشکل آورده شده است:

دو برابر Vcc = 5.0; // نه لزوما درست int value = analogRead (0); / خواندن قرائت از A0 دو ولت = (مقدار / 1023.0) * Vcc; // فقط در صورتی درست است که Vcc = 5.0 ولت برای اندازه گیری دقیق ولتاژ، یک ولتاژ مرجع دقیق مورد نیاز است. اکثر تراشه های AVR سه مرجع ولتاژ را ارائه می دهند:

  • 1.1 ولت از منبع داخلی، در مستندات به عنوان مرجع bandgap می رود (برخی از آنها 2.56 ولت هستند، به عنوان مثال ATMega 2560). انتخاب با استفاده از تابع analogReference () با پارامتر INTERNAL انجام می شود: analogReference (INTERNAL);
  • ولتاژ مرجع خارجی، AREF در arduinka امضا شده است. انتخاب: آنالوگ مرجع (EXTERNAL);
  • Vcc منبع تغذیه خود کنترلر است. انتخاب: آنالوگ مرجع (پیش فرض).

در آردوینو، نمی‌توانید مستقیماً Vcc را بگیرید و به پین ​​آنالوگ متصل کنید - به طور پیش‌فرض، AREF به Vcc متصل است و شما همیشه حداکثر مقدار 1023 را دریافت خواهید کرد، مهم نیست از چه ولتاژی تغذیه می‌شوید. اتصال یک منبع ولتاژ به AREF با یک ولتاژ ثابت و شناخته شده قبلی باعث صرفه جویی می شود، اما این یک عنصر اضافی در مدار است.

همچنین می توانید Vcc را به AREF وصل کنید دیود: افت ولتاژ در دیود از قبل مشخص است، بنابراین محاسبه Vcc دشوار نیست. با این حال، با چنین مداری از طریق یک دیود جریان دائما جریان دارد، عمر باتری را کوتاه می کند که آن هم خیلی خوب نیست.

یک مرجع ولتاژ خارجی دقیق ترین است، اما به سخت افزار اضافی نیاز دارد. مرجع داخلی پایدار است اما دقیق نیست +/- انحراف 10٪. Vcc در اکثر موارد کاملاً غیر قابل اعتماد است. انتخاب یک مرجع ولتاژ داخلی ارزان و پایدار است، اما در بیشتر مواقع، ما می خواهیم بیش از 1.1 ولت را اندازه گیری کنیم، بنابراین استفاده از Vcc کاربردی ترین، اما به طور بالقوه کم دقت است. در برخی موارد، می تواند بسیار غیر قابل اعتماد باشد!

چگونه انجامش بدهیم

بسیاری از تراشه های AVR از جمله سری ATmega و ATtiny ابزاری برای اندازه گیری مرجع ولتاژ داخلی ارائه می دهند. چرا این مورد نیاز است؟ دلیل آن ساده است - با اندازه گیری ولتاژ داخلی، می توانیم مقدار Vcc را تعیین کنیم. در اینجا چگونه است:

  1. منبع ولتاژ مرجع پیش فرض را تنظیم کنید: analogReference (DEFAULT); ... ما از Vcc به عنوان منبع استفاده می کنیم.
  2. خواندن ADC را برای منبع داخلی 1.1 ولت بگیرید.
  3. مقدار Vcc را بر اساس اندازه گیری 1.1 ولت با استفاده از فرمول محاسبه کنید:

Vcc * (ADC Reading) / 1023 = 1.1V

که از آن نتیجه می شود:

Vcc = 1.1 ولت * 1023 / (خوانش ADC)

همه چیز را با هم جمع کنید و کد را دریافت کنید:

طولانی readVcc () (// خواندن مرجع 1.1 ولت در مقابل AVcc // مرجع را روی Vcc و اندازه گیری را به مرجع داخلی 1.1 ولتی تنظیم کنید #اگر تعریف شده باشد (__ AVR_ATmega32U4__) || تعریف شده (__ AVR_ATmega1280__) || تعریف شده (__ AVR_0__) ADMUX = _BV (REFS0) | _BV (MUX4) | _BV (MUX3) | _BV (MUX2) | _BV (MUX1)؛ #elif تعریف شده (__AVR_ATtiny24__) || تعریف شده (__ AVR_ATtiny44__) | || تعریف شده (___AVX) | (MUX0)؛ #elif تعریف شده (__AVR_ATtiny25__) || تعریف شده (__ AVR_ATtiny45__) || تعریف شده (__ AVR_ATtiny85__) ADMUX = _BV (MUX3) | _BV (MUX2)؛ #دیگر ADMUX = _BVB3 | | MUX2) | _BV (MUX1)؛ #تأخیر endif (75)؛ // منتظر بمانید تا Vref تسویه شود ADCSRA | = _BV (ADSC)؛ // شروع تبدیل در حالی که (bit_is_set (ADCSRA, ADSC))؛ // اندازه گیری uint8_t کم = ADCL؛ // باید ابتدا ADCL را بخواند - سپس ADCH را قفل می کند uint8_t high = ADCH؛ // هر دو نتیجه طولانی را باز می کند = (بالا<<8) | low; result = 1125300L / result; // Calculate Vcc (in mV); 1125300 = 1.1*1023*1000 return result; // Vcc in millivolts }

استفاده

بررسی Vcc یا ولتاژ باتری

اگر می‌خواهید Vcc را نظارت کنید، می‌توانید این تابع readVcc () را فراخوانی کنید. یک مثال می تواند بررسی سطح باتری باشد. همچنین می توانید از آن برای تعیین اینکه آیا به منبع برق متصل هستید یا با باتری کار می کنید استفاده کنید.

اندازه گیری Vcc برای ولتاژ مرجع

همچنین می توانید از آن برای بدست آوردن مقدار صحیح Vcc برای استفاده با analogRead () زمانی که از ولتاژ مرجع (Vcc) استفاده می کنید استفاده کنید. تا زمانی که از منبع تغذیه تنظیم شده استفاده نکنید، نمی توانید مطمئن باشید که Vcc = 5.0 ولت است. این تابع به شما امکان می دهد مقدار صحیح را بدست آورید. اگرچه یک اخطار وجود دارد….

در یکی از مقالات من بیان کردم که این تابع می تواند برای بهبود دقت اندازه گیری های آنالوگ در مواردی که Vcc کاملاً 5.0 ولت نیست استفاده شود. متأسفانه این روش نتیجه دقیقی نخواهد داشت. چرا؟ این بستگی به دقت مرجع ولتاژ داخلی دارد. این مشخصات ولتاژ اسمی 1.1 ولت را ارائه می دهد، اما می گوید که می تواند تا 10٪ تغییر کند. این اندازه گیری ها ممکن است از منبع تغذیه آردوینو ما دقت کمتری داشته باشند!

بهبود دقت

در حالی که تلرانس های بزرگ منبع تغذیه داخلی 1.1 ولت به طور قابل توجهی دقت اندازه گیری را هنگام استفاده در تولید دسته ای محدود می کند، ما می توانیم برای پروژه های جداگانه به دقت بیشتری دست یابیم. این کار با اندازه گیری Vcc با یک ولت متر و تابع readVcc () آسان است. سپس، ثابت 1125300L را با یک متغیر جدید جایگزین می کنیم:

scale_constant = داخلی 1.1 Ref * 1023 * 1000

interior1.1Ref = 1.1 * Vcc1 (خوانش_ولت متر) / Vcc2 (خوانش_خواندن_readVcc ())

این مقدار کالیبره شده نشانه خوبی برای اندازه گیری تراشه AVR خواهد بود، اما ممکن است تحت تأثیر تغییرات دما قرار گیرد. احساس رایگان برای آزمایش با اندازه گیری های خود را.

نتیجه

کارهای زیادی می توانید با این ویژگی کوچک انجام دهید. شما می توانید از یک ولتاژ مرجع پایدار نزدیک به 5.0 ولت استفاده کنید بدون اینکه واقعاً 5.0 ولت در Vcc داشته باشید. شما می توانید ولتاژ باتری خود را اندازه گیری کنید یا حتی ببینید که با کدام یک از باتری یا منبع برق ثابت کار می کنید.

در نهایت، این کد از تمامی آردوینوها، از جمله لئوناردو جدید، و همچنین تراشه های سری ATtinyX4 و ATtinyX5 پشتیبانی می کند.

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

  • در آموزش از یک برد سازگار با آردوینو استفاده کردیم - 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.

سلام، هابر! امروز میخواهم مبحث "تقاطع" آردوینو و اندروید را ادامه دهم. در انتشار قبلی در مورد آن صحبت کردم و امروز در مورد یک ولت متر بلوتوث 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 آموزش آردوینو برای مبتدیان و حرفه ای ها

اندیشه

اندیشه دستگاه های اندازه گیری ولتاژ، جریان، ظرفیت، دشارژ و شاید شارژ مدت ها پیش و نه تنها برای من، به وجود آمدند. شما می توانید تعداد زیادی اسباب بازی به نام تستر USB (Doctor) را برای آزمایش دستگاه های مختلف USB پیدا کنید. من به یک دستگاه تا حدودی جهانی تر، مستقل از رابط، اما به سادگی برای ولتاژها و جریان های خاص طراحی شده است. به عنوان مثال، 0 - 20.00 ولت، 0 - 5.00 a، 0 - 99.99Ah. در مورد توابع، من آن را اینگونه می بینم

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

توسعه از

برای اجرای محاسبات و اندازه گیری ها به یک کنترل کننده نیاز داریم. من این ایده را به عنوان بخشی از آشنایی خود با آردوینو به یاد آوردم، بنابراین کنترلر یک Atmega328 ساده محبوب خواهد بود و در محیط برنامه ریزی می شود. آردوینو. از نقطه نظر مهندسی، انتخاب احتمالا بهترین نیست - کنترل کننده برای این کار کمی چاق است و ADC آن را نمی توان اندازه گیری نامید، اما ... ما سعی خواهیم کرد.

  • ما در این پروژه زیاد لحیم کاری نمی کنیم. به عنوان پایه، ما یک ماژول آماده Arduino Pro Mini را می گیریم، زیرا چینی ها آماده عرضه آنها با قیمت 1.5 دلار هستند.
  • نمایشگر 1602 به عنوان یک دستگاه نمایشگر عمل می کند - 1.5 دلار دیگر. من یک نوع با ماژول رابط I2C دارم، اما در این پروژه چندان مورد نیاز نیست (0.7 دلار).
  • برای توسعه، ما به تخته نان نیاز داریم. در مورد من، این یک BreadBoard کوچک 1 دلاری است.
  • البته به سیم و تعدادی مقاومت با درجه بندی های مختلف نیاز خواهید داشت. برای نمایشگر 1602 بدون I2C، انتخاب کنتراست نیز مورد نیاز است - این کار با مقاومت متغیر 2 تا 20 کیلو اهم انجام می شود.
  • برای اجرای آمپرمتر، به یک شنت نیاز دارید. به عنوان اولین تقریب، می تواند یک مقاومت 0.1 اهم و 5 وات باشد.
  • برای اجرای خاموش شدن خودکار، به یک رله با کنتاکت‌هایی نیاز دارید که برای حداکثر جریان و ولتاژ دستگاه برابر با ولتاژ تغذیه طراحی شده باشد. یک ترانزیستور NPN و یک دیود محافظ برای کنترل رله مورد نیاز است.
  • دستگاه توسط یک منبع تغذیه خارجی، بدیهی است که حداقل 5 ولت تغذیه می شود. اگر منبع تغذیه بسیار متفاوت باشد، یک تثبیت کننده یکپارچه از نوع 7805 نیز مورد نیاز است - ولتاژ رله را تعیین می کند.
  • چه زمانی Arduino Pro Mini برای آپلود سیستم عامل به مبدل USB-TTL نیاز دارد.
  • برای نصب به یک مولتی متر نیاز دارید.

ولت متر

من در حال پیاده سازی یک ولت متر ساده با محدوده 0 - 20 ولت هستم. این نکته مهم است، زیرا ADC کنترلر ما دارای ظرفیت 10 بیت (1024 مقدار گسسته) است، بنابراین خطا حداقل 0.02 ولت (20/1024) خواهد بود. برای پیاده سازی آن، به یک ورودی آنالوگ کنترلر، یک تقسیم کننده از یک جفت مقاومت و نوعی خروجی نیاز داریم (نمایشگر به پایان رسیده است، برای اشکال زدایی می توانید از یک پورت سریال استفاده کنید).

اصل اندازه گیری ADC مقایسه ولتاژ در ورودی آنالوگ با مرجع VRef است. خروجی ADC همیشه عدد صحیح است - 0 مربوط به 0V، 1023 مربوط به ولتاژ VRef است. اندازه گیری با یک سری قرائت های متوالی ولتاژ و میانگین گیری در دوره بین به روز رسانی مقدار روی صفحه انجام می شود. انتخاب ولتاژ مرجع مهم است زیرا به طور پیش فرض روی ولتاژ منبع تغذیه است که ممکن است پایدار نباشد. این به هیچ وجه برای ما مناسب نیست - ما یک منبع مرجع داخلی پایدار با ولتاژ 1.1 ولت را به عنوان پایه در نظر می گیریم و آن را با یک تماس به آنالوگ مرجع (INTERNAL) مقداردهی اولیه می کنیم. سپس مقدار آن را با توجه به قرائت های مولتی متر کالیبره می کنیم.

در نمودار سمت چپ - یک نوع با کنترل مستقیم نمایشگر (به سادگی کنترل می شود - به طرح استاندارد LiquidCrystal \ HelloWorld مراجعه کنید). در سمت راست نوع I2C است که من از آن بیشتر استفاده خواهم کرد. I2C به شما امکان می دهد در سیم ها صرفه جویی کنید (که در نسخه معمول - 10، بدون احتساب نور پس زمینه). اما این نیاز به یک ماژول اضافی و مقداردهی اولیه پیچیده تر دارد. در هر صورت، نمایش نمادها در ماژول ابتدا باید بررسی شود و کنتراست تنظیم شود - برای این، فقط باید هر متنی را پس از مقداردهی اولیه نمایش دهید. کنتراست توسط مقاومت R1 یا یک مقاومت مشابه در ماژول I2C تنظیم می شود.

ورودی یک تقسیم کننده 1:19 است که در Vref = 1.1 اجازه می دهد تا حداکثر ولتاژ حدود 20 ولت را بدست آورید (معمولاً یک خازن + دیود زنر برای محافظت به موازات ورودی قرار می گیرد، اما این هنوز برای ما مهم نیست). مقاومت ها دارای اسپرد و Vref مرجع کنترلر نیز هستند، بنابراین پس از مونتاژ لازم است ولتاژ (حداقل منبع تغذیه) را به موازات دستگاه خود و مولتی متر مرجع اندازه گیری کنیم و تا زمانی که قرائت ها مطابقت داشته باشند Vref را در کد انتخاب کنیم. . همچنین شایان ذکر است که هر ADC دارای ولتاژ آفست صفر است (که قرائت‌های ابتدای محدوده را خراب می‌کند)، اما فعلاً به این موضوع نمی‌پردازیم.

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

برای کنترل I2C، نسخه ای از کتابخانه LiquidCrystal_I2C استفاده می شود - در مورد من، پین اوت خاص ماژول I2C نشان داده شده است (چینی ها ماژول هایی با کنترل های مختلف تولید می کنند). همچنین اشاره می کنم که I2C در آردوینو استفاده از پین های A4، A5 را فرض می کند - در برد Pro Mini آنها در لبه نیستند، که برای نمونه سازی در BreadBoard ناخوشایند است.

منبع

#عبارتند از #عبارتند از // ولت متر ساده با نمایشگر i2c 1602. V 16.11 // تنظیمات صفحه نمایش i2c 1602 با پین اوت غیر استاندارد #تعریف LCD_I2C_ADDR 0x27 #تعریف نور پس زمینه 3 #تعریف LCD_EN 2 #تعریف LCD_EN 2 #تعریف LCD_Fin 2 #تعریف LCD_RW5 LCDe LCD_D6 6 #define LCD_D7 7 lcd LiquidCrystal_I2C (LCD_I2C_ADDR, LCD_EN, LCD_RW, LCD_RS, LCD_D4, LCD_D5, LCD_D6, LCD_D7); // زمان به‌روزرسانی قرائت‌ها، ms (200-2000) #define REFRESH_TIME 330 // ورودی آنالوگ #define PIN_VOLT A0 // ولتاژ مرجع داخلی (انتخاب) const float VRef = 1.10; // نسبت تقسیم کننده مقاومتی ورودی (Rh + Rl) / Rl. که در<-[ Rh ]--(analogInPin)--[ Rl ]--|GND const float VoltMult = (180.0 + 10.0) / 10.0; float InVolt, Volt; void setup() { analogReference(INTERNAL); // Инициализация дисплея lcd.begin (16, 2); lcd.setBacklightPin(BACKLIGHT, POSITIVE); lcd.setBacklight(HIGH); // включить подсветку lcd.clear(); // очистить дисплей lcd.print("Voltage"); } void loop() { unsigned long CalcStart = millis(); int ReadCnt = 0; InVolt = 0; // Чтение из порта с усреднением while ((millis() - CalcStart) < REFRESH_TIME) { InVolt += analogRead(PIN_VOLT); ReadCnt++; } InVolt = InVolt / ReadCnt; // Смещение 0 для конкретного ADC (подобрать или отключить) if (InVolt >0.2) InVolt + = 3; // تبدیل به ولت (Value: 0..1023 -> (0..VRef) scaled by Mult) Volt = InVolt * VoltMult * VRef / 1023; // خروجی داده lcd.setCursor (0، 1); lcd.print (ولت); lcd.print ("V"); )

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