Mafunzo ya ESP32 55/55 - Jinsi ya kupima voltage ya DC ya 12V, 24V au 100V | Kifurushi cha Kujifunza cha IoT cha SunFounder cha ESP32
Katika mafunzo haya, tutajifunza jinsi ya kutumia ESP32 kupima voltages mbalimbali za DC, ikiwa ni pamoja na 12V, 24V, na hata hadi 100V. Kwa kutumia mzunguko wa kugawanya voltage uliotengenezwa kwa resistors mbili, tunaweza kupima voltages za juu kwa usalama bila kuhatarisha uharibifu wa microcontroller ya ESP32. Mradi huu utaonyesha jinsi ya kusoma voltages hizi na kuzionyesha kwenye serial monitor, ikitoa ufahamu muhimu kuhusu vyanzo vyako vya nguvu.
Tazama video kwa maelezo ya kina (katika video saa 00:00). Tutatumia usanidi rahisi wa kugawanya voltage kufikia hili, kuhakikisha kwamba tunaweza kupima voltages zinazozidi viwango vya juu vya pembejeo vya ESP32 kwa usalama. Mafunzo haya ni bora kwa wale wanaotaka kupanua ujuzi wao wa ESP32 na uwezo wake.
Fomula ya kuhesabu voltage
Vifaa Vimeelezwa
Vipengele muhimu vya mradi huu ni pamoja na microcontroller ya ESP32, resistors mbili zinazounda kigawanya voltage, na chanzo cha nguvu unachotaka kupima. ESP32 ina uwezo wa Wi-Fi na Bluetooth uliojengewa ndani, na kuifanya kuwa chaguo linalofaa kwa miradi ya IoT. Kigawanya voltage, kilichoundwa na resistors mbili, kinaturuhusu kupunguza voltage hadi kiwango salama ambacho ESP32 inaweza kuchakata.
Katika usanidi huu, resistor moja, R1, imewekwa kwa 10kΩ, wakati resistor ya pili, R2, inaweza kubadilika kulingana na voltage ya juu unayotaka kupima. Voltage kwenye R1 ndiyo tutakayoisoma kwa kutumia pin ya pembejeo ya analog ya ESP32, ikituruhusu kuhesabu voltage asili kutoka kwenye chanzo cha nguvu.
- Hakikisha resistors zina uvumilivu wa 1% kwa vipimo sahihi.
- Tumia kigawanya voltage ili kuzuia kuzidi viwango vya voltage ya pembejeo ya ESP32.
- Weka
R1kwa 10kΩ na urekebisheR2kulingana na kiwango cha voltage. - Angalia miunganisho ili kuepuka pembejeo zinazoelea ambazo zinaweza kusababisha usomaji usio sahihi.
- Tumia chanzo cha nguvu thabiti kwa vipimo vya voltage vinavyofanana.
Maagizo ya Wiring
Ili kuunganisha mzunguko, anza kwa kuunganisha mwisho mmoja wa resistor ya R1 (10kΩ) kwenye chanzo chako cha voltage, na mwisho mwingine kwenye pin ya GPIO 35 ya ESP32. Pin hii itasoma voltage kwenye R1. Ifuatayo, unganisha resistor ya R2 (ambayo inaweza kuwa 100kΩ au thamani nyingine kulingana na mahitaji yako) kati ya sehemu ya makutano ya R1 na ardhi. Hakikisha kwamba ardhi ya chanzo cha nguvu pia imeunganishwa kwenye ardhi ya ESP32.
Kwa mfano, ikiwa unapima 24V, unganisha terminal chanya ya usambazaji wa nguvu kwenye R1, kisha unganisha mwisho mwingine wa R1 kwenye pin 35 na makutano ya resistors mbili. Mwisho wa bure wa R2 unapaswa kwenda kwenye ardhi. Usanidi huu utaruhusu ESP32 kusoma voltage iliyopunguzwa kwa usalama.
Mifano ya Code na Maelekezo
const int R1 = 10000; // Thamani ya Resistor 1
const int R2 = 100000; // Thamani ya Resistor 2
const int VinPin = 35; // Pin ya pembejeo ya voltage
Katika sehemu hii, tunafafanua thamani za resistors zetu, R1 na R2, pamoja na pin ya analog VinPin ambayo tutatumia kusoma voltage. Constants hizi ni muhimu kwa hesabu zetu za voltage.
void readVoltage() {
uint32_t voltage_mV = analogReadMilliVolts(VinPin); // Soma kwa millivolts
VB1 = (((float) voltage_mV) / 1000.0) * (1 + (float)R2/(float)R1);
}
Kazi hii inasoma voltage kwa millivolts kutoka kwenye pin iliyobainishwa na kuhesabu voltage halisi VB1 kwa kutumia fomula ya kigawanya voltage. Hii ni muhimu kwa kutafsiri voltage iliyopunguzwa kurudi kwenye thamani asili.
void maxVoltage() {
float maxVoltage = (3.1) * (1 + (float)R2/(float)R1);
}
Hapa, tunafafanua kazi ya kuhesabu na kuchapisha voltage ya juu ambayo inaweza kupimwa kwa usalama kulingana na thamani za resistors. Kazi hii ni muhimu kwa kuhakikisha hatuzidi mipaka ya voltage ya ESP32.
Maonyesho / Nini cha Kutarajia
Unapoendesha code, unapaswa kuona voltage iliyopimwa ikionyeshwa kwenye serial monitor. Unapobadilisha voltage ya pembejeo, usomaji unapaswa kuonyesha mabadiliko haya kwa wakati halisi, ikionyesha uwezo wa ESP32 wa kupima voltages mbalimbali za DC kwa usahihi. Ikiwa unapata mabadiliko katika usomaji, zingatia kupima wastani wa sampuli nyingi ili kupata matokeo thabiti zaidi (katika video saa 12:30).
Vidokezo vya Muda wa Video
- 00:00 Mwanzo
- 1:59 Utangulizi wa mradi
- 5:45 Kigawanya voltage
- 7:33 Wiring imeelezwa
- 9:14 Arduino Code imeelezwa
- 14:45 Kuchagua bodi ya ESP32 na COM Port kwenye Arduino IDE
- 16:27 Kupima 30V kwa kutumia ESP32 Maonyesho
- 21:36 Kubadilisha R2 hadi 330k ohm
- 22:33 Kipimo cha chini cha voltage
/*
Arduino code for ESP32 to measure any DC voltage
📚⬇️ Download and resource page https://robojax.com/RJT674
written by Ahmad Shamshiri
watch full video explanation https://youtu.be/znBiVlgV9JI
www.robojax.com
Feb 19, 2024
*/
bool debug = false;
const int R1 = 10000;//we read the voltage acrosst this resistor ()
const int R2 = 100000;
const int VinPin = 35; // Potentiometer connected to GPIO14
// PWM settings
const int freq = 5000; // PWM frequency
const int resolution = 12; // PWM resolution (bits)
const int channel = 0; // PWM channel
float VB1;
int mV;
void setup() {
Serial.begin(115200);
// Configure PWM
ledcSetup(channel, freq, resolution);
//calculatResistor(R1, 24);//10000 ohm and 35.0V
}
void loop() {
readVoltage();
Serial.print("VB1 Voltage: ");
Serial.print(VB1); // Convert millivolts to volts
Serial.println("V ");
delay(500);
}
void readVoltage()
{
uint32_t voltage_mV = analogReadMilliVolts(VinPin); // Read the voltage in millivolts
if(debug)
{
maxVoltage();
Serial.print("PinVoltage: ");
Serial.print(voltage_mV);
Serial.println("mV");
Serial.println();//this adds a new line
}
mV = voltage_mV;
VB1 = (((float) voltage_mV) / 1000.0) * (1 + (float)R2/(float)R1);
}
/*
prints maximum volage
*/
void maxVoltage()
{
float maxVoltage = ( 3.1) * (1 + (float)R2/(float)R1);
Serial.print("****Maximum Voltage: ");
Serial.print(maxVoltage);
Serial.println("V");
}//maxVoltage() end
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
Resurser och referenser
Inga resurser än.
Filer📁
Inga filer tillgängliga.