'PIC'에 해당되는 글 12건

  1. 2015.08.22 12F675를 이용한 MPPT
  2. 2015.08.03 PWM 고민의 해결.
  3. 2015.05.29 PWM 레귤레이터.
  4. 2014.08.24 쿨링팬 컨트롤러 회로 개선.
  5. 2014.07.29 12F675로 만든 쿨링팬 컨트롤러. (2)
  6. 2014.07.01 12F675로 대충 만들고 있는 온도계.
  7. 2012.03.17 PICPgm - PIC 프로그래밍 어플리케이션.
  8. 2012.01.18 새로운 PIC 프로그래밍 툴 mikroPascal
  9. 2012.01.07 PIC Progammer 제작.
  10. 2011.12.11 Wiz C - PIC 프로그래밍 툴.
2015.08.22 12:36

12F675를 이용한 MPPT

12F675를 10개를 샀기 때문에 몽땅 이걸로 만든다. 그리고 uC중에 쩰 싸다 =_=; 초저가는 아니지만 뭔가 만들기에 딱이다.


 이걸로 태양광의 최대 효율점을 찾는다는 MPPT를 만들었다. MPPT는 전류와 전압의 최적점을 찾는다. 이러한 구현에는 PV의 전압과 전류가 중요하다. 전압은 분압을 통해 ADC로 읽어낼 수 있지만, 문제는 바로 전류.

 0.1옴의 전력이 높은 선트 저항으로 하는 방법이 가장 일반적이지만, 이 부분을 FET의 저항으로 대체할 수 있는지 시도해보기로 했다.


 11m옴으로 양단의 전압 강하를 얻어내서 OP-AMP로 증폭시켜 ADC로 보낸다. 그렇게 FET D와 S의 양단에 걸리는 전압으로 전류를 대충 감지하는 것으로 정확한 값을 얻어내는 것은 힘들다. 그냥 전압과 전류의 곱이 최대이면 전력이 된다는 점을 이용하는 것으로 추천하기엔 좋지 않은 방법이다.


 어떻든 이 구상은 성공했지만, LM258의 오프셋 전압이 문제가 되었다. 양단이 0V라도 출력으로 전압이 나오는데, 이것이 이득 증폭에 걸리면 아주 커진다. 이게 항상 같은 값이 아니고 LM258각각이 완전히 다르게 나오는 것도 문제. 아휴 참 이거 사람 미치게 만드는 요소다. 10k와 100k로 10배 이득으로 하는게 가장 오프셋이 적고 일반적이라고 한다.







그렇게 만들어진 회로. Buck 컨버터와 함께 전압을 측정하는 부분과 전류를 측정하는 부분을 추가적으로 배치한 것.


 왜 BUK9511 N 채널 FET냐면 이걸 또 50개(개당 100원) 샀다. 다른걸루 논리레벨 N채널 11밀리옴의 FET를 사용하면 된다. =ㅅ=;


 왜 2N2222A와 2N2907A이나면 각각 100개 50개 샀다. BC547과 BC557을 사용해도 된다. =ㅅ=;



아직 완벽한 테스트는 없고 그냥 동작만 확인.

LM358N의 오프셋 값은 자동으로 저장되고 비교에 사용된다. 로직이 두리뭉실하지만 문제 없으리라 본다.


좀 더 실험.


결국 실험하고, 회로도도 고치고 일반 전원 상태에서 확인. 좀 더 FET의 저항값을 늘릴려고 게이트 전압을 2.5v로 낮춤. 문제는 태양광 패널에서 제대로 되는냐인데 =ㅅ=;



 전류량을 측정하는 부분이 참 지랄맞다. 결국 ADC입력을 안정화시키는 방법으로 재구성을 하기는 했지만, 제대로 동작할지는 더 테스트를 해봐야 할 것 같다.


 전압을 측정하는 부분에도 역시 같은 것을 해줘야 했다. 그리고 컨트롤 회로의 안정화를 위해 100uF으로 교체. 원하는 동작을 하는 것 같은데, 문제는 비가 오는 날씨라 태양광의 전력량이 너무 낮다. 어쨌던 다시 테스트.


 좀 더 실험을 통해 개선. 문제는 PWM으로 인해서 전압과 전류를 재는 곳에 튀는 전압이 너무 많았다. 로우 패스 필터를 제대로 개선해서 문제를 해결. 비교적 덜 튀도록 하니 안정적인 전압 변화를 보였다. 흐린 날이라 높은 출력이 패널에서 나올 때는 어떻게 될련지.


 어떻던 이전보다는 덜 튀는 전압 변화를 보다 적게 튀는 방향으로 작동하는 것을 확인.


 보다 더 수정을 가해서 더 안정하도록 했는데, 이게 맞는는 모르겠다. 부하 때문인지 패널이 17.0v에서 최대 전력인데 13v정도에서 멈춘다. 측정된 값으로 이론적 계산으로는 그냥 직접 연결하는 것보다 조금 더 전력이 나오는데 이게 최대 전력인지는 확실하지 않다.


 만약 더 정확도를 높이고 싶다면 R4와 R2를 1M까지 조정해서 사용하면 된다. 2A를 넘겨서 사용할 일은 없을거라 생각된다. 만약 저항을 바꾸면 EEPROM의 0번째 바이트 값을 무부하시 OP-AMP 7번에서 측정된 값에

0번째 EEPROM값 = 측정값 / 3.6 * 0124,

20mV라면 20 * 10 ^ -3 / 3.6 * 1024로 5.68888로 올림해서 6으로 하면 된다.

로 수정하면 된다.


12f675MPPT-new8.zip



Trackback 0 Comment 0
2015.08.03 19:58

PWM 고민의 해결.

PWM IC로 쉽게 만들걸 삽질의 연속이다. 문제는 리플이 심해서 곱지않은 영향을 줬던 것. 부하를 걸어서 최대 전류 소비량이 나오는지 제대로 테스트했다. 4MHz 내부클럭으로는 2kHz가 한계다. 2576 PWM이 안망가졌으면 모를 뻔.





Buck 회로의 출력단의 콘덴서를 220uF로 만드니 이제서야 안정해졌다.


아래 펌웨어는 2개가 있는데, 하나는 좀 더 빠른 클럭이던 PIC의 OSCCAL값을 조정한 것으로 이건 칩마다 모두 다르다. 동그랗게 파인 것은 그냥 보통 펌웨어를 사용하면 된다. 아마 콘덴서를 바꿔서 필요가 없을지도 모르지만 그냥.


부하가 단절되었을 때 갑자기 오르는 전압을 최대한 방지. 예를 들면 샤오미 보조배터리 컨트롤러 같은 경우. 주기적으로 부하가 끊기는데 전압이 쑤욱 올라간다 =ㅅ=;



많은 실험을 거듭하며 최대한 전류를 뽑아내도록 했다. 아마도 콘덴서 용량의 부족인 듯. 330uF으로 하면 좀 더 나아지려나. 최대 전류 뽑아내느라 힘들었다. 그래도 안되면 100uF를 기판에 하나 더 붙여야겠다.


200uF도 전류량이 부족하다. 그래서 대폭 캐패시터 용량을 늘려서 420uF으로 새로이 타이밍을 조절. 2A는 문제없이 나오는 것 같다. 단일 부품 중에는 420uF이 없으니 470uF을 사용하면 된다.



고려하지 않은 부분이 13.8v에서의 타이밍. 들쭉날쭉 심했던 것을 어느 정도 잡았는데, 고출력 부하가 없어서 확실한 수치는 못잡았다. 대충 비율로 산정해서 값을 만들었고, 크게 흔들리지는 않는 값이다. 400uF/420UF/470uF의 펌웨어가 포함. 470uF는 실험을 못해봤다.



가장 안정적 전압을 만들어내기 위해 펌웨어를 업데이트. 갑작스런 단절로 인한 전압 불안정을 해결. 완전하지는 않지만 잘 동작한다. 아직도 13.8v에서의 실험은 못해보고 있다. 5v는 잘 동작.


오실로스코프가 없으니 참 찾기가 힘들다. 일단 전류량을이 최대로 나오는 상태로 조정. 캐패시터 영향은 전류에만 있는 듯.


가장 잘 동작하도록 펌웨어를 만듦. 아마도 ADC의 가장 안정적인 조건의 타이밍이나 주파수가 문제였던 것 같다. 중간에 12볼트에서 5볼트로 가는 버퍼를 만들어서 태양광 패널쪽에 전압이 낮게 걸리는 것을 바로 잡았는데 최대 부하에서 정상적으로 동작하는 것을 확인. 타이밍 등이 여전히 별루지만, 간단히 사용하는데는 문제가 없는 것 같다. 뭐 어떻게 더 변화를 줄 수 있는 방법도 없다. T0CKI로 외부 클럭으로 타이머0를 돌리는 것을 생각도 해봤지만, 회로를 다시 고쳐야하는 것 때문에 포기. 약 84%의 duty로 PWM을 소화할 수 있다. 최대 출력시 대충 83%대의 PWM으로 유지되는 것 같다. 85%정도로 늘리면 안정적일 것 같지만 이젠 귀찮다. PWM 조정으로 주파수가 2.7k정도로 늘었다.



12f675-pwmfet-new-19.zip


Trackback 0 Comment 0
2015.05.29 15:42

PWM 레귤레이터.

 간단하게 삽질을 해서 만든 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의 다이오드를 사용해도 상관없다. D1는 쇼트키를 사용하는게 좋다.



regulator.pdf


 (펌웨어를 파일에 추가)

 소프트웨어 PWM이라 정확하진 않지만, 전압을 제대로 뽑아내는데는 문제가 없다. 기본으로 12MHz로 설정되어있고, 4MHz 펌웨어도 포함하고 있다. 컴파일러는 Mikro Pascal 6.0을 사용.2K word 제한이 있지만, 12F675는 내장 플래시에 1K word로 펌웨어를 만드는데는 문제가 없다.



12f675-pwmfet-1.zip


Trackback 0 Comment 0
2014.08.24 21:51

쿨링팬 컨트롤러 회로 개선.





 아무리 펌웨어를 만져도 잡음의 해결이 없는 것 같아서 결국 실험을 통한 회로를 재구성하기로 해서 만들어진 결과물. C3에 전하가 충전되서 방전되기 때문에 트랜지스터에 열이 조금 많이 나는 현상이 발생. C3에 직렬로 4.7k를 하나 더 연결해야 하는 것 같은데 일단 이렇게 안들리니. 대충 PWM 잡음 잡는게 1k저항일 땐 4.7uF을 쓰고 4.7k저항일 땐 1uF저항을 쓰면 제대로 해결되는 것 같다. 이는 12F675의 개별적인 칩 특성도 안타는 효과적인 결과를 만들어낸다.


 C와 E에는 1uF만 연결해야 한다는 실험적인 최종 결과. 열이 많이 나는 이유는 80MM 팬이 0.19(190m)A를 소모. BC547을 해도 MJE3055T를 해도 마찬가지다. BC547에서는 조금 더 뜨거웠던 듯 싶다. MJE3055T는 조금 덜 뜨거워 트랜지스터를 만져도 뜨끈뜨끈하다는 느낌만 난다. 하지만 BC547은 앗뜨거 느낌이 확실하게 났고 결국 장시간 운용하면 망가질게 뻔하다는 결론이 도출. MJE3055T는 그냥 공냉이 가능할 정도로 뜨겁다. 방열판은 달지 않아도 될 정도의 온도라서 망가질 것 같지는 않다.


 VGA소형팬의 경우에는 BC547에서도 열은 전혀나지 않는다.


 쿨링팬 날개 마찰음 말고는 소리가 거의 들리지 않는 것을 확인하고 쿨링팬 만들기는 완전 종료. 이제 더 이상 손 안대도 될 것 같다.


 트랜지스터나 FET의 선택시 전류량과 함께 전력량의 선택도 중요한 것 같다. 이는 안정적인 동작의 영역을 결정하는 것으로 전압에 따른 최대 전류량이나 전류에 따른 최대전압을 결정. 3055T는 75W로 거의 문제가 없고 비슷한 제품들 중에 구하기 쉽고 제일 저렴하다. 더 작은 전력량의 BD135도 괜찮은 선택이지만 판매하는 곳에 따라 3055보다 비싼 경우도 있어서 비추. 12V라면 75/12=6.25A의 전류량에 적합하다는 식으로 결정하는 것 같다. 안정적인 동작영역(ASO)을 데이터시트에서 참고하면서 고르면 될 듯 하다. BC547은 0.625W 정도로 80MM 쿨링팬을 돌리기엔 부적합하다.


Trackback 0 Comment 0
2014.07.29 21:33

12F675로 만든 쿨링팬 컨트롤러.

 12F675를 너무 많이 구입한 나머지 또다른 회로를 설계를 했다. 간단히 뭐 만들기엔 최고다. 아직 디자인 단계로 간단히 펌웨어까지 만들었다. 써미스터도 여러개 샀으니 마찬가지로 사용도 할겸해서 만들어졌다랄까.


 




 30도에서 55도정도까지의 팬회전수를 컨트롤 하는데, 기본적으로 30%의 PWM신호가 들어간다. 최대치를 넘으면 100% 그대로 유지된다. 3번에 연결된 스위치는 기본 온도를 10도 낮추어 20~45도까지 작동하도록 해준다.


 효과적인 범위가 있는지 찾아봐야겠지만 아직 실험은 안해봐서 모른다. Q1은 NPN트랜지스터나 N채널 FET를 사용하면 된다. 커넥터의 2번은 RPM신호를 전달하는 선으로 3핀 팬을 위한 연결이나 2핀에서는 필요가 없다. 4핀에서는 커넥터의 PWM선에 커넥터 1번을 연결하면 된다.


 표시 장치가 없지만 뭐 대충 이 정도면 =ㅅ=;


f675-fan-ctl-7.hex.zip



- 30%로 다시 내린 펌웨어로 GP5와 GP2를 각각 접지시키면 50%(GP5)와 75%(GP2)을 기본으로 동작. 둘 모두 접지시키면 30% 그대로. 가장 큰 문제는 PWM 노이즈인데 490Hz를 사용하면 어쩔 수 없다, 트랜지스터의 B와 E에 1~4.7uF 콘덴서를 붙이면 괜찮지만, 그래도 노이즈는 여전. 나중엔 팬소리가 더 커지기도 하고 어느 정도 방향성이 있어서 들리지 않을때도 있다. 가장 좋은 방법은 PWM주파수를 20kHz이상으로 올려 가청 주파수 영역을 벗어나는 방법이 최고. 다른 방법은 소프트웨어로 구현이 불가능한 것 같다.

- 기본 PWM을 40%로 수정. GP2와 GP5를 둘다 접지시키면 30% PWM을 기반으로 하도록 수정.



 몇몇 오류를 잡아냄. B와 E(G와 S)에 붙이는 노이즈 제거용 콘덴서는 2uF이상을 추천. 3.3uF이면 조금 더 적어질거라 추정. 2uF에서 노이즈가 많이 잡히는 것을 확인.



Trackback 0 Comment 2
2014.07.01 15:57

12F675로 대충 만들고 있는 온도계.

 써미스터와 12F675 PIC를 이용해서 만들려고 설계한 대충의 기본 자료.




(최종 도면. 164의 전원은 14번 7번. FM으로 만들어서 배선의 최적화는 없심. 다음 부터는 FND와 74HC164의 연결에 신경을 조금 더)


 R2는 NTC502F397F 써미스터. 선형이 아니라서 PIC에서는 선형적인 감소가 이루어지지 않기 때문에 다루기가 어려워 128바이트 EEPROM에서 테이블을 만들어서 저항값을 집어넣었다. 1도 차이로 보여주는 영역은 -14도에서 영상 49도까지. 그 이상은 PIC로는 테이블을 만들기 어려워 힘들 것 같다.


 FND(세그먼트 디스플레이)로 숫자를 표시하고 그 드라이버로는 164 시프트 레지스터를 사용한다. 클럭 값으로 내보내서 U3에는 높은 수 U2에는 낮은 수가 표시되며, 영하의 경우에는 낮은 자리에 점이 찍힌다. 두자리라서 어쩔 수 없는 제한이다. -9도까지로 해볼까 생각도.


 QA~QG는 FND의 핀과 같은 알파벳이고 QH는 DOT와 연결하면 된다. 노이즈 차단이나 정전압부는 빠졌지만 5V를 기준으로 만들어졌다.




themal-indicator-all-fix.hex.zip



(펌웨어 업데이트 6/26일자) 약간의 트윅으로 표시상태의 전력을 줄임. 한가지 설계에서 빠진게 FND를 끄고 켜는 부분. 보다 깔끔하게 보이기 위해서는 필요. FND 각각의 숫자 막대기에 약한 밝기의 점멸 상태가 보이는 것은 이 부분이 생략되었기 때문. BC547같은 트랜지스터와 GP4 신호를 이용해서 온-오프가 가능하다. FND의 접지쪽에 콜렉터를 연결하고 에미터를 접지시키면 된다. 베이스에 붙이는 저항은 10K정도면 가뿐.

(업데이트 28일자) 보다 나은 범위 측정을 위해서 일부 구간의 값 조절과 범위 외를 체크하는 코드를 더 나은 값으로 수정.

(업데이트 30일자) 2번핀을 이용해서 FND를 끄고 켤 수 있게 조절이 가능하도록 기능을 조정. 2번핀을 꼭 사용할 필요는 없심. 출력이 5V가 나오면 FND가 ON되고 0V에 OFF되도록 함.


(업데이트 8.10) 저항 R4를 1k로 조정. 전력소모를 절반으로 줄임. 영하 온도의 인덱스 값의 보정. 2.2k의 펌웨어와 4.7k의 펌웨어를 생성. 영하 12에서의 문제를 해결.


(업데이트 8.26) 약간의 저항오차로 인해 2도나 차이나는것을 1도로 줄임. 보정치를 넣는 방법을 사용해서 정확하지는 않음. 2도나 높으니 더워보여서 =ㅅ=;



 온도에 따른 저항 테이블은 아래와 같다.

더보기


 브레드보드에서 실험. FND를 연결하지는 않았지만 성공적인 것 같다. 28도 정도로 나오는데 실제 만들어봐야 제대로 확인할 수 있을 듯. 펌웨어나 하드웨어는 아직까지는 문제가 없다고 판단.




만능 기판에 옮긴 결과물.


덥...덥다.


Trackback 0 Comment 0
2012.03.17 15:00

PICPgm - PIC 프로그래밍 어플리케이션.


 PIC의 비교적 고급 모델(?)인 18F4550을 프로그래밍하는데, 주로 사용하던 ICProg 1.06c버전이 1000h부터 기록을 하지 못하는 문제로 잘 안되서 찾아보니 더 좋은 어플리케이션이 있었다. 자주 업데이트 되며 가장 저렴한 JDM을 지원하는게 장점이다 +_+.

 이 프로그램이면 더이상 업데이트 되지 않는 ICProg나 하드웨어 인터페이스 제약이 있는 WInPIC800과는 안녕이다. 이 프로그램을 찾지 못했다면 삽집의 연속이었을지도 모른다. WinPIC800의 COM 포트의 고정된 어드레스 포트까지 디버거로 건드려가며 했는데 비정규 인터페이스 카드로 설정된 포트는 적용할 수 없었다.

 SI-Prog의 JDM으로는 위의 이미지와 같이 설정화면 중에 Data Out의 Invert 체크박스를 선택하면 정상적으로 프로그래밍할 수 있다.

 삽질 속에 문제들이 해결. 새로운 USB 포트를 이용한 PIC 프로그래머를 만들려고 했던 작업이 끝났다. 동작도 제대로 하는 것도 확인. 점점 키웠던 문제들이 일순간에 해결되니 마음이 다 편안하다.

 PIC 프로그래머를 만드는 것은 여기서 끝. 역시 이미 만들어진 검증된 무엇인가를 사용하는 것은 하드웨어나 소프트웨어나 마찬가지인 것 같다. =_=;

 OpenProg 0.7.x 홈페이지 :  http://openprog.altervista.org/OP_eng.html 
 


 새로이 수정해서 5V의 I2C롬과 PIC를 프로그래밍 할 수 있는 부분까지만 재구성했다. 연결되지 않은 부분들은 확장보드를 위한 포트들로 3.3V PIC를 프로그래밍하려면 별도의 확장보드를 만들어서 사용해야 한다.

 기본 회로는 18F2550으로 만들어졌는데, 뒤져보니 국내 메이져(?) 부품 업체에서는 18F2550 DIP 버전보다는 40핀의 18F4550이 조금 더 싸다. 조금 더 소형화시키려면 18F2550이나 기타 호환되는 28핀 PIC를 이용하면 된다.

 그리고 펌웨어는 18F2550의 펌웨어를 그대로 사용하면 된다. 18F4550은 약간의 핀의 확장으로 기능이 늘었지만 18F2550과 거의 같으며 40핀으로 덩치만 조금 더 크다. 기술문서를 봐도 같이 묶어져서 한 문서 안에서 내용을 담고 있다.

 프로그래밍에 쓰이는 소프트웨어는 별도로 같이 포함하고 있다. 리눅스/윈도우즈 GUI 버전과 Command Line 버전이 있으며 오픈소스이다.

 이제 다음 만들 것을 구상~ +_+!
 

GUI 버전을 실행시킨 화면. 칩을 넣지 않아서 Unknown Device라고 나온다.

 

Trackback 0 Comment 0
2012.01.18 20:15

새로운 PIC 프로그래밍 툴 mikroPascal


 이전의 wiz-c와 씨름하다가 새로운 툴을 찾았는데 정말 좋다. mikroPascal이라는 이 툴도 2000워드 제한이 있지만 초보 개발을 이해서는 유용하다. 더 많은 PIC를 지원하고 편집창도 잘 만들어졌고 비교적 사용자도 많고 wiz-c에서 문제였던 비트 다루기가 편해졌다. 비슷한 프로그램으로 mikro-c라는 것두 있으니 사용해보고 싶다면 권해보고 싶다. 구현을 다 집어넣어도 비교적 많은 공간이 남아서 더 많은 기능을 구현할 수 있으리라 본다. 일반 직관적인 pascal이라는게 맘에 무척든다.
 
 새로 포팅한(사실 새로 다시 만들었다) 소스들도 문제없이 아주 잘 작동한다. 낯설지만 재미있는 툴인 것 같다.
 

'기타' 카테고리의 다른 글

YUMI - 윈도우즈용 멀티부트 USB 생성기.  (0) 2012.04.27
아마도 실패 =_=;  (0) 2012.02.03
새로운 PIC 프로그래밍 툴 mikroPascal  (0) 2012.01.18
PIC Progammer 제작.  (0) 2012.01.07
Wiz C - PIC 프로그래밍 툴.  (0) 2011.12.11
일일 점점 커진다.  (0) 2011.12.03
Trackback 0 Comment 0
2012.01.07 11:26

PIC Progammer 제작.

 인쇄기판까지 그러놓고 결국엔 만능기판으로 만들었다. 인쇄기판은 여러가지 손이 많이가고 시도해보지 않아 또다른 난관이 있을지도 모른다는 핑계로 이번에는 만류. 사실 회로의 완성도가 부족하다는 이유도 있다.

 일단 만능기판으로 손톱을 태워가며 만들어서 이리저리 고친 후에야 완성을 했다. 의외의 제약들도 있어서 결국엔엔 많이 고쳐야 했다. 아직 해결 못한 부분이 전원부인데 레귤레이터가 많이 따스해진다. 방열판의 도움을 받고 있지만 그정도의 소비전력은 아닌 것 같은데 활활 타오르려 한다.

 

 
 기본 설계는 크게 문제되는 부분이 없는 것 같고 100오옴의 저항들을 출력단에 안전을 위해 배치했는데 3번과 4번, 그리고 5번에는 빼는 것은 좋을 것 같다. SI Prog의 확장 인터페이스들을 이용하는데 트랜지스터의 스위칭 전압이 약간 적어지는 것 같다는 추정.

 설계상에서 많이 변화된 부분은 하나의 출력을 제외한 다른 I/O입출력은 16F627의 B포트를 사용한다. 왜냐면 이 포트가 입력으로 TTL 신호를 받아들이는데 문제가 없다. 포트 A는 슈미트트리커(ST)신호를 입력으로 사용하는데 이는 보다 더 높은 전압을 1(0.8VDD)과 0(0.2VDD)의 구분 신호로 받아들인다. 반면 TTL은 2V 이상이면 1로 인식하기에 더 편하다.

 처음에는 많은 실패가 있었다. 많은 문서를 읽어봤지만 프로그래밍 상태로 들어가는 조건을 엉터리로 명시하고 있었기 때문인데 그 때문에 상당히 오랜 기간동안 고민을 했다. MCLR을 먼저 인가하고 그 다음 VDD를 인가하는 것이 일반적인 순서인데 실제로는 VDD를 인가하고 MCLR을 인가해야만 프로그래밍 모드로 들어간다. 몹쓸 기술 문서들 =_=;

 그 외의 다른 큰 문제들은 없었다.

 내부 펌웨어의 동작은 간단하다. 특정 시간동안 데이터를 받아들이고 혹시 끊기거나 중단되면 VDD인가 전압이 끊어지도록 만들었다. 250밀리초의 무응답 시간을 설정하고 있으며 내부적으로 테스트를 위해 그 기능을 끄는 기능도 포함하고 있다. 입출력은 기본적으로 낮은 비트를 먼저 출력 클럭과 함께 내보내거나 읽으며, 데이터를 읽는 타이밍은 상승엣지와 하강엣지 둘인데 기본적으로는 상승엣지에서 읽도록 되어 있으며 하강 엣지로 설정도 가능하다. 하강엣지에서의 읽는 것은 AVR을 위한 것인데 아직 테스트하지는 못했다.

 일단 PIC를 위한 프로그래밍 툴을 만들고 나서 다른 칩셋들에 대한 적용을 재고해봐야겠다. 

 아래 첨부 파일에는 회로도, 펌웨어, 간단한 테스트 프로그램(16F676으로 실험)을 포함한다.
 

'기타' 카테고리의 다른 글

아마도 실패 =_=;  (0) 2012.02.03
새로운 PIC 프로그래밍 툴 mikroPascal  (0) 2012.01.18
PIC Progammer 제작.  (0) 2012.01.07
Wiz C - PIC 프로그래밍 툴.  (0) 2011.12.11
일일 점점 커진다.  (0) 2011.12.03
LED 회로 다 만들다.  (0) 2011.06.26
Trackback 0 Comment 0
2011.12.11 22:10

Wiz C - PIC 프로그래밍 툴.

 GCBASIC을 사용하다가 부족함이 느껴져서 새로운 프로그래밍툴을 찾았다.

 WIZ C라는 툴인데 많은 기능이 하나로 된 통합툴. 데모 버전은 프로 버전(구입해야함)의 모든 기능을 가지고 알림창과 2000워드(14비트 명령어 단위)를 넘을 수 없는 단점이 있다. 소규모 취미용으로는 아주 적합한 듯.

 처음에는 다소 많은 물음창이 뜨는데 그중에는 유니코드로 소스코드를 저장할 것인지에 대한 내용과 데모 예제를 띄울 것인가 하는 알림창이 뜬다. 유니코드로 저장해도 백업으로 ANSI코드로 병행해서 저장되니 걱정할 필요가 없다.

 일단 프로세서를 정하고, 설계를 하고 F9를 누르거나 메뉴를 누르면 소스 코드들이 만들어진다. 만들어진 코드 중에 "*_User.c"의 내용을 채우면 된다. 초기화나 인터럽트 루틴 그리고 메인이 되는 사용자 루프 함수에 코딩을 하면 만들 수 있다. 발견되는 단점이 있다면 GCBASIC처럼 uS단위의 딜레이는 별도의 프로그래밍을 필요로 한다.

 직관적이며 디버깅도 가능해서 맘에 꼭 드는 툴이다.

 직관화된 덕분에 만들려고 했던 장치의 소프트웨어 부분을 드디어 완성. 이제 회로를 만들고 시연을 위한 프로그램을 만드는 일이 남았다.


'기타' 카테고리의 다른 글

새로운 PIC 프로그래밍 툴 mikroPascal  (0) 2012.01.18
PIC Progammer 제작.  (0) 2012.01.07
Wiz C - PIC 프로그래밍 툴.  (0) 2011.12.11
일일 점점 커진다.  (0) 2011.12.03
LED 회로 다 만들다.  (0) 2011.06.26
GIMP로 인스타그램 효과 흉내내기.  (0) 2011.06.19
Trackback 0 Comment 0