Don't think! Just do it!

종합 IT 기술 정체성 카오스 블로그! 이... 이곳은 어디지?

임베디드 하드웨어/기타 회로 설계

220V AC 장비 파워 제어

방피터 2022. 6. 5. 01:19

AC 전원을 사용하는 장비들을 컨트롤 해야 하는 경우가 있어.

예를 들면 AC 펌프라던지, AC 히터같은 것들 말이지. 펌프 스피드나 AC 기기의 파워를 컨트롤 할 땐 단순하게 마구잡이로 Relay나 Triac on/off 하는게 아니야. 먼저 zero crossing을 찾아야 해. Zero crossing은 AC 전압이 0볼트 지나갈 때를 말하는 거야.

Zero Crossing

Zero Crossing은 AC 파워를 세밀하게 조절하기 위해서도 필요하고 AC 장비들의 수명이 단축되는 걸 막기 위해 zero crossing근처에서 on/off를 하기 위해 사용될 수도 있어. 우리가 사용하는 220V 전기는 평균값이 220V를 의미해 위 아래로 +,- 311V까지 스윙하지. 생각해 봐. 장비에 갑자기 311 V 뽝하고 들어가는 거랑 0볼트 근처부터 서서히 올라가는 거랑.

 

그럼 Zero Crossing은 어떻게 찾을까? 뭐 심플해 Zero Crossing Detector ic로 구글에서 검색해봐. 그러면 Zero crossing용 ic들이 많이 검색되니까 적당한 거(단종 안되고 큰 회사꺼 ㅋ) 선정하면 돼. 주의할 게 딱 한가지 있는데 단방향 포토 커플러 사용하면 브릿지 회로 넣어야 하니까 고려하고. 뭐 난 브릿지는 과하다 생각해서 TLP620이라는 양방향 포토커플러 사용했었어. 10년 전에 ㅋ 회로도는 아래.

Zero Crossing Detector 회로

AC_L이랑 AC_N을 포토 커플러 발광 파트에 넣고 수광부에 Collector를 MCU 쪽으로 넣어서 Detection하는 거지. Open collector라고 부르기도 하지. 저렇게 해서 자연스럽게 AC 라인이 signal line이랑 분리도 되는거고~

Zero crossing은 해결됐으니 이제 AC 컨트롤 파트를 보자고 기본적으로 트라이악을 사용하고 파워 라인이랑 신호 라인 분리해줄라고 여기에도 포토 커플러를 사용했어. triac은 bt137F 라는 소자를 썼고 AC용 포토 커플러는 PVT412LS라는 포토 릴레이를 사용했는데 선정을 잘못했어. 너무 비싸더라고......10년 전에는 뭐 이것저것 테스트할 여유도 없었고 검색 실력도 등신이어서 optotriac 이라는 애들이 있는지도 몰랐으니깐 ㅎㅎㅎ 지금 새로 설계한다고 하면 optotriac 소자를 사용했을 거 같아.

AC Device Controller 회로

optotriac 검색 좀 해보니 MOC3020-M 뭐 이런 애들이 있네. 저 위 회로에서 비싼 PVT412LS를 대체할 수 있을 거 같아 ㅋ 테스트 안해봤으니까 책임은 안짐 ㅋ

https://www.mouser.kr/ProductDetail/Lite-On/MOC3020M?qs=gnaPJ2cis70ch06dF1XeMg%3D%3D 

 

거의 대부분 AC 디바이스들은 위 회로로 컨트롤이 가능해. 회로는 비교적 간단하지. 중요한 건 펌웨어야. AC 디바이스에 공급되는 파워를 컨트롤하는 방법은 두 가지야 하나는 zero crossing 카운트하면서 백분율 계산해서 껐다 켰다를 반복하는 거야. AC 웨이브 100개 중에 10개 넣으면 10% 뭐 이런식이지. 간단하지? ㅎㅎ AC 히터같은 건 이 방식으로 해도 거의 무방해. 그런데 60hz에 맞춰 앞뒤로 진동하는 AC 펌프 같은 경우는 이 방식으로 제어가 불가능할거야. AC 전구같은 것도 이 방식으로는 밝기 제어는 커넝 깜빡깜빡 거리기만 하겠지.

 

그래서 이런 AC 장비들의 파워 컨트롤은 파형을 쪼개야 해 ㅎㅎ 아래 그림처럼 말이지.

Triac과 AC waveform

위 AC 사인파에서 면적은 장비가 소모한는 전력 즉 파워에 비례할 거야. AC 전압의 한 구간을 적분하면 입력되는 파워의 백분율을 알 수 있는 거지.... 아 근데... 적분 어떻게 하는지 하나도 생각이 안나... 씁쓸하네 대학교때 막 3차 적분 하고 그랬는데.. ㅋ 늙었!

암튼 이거 계산하면 0부터 100%에 해당하는 시간을 알 수 있지. 그걸로 코드를 짜야해. 이런식으로 말이지.

 

1. Zero crossing -> MCU GPIO interrupt trigger(Negative edge)

2. 파워 제어 백분율에 해당하는 시간만큼 timer start

3. timer 종료 interrupt

3. triac on

4. Zero crossing -> MCU GPIO interrupt trigger(Positive edge)

5. triac off

 

이거 적분 공식 펌웨어로 만든다고 개고생 안했으면 좋겠다. 그냥 파워 0부터 100% 에 해당하는 시간을 미리 계산해두고 펌웨어에 어레이로 때려 박아 그게 속편해 ㅎㅎㅎ 근데 한번 계산한거 가지고 계속 쓸 수 있다고 생각하지마 AC 장비마다 동작 구간이 틀려서 조절해줘야 할 때가 있거든. 예를 들어서 AC 펌프가 공급 파워의 20%부터 동작을 한다던지 하는 경우에는 갑질하시는 분들의 요구에 맞춰서 변경해드려야 하거든. stm으로 해놓은 게 있었는데 찾는데로 공유하도록 할게ㅋㅋ 근데 10년전 코드라는거 ㅋㅋ 그리고 백분율 구하는 공식도 ㅎㅎ

 

암튼 AC 기기 제어 별거 없어 ㅎㅎ 파워, 신호 라인 분리만 잘해주고 펌웨어 interrupt만 잘 사용하면 돼. 쫄지말고 일단 해보자 ㅎㅎ 아니다 AC 기기 제어니까 약간은 쫄자 ㅋㅋ 나 디버거 꽂아두고 개발하다 컴터 메인 보드 날려먹고 사무실 전기 다 내려간 적 있다 ㅋ

 

추가) 그리고 모터든 히터든 기기 제어할 때 잘못해서 온도가 미친듯이 올라가거나 할 수 있잖아? 나도 주물히터 녹여본적있어 ㅋㅋ 씨뻘건 용암 책상위에 흐른다 ㅋㅋ 그래서 반드시 반드시 온도 스위치를 사용해서 배선을 연결해. 모터도 마찬가지고. 온도 스위치가 달려서 나오는 펌프나 모터도 있으니까 참고하고,

온도 스위치 부착형
온도 스위치(이런건 펌프에 꽂혀서 나오더라고)

 

반응형

'임베디드 하드웨어 > 기타 회로 설계' 카테고리의 다른 글

[회로 설계] ARTIX 7 회로 설계  (0) 2023.10.25
STM32F407 32.768kHz Crystal 선정 및 디버그!  (3) 2023.03.16
TVS  (1) 2023.03.07
고온 측정 회로 / 열전대 회로  (0) 2022.06.02
AC-DC 컨버터  (0) 2022.05.19