목록12F675 (8)
마음 속 하늘은 항상 맑음~!
많은 시도 끝에 전압 변동이 적게 보다 안정한 조정이 되는 알고리즘을 다시 구현하고 최대 태양광 패널의 상한 값을 최대 전류량의 전압에 이하로 만들었다. 이전의 알고리즘은 태양광 패널의 상한값 보다 더 올라가는 경향이 있었는데, 그로 인해 출력 전력이 낮아지는게 있었다. 그리고 보다 단순화된 조절 알고리즘은 변동폭을 많이 줄이도록 해서 조금 더 안정적인 출력을 내도록 한다. 상한값 이하로 만드는 것이 패널특성에 대해 조정이 필요한지 여부는 더 알아봐야 할 부분. 실험치로 얻어내는 것은 역시 항상 이런 특성에 맞추기가 힘들다. 여튼 기존보다 더 잘 동작하고 더 많은 전력을 낼 수 있도록 동작하는 것은 확인.
12F675를 10개를 샀기 때문에 몽땅 이걸로 만든다. 그리고 uC중에 쩰 싸다 =_=; 초저가는 아니지만 뭔가 만들기에 딱이다. 이걸로 태양광의 최대 효율점을 찾는다는 MPPT를 만들었다. MPPT는 전류와 전압의 최적점을 찾는다. 이러한 구현에는 PV의 전압과 전류가 중요하다. 전압은 분압을 통해 ADC로 읽어낼 수 있지만, 문제는 바로 전류. 0.1옴의 전력이 높은 선트 저항으로 하는 방법이 가장 일반적이지만, 이 부분을 FET의 저항으로 대체할 수 있는지 시도해보기로 했다. 11m옴으로 양단의 전압 강하를 얻어내서 OP-AMP로 증폭시켜 ADC로 보낸다. 그렇게 FET D와 S의 양단에 걸리는 전압으로 전류를 대충 감지하는 것으로 정확한 값을 얻어내는 것은 힘들다. 그냥 전압과 전류의 곱이 최대..
PWM IC로 쉽게 만들걸 삽질의 연속이다. 문제는 리플이 심해서 곱지않은 영향을 줬던 것. 부하를 걸어서 최대 전류 소비량이 나오는지 제대로 테스트했다. 4MHz 내부클럭으로는 2kHz가 한계다. 2576 PWM이 안망가졌으면 모를 뻔. Buck 회로의 출력단의 콘덴서를 220uF로 만드니 이제서야 안정해졌다. 아래 펌웨어는 2개가 있는데, 하나는 좀 더 빠른 클럭이던 PIC의 OSCCAL값을 조정한 것으로 이건 칩마다 모두 다르다. 동그랗게 파인 것은 그냥 보통 펌웨어를 사용하면 된다. 아마 콘덴서를 바꿔서 필요가 없을지도 모르지만 그냥. 부하가 단절되었을 때 갑자기 오르는 전압을 최대한 방지. 예를 들면 샤오미 보조배터리 컨트롤러 같은 경우. 주기적으로 부하가 끊기는데 전압이 쑤욱 올라간다 =ㅅ=;..
기존의 PWM 구현에서 약간의 변경이 있었다. 예전 펌웨어는 사실상 제대로 동작하지 않는 졸작으로 전압 변동률이 너무 심해 노이즈가 엄청나고 원하는 출력보다 높은 전압까지 올라가는 문제점이 있었는데, 그 문제를 모두 해결. 핀 4번은 접지를 하면, 5V 기준 전압.핀 2번은 다이오드를 대체할 FET의 SYNC신호가 출력되고,핀 3번은 충전 확인을 하는 기능으로 접지를 하면 되고 사용하지 않을 경우에는 그냥 두면 된다. 이 회로를 2개 이용해서 1단은 13.8V, 2단은 5V로 조정해서 보조배터리를 충전하도록 구성. 1단에서 입력 전압은 16~17V가 측정되고 출력은 13.8V가 측정. 2단에서 입력 전압은 13.8V가 측정되고, 출력은 5V정도가 측정. 배터리를 연결하면 전압강하가 많이 발생한다. 충전검..
기존의 PWM회로의 성능을 더 안정시킨 것으로, 전력 컨트롤 회로의 경우에는 확실히 높은 PWM 주파수를 써야 한다는 것을 깨달음. 1W 정도의 부하에서는 FET에서 미열조차 없어서 그냥 차가운 상태로 기존의 펌웨어에서 발열이 심하던 문제의 해결. 그리고 PWM을 약 1KHz로 조정해서 보다 나은 안정된 전압이 나오도록 함. 기존에는 64레벨로 미세전압 조정이 어려웠지만, 255레벨로 늘려서 더 미세 간격의 조절이 가능해짐. 출력 합선을 인지해서 전압을 낮추는 기능을 넣었고, 이 부분의 소스는 공개하지 않을 예정. LED는 안정된 전압에 도달하면 깜박이는 속도가 느려지고, 평소에는 빠름. PWM 인터럽트 부분의 소스만 공개하자만 다음과 같고, 응용하는데 크게 어렵지 않음. // 상수 선언들. const ..
ATTiny2313이나 ATTiny4313은 ADC가 없다. 그래서 다른 방법으로 ADC를 읽어오는 방법을 고안했는데, 약간의 딜레이를 무시하고 사용할 수 있도록 고려했다. 이러한 핀 중에서 7,6,5를 아날로그 입력으로 이용하고, 4번을 읽을 때 1번으로 하면 활성화되도록 했으며, 읽을 수 있는 상태가 되면 2번이 1이 된다. 3번으로 클럭을 입력하면 높은 비트에서 낮은 비트 순으로 10비트의 데이터를 전달한다. 1. GP3에 1을 할당.2. GP5가 1이 될 때까지 대기.3. GP4에 클럭을 입력. 0에서 1이 되면 비트가 GP5에 설정된다. 10번을 반복해서 ADC0, 10번을 반복해서 ADC1, 10번을 반복해서 ADC2를 얻는다. 높은 비트에서 낮은 비트 순으로로 출력된다. 4. 만약 GP3가 ..
아무리 펌웨어를 만져도 잡음의 해결이 없는 것 같아서 결국 실험을 통한 회로를 재구성하기로 해서 만들어진 결과물. C3에 전하가 충전되서 방전되기 때문에 트랜지스터에 열이 조금 많이 나는 현상이 발생. C3에 직렬로 4.7k를 하나 더 연결해야 하는 것 같은데 일단 이렇게 안들리니. 대충 PWM 잡음 잡는게 1k저항일 땐 4.7uF을 쓰고 4.7k저항일 땐 1uF저항을 쓰면 제대로 해결되는 것 같다. 이는 12F675의 개별적인 칩 특성도 안타는 효과적인 결과를 만들어낸다. C와 E에는 1uF만 연결해야 한다는 실험적인 최종 결과. 열이 많이 나는 이유는 80MM 팬이 0.19(190m)A를 소모. BC547을 해도 MJE3055T를 해도 마찬가지다. BC547에서는 조금 더 뜨거웠던 듯 싶다. MJE3..
12F675가 만든 시기에 따라서 특성이 약간 다르다는 것은 확인. 칩의 맨아래 숫자는 yyww라는 4자리 숫자인데 년도와 만든 주(week)를 표시. 묘하게 여러개 구입한 칩에 2010년도와 2013년도의 제품이 혼합되어 있었다. 가장 주목할만한 특성은 PWM의 노이즈로 2010년도는 1uf의 콘덴서로 잡아내기 힘든데 반해, 2013년도는 많이 줄어든 특성을 보임. 그리고 다르게 내장 클럭 발생기의 정확도는 2010년도가 정확해서 아주 칼같다. 하지만 2013년도는 약간 더 클럭이 높은 상태로 설정되어 있어서 560Hz까지의 범위에 이르는 클럭이 PMW으로 나온다. 결국 2010년도의 노이즈 문제를 잡을려면 트랜지스터의 C와 E단에 1~4uF의 콘덴서를 붙어주는게 나은 것 같다. 1uF도 많이 작아지기..