ESP32 பயிற்சி 55/55 - 12V, 24V அல்லது 100V DC மின்னழுத்தத்தை எவ்வாறு அளவிடுவது | SunFounder இன் ESP32 IoT கற்றல் கிட்
இந்த டுடோரியலில், ESP32 ஐப் பயன்படுத்தி 12V, 24V, மற்றும் 100V வரையிலான பல்வேறு DC மின்னழுத்தங்களை அளவிடுவது எப்படி என்பதைக் கற்றுக்கொள்வோம். இரண்டு மின்தடையங்களால் உருவாக்கப்பட்ட மின்னழுத்த பிரிப்பான் சுற்றைப் பயன்படுத்துவதன் மூலம், ESP32 மைக்ரோகண்ட்ரோலருக்கு சேதம் ஏற்படாமல் அதிக மின்னழுத்தங்களை பாதுகாப்பாக அளவிட முடியும். இந்த திட்டம் இந்த மின்னழுத்தங்களை எவ்வாறு படிப்பது மற்றும் அவற்றை சீரியல் மானிட்டரில் காண்பிப்பது எப்படி என்பதை நிரூபிக்கும், இது உங்கள் மின்சக்தி மூலங்களைப் பற்றிய மதிப்புமிக்க நுண்ணறிவுகளை வழங்கும்.
விரிவான விளக்கத்திற்கு வீடியோவைப் பாருங்கள் (வீடியோவில் 00:00 மணிக்கு). இதை அடைய எளிய மின்னழுத்த பிரிப்பான் அமைப்பைப் பயன்படுத்துவோம், இது ESP32 இன் அதிகபட்ச உள்ளீட்டு நிலைகளை மீறும் மின்னழுத்தங்களை பாதுகாப்பாக அளவிட முடியும் என்பதை உறுதி செய்கிறது. ESP32 மற்றும் அதன் திறன்களைப் பற்றிய அறிவை விரிவுபடுத்த விரும்புவோருக்கு இந்த டுடோரியல் சரியானது.
மின்னழுத்தத்தை கணக்கிடுவதற்கான சூத்திரம்
வன்பொருள் விளக்கம்
இந்த திட்டத்திற்கான முக்கிய கூறுகளில் ESP32 மைக்ரோகண்ட்ரோலர், மின்னழுத்த பிரிப்பானை உருவாக்கும் இரண்டு மின்தடையங்கள் மற்றும் நீங்கள் அளவிட விரும்பும் மின்சக்தி மூலம் ஆகியவை அடங்கும். ESP32 உள்ளமைக்கப்பட்ட Wi-Fi மற்றும் புளூடூத் திறன்களைக் கொண்டுள்ளது, இது IoT திட்டங்களுக்கு பல்துறை தேர்வாக அமைகிறது. இரண்டு மின்தடையங்களால் ஆன மின்னழுத்த பிரிப்பான், ESP32 செயலாக்கக்கூடிய பாதுகாப்பான நிலைக்கு மின்னழுத்தத்தை குறைக்க அனுமதிக்கிறது.
இந்த அமைப்பில், ஒரு மின்தடையம், R1, 10kΩ இல் நிலையானது, அதே நேரத்தில் இரண்டாவது மின்தடையம், R2, நீங்கள் அளவிட விரும்பும் அதிகபட்ச மின்னழுத்தத்தைப் பொறுத்து மாறுபடும். R1 முழுவதும் உள்ள மின்னழுத்தத்தை ESP32 இன் அனலாக் உள்ளீட்டு முள் பயன்படுத்தி படிப்போம், இது மின்சக்தி மூலத்திலிருந்து அசல் மின்னழுத்தத்தை கணக்கிட அனுமதிக்கிறது.
- துல்லியமான அளவீடுகளுக்கு மின்தடையங்கள் 1% சகிப்புத்தன்மை கொண்டவை என்பதை உறுதிப்படுத்தவும்.
- ESP32 இன் உள்ளீட்டு மின்னழுத்த மதிப்பீடுகளை மீறுவதைத் தடுக்க மின்னழுத்த பிரிப்பானைப் பயன்படுத்தவும்.
R1ஐ 10kΩ இல் வைத்து, மின்னழுத்த வரம்பின் அடிப்படையில்R2ஐ சரிசெய்யவும்.- தவறான அளவீடுகளுக்கு வழிவகுக்கும் மிதக்கும் உள்ளீடுகளைத் தவிர்க்க இணைப்புகளைச் சரிபார்க்கவும்.
- நிலையான மின்னழுத்த அளவீடுகளுக்கு நிலையான மின்சக்தி மூலத்தைப் பயன்படுத்தவும்.
வயரிங் வழிமுறைகள்
சுற்றை வயர் செய்ய, R1 மின்தடையத்தின் (10kΩ) ஒரு முனையை உங்கள் மின்னழுத்த மூலத்துடன் இணைப்பதன் மூலம் தொடங்கவும், மற்ற முனையை ESP32 இன் GPIO பின் 35 உடன் இணைக்கவும். இந்த பின் R1 முழுவதும் உள்ள மின்னழுத்தத்தைப் படிக்கும். அடுத்து, R2 மின்தடையத்தை (உங்கள் தேவைகளைப் பொறுத்து 100kΩ அல்லது மற்றொரு மதிப்பாக இருக்கலாம்) R1 இன் சந்திப்பு புள்ளிக்கும் தரைக்கும் இடையில் இணைக்கவும். மின்சக்தி மூலத்தின் தரையும் ESP32 இன் தரையுடன் இணைக்கப்பட்டுள்ளதா என்பதை உறுதிப்படுத்தவும்.
எடுத்துக்காட்டாக, 24V ஐ அளவிடும்போது, மின்சக்தி விநியோகத்தின் நேர்மறை முனையத்தை R1 உடன் இணைக்கவும், பின்னர் R1 இன் மறு முனையை பின் 35 மற்றும் இரண்டு மின்தடையங்களின் சந்திப்புடன் இணைக்கவும். R2 இன் கட்டற்ற முனை தரைக்கு செல்ல வேண்டும். இந்த அமைப்பு ESP32 ஐ பாதுகாப்பாக குறைக்கப்பட்ட மின்னழுத்தத்தைப் படிக்க அனுமதிக்கும்.
குறியீடு எடுத்துக்காட்டுகள் & விளக்கம்
const int R1 = 10000; // மின்தடையம் 1 மதிப்பு
const int R2 = 100000; // மின்தடையம் 2 மதிப்பு
const int VinPin = 35; // மின்னழுத்த உள்ளீட்டு பின்
இந்த பகுதியில், எங்கள் மின்தடையங்களின் மதிப்புகளை, R1 மற்றும் R2, அத்துடன் மின்னழுத்தத்தைப் படிக்கப் பயன்படுத்தும் அனலாக் பின் VinPin ஐ வரையறுக்கிறோம். இந்த மாறிலிகள் எங்கள் மின்னழுத்த கணக்கீடுகளுக்கு முக்கியமானவை.
void readVoltage() {
uint32_t voltage_mV = analogReadMilliVolts(VinPin); // மில்லிவோல்ட்களில் படிக்கவும்
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 மின்னழுத்தங்களை துல்லியமாக அளவிடும் திறனை நிரூபிக்கிறது. அளவீடுகளில் ஏற்ற இறக்கங்களை நீங்கள் சந்தித்தால், மிகவும் நிலையான முடிவை அடைய பல மாதிரிகளை சராசரியாகக் கருதுங்கள் (வீடியோவில் 12:30 மணிக்கு).
வீடியோ நேர முத்திரைகள்
- 00:00 தொடக்கம்
- 1:59 திட்டத்திற்கான அறிமுகம்
- 5:45 மின்னழுத்த பிரிப்பான்
- 7:33 வயரிங் விளக்கம்
- 9:14 Arduino குறியீடு விளக்கம்
- 14:45 Arduino IDE இல் ESP32 போர்டு மற்றும் COM போர்ட்டைத் தேர்ந்தெடுப்பது
- 16:27 ESP32 ஐப் பயன்படுத்தி 30V அளவிடும் நிரூபணம்
- 21:36 R2 ஐ 330k ஓம் ஆக மாற்றியது
- 22:33 குறைந்தபட்ச மின்னழுத்த அளவீடு
/*
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
வளங்கள் மற்றும் மேற்கோள்கள்
இன்னும் எந்த வளங்களும் இல்லை.
கோப்புகள்📁
கோப்புகள் கிடைக்கவில்லை.