آموزش ESP32 55/55 - چگونه ولتاژ 12V، 24V یا 100V DC را اندازهگیری کنیم | کیت یادگیری IoT ESP32 سانفاندر
در این آموزش، ما یاد خواهیم گرفت که چگونه از ESP32 برای اندازهگیری ولتاژهای DC مختلف، از جمله 12V، 24V و حتی تا 100V استفاده کنیم. با بهرهگیری از یک مدار تقسیم ولتاژ ساخته شده از دو مقاومت، میتوانیم ولتاژهای بالاتر را بهطور ایمن اندازهگیری کنیم بدون اینکه خطر آسیبی به میکروکنترلر ESP32 ایجاد شود. این پروژه نشان خواهد داد که چگونه این ولتاژها را خوانده و بر روی نمایشگر مسلسل نمایش دهیم، و بینشهای ارزشمندی در مورد منابع قدرت خود ارائه خواهد داد.
برای توضیح جامع و کامل ویدیو را تماشا کنید (در ویدیو در :00). ما از یک پیکربندی تقسیم ولتاز ساده برای دستیابی به این هدف استفاده خواهیم کرد، با اطمینان از اینکه میتوانیم ولتاژهایی را که از حداکثر سطوح ورودی ESP32 فراتر میروند، بهصورت ایمن اندازهگیری کنیم. این آموزش برای افرادی که به دنبال گسترش دانش خود در مورد ESP32 و قابلیتهای آن هستند، ایدهآل است.
فرمول محاسبه ولتاژ
توضیحاتی درباره سختافزار
اجزای اصلی این پروژه شامل میکروکنترلر ESP32، دو مقاومت که یک تقسیم ولتاژ را شکل میدهند، و منبع تغذیهای است که میخواهید اندازهگیری کنید. ESP32 دارای قابلیتهای Wi-Fi و بلوتوث داخلی است که آن را انتخابی چندمنظوره برای پروژههای اینترنت اشیا میسازد. تقسیم ولتاژ که از دو مقاومت تشکیل شده، به ما اجازه میدهد تا ولتاژ را به سطح ایمنی که ESP32 بتواند پردازش کند، کاهش دهیم.
در این تنظیمات، یک مقاومت،R1مقدار 10kΩ ثابت است، در حالی که مقاومت دوم،R2میتواند بسته به حداکثر ولتاژی که میخواهید اندازهگیری کنید متغیر باشد. ولتاژ در سراسرR1این چیزی است که ما با استفاده از پایه ورودی آنالوگ ESP32 خواهیم خواند، که به ما امکان میدهد ولتاژ اصلی منبع برق را محاسبه کنیم.
- مطمئن شوید که مقاومتها ۱% تلورانس دارند تا اندازهگیریهای دقیقی انجام شود.
- از یک تقسیم کننده ولتاژ استفاده کنید تا از تجاوز به ردههای ولتاژ ورودی ESP32 جلوگیری کنید.
- نگهدارید
R1در 10 کیلو اهم و تنظیم کنیدR2بر اساس محدوده ولتاژ. - اتصالات را بررسی کنید تا از ورودیهای شناور که میتوانند منجر به قرائتهای نادرست شوند، جلوگیری کنید.
- از یک منبع انرژی پایدار برای اندازهگیریهای ولتاژ مداوم استفاده کنید.
دستورات سیمکشی
برای اتصال مدار، با وصل کردن یک سر ازR1مقاومت (10kΩ) را به منبع ولتاژ خود متصل کنید و انتهای دیگر آن را به پایه GPIO 35 ESP32 وصل کنید. این پایه ولتاژ را اندازهگیری خواهد کردR1. سپس، اتصال دهید بهR2مقاومت (که میتواند ۱۰۰ کیلو اهم یا مقدار دیگری بسته به نیاز شما باشد) بین نقطه تلاقیR1و زمین. اطمینان حاصل کنید که زمین منبع برق نیز به زمین ESP32 متصل است.
برای مثال، اگر ولتاژ ۲۴ ولت را اندازهگیری میکنید، پایه مثبت منبع تغذیه را بهR1سپس انتهای دیگر را وصل کنیدR1به پایه 35 و تقاطع دو مقاومت. سر آزادR2باید به زمین بروید. این پیکربندی به ESP32 اجازه میدهد تا ولتاژ کاهشی را بهطور ایمن بخواند.
نمونههای شِفر (کود) و راهنما
const int R1 = 10000; // Resistor 1 value
const int R2 = 100000; // Resistor 2 value
const int VinPin = 35; // Voltage input pin
در این بخش، مقادیر مقاومتهای خود را تعریف میکنیم،R1وR2و همچنین پایه آنالوگVinPinکه ما از آن برای خواندن ولتاژ استفاده خواهیم کرد. این ثوابت برای محاسبات ولتاژ ما حیاتی هستند.
void readVoltage() {
uint32_t voltage_mV = analogReadMilliVolts(VinPin); // Read in millivolts
VB1 = (((float) voltage_mV) / 1000.0) * (1 + (float)R2/(float)R1);
}
این تابع ولتاژ را در میلیولت از پایه مشخص شده میخواند و ولتاژ واقعی را محاسبه میکند.VB1استفاده از فرمول تقسیم ولتاژ. این برای تبدیل ولتاژ کاهشیافته به مقدار اصلی اهمیت دارد.
void maxVoltage() {
float maxVoltage = (3.1) * (1 + (float)R2/(float)R1);
}
در اینجا، یک تابع برای محاسبه و چاپ حداکثر ولتاژی که میتوان بهطور ایمن اندازهگیری کرد بر اساس مقادیر مقاومت تعریف میکنیم. این تابع برای اطمینان از عدم گذر از محدودیتهای ولتاژ ESP32 بسیار حائز اهمیت است.
نمایش / چه انتظاری داشته باشیم
زمانی که شِفر (کود) را اجرا میکنید، باید ولتاژ اندازهگیریشده را روی مانیتور سری ببینید. وقتی ولتاژ ورودی را تنظیم میکنید، خوانشها باید این تغییرات را بهصورت لحظهای نشان دهند و توانایی ESP32 در اندازهگیری ولتاژهای مختلف DC بهدقت را نشان دهند. اگر در خوانشها نوساناتی مشاهده کردید، در نظر داشته باشید که میانگین چندین نمونه را محاسبه کنید تا نتیجهای پایدارتر بدست آورید (در ویدیو در ۱۲:۳۰).
فاصلههای زمانی ویدیو
- ۰۰:۰۰ شروع
- ۱:۵۹ مقدمهای بر پروژه
- 5:۴۵ تقسیم ولتاژ
- ۷:۳۳ توضیحاتی درباره سیمکشی
- 9:14 شِفر (کود) آردوینو توضیح داده شده
- انتخاب برد ESP32 و پورت COM در Arduino IDE در ساعت ۱۴:۴۵
- 16:27 اندازهگیری 30V با استفاده از ESP32 نمایشگاه
- ۲۱:۳۶ مقدار R2 را به ۳۳۰ کیلو اهم تغییر دادند
- 22:33 حداقل اندازهگیری ولتاژ
/*
* شِفر (کود) آردوینو برای ESP32 جهت اندازهگیری ولتاژ DC
* نوشته احمد شمشیری
* توضیح کامل ویدئو را تماشا کنید https://youtu.be/znBiVlgV9JI
* www.robojax.com
* 19 فوریه 2024
*/
bool debug = false;
const int R1 = 10000; // ما ولتاژ را در این مقاومت خواندیم ()
const int R2 = 100000;
const int VinPin = 35; // پتانسیومتر متصل به GPIO14
// تنظیمات PWM
const int freq = 5000; // فرکانس PWM
const int resolution = 12; // وضوح PWM (بیت)
const int channel = 0; // کانال PWM
float VB1;
int mV;
void setup() {
Serial.begin(115200);
// تنظیم PWM
ledcSetup(channel, freq, resolution);
// محاسبه مقاومت(R1، 24);//10000 اهم و 35.0 ولت
}
void loop() {
readVoltage();
Serial.print("VB1 Voltage: ");
Serial.print(VB1); // میلی ولت را به ولت تبدیل کنید
Serial.println("V ");
delay(500);
}
void readVoltage()
{
uint32_t voltage_mV = analogReadMilliVolts(VinPin); // ولتاژ را به میلیولت بخوانید
if(debug)
{
maxVoltage();
Serial.print("PinVoltage: ");
Serial.print(voltage_mV);
Serial.println("mV");
Serial.println(); // این یک خط جدید اضافه میکند
}
mV = voltage_mV;
VB1 = (((float) voltage_mV) / 1000.0) * (1 + (float)R2/(float)R1);
}
/*
* حداکثر ولتاژ را چاپ میکند
*/
void maxVoltage()
{
float maxVoltage = ( 3.1) * (1 + (float)R2/(float)R1);
Serial.print("****Maximum Voltage: ");
Serial.print(maxVoltage);
Serial.println("V");
} // maxVoltage() پایان
void calculatResistor(int r1, float voltage)
{
Serial.print("Calculating R2 when R1 is :");
Serial.print(r1);
Serial.print(" Ohms and Maximum Input Voltage is ");
Serial.print(voltage);
Serial.println("V");
Serial.print("***** R2 Should Be ");
float r2 = (voltage - 3.1)/ (3.1/ (float)r1);
Serial.print(r2 / 1000.0);
Serial.println(" kilo Ohms");
while(1);
}
Common Course Links
Common Course Files
منابع و مراجع
هنوز هیچ منبعی موجود نیست.
فایلها📁
هیچ فایلی موجود نیست.