Cashirka ESP32 55/55 - Sida loo cabbiro danab DC ah oo ah 12V, 24V ama 100V | Qalabka barashada ESP32 IoT ee SunFounder
Cashigarkani, waxaan ku baran doonnaa sida loo isticmaalo ESP32 si loo cabbiro danabyo kala duwan oo DC ah, oo ay ku jiraan 12V, 24V, iyo xitaa ilaa 100V. Adigoo isticmaalaya wareeg qaybiye danab (voltage divider) oo ka kooban laba resistor, waxaan si badbaado leh u cabbiri karnaa danabyo sare iyada oo aan halis gelinayn ESP32 microcontroller-ka. Mashruucani wuxuu muujin doonaa sida loo akhriyo danabyadan oo loo soo bandhigo kormeerka serial-ka, isagoo siinaya fahmo qiimo leh oo ku saabsan ilahaaga koronto.
Daawashada fiidiyowga si aad u hesho sharaxaad dhammaystiran (fiidiyowga 00:00). Waxaan isticmaali doonnaa qaab qaybiye danab oo fudud si aan tan u gaarno, anagoo hubinayna inaan cabbiri karno danabyo ka sarreeya heerarka ugu sarreeya ee ESP32 si badbaado leh. Casharkani wuxuu ku habboon yahay kuwa raba inay ballaariyaan aqoontooda ku saabsan ESP32 iyo awoodihiisa.
Qaacidada lagu xisaabiyo danabka
Qalabka La Sharaxay
Qaybaha muhiimka ah ee mashruucan waxaa ka mid ah ESP32 microcontroller-ka, laba resistor oo sameeya qaybiye danab, iyo ilaha korontada ee aad rabto inaad cabbirto. ESP32 wuxuu ku qalabaysan yahay awoodaha Wi-Fi iyo Bluetooth-ka ee ku dhex jira, taasoo ka dhigaysa doorasho kala duwan oo u habboon mashruucyada IoT. Qaybiyaha danabka, oo ka kooban laba resistor, wuxuu noo ogolaanayaa inaan hoos u dhigno danabka heer badbaado leh oo ESP32 uu farsamayn karo.
Qaabkan, hal resistor, R1, wuxuu ku go'an yahay 10kΩ, halka resistor-ka labaad, R2, uu ku kala duwanaan karo iyadoo ku xiran danabka ugu sarreeya ee aad rabto inaad cabbirto. Danabka ku yaalla R1 ayaa ah waxa aan akhrin doonno iyadoo la isticmaalayo pin-ka gelinta analog-ga ee ESP32, taasoo noo ogolaanaysa inaan xisaabino danabka asalka ah ee ilaha korontada.
- Hubi in resistors-ku yihiin 1% dulqaad (tolerance) si loo helo cabbiro sax ah.
- Isticmaal qaybiye danab si looga hortago in laga dhaafo qiimeynta danabka gelinta ee ESP32.
- Ku hay
R110kΩ oo hagaajiR2iyadoo ku xiran kala duwanaanshaha danabka. - Hubi isku xirka si looga fogaado gelin sabeynaya (floating inputs) oo u horseedi kara akhrin qalad ah.
- Isticmaal ilo koronto oo deggan si aad u hesho cabbiro danab oo joogto ah.
Tilmaamaha Xirista
Si aad u xirto wareegga, ku bilow adigoo ku xiraaya dhammaadka R1 resistor-ka (10kΩ) ilaha danabkaaga, iyo dhammaadka kale ee pin-ka 35 ee ESP32. Pin-kani wuxuu akhrin doonaa danabka ku yaalla R1. Marka xigta, ku xir R2 resistor-ka (kaas oo noqon kara 100kΩ ama qiime kale iyadoo ku xiran baahidaada) inta u dhaxaysa barta isku xirka R1 iyo dhulka (ground). Hubi in dhulka ilaha korontada uu sidoo kale ku xiran yahay dhulka ESP32.
Tusaale ahaan, haddii aad cabbirto 24V, ku xir terminal-ka togan ee sahayda korontada R1, ka dib ku xir dhammaadka kale ee R1 pin-ka 35 iyo barta isku xirka labada resistor. Dhammaadka xorta ah ee R2 waa inuu aadaa dhulka. Qaabkani wuxuu u oggolaanayaa ESP32 inuu si badbaado leh u akhriyo danab hoos u dhacay.
Tusaalooyinka Koodhka & Sharaxaad
const int R1 = 10000; // Qiimaha Resistor-ka 1
const int R2 = 100000; // Qiimaha Resistor-ka 2
const int VinPin = 35; // Pin-ka gelinta danabka
Qaybtan, waxaan ku qeexaynaa qiimaha resistors-keena, R1 iyo R2, iyo sidoo kale pin-ka analog-ga VinPin ee aan isticmaali doonno si aan u akhrino danabka. Constants-yadani waxay muhiim u yihiin xisaabinta danabkeena.
void readVoltage() {
uint32_t voltage_mV = analogReadMilliVolts(VinPin); // Akhri millivolts-ka
VB1 = (((float) voltage_mV) / 1000.0) * (1 + (float)R2/(float)R1);
}
Hawshani waxay akhridaa danabka millivolts-ka ee pin-ka la cayimay waxayna xisaabisaa danabka dhabta ah VB1 iyadoo la isticmaalayo qaacidada qaybiyaha danabka. Tani waxay muhiim u tahay in danabka hoos u dhacay loo rogo qiimihii asalka ahaa.
void maxVoltage() {
float maxVoltage = (3.1) * (1 + (float)R2/(float)R1);
}
Halkan, waxaan ku qeexaynaa hawsho lagu xisaabiyo oo lagu daabaco danabka ugu sarreeya ee si badbaado leh loo cabbiri karo iyadoo lagu salaynayo qiimaha resistors-ka. Hawshani waxay muhiim u tahay hubinta inaanan dhaafin xadka danabka ee ESP32.
Muuujin / Waxa Laga Filan Karo
Markaad wado koodhka, waa inaad aragtaa danabka la cabbiray oo lagu soo bandhigayo kormeerka serial-ka. Markaad hagaajiso danabka gelinta, akhrinta waa inay ka tarjumaan isbeddelladan waqti-dhab ah, taasoo muujinaysa awoodda ESP32 ee lagu cabbiro danabyo kala duwan oo DC ah si sax ah. Haddii aad la kulanto isbeddelo akhrinta, tixgeli celceliska dhowr muunad si aad u hesho natiijo deggan (fiidiyowga 12:30).
Waqtiyada Fiidiyowga
- 00:00 Bilow
- 1:59 Hordhaca mashruuca
- 5:45 Qaybiyaha danabka
- 7:33 Xirista la sharaxay
- 9:14 Koodhka Arduino la sharaxay
- 14:45 Doorashada guddiga ESP32 iyo COM Port ee Arduino IDE
- 16:27 Cabbirka 30V iyadoo la isticmaalayo ESP32 Muujin
- 21:36 Beddelay R2 ilaa 330k ohm
- 22:33 Cabbirka danabka ugu yar
/*
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
Kheyraadka & Tixraacyada
Wali wax kaydsan ah oo weli ma jiro.
Faylasha📁
Fayl la'aan.