코딩게시판

CT CLAMP 50A /50mA 전력량 50W측정 용 ESP32 BASIC 으로 ESPHOME 구성

작성자 정보

  • 최고관리자 작성
  • 192.♡.0.1 아이피
  • 작성일

컨텐츠 정보


  • 링크

  • 첨부


  • 본문

    CT CLAMP 50A /50mA 전력량 50W측정 용 ESP32 BASIC 으로 ESPHOME 구성

    3232235521_1780251405.9252.png

    선풍기 // 에어컨 power on 상태 반영에 ct clamp 을 2turn 이 제일 안정적입니다.
    3232235521_1780310051.8259.png
    sensor:
      #################################################
      # ADC 입력 센서 QNCTK1-16 100A 50mA 50A
      # CT Clamp + Burden + Bias 회로의 중간 전압을 ESP32 ADC로 읽음
      #################################################
      - platform: adc
        pin: ${zmct103c_out}       # CT 회로 출력이 연결된 ADC 핀, GPIO34/GPIO35 추천
        id: adc_sensor             # ct_clamp 센서가 참조할 ADC 센서 ID
        attenuation: 12db           # 0~3.3V 근처까지 읽기 위한 ESP32 ADC 감쇠 설정
        update_interval: 100ms      # ADC를 0.1초마다 빠르게 읽음
        internal: true              # HA 화면에는 직접 표시하지 않음

      #################################################
      # ADC RAW 디버그 센서
      # Bias 기준전압 확인용
      # 정상일 때 보통 1.5V~1.7V 근처 유지
      #################################################
      - platform: template
        name: "ADC RAW 50A50mA"
        lambda: |-
          return id(adc_sensor).state;   // ADC 현재 전압값 반환
        update_interval: 500ms           # 0.5초마다 표시 갱신
        accuracy_decimals: 6             # 소수점 6자리 표시, 디버그용
     
      #################################################
      # CT Clamp 전류 센서
      # ADC 파형을 전류 RMS 값으로 변환
      #################################################
      - platform: ct_clamp
        sensor: adc_sensor               # 위 ADC 센서를 CT 입력으로 사용
        sample_duration: 300ms           # 0.3초 동안 샘플링하여 빠른 반응 확보
        update_interval: 300ms           # 0.3초마다 전류값 갱신
        id: current_sensor              # 전력 계산에서 사용할 전류 센서 ID
        name: "ct_current_a"             # HA에 표시될 전류 센서 이름
        accuracy_decimals: 4             # 전류값 소수점 4자리 표시

        filters:
          #################################################
          # 전류 보정
          # 0.010 이하는 0A 기준으로 보정
          # 1.000 입력값을 30A로 환산
          # 현재 68Ω Burden + 2턴 감기 감도 확보용 설정
          #################################################
          - calibrate_linear:
              method: least_squares
              datapoints:
                - 0.010 -> 0.000
                - 1.000 -> 30.000

          #################################################
          # 빠른 평균 필터
          # 최근 2개 값 평균
          # 노이즈는 줄이고 반응속도는 빠르게 유지
          #################################################
          - sliding_window_moving_average:
              window_size: 2
              send_every: 1
     #################################################
      # 하드웨어 원시 전력 계산
      # Burden / 감기횟수 / 보정값 검증용
      #################################################
      - platform: template
        name: "ct_power_raw_hw"
        id: ct_power_raw_hw
        unit_of_measurement: "W"
        icon: mdi:flash-outline
        accuracy_decimals: 2
        update_interval: 300ms

        lambda: |-
          // 전류값만으로 계산
          // 오프셋 제거 없음
          // 턴수 보정 없음
          // 실제 회로 상태 확인용

          return id(current_sensor).state * 220.0;

      #################################################
      # 하드웨어 보정 후 전력
      # 현재 68Ω + 2턴 구성용
      #################################################
      - platform: template
        name: "ct_power_hw_2turn"
        id: ct_power_hw_2turn
        unit_of_measurement: "W"
        icon: mdi:lightning-bolt
        accuracy_decimals: 2
        update_interval: 300ms

        lambda: |-
          float w = id(current_sensor).state * 220.0;

          // 2턴 보정
          w = w / 2.0;

          return w;
         
      #################################################
      # 전력 계산 센서
      # 전류값을 W로 환산
      #################################################
        #################################################
      - platform: template
        name: "ct_power1_w-15"
        id: ct_power1_w
        unit_of_measurement: "W"
        icon: mdi:flash-outline
        accuracy_decimals: 2
        update_interval: 300ms

        lambda: |-
          // 전류 A × 전압 220V × 보정계수 0.90
          float w = id(current_sensor).state * 220.0 * 1;

          // CT에 전선을 2턴 감았으므로 실제 전력으로 환산

          // w = w / 2.0;

          // 무부하/잔류 노이즈 보정값 20W 제거
          w = w - 15.0;

          // 음수값 방지
          if (w < 0.0) return 0.0;

          // 최종 전력값 반환
          return w;


      - platform: template
        name: "ct_power2_w-20"
        id: ct_power2_w
        unit_of_measurement: "W"          # 단위 W
        device_class: power               # Home Assistant 전력 센서로 분류
        state_class: measurement          # 순간 측정값 센서
        accuracy_decimals: 1              # 소수점 1자리 표시
        update_interval: 300ms            # 0.3초마다 전력값 갱신

        lambda: |-
          // 전류 A × 전압 220V × 보정계수 0.90
          float w = id(current_sensor).state * 220.0 * 0.90;

          // CT에 전선을 2턴 감았으므로 실제 전력으로 환산
          w = w / 2.0;

          // 무부하/잔류 노이즈 보정값 20W 제거
          w = w - 20.0;

          // 음수값 방지
          if (w < 0.0) return 0.0;

          // 최종 전력값 반환
          return w;


    binary_sensor:
      #################################################
      # 전원 연결 상태 감지 센서
      # 전력값 기준으로 ON/OFF 판단
      #################################################
      - platform: template
        name: "power1_detected"
        id: power1_detected

        lambda: |-
          // ON 기준
          // 25W 초과이면 전원이 켜진 것으로 판단
          if (id(ct_power1_w).state > 25.0) {
            return true;
          }

          // OFF 기준
          // 10W 미만이면 전원이 꺼진 것으로 판단
          if (id(ct_power1_w).state < 10.0) {
            return false;
          }

          // 10W~25W 사이에서는 이전 상태 유지
          // 노이즈로 ON/OFF가 반복되는 것을 방지
          return id(power1_detected).state;

        filters:
          #################################################
          # ON 지연
          # 300ms 이상 ON 조건이 유지될 때만 ON 처리
          #################################################
          - delayed_on: 300ms

          #################################################
          # OFF 지연
          # 1초 이상 OFF 조건이 유지될 때만 OFF 처리
          # 순간적인 전류 흔들림으로 꺼짐 오판 방지
          #################################################
          - delayed_off: 1s
      #################################################
      - platform: template
        name: "power2_detected"
        id: power2_detected

        lambda: |-
          // ON 기준
          // 25W 초과이면 전원이 켜진 것으로 판단
          if (id(ct_power2_w).state > 25.0) {
            return true;
          }

          // OFF 기준
          // 10W 미만이면 전원이 꺼진 것으로 판단
          if (id(ct_power2_w).state < 10.0) {
            return false;
          }

          // 10W~25W 사이에서는 이전 상태 유지
          // 노이즈로 ON/OFF가 반복되는 것을 방지
          return id(power2_detected).state;

        filters:
          #################################################
          # ON 지연
          # 300ms 이상 ON 조건이 유지될 때만 ON 처리
          #################################################
          - delayed_on: 300ms

          #################################################
          # OFF 지연
          # 1초 이상 OFF 조건이 유지될 때만 OFF 처리
          # 순간적인 전류 흔들림으로 꺼짐 오판 방지
          #################################################
          - delayed_off: 1s

    # 동작 요약:

    # ADC를 100ms마다 읽음
    # ct_clamp가 300ms 단위로 전류 계산
    # ct_power2_w가 300ms 단위로 W 계산
    # 25W 초과 → power_detected ON
    # 10W 미만 → power_detected OFF
    # 10~25W → 이전 상태 유지

    # 현재 조건:

    # 50A/50mA CT
    # 68Ω Burden
    # 2턴 감기
    # 40W급 부하 감지

    # 에는 이 구성이 가장 적당합니다.      



    50A/50mA CT에서 버든저항(Burden Resistor) 크기에 따라 동작 특성이 많이 달라집니다.

    공식:

    V=I×RV = I \times RV=I×R
    VsV_sVs
    V
    RRR
    Ω
    I=VsR=12.0 V6.0 Ω=2.00 AI = \frac{V_s}{R} = \frac{12.0\,\mathrm{V}}{6.0\,\Omega} = 2.00\,\mathrm{A}I=RVs=6.0Ω12.0V=2.00A
    Vs = 12.0 V+-R = 6.0 ΩI = 2.00 A

    CT 출력:

    50A → 50mA
    25A → 25mA
    1A → 1mA
    0.1A → 0.1mA

    10Ω

    50mA × 10Ω = 0.5Vrms
    Peak ≈ 0.71V

    특징:

    고전류 측정 유리
    저전류 측정 불리
    40W 측정 거의 어려움
    노이즈 적음

    추천:

    5A ~ 50A

    22Ω

    50mA × 22Ω = 1.1Vrms
    Peak ≈ 1.55V

    특징:

    ESP32에 가장 많이 사용
    범용

    추천:

    100W ~ 5000W

    33Ω

    50mA × 33Ω = 1.65Vrms
    Peak ≈ 2.33V

    특징:

    저전류 감도 향상
    ESP32 ADC에 적합

    추천:

    50W ~ 3000W

    46Ω (현재 사용)

    50mA × 46Ω = 2.3Vrms
    Peak ≈ 3.25V

    특징:

    40W~100W 측정 유리
    저전류 감도 좋음
    ADC 범위 거의 최대 사용

    추천:

    40W ~ 2000W

    현재 shimss님 용도에 가장 적당한 편입니다.


    68Ω

    50mA × 68Ω = 3.4Vrms
    Peak ≈ 4.8V

    특징:

    저전류 감도 매우 좋음
    고전류에서 ADC 포화 가능

    추천:

    20W ~ 1000W

    비교표

    버든40W 감도500W2kW5kW
    10Ω매우 나쁨좋음좋음좋음
    22Ω보통좋음좋음좋음
    33Ω좋음좋음좋음보통
    46Ω매우 좋음좋음보통위험
    68Ω최고보통위험포화

    현재 상태 분석:

    50A/50mA
    ESP32
    선풍기 40W

    이면


    첨부 파일을 스킨보드에 구성 PDF보기( W:\g5\skin\board\BS4-Basic-Webzine_11q_pdf_php82\view.skin.php + view_pdf.php구성)



    관련자료

    댓글 0
    등록된 댓글이 없습니다.

    최근글


    새댓글