UART(RS232)로 제어되는 16bit PWM

In AVR, MCU Posted 2015-11-01 04:04

 

main_img.jpg

 

[ 2015-03-30 / UART PWM제어 테스트 ]

 

 

요즘 글쓸 소재가 조금 떨어져서..

제한적으로 금년초에 끄적거렸던 AVR를 이용한 UART로 제어되는 16bit PWM와 이를 응용한 프로그램블 벅 컨버터 이야기를 살짝 해볼까 한다.

 

메인 사진에 윗쪽 파형은 40KHz Duty ratio 를 0 ~ 95%, 95 ~ 0%까지 제어명령 수행중인 모습이다.

아랫쪽 파형은 40KHz 주파수를 분주하여 서로 겹치지 않는 각각의 20KHz PWM 파형을 만들었다. 하프브릿지나 풀 브릿지 제어에 사용할 수 있다.

 

 

 

AVR Timer/Counter 를 사용하였다

0349.PNG

 

[ ATmega2560 Block Diagram ㅡ img by. ATMEL社 ]

 

 

메인 컨트롤 IC는 Atmega2560이고 총 4개의 16bit 타이머 카운터가 있다. 풍부한 자원 때문에 쾌적한(?) 개발을 할 수 있다랄까...

이것을 이용하여 16bit 급 PWM 제어를 할 수 있는것이다. 

 

0350.PNG 0351.PNG

 

참고로 16bit 로 표현할 수 있는 수는 65,535가지인데, 0 ~ 100% Duty ratio 를 1값당 = 0.00152% 해상도로 정밀하게 제어할 수 있는것이다 !

AVR로 PWM만드는 방법은 구글링하면 넘쳐나는게 자료이니 자세한 설명은 스킵

 

VERY VERY EASYYY 하니 코드보면 누구나 만들 수 있을것이다 !

 

 

 

 

 

테스트 동영상

 

영상을 보면 UART로 0 ~ 65,535사이의 숫자를 넣어주면 자동으로 0 ~ 100% 사이로 즉시 제어한다.

디버깅 모드에서는 0% 에서 100%까지 도달되는 시간이 길어져서 실사용시엔 꺼놓고 쓴다. 그러면 더 빠른 제어를 할 수 있다.

 

앞서 잠깐 설명한것과 같이 윗쪽 오실로스코프 파형은 고정된 40KHz 주파수이고 원하면 UART로 주파수도 변경가능하다. 아랫쪽 오실로스코프 파형중에서 윗쪽과 아랫쪽이 40KHz 주파수를 분주하여 서로 켭치지 않는 각각의 20KHz PWM 파형이고 가운데는 두개의 파형을 합한것이다 !

 

이 PWM제어 기능을 라이브러리로 만들었고 추후 필요할때 꺼내다 쓸 수 있다. 

가령 음악 테슬라코일 만들때 꺼내 쓴다거나... 재 프로그램이 가능한 AVR인 만큼 그때 상황과 목적에 맞게 수정해서 사용하든하면 된다.

 

 

 

 

 

Programmable DC/DC Converter (Step-down)

resize.buck_converter.JPG

 

BUCK 쵸퍼용 IGBT두개가 교대로 스위칭하고 있는 모습이다.

3KW 출력에 12 ~ 60VDC 까지 출력이 가능하다. 24VDC 일때 최대 125A까지 뽑을 수 있는데, 이런저런 마진을 고려하여 최대 100A로 제한된다. 

 

프로그램에 의해 모든것이 제어되고, 입출력 전압 및 전류 센싱은 물론 UART로 출력 전압과 전류제한 값을 실시간으로 반영할 수 있는것이다 !

그러니까.. 실험실 같은곳에 있는 가변 파워서플라이 같이 CC(정전류), CV(정전압)제어 기능이 프로그램으로 구현되어 있는것이다.

 

참고로 사진은 최대 20A 부하 걸 수 있도록 테스트 중이다.

 

 

몇가지 개선해야할게 있다면 피드백 속도가 빙구인것하고.. 스너버 회로 좀 보완해야겠다 카더라..

으아아아ㅏ아아ㅏ 삽질 좀 그만해야하는데

 

 

 

 

PS: 참고로 Programmable PWM IC가 만들어진게 있으니 정신건강을 위해 사다쓰는것이 좋다.

 

 

 

 

 


전기/전자 실험실 Electronics Lab

더 흥미로운 글을 받아보세요