목록PIC (12)
마음 속 하늘은 항상 맑음~!
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값을 조정한 것으로 이건 칩마다 모두 다르다. 동그랗게 파인 것은 그냥 보통 펌웨어를 사용하면 된다. 아마 콘덴서를 바꿔서 필요가 없을지도 모르지만 그냥. 부하가 단절되었을 때 갑자기 오르는 전압을 최대한 방지. 예를 들면 샤오미 보조배터리 컨트롤러 같은 경우. 주기적으로 부하가 끊기는데 전압이 쑤욱 올라간다 =ㅅ=;..
간단하게 삽질을 해서 만든 FET로 구동하는 PWM 레귤레이터. D3이후의 회로는 일반적인 Buck converter 회로이고, 중요한 것은 바로 Q1, Q2, Q3의 부분이다. Q4는 논리신호를 N ch FET를 켜기위한 BootStrap회로를 컨트롤하는 목적을 가진다. 주의할 점은 Q4로 신호가 반전되어 Q3에서는 반전된 신호가 전달되게 된다. D2는 역전압이 흘러나가지 않게 하기 위해서 사용. PIC는 ADC의 값을 받아서 출력의 전압을 조절하고 PWM값을 수시로 변동시킨다. D3도 아주 중요한데 N ch FET의 기생다이오드로 통해 역방향으로 전류를 흐르지 않게 한다. 이 D3가 없으면 제대로 전압 조절이 안된다. 여기서는 3A의 쇼트키 다이오드를 사용했다. 그냥 3A의 다이오드를 사용해도 상관없..
아무리 펌웨어를 만져도 잡음의 해결이 없는 것 같아서 결국 실험을 통한 회로를 재구성하기로 해서 만들어진 결과물. 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를 너무 많이 구입한 나머지 또다른 회로를 설계를 했다. 간단히 뭐 만들기엔 최고다. 아직 디자인 단계로 간단히 펌웨어까지 만들었다. 써미스터도 여러개 샀으니 마찬가지로 사용도 할겸해서 만들어졌다랄까. 30도에서 55도정도까지의 팬회전수를 컨트롤 하는데, 기본적으로 30%의 PWM신호가 들어간다. 최대치를 넘으면 100% 그대로 유지된다. 3번에 연결된 스위치는 기본 온도를 10도 낮추어 20~45도까지 작동하도록 해준다. 효과적인 범위가 있는지 찾아봐야겠지만 아직 실험은 안해봐서 모른다. Q1은 NPN트랜지스터나 N채널 FET를 사용하면 된다. 커넥터의 2번은 RPM신호를 전달하는 선으로 3핀 팬을 위한 연결이나 2핀에서는 필요가 없다. 4핀에서는 커넥터의 PWM선에 커넥터 1번을 연결하면 ..
써미스터와 12F675 PIC를 이용해서 만들려고 설계한 대충의 기본 자료. (최종 도면. 164의 전원은 14번 7번. FM으로 만들어서 배선의 최적화는 없심. 다음 부터는 FND와 74HC164의 연결에 신경을 조금 더) R2는 NTC502F397F 써미스터. 선형이 아니라서 PIC에서는 선형적인 감소가 이루어지지 않기 때문에 다루기가 어려워 128바이트 EEPROM에서 테이블을 만들어서 저항값을 집어넣었다. 1도 차이로 보여주는 영역은 -14도에서 영상 49도까지. 그 이상은 PIC로는 테이블을 만들기 어려워 힘들 것 같다. FND(세그먼트 디스플레이)로 숫자를 표시하고 그 드라이버로는 164 시프트 레지스터를 사용한다. 클럭 값으로 내보내서 U3에는 높은 수 U2에는 낮은 수가 표시되며, 영하의 ..
PIC의 비교적 고급 모델(?)인 18F4550을 프로그래밍하는데, 주로 사용하던 ICProg 1.06c버전이 1000h부터 기록을 하지 못하는 문제로 잘 안되서 찾아보니 더 좋은 어플리케이션이 있었다. 자주 업데이트 되며 가장 저렴한 JDM을 지원하는게 장점이다 +_+. 이 프로그램이면 더이상 업데이트 되지 않는 ICProg나 하드웨어 인터페이스 제약이 있는 WInPIC800과는 안녕이다. 이 프로그램을 찾지 못했다면 삽집의 연속이었을지도 모른다. WinPIC800의 COM 포트의 고정된 어드레스 포트까지 디버거로 건드려가며 했는데 비정규 인터페이스 카드로 설정된 포트는 적용할 수 없었다. SI-Prog의 JDM으로는 위의 이미지와 같이 설정화면 중에 Data Out의 Invert 체크박스를 선택하면 ..
이전의 wiz-c와 씨름하다가 새로운 툴을 찾았는데 정말 좋다. mikroPascal이라는 이 툴도 2000워드 제한이 있지만 초보 개발을 이해서는 유용하다. 더 많은 PIC를 지원하고 편집창도 잘 만들어졌고 비교적 사용자도 많고 wiz-c에서 문제였던 비트 다루기가 편해졌다. 비슷한 프로그램으로 mikro-c라는 것두 있으니 사용해보고 싶다면 권해보고 싶다. 구현을 다 집어넣어도 비교적 많은 공간이 남아서 더 많은 기능을 구현할 수 있으리라 본다. 일반 직관적인 pascal이라는게 맘에 무척든다. 새로 포팅한(사실 새로 다시 만들었다) 소스들도 문제없이 아주 잘 작동한다. 낯설지만 재미있는 툴인 것 같다.
인쇄기판까지 그러놓고 결국엔 만능기판으로 만들었다. 인쇄기판은 여러가지 손이 많이가고 시도해보지 않아 또다른 난관이 있을지도 모른다는 핑계로 이번에는 만류. 사실 회로의 완성도가 부족하다는 이유도 있다. 일단 만능기판으로 손톱을 태워가며 만들어서 이리저리 고친 후에야 완성을 했다. 의외의 제약들도 있어서 결국엔엔 많이 고쳐야 했다. 아직 해결 못한 부분이 전원부인데 레귤레이터가 많이 따스해진다. 방열판의 도움을 받고 있지만 그정도의 소비전력은 아닌 것 같은데 활활 타오르려 한다. 기본 설계는 크게 문제되는 부분이 없는 것 같고 100오옴의 저항들을 출력단에 안전을 위해 배치했는데 3번과 4번, 그리고 5번에는 빼는 것은 좋을 것 같다. SI Prog의 확장 인터페이스들을 이용하는데 트랜지스터의 스위칭 전..
GCBASIC을 사용하다가 부족함이 느껴져서 새로운 프로그래밍툴을 찾았다. WIZ C라는 툴인데 많은 기능이 하나로 된 통합툴. 데모 버전은 프로 버전(구입해야함)의 모든 기능을 가지고 알림창과 2000워드(14비트 명령어 단위)를 넘을 수 없는 단점이 있다. 소규모 취미용으로는 아주 적합한 듯. 처음에는 다소 많은 물음창이 뜨는데 그중에는 유니코드로 소스코드를 저장할 것인지에 대한 내용과 데모 예제를 띄울 것인가 하는 알림창이 뜬다. 유니코드로 저장해도 백업으로 ANSI코드로 병행해서 저장되니 걱정할 필요가 없다. 일단 프로세서를 정하고, 설계를 하고 F9를 누르거나 메뉴를 누르면 소스 코드들이 만들어진다. 만들어진 코드 중에 "*_User.c"의 내용을 채우면 된다. 초기화나 인터럽트 루틴 그리고 메..