ESP32 튜토리얼 55/55 - 12V, 24V 또는 100V DC 전압 측정 방법 | SunFounder의 ESP32 IoT 학습 키트
이 튜토리얼에서는 ESP32를 사용하여 12V, 24V, 최대 100V까지 다양한 DC 전압을 측정하는 방법을 배웁니다. 두 개의 저항으로 구성된 전압 분배기 회로를 활용하면 ESP32 마이크로컨트롤러를 손상시킬 위험 없이 더 높은 전압을 안전하게 측정할 수 있습니다. 이 프로젝트는 이러한 전압을 읽고 시리얼 모니터에 표시하여 전원 공급 장치에 대한 유용한 정보를 제공하는 방법을 보여줍니다.
자세한 설명은 비디오를 시청하세요(비디오 00:00). 이를 위해 간단한 전압 분배기 구성을 사용하여 ESP32의 최대 입력 전압을 초과하는 전압을 안전하게 측정할 수 있도록 합니다. 이 튜토리얼은 ESP32와 그 기능에 대한 지식을 확장하려는 분들에게 완벽합니다.
전압 계산 공식
하드웨어 설명
이 프로젝트의 핵심 구성 요소는 ESP32 마이크로컨트롤러, 전압 분배기를 구성하는 두 개의 저항, 그리고 측정하려는 전원 공급 장치입니다. ESP32에는 내장 Wi-Fi 및 Bluetooth 기능이 탑재되어 있어 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
자원 및 참고자료
아직 자원이 없습니다.
파일📁
파일이 없습니다.