日新又日新 에 해당하는 글124 개
2009.01.22   양산형 아트웍 완료.
2009.01.22   페이지 자동 이동 태그 1
2009.01.11   소형화 및 경량화
2008.11.25   로직웍스의 Orientation 기능
2008.11.21   근의 공식에서 100000(10만)이상의 숫자에 대해서 오차 줄이기
2008.11.18   Funny element of riding bicycle 2
2008.10.31   예전 계정 권한 복구하기
2008.10.30   우분투 root 권한 취득 가능 사용자 조정
2008.10.11   [멀티미디어공학]Bitmap Parser
2008.10.11   [멀티미디어공학]Ordered Dithering
2008.10.11   [멀티미디어공학]Simple Dithering
2008.10.04   실행 시간 측정
2008.09.25   pyserial을 이용할 때 byte 코드 쓰기
2008.08.19   귀도는 고기를 좋아해.
2008.08.18   OrCAD로 만드는 PCB 1
2008.08.17   송수신기, 최종 교체
2008.08.12   스위처 알고리즘을 변경하다.
2008.08.11   알루미늄 판재
2008.08.10   비행
2008.07.22   Verilog HDL IDE
2008.07.14   주 거래 업체
2008.07.14   센서보드 Ver.3 Rev.3 1
2008.07.08   여러장의 PCB 합치기
2008.07.07   센서보드 Ver3. Rev.2
2008.07.06   sample pcb 제조회사로 넘기기 위한 과정 1
2008.07.03   Wearable Computer Competetion 1
2008.07.01   여러장의 도면을 이용하기
2008.07.01   Capture에서 원하는 부분의 Part 만들기
2008.06.27   라이브러리의 중요성
2008.06.26   헤더파일처럼 import 사용하기


양산형 아트웍 완료.
日新又日新 | 2009. 1. 22. 18:25
양산형 PCB 아트웍을 끝냈다.
사용자 삽입 이미지
제작시간 근 48시간...-_-;;
사용자 삽입 이미지
아직 동박면이랑 실크스크린 작업을 안 했으니 한 대여섯 시간은 더 필요하겠지만, 어차피 글자쓰기만 하면 되니까 실질적 작업은 이걸로 모두 끝.

오토라우팅 쓰지 않고 처음 부터 끝까지 손으로 배선했다.-_-;;
욕나오더라.ㅋㅋㅋㅋ
그래도 자동 배선보다 훨씬 깔끔한 건 사실이다.
품질을 생각하면 수작업이 낫겠지만, 이거 사람이 할 일이 아니더라.-_-;;

구조는 다음과 같다.
사용자 삽입 이미지
보라색 부분이 양산형 PCB이다.
레귤레이터를 포함하고 있기 때문에 초보자가 전원을 잘못 넣어서 타버리는 일은 없을 것이다.

빨간색으로 표시한 센서모듈의 정보는 사용자가 UART0 채널로 데이터를 받을 수 있게 했다.

초록색 부분은 사용자 영역으로 ATmega2560의 모든 기능을 사용할 수 있게 하였다.
양 옆의 2열 핀들은 ATmega2560의 모든 핀을 빼 놓은 것이고, 순서는 PORTA~PORTL까지 순서대로 배열했기 때문에 쉽게 사용할 수 있게 하였다. 간격은 정확히 2.54 피치 핀 11개 너비이기 때문에 만능기판에 바로 꼽을 수 도 있다.

파란색으로 표시된 외부 모듈을 장착하기 쉽게 화살표로 표시된 포트들(UART, PWM)을 따로 빼두었다. UART 채널의 경우 MAX232를 달아놓아 RS-232 시리얼 통신을 바로 사용할 수 있게 하였다.


아마 주문하고 PCB 받고 납땜해서 동작 테스트 하려면 다음주는 되야 할거다.
누구나 저렴한 가격으로 무인기를 연구할 수 있는 환경을 만드는 시작점을 출발했다.

--
뒷이야기.
2층기판, 죽겠더라.-_-;; 4층기판 작업할 때는 휙휙 날리면 되었는데, 2층이니 선이 돌아가는 경로를 패드에서 패드로 전 구간에 걸쳐서 생각을 해야 했다. 욕 나오더라.
시판되는 2560 보드는(ㅋㅋ) 저거보다 큰 폭이면서도  RS-232 가 가능하지도 않고 외부 핀도 달려있지 않은데,
이번에 제작한건 같은 2층기판이면서도 폭은 더 좁고(물론 길이는 좀 더 길다.) 자세추정 모듈을 포함하였을 뿐 아니라 MAX232 칩을 장착하여 RS-232 시리얼 통신을 쉽게 사용할 수 있게 하였다. 한 마디로, 더 많은 기능을 가지고 있다~ 이거다.
뭐, 그러니까, 음....자랑이다.ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

 
 
 
트랙백 | 댓글



페이지 자동 이동 태그
日新又日新 | 2009. 1. 22. 12:48
<meta http-equiv="refresh" content="0;URL=./2008/">

content 에서 숫자는 이동대기시간(초), URL은 대상 주소다.

 
 
 
트랙백 | 댓글



소형화 및 경량화
日新又日新 | 2009. 1. 11. 23:02
UAV를 제작함에 있어 경량화는 중요한 문제이다.

지금 보니 마지막 포스팅이 8월이었는데, 그 때에 비하면 지금 또한 많이 줄어들었다.
가장 큰 특징이라면 예전에는 스위처/전원부/제어부가 모두 따로 있었는데, 지금은 하나로 합쳐지고 크기도 작아졌다는거. 당시에는 센서모듈만 36g 이었는데, 지금은 모두 합쳐 32g정도이다. 아직 정확한 측정이 이루어지진 않았지만, 이를 통한 배터리의 사용가능 시간의 연장 또한 기대된다. 이 과정에서 자이로 한 축을 떼어내었는데, 크게 문제되지는 않는다. 또한 조종 또한 기존의 아날로그 방식에서 디지털 방식으로 변환되었기 때문에 통신링크의 중요성이 새삼 대두되었다. 속도 및 안정성에서 신뢰할 수 있는 통신링크가 반드시 필요하다.

지금 변속기 부분은 문제가 있어서 빼고 다시 설계했기 때문에 아래의 모듈에서 왼쪽에 커넥터들 있는 부분부터 왼쪽만큼이 더 줄어들은 상태다.
사용자 삽입 이미지

그리고 추가적인 사항이라면 GCS를 소형화 했다는 것.
기존의 PC에서 사용하던 것을 OpenGL ES를 이용해서 윈도 CE환경으로 옮겨놨다. 이 과정에서 당시 팀원이었던 재군이가 수고 많이 했었다.

원래 위의 모듈 제작 당시에는 소형기체용을 염두에 두었던 것인데, 계속 성능 확인을 해서 괜찮으면 메인 기체에 적용할 수도 있다.

아마 지금은 예전 시스템에서 약간의 변동이 있는 정도인데, 이번 겨울방학을 기점으로 해서 많은 변화와 다양화가 이루어질 예정이다.

 
 
 
트랙백 | 댓글



로직웍스의 Orientation 기능
日新又日新 | 2008. 11. 25. 21:49
Schematic 하위 메뉴에 Orientation 기능이 있지요.

특별한 기능은 아니고, 방향을 정해놓는 것에 불과합니다.
간혹 여러개의 소자를 연속해서 배치해야 할 때, 방향을 통일해야 하는데 배치하고 로테이션 누르기에는 많은 소자를 배치해야 할 때 사용하면 유용한 기능입니다.




 
 
 
트랙백 | 댓글



근의 공식에서 100000(10만)이상의 숫자에 대해서 오차 줄이기
日新又日新 | 2008. 11. 21. 20:54

귀찮구나. 그냥 카피앤페이스트.

Python 2.5.2 (r252:60911, Feb 21 2008, 13:11:45) [MSC v.1310 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.

    ****************************************************************
    Personal firewall software may warn about the connection IDLE
    makes to its subprocess using this computer's internal loopback
    interface.  This connection is not visible on any external
    interface and no data is sent to or received from the Internet.
    ****************************************************************
   
IDLE 1.2.2     
>>> (pow(10,5)+2)*(pow(10,5)-2)
9999999996L
>>> pow(10,10)-4
9999999996L #인수분해한 식과 전개한 식의 값은 같음을 확인.
>>> import math
>>> math.sqrt(pow(10,10)-4)
99999.999979999993
>>> math.sqrt((pow(10,5)+2))*math.sqrt((pow(10,5)-2))
99999.999979999993  #루트를 씌운 상태에서도 마찬가지임을 확인
>>> math.sqrt((pow(10,5)+2))
316.23092827868686
>>> math.sqrt((pow(10,5)-2))
316.22460372336622
>>> t = pow(10,10)-4
>>> t
9999999996L
>>> roott = math.sqrt(t)
>>> roott
99999.999979999993
>>> (pow(10,5)-roott)/2 #대상 수식은 x^{2} - 10^{5}x+1 = 0 이었음.
1.0000003385357559e-005 #실제 작은 값의 근은 0.00001, 0.0000003385357559 의 양의 오차가 있다.
>>> (pow(10,5)+roott)/2
99999.999989999997 #실제 답은 99999.9998, 큰 값의 근에 대해서 0.000009999997 의 양의 오차가 있다.
>>> (pow(10,5)*roott - t)/(2*roott)  #root(b^2-4ac) 부분을 분모분자에 곱해준다.
1.0000000002000001e-005  #오차가 줄어든 것을 확인할 수 있다. 작은 값의 근에 대해서 0.0000000002000001 로 줄어들었다. 0.0000003383357558 만큼이 줄어들었다.
>>> (pow(10,5)*roott + t)/(2*roott)
99999.999990000011 #두 근 중 큰 값에 대해서도 오차가 0.000000000011 로 줄어들었다. 0.000009999986 만큼의 오차를 줄인 셈이다.
>>>


 
 
 
트랙백 | 댓글



Funny element of riding bicycle
日新又日新 | 2008. 11. 18. 23:12

모의오픽에서 발표한 1-min speech 대본.

  교정 전

 

Do you like feeling of winds? If you like feeling of winds passed by between your fingers, try to ride bycicle. It will be excellent if your hometown have river. River of city may have the bycile road with no hill. Only your leg's power will take your bycile moving. And then winds will be with you from that time. Riverside-winds have smell of water, just little point same with the sea. If you don't know about feeling of winds, and you don't know hapiness of tha feeling, I strongly recommend ride the bycicle.

 

교정 후

 

Do you like the feeling of winds?

If you like feeling of winds passed by between your fingers, try to ride byciclebicycle.

It will be excellent if your hometown havehas a river.

River of cityCity with the river may have the bycilebicycle road with no hill.

Only your leg's power will take your bycilebicycle moving.

And then winds will be with you from that time.

Riverside-winds have smell of water, just little point same with the sea reminds me of the sea.

If you don't know about feeling of winds, and you don't know hapiness of tha feeling, I strongly recommend ride riding the bycilebicycle.

이 글은 스프링노트에서 작성되었습니다.


 
 
 
트랙백 | 댓글



예전 계정 권한 복구하기
日新又日新 | 2008. 10. 31. 00:06
/home$chgrp -R recolls ./recolls
/home$chown -R recolls ./recolls

 
 
 
트랙백 | 댓글



우분투 root 권한 취득 가능 사용자 조정
日新又日新 | 2008. 10. 30. 23:04
$sudo visudo

# User privilege specification #여기에 추가
root    ALL=(ALL) ALL
[ID]    ALL=(ALL) ALL

 
 
 
트랙백 | 댓글



[멀티미디어공학]Bitmap Parser
日新又日新 | 2008. 10. 11. 05:51

#define Read_2B(fp)    (fgetc(fp) + 0x100*fgetc(fp))
#define Read_4B(fp)    (fgetc(fp) + 0x100*fgetc(fp) + 0x10000*fgetc(fp) + 0x1000000*fgetc(fp))

struct bmp_header {
    short    magic_no;
    int    size;
    short    reserved1;
    short    reserved2;
    int    offset;
};

struct bmp_info {
    int    size_header;
    int    width;
    int    height;
    short    no_color_planes;
    short    bit_per_pixel;
    int    compression;
    int    img_size;
    int    h_resolution;
    int    v_resolution;
    int    no_colors_used;
    int    no_imp_colors;

    long int h_resolution_dpi;
    long int v_resolution_dpi;
};

//비트맵 헤더 관련 코드

my_header.magic_no = Read_2B(fpi);//첫 2바이트 : 비트맵 파일의 매직넘버, 파일의 종류를 나타낸다.

// insert codes to fetch bmp_header information

my_header.size = Read_4B(fpi);//다음 4바이트 : 파일의 사이즈

for (int x = 2 ; x > 0 ; x--) {//다음 2바이트 2개 : reserved 영역, 0이 아니면 문제가 있는 것이다.

//printf("%d : %x\n", x, Read_2B(fpi));

if (Read_2B(fpi) != 0x00)

printf("Bitmap File is incorrect!!\n");

}

my_header.offset = Read_4B(fpi);//다음 4바이트 : 오프셋, 실질 데이터 시작 주소가 얼마나 떨어져 있는지 나타낸다.

 

//...비트맵 헤더 정보 출력...

 

// insert codes to fetch bmp_information

if ((my_info.size_header = Read_4B(fpi)) != BMP_INFO) {//헤더 크기, 40byte가 아니면 winV3 포맷이 아니다.

printf("This file is not Windows V3 format!!!\n");

fclose(fpi);

fclose(fpo);

return 0;

}

my_info.width = Read_4B(fpi);//이미지 폭

my_info.height = Read_4B(fpi);//이미지 높이

my_info.no_color_planes = Read_2B(fpi);//색평면 개수(Color Plane), 반드시 1이어야 한다.

my_info.bit_per_pixel = Read_2B(fpi);//픽셀당 비트수

my_info.compression = Read_4B(fpi);//압축 방식

my_info.img_size = Read_4B(fpi);//이미지 크기, 파일 사이즈가 아닌 이미지의 로우데이터 크기이다.

my_info.h_resolution = Read_4B(fpi);//Horizontal 해상도, 미터당 픽셀수로 나타난다.

my_info.h_resolution_dpi = my_info.h_resolution*10000/393700;//Horizontal 해상도, dpi로 나타낸다.

my_info.v_resolution = Read_4B(fpi);//Vertical 해상도, 미터당 픽셀수로 나타난다.

my_info.v_resolution_dpi = my_info.v_resolution*10000/393700;//Vertical 해상도, dpi로 나타낸다.

my_info.no_colors_used = Read_4B(fpi);//사용된 색상 수

my_info.no_imp_colors = Read_4B(fpi);//중요하게 사용된 색상수, 모든 색상이 중요하면 0이다.

 

//...비트맵 정보 출력...





 
 
 
트랙백 | 댓글



[멀티미디어공학]Ordered Dithering
日新又日新 | 2008. 10. 11. 05:46
#2. Ordered Dithering

 1://------------------[simple dither algorithm start]--------------------
 2:// input : in_img,        output : out_img
 3:int pixel_x, pixel_y;
 4:int i, j;
 5:int level;
 6:int ordermatrix[4][4] = {{0, 8, 2, 10}, {12, 4, 14, 6}, {3, 11, 1, 9}, {15, 7,  13, 5} };
 7:for ( pixel_x = 0 ; pixel_x < XSIZE ; pixel_x++ ) {
 8:    for ( pixel_y = 0 ; pixel_y < YSIZE ; pixel_y++ ) {
 9:        level = in_img[pixel_x][pixel_y] / 16;
10:        i = pixel_x % 4;
11:        j = pixel_y % 4;
12:
13:        if ( level > ordermatrix[i][j] ) {
14:            out_img[pixel_x][pixel_y] = 255;
15:        } else {
16:            out_img[pixel_x][pixel_y] = 0;
17:        }
18:    }
19:}
20://------------------[simple dither algorithm end]--------------------


Simple Dithreing에 비해서 레벨 0일 때의 처리가 없음.
10~11 : Dither Matrix에서 비교할 대상 설정
13~17 : 현재 나눠진 레벨값을 Dither Matrix에서 비교대상과 비교하여 흑/백 결정
         -> 결과 파일에서의 픽셀크기가 변경되지 않음


 
 
 
트랙백 | 댓글



[멀티미디어공학]Simple Dithering
日新又日新 | 2008. 10. 11. 05:44
#1. Simple Dithering

 1: //------------------[simple dither algorithm start]--------------------
 2:// input : in_img,        output : out_img
 3:int pixel_x, pixel_y;
 4:int level;
 5:int simplematrix[4][1] = { {0}, {3}, {2}, {1} };
 6:int i, j;
 7:for ( pixel_x = 0 ; pixel_x < XSIZE ; pixel_x++ ) {
 8:    for ( pixel_y = 0 ; pixel_y < YSIZE ; pixel_y++ ) {
 9:        level = in_img[pixel_x][pixel_y] / 52;
10:        for ( i = 0 ; i < 2 ; i++) {
11:            for ( j = 0 ; j < 2 ; j++) {
12:                if ( level == 0 ) {
13:                    out_img[pixel_x * 2 + i][pixel_y * 2 + j] = 0;
14:                } else {
15:                    if ( level <= simplematrix[i][j] ) {
16:                        out_img[pixel_x * 2 + i][pixel_y * 2 + j] = 0;
17:                    } else {
18:                        out_img[pixel_x * 2 + i][pixel_y * 2 + j] = 255;
19:                    }
20:                }
21:            }
22:        }
23:    }
24:}
25:    //------------------[simple dither algorithm end]--------------------


5: Dither Matrix 설정
7~8 : 각 픽셀에 대해서
9 : 레벨값(255)을 5단계로 나눔
10~11 : 한 픽셀을 4픽셀로 표현
13 : 나눠진 레벨값이 0이면 0
14~19: 나눠진 레벨값이 0이 아니면 Dither Matrix와 비교해서 작은 곳은 백색, 큰 곳은 흑색


 
 
 
트랙백 | 댓글



실행 시간 측정
日新又日新 | 2008. 10. 4. 17:11
def elapsedtime():
    import time

    a = time.clock()    #현재 시점에서의 프로세스 실행시간

    for x in range(4):
        #잡다구레 작업을 한다면...
        pass

    b = time.clock()    #어떤 작업 후의 프로세스 실행시간

    c = b - a         #그 둘의 차이 : 어떤 작업에 걸린 시간

    #float 형으로 반환된다.
    print str(c)+'(s)'
    print str(c*100)+'(ms)'
    print str(c*100000)+'(us)'
    print str(c*100000000)+'(ns)'

    return b-a


 
 
 
트랙백 | 댓글



pyserial을 이용할 때 byte 코드 쓰기
日新又日新 | 2008. 9. 25. 02:50

pySerial을 이용할 때 byte 코드 쓰기

코드

  1. import serial
    s = serial.Serial()  #default COM1, 9600, 8N1
    s.write("%c" % (0x01))

  2. import serial
    s = serial.Serial()  #default COM1, 9600, 8N1
    s.write(chr(0x01))

설명

pySerial의 write 메소드는 기본적으로 string 출력이다. 따라서 byte코드를 출력할 필요가 있다면 1번이나 2번처럼 사용하여 원하는 코드를 출력할수 있도록 한다.


 
 
 
트랙백 | 댓글



귀도는 고기를 좋아해.
日新又日新 | 2008. 8. 19. 14:43
아무 생각없이 웹서핑 중, 귀도의 홈페이지를 찾게 되었는데...

자기 사진 밑에 멋진 말을 써 넣은 귀도, 멋쟁이~!
사용자 삽입 이미지

"Gawky and proud of it"

해석 : 덜 떨어졌지만, 자랑스럽다.
음역: 고기 앤 프라우드 오브 잇.
재해석: 고기와 고기에 대한 긍지.

귀도, 멋진데?

 
 
 
트랙백 | 댓글



OrCAD로 만드는 PCB
日新又日新 | 2008. 8. 18. 04:10
OrCAD로 만드는 PCB

멤버십 내에서 기술세미나 했던 내용. 이걸로 기술세미나를 하게 되다니. 지난 1년간 했던 수많은 삽질들이 주마등처럼 지나치는구나...

완전 쌩초보라 가정하고 들어가는 내용이라 조금이라도 아는 사람이 보면 날 놀릴수도 있다.-_-;;
정말 아무것도 모르는 사람이 따라하기 식으로 해 볼 수 있는 것을 목표로 하고 만든 것이니, 좀 더 나은 퀄리티를 원한다면 위의 자료만으로는 부족할 것이다.

 
 
 
트랙백 | 댓글



송수신기, 최종 교체
日新又日新 | 2008. 8. 17. 00:51
컨트롤 송수신기를 교체하였다.

무려 2.4GHz 대역의 제품으로.-_-;;

사용자 삽입 이미지

FUTABA 6EX 2.4GHz T/R SET (송/수신기 셋트)
http://www.buyrc.co.kr/product_html/product_detail.asp?product_number=31117

- FUTABA 6EX 2.4GHz T/R SET (송/수신기 셋트)

- 2.4GHz 의 간편함을 저렴하게 체험할수 있는 보급형 6채널 수신기 셋트

- 제품 구성

  • T6EX 송신기
  • R606FS 수신기

주요기능

  • 데이터 입력용 스크롤 레버
  • 디지털 트림 (1~4채널)
  • 모델 메모리 (6대분)
  • 모델네임 (최대 4문자)
  • LCD 디스플레이 창
  • 알람 (배터리 잔량 , 믹싱)
  • 서보리버스
  • EPA (ATV) (1~6채널)
  • D/R (1,2,4채널)
  • 스로틀 ATL
  • 트레이너
  • PCM/PPM(FM) 변환
  • 스로틀 커브 (5포인트 , 2커브)
  • 스로틀 컷
  • 스와시 타입
  • 자이로 MIX
  • 페일세이프 (PCM)
  • 트림 센터 전자음
  • 데이터 리셋

뭐, 이런 성능을 가졌단다.
이걸로 바꾸게 된 과정이 참 드라마틱(?!)하다. 주파수 혼선 문제로 인한 첫 사고는 불시착 2번에 이은 추락이었다. 그로 인해 PCM 방식의 송수신기(마찬가지로 후타바 조종기였다.)로 교체하였는데, 어제 실험에서 range test 를 통과하지 못 하는 것이다. 하. 하. 하.

뷁!!!
이것 때문에 투자한 돈과 시간을 개발에 투자했으면 지금쯤 제트기를 하고 있었겠다.-_-;; 우리 학교 주파수 오염도가 완전 시궁창, 아니, 매립 전 난지도 수준이다. 말이 항공대지, 대학원 랩실에서 서로 얘기하는 것도 없이 송신기를 틀어놓을 테니, 혼선이 생기는 것은 당연하다. 이것 때문에라도 꼭 랩실끼리 싸우지 말고 서로 간에 도우면서 진행해야 할텐데, 자기 욕심 챙기려하니, 될리가 있나... 그런 이유로 처음에 PPM 방식이 작동하지 않아 PCM방식을 사용하였고, 그마저도 작동하지 않은 것이다. 어제는 프로젝트를 진행하면서 처음으로 소리를 질렀다. 그 엄청난 스트레스의 시간을 다시 겪어야 되나 하는 생각이 머릿속에 떠오르자마자 눈에 뵈는게 없었다. 비행기를 밟지 않은게 다행이지.-_-;;

어쨌든 이제 2.4GHz 대역을 사용하니, 혼선 문제는 발생하지 않겠지.

다행스럽게도(당연하게도) 교체후에는 레인지 테스트도 잘 통과 하였고, 두 번의 시험 비행에서 적절한 성능을 보여주었고, 스위처 동작 또한 만족스러웠다. 자동 조종 상태에서 엘리베이터에서의 gain 값이 너무 컸는지 약간 상승한 후 바로 급강하 하기 시작했는데, 조종사인 명훈이 형이 스위칭 하자 곧바로 수동모드로 돌아와서 비행기를 살렸다.ㅎㅎㅎ

이 정도면 괜찮아 괜찮아.

오늘은 가져간 캠코더가 말썽이어서 비행 장면은 촬영하지 못 하고 레인지 테스트 장면만 촬영했는데, 저녁에 풀셋으로 준비해서 가져가야겠다. 내일은 아침 일찍부터 비행할텐데, 만족할만한 결과가 있을 것으로 기대한다.

 
 
 
트랙백 | 댓글



스위처 알고리즘을 변경하다.
日新又日新 | 2008. 8. 12. 12:36
스위처 부분에서 예전에 쓰던 알고리즘이 다음과 같은 문제가 발생하였다.

1. On/Off 상태에서 전환시, On->Off는 문제가 없으나 Off->On 상태 변경시 딜레이가 걸림

원인은 카운터를 0으로 초기화 하는 부분에 있었다. pwm 신호의 상태를 안정적으로 읽어올 수 있는 것이 아니기에 Off 상태는 low 상태를 유지하지만 On 상태는 중간 중간 High에서 low로 튀는 현상이 있었다. 따라서 Off->On으로 변경시에 완전히 On 상태로 넘어가기 전에 신호가 튀어 카운터가 0으로 초기화되는 현상이 발생한다면 스위칭에 딜레이가 발생하는 것이었다.

그에 수반되는 문제는 On 상태에서 Off상태의 시그널이 섞이는 문제였다. 신호가 튀면 그 순간 Off 상태의 시그널이 섞이게 되는데, 이 때문에 스로틀 같은 경우 마치 혼선이 발생하는 것과 같은 모습의 오동작이 발생하였다.

따라서 살짝 변경하여 threshold 를 하나만 주는 방식으로 변경하였다.

--
CPLD ISP는 왜 케이블 순서가 바뀌어져 있던 거지? 이것 때문에 하루 내내 고생했다.-_-;;
ID code가 인식되지 않는데 device properties가 제대로 잡혀져 있다면 회로보다 ISP 케이블을 먼저 확인하자.



 
 
 
트랙백 | 댓글



알루미늄 판재
日新又日新 | 2008. 8. 11. 12:44
이전에 함석판을 사용하여 케이스를 제작하였는데, 비행기에 있어서 1g 이라도 줄여야 할 판이라 알루미늄 판재를 구하게 되었다.

그런데 0.15T 판재의 경우 Roll단위로 판매를 하기에 이는 한 번 구매시 30~40만원의 금액이 필요하다. 차선책으로 0.2T 판재를 구하게 되었는데, 400x1200 사이즈가 1800원이다. 0.2T 면 거의 맥주캔에 쓰이는 알미늄판을 2~3장 겹쳐놓은 정도라고 봐야 하나. 암튼 거의 두꺼운 종이 수준의 두께를 가진다. 이걸 이용하면 어느 정도 차폐효과를 가지면서도 가벼운 케이스를 만들 수 있을 것이다.

구매는 문래동에 널리고 널린 철공소들. 그 중 신도림 역에서 문래고가쪽으로 가다 보면 알미늄 판재를 취급하는 집이 있는데, 그곳에 계신 젊은(???ㅋㅋ) 사장님에게서 구매하였다. 소량 판매해주신 고마우신 분.ㅎㅎㅎ

 
 
 
트랙백 | 댓글



비행
日新又日新 | 2008. 8. 10. 12:36
FCC ver.3 개발 이후 첫 비행이다.

직사광선이 엄청난 오후에 날렸는데, 이 때문에(현재 직사광선에 의한 과열이 원인이라고 생각하고 있다.) 스위처가 오동작하여 자동/수동 전환은 해보지 못하고 수동조종에 의한 센서값 기록만 확인해보았다.

게다가 스위처에서 발생한 크나큰 문제가 있었으니...

서보모터로 들어가는 전원선의 두께가 0.1mm 의 패턴을 사용하고 있었다. 그런데 그 한 라인으로 서보 4개를 전원을 공급하려니 얘가 날씨도 더운데 못 버티고 라인이 끊어지면서 사망하셨다. 검은 그을음을 알콜로 닦아내고 살펴보니 수신기쪽도 상황은 비슷하더라.

일단 응급조치로 점퍼선을 직접 날려주었는데, 두번째 PCB는 절대로 0.5~1mm 패턴을 사용해야겠다.



더운 여름날에 비행하는 것은 비행기도 사람도 힘든 일이다. 사람은 더운 날씨에 더 뜨거운 열기를 발산하는 그늘 없는 아스팔트 활주로 위에 서 있어야 하고, 비행기는 비행기대로 직사광선을 받아 금속부분은 후라이팬처럼 달궈지는 것이다. 전자제품이 열받아서 좋을게 뭐가 있겠는가, 현재 투명한 PE재질의 캐노피에 칠을 하여 내부에 직사광선을 쐬지 못하도록 하는 방안을 생각중이다.

일단  RF는 정상작동을 하였는데, 시간이 지나면 시리얼 포트로 나오는 메시지가 느려지는 경향이 있었다. 게다가 그 상태가 되면 FCC 프로그램이 죽어버리는 문제가 있어 들어가서 해결하려 한다.

 
 
 
트랙백 | 댓글



Verilog HDL IDE
日新又日新 | 2008. 7. 22. 13:23
자일링스 칩을 굽기 위해서 ISE, 알테라 칩을 굽기 위해서 Quartus 를 설치하는데...

ISE, 이거 물건이다.
무슨 설치에만 12시간이 걸리냐고!!!!!!!!!!!!!!!!!!!

WebPack 이라 그래서 지들 딴에는 다운로드도 자동으로 해주는 모양인데, 그렇게 하려면 미러 서버를 좀 두던가, 설치 끝나고서 업데이트 버전이 있다 그러는데, 이건 엄두도 못 내겠다. ISE 설치하는 도중에 Quartus 를 버전을 달리해서 두개 깔고, OrCAD 깔고, 밥 먹고, 씻고, 탁구 치고, 나가서 어슬렁 거리고, 스텝 모터 좀 보고, 그래도 시간이 남아서 좀 자고.-_-;;

게다가 MATLAB 깔아달라 그러네. 이쉑, 시간은 시간대로 잡아먹으면서 또 해달라는 건 왜 이리 많누.-_-;;

 
 
 
트랙백 | 댓글



주 거래 업체
日新又日新 | 2008. 7. 14. 16:56
아무래도 하드웨어 제작 쪽을 담당하다 보니 부품 업체들을 찾아가서 구매하는 경우가 많다.

아래는 주로 이용하는 부품 업체들. 거래 업체라고 하기에는 주문량이 적긴 하지만...ㅎㅎ

1. 디바이스 마트
http://www.devicemart.co.kr
[부품/일반]
구로 중앙유통단지 다동 3510
소량의 부품을 구매하기에 좋다.
급하면 구로나 가산 쪽의 영업점으로 달려가서 구매한다.-_-;;

2. 엘레파츠
http://www.eleparts.co.kr
[부품/일반]
디바이스마트와 마찬가지. 디바이스마트에 없는 것이 여기 있을 때가 있고, 반대의 경우도 있다.

3. 국제통신
http://www.kjtelecom.co.kr/
[부품/커넥터]
구로 중앙유통단지 가동 1226
온갖 종류의 커넥터들을 구할 수 있다. 역시 소량구매가 가능한 장점이 있다.

4. 석영전자
[부품/일반]
제일 은행 옆.-_-;; 위치가 말로 설명하기 참 그렇다.
전자공학 학부생이라면 졸업작품을 만들기 위해 한 번쯤 가봤을만한 업체.
소량 취급 전문이다. 이 곳에서 대충 파악한 후에 아래층을 돌아다녀도 좋다.

5. 석영전자 밑 캐패시터 집.
[부품/캐패시터]
이름을 까먹었다. 탄탈, 모노, 전해 암튼 온갖 종류의 캐패시터를 취급한다.

6. 청계공구상가
[부품/공구]
종로3가에서 내려서 세운상가로 들어오면 오른쪽에 할아버지께서 운영하시는 공구상가.
그 골목이 공구상들이 많지만, 난 공구류는 항상 여기서 구매한다. 예전부터 다녀서 익숙해서인가..

7. 시스템베이스
http://www.sysbas.com
[부품/eddy]
eddy 를 구매한 곳. 지금 진행하고 있는 UAV 프로젝트의 FCC로 사용되고 있다. 이를 이용한 시스템으로 이 회사에서 진행한 임베디드 경진대회 최우수상 수상.ㅎㅎ
http://www.embeddedmodule.com 을 운영하면서 eddy 에 관련된 기술 지원을 하고 있다.

8. 한샘디지텍
http://www.hsdgt.co.kr
[pcb/샘플제작]
샘플 pcb를 제작하는 곳으로 유명하다. 가격은 싼 편은 아니지만, 다른 업체 돌아다녀봤을 때 여기만한 데는 없는 듯.

9. 코파랜드
http://www.copaland.co.kr/
[부품/RF]
RF 모듈을 구매한 곳. 작은 크기에 성능이 괜찮았다. 하지만 사장님의 사정으로 더 이상 물건을 판매하지 않는다고...-_-;;

10. 용산RC
http://www.buyrc.co.kr
[부품/RC]
RC 관련 샵. 여기 없는 것은 국내에 없다고 봐도 좋다고 전문가 형(ㅎㅎ)이 말해줬다. 그만큼 업주의 발이 넓다는 뜻으로 이해했음. 용산 국민은행 옆 조그만 건물 2층에 있다.

11. 삼흥볼트
상호명이 맞는지 헷갈린다.
위치는...청계천 3거리 골목...-)-
볼트를 사려면 여기서. 이 집 앞쪽으로 가면 박스 만드는 집들이 쭉 있다.

12. LS일렉트로닉스
이기석 대리
011-9706-3898
이 분을 통하면 조금 비싸긴 하지만 다른 쇼핑몰에서 재고가 없어서 구할 수 없는 부품을 구할 수 있다. 꼭 필요한 부품인데 업체에 문의하면 최소구매수량 100개 1000개를 얘기하는데, 이럴 경우 이 분을 통해서 구매하게 된다. 물론 몇 십원 하는거 몇 십개 알아봐달라 하는 결례는 범해선 안 되겠다. 최소수량 물어보고 해줄 수 서로간의 쇼부가 필요하다.

 
 
 
트랙백 | 댓글



센서보드 Ver.3 Rev.3
日新又日新 | 2008. 7. 14. 16:39
지난 번에 만들었던 센서보드를 크기를 줄였다. 그 때와 마찬가지로 4층 기판.
그래봐야 아직도 가로세로 50mm를 좀 넘긴 하지만...
지난 번 보드에서 100% 라우팅 되지 않은 부분이 있어 확실히 체크하고, 부품을 실장한 후에 크기가 안 맞는 부분이 있어 그 부분들은 위치를 고려해서 배치했다.

문제는 비아홀 사이즈.
드릴링이 0.2mm 까지는 기존 가격대로 진행이 되는데 0.1mm의 경우에는 추가 비용이 20% 추가된다고 한다. 때문에 비아홀 사이의 간격을 좀 넓혀서 넘겨줘야 한단다.

여전히 오토라우팅 돌리고 확인하지만, 역시 시간 많을 때 직접 배선을 해야 괜찮은 배선이 나올 것 같다. 보드를 제작하면서 생길 수 있는 에러라 하면 역시 핀 위치나 부품 사이즈에 대한 문제인데, 이건 프로그램이 잡을 수 있는 문제가 아니니 어떻게 해야 하나. 역시 하나하나 신중하게 배치하는 것 외에는 답이 없는 건가..??

그건 그렇고, pcb 작업이 돈이 많이 들어가는 작업단계인데, 교수님 지원을 받게 되어서 다행이다.

1002 사이즈였나, 2012 사이즈 보다 작은 smd 저항/캐패시터를 사용하면 크기를 더욱 줄일 수 있을까? 아니다, 다른 센서들이 차지하는 크기가 있으니 물리적으로 불가능할 수도.

사용자 삽입 이미지


 
 
 
트랙백 | 댓글



여러장의 PCB 합치기
日新又日新 | 2008. 7. 8. 09:00

여러장의 PCB를 합쳐야 할 때, 각 도면의 데이터가 겹치지 않고, 제 위치에 있어야 함은 당연하다.


합치는 과정을 merge라고 하는데, layout 에서는 merge를 지원하고 있다. 단, 주의해야 할 점이 있는데 아래 내용을 살펴보면서 확인하도록 하자.


일단 아래의 도면을 열어보자.

사용자 삽입 이미지
 

위의 도면을 살펴보면 기준점이 왼쪽 하단에 있는 것을 볼 수 있다. 저 도면은 70x50의 사이즈를 가지고 있는데, 여기에 다른 도면을 붙이고 싶다.

사용자 삽입 이미지

두번째 도면을 보면 기준점이 왼쪽 멀리 있는 것을 볼 수 있다. 두개의 도면을 합칠 때 겹치지 않게 하기 위해서 기준점을 옮겨둔 것이다. 두번째 도면에서 기준점과 PCB사이의 거리는 당연히(!) 70 이다. 기준점을 옮기기 위해서는 Tools - Dimension - Move Datum 을 클릭하여 원하는 위치에 클릭하면 된다.


자, 그럼 준비가 끝났으니 도면을 합쳐보도록 하자. 첫번째 도면을 열어서 File - Load 를 실행한다.

사용자 삽입 이미지


그럼 파일을 불러오는 창이 하나 열리는데, 여기서 불러올 파일의 형식을 Merge Board(*.max) 로 지정해준다.

사용자 삽입 이미지


그리고 두번째 도면을 선택하여 열면 아래와 같은 대화상자가 나오게 된다.

사용자 삽입 이미지

기존 도면과 merge하려는 도면에서 부품 번호가 같은 부분이 있어서 그 부분의 처리를 어떻게 할 것이냐고 물어보는 것이다.


[예]를 클릭하게 되면 같은 이름이 있는 부분에 대해서는 무조건 이름을 변경하여 겹치는 것을 피하고,

[아니오]를 클릭하게 되면 같은 이름이 있는데 핀 개수가 틀릴 때 이름을 변경한다.


( 사실 위의 예/아니오 를 선택했을 때의 동작은 왜 저렇게 되는지 아직 몰라서 저렇게만 썼는데, 잘 아시는 분이 알려주셨으면 합니다.)


일단 [예]를 선택하자. 그러면 다음과 같은 로그와 함께 도면이 합쳐져 있는 것을 볼 수 있다.

사용자 삽입 이미지


사용자 삽입 이미지


실크스크린 프린팅되는 부품 번호가 엉망이 되는 것을 제외하면(ㅠ,.ㅠ) 훌륭하게 합쳐졌다. 이후 거버파일을 제작하는 것은 Post Processor 를 통해서 만들면 된다. 예전에 잘못된 내용으로 작성한 < sample pcb 제조회사로 넘기기 > 에서 layout 에서 거버파일을 제작하는 부분을 그대로 사용하면 된다.

이 글은 스프링노트에서 작성되었습니다.


 
 
 
트랙백 | 댓글



센서보드 Ver3. Rev.2
日新又日新 | 2008. 7. 7. 06:12
이번 3차 프로젝트(전체적으로 보면 6차?)에서는 여러 센서들이 하나의 센서보드로 단일화되어 전체적으로 센서보드(제어FCC 포함), 스위처, 파워스테이션 으로 구분되어지게 된다.

크기와 무게를 줄이는 것이 가장 큰 목적이었는데 이를 위해 센서보드를 4층기판으로 작업하는 것이 불가피했다. 가능하면 비용문제 때문에 2층으로 제작하려 했으나 사용하는 커넥터를 줄일 목적으로 도입한 핸드폰용 24pin 커넥터 부분이 말썽이어서 4층으로 가게 되었다.

pcb board

sensor board. 4층 기판으로 작업



layout의 auto route를 이용하여 배선하였는데 자세히 보면 사람이 배선했으면 절대 저렇게 하지 않았을 부분이 보인다. 시간이 부족해서 그리되긴 했지만 차후 RF회로를 설계할 것을 염두에 두면 절대 들이지 말아야 할 습관이다.

최종 목표는 Eddy CPU 에 준하는 크기로 줄이는 것이다. 그렇게 되면 현재 크기의 1/3 크기로 줄어들텐데, 커넥터를 더욱 작은 사이즈로 사용해야 하는 문제가 있어 좀 더 많은 생각이 필요한 작업이다.

 
 
 
트랙백 | 댓글



sample pcb 제조회사로 넘기기 위한 과정
日新又日新 | 2008. 7. 6. 06:23

이미 이 글이 많이 퍼졌다면...윽...

제가 했던 경험에 의하면 아래 글의 일부가 틀린 내용이기 때문에, 새로운 내용으로 작성한 여러장의 PCB 합치기 를 참조하셔야 합니다. 본의 아니게 잘못된 정보를 알려드려 죄송합니다...



자, pcb 제조회사로 넘기기 위환 과정을 본다면 이미 schematic으로 회로 그리고 layout으로 pcb 그리고 다 되어있는 상태일 것이다. 그럼 pcb 제조회사 중 sample을 전공(?)으로 하는 곳에 전화를 해보자. 특정업체 광고가 안되는 건지는 모르겠지만 내 의도는 광고가 아니니까...http://www.hsdgt.co.kr 로 가면 샘플 pcb를 의뢰할 수 있다. 그런데 이상한 파일을 넘겨달라고 하신다.

거버파일을 만들어서 저희에게 보내주세요. 스루홀 데이터도 같이 넘겨주셔야 합니다.
 

응? 거버파일? 거버...

사용자 삽입 이미지


훗, 설마.


layout으로 pcb를 그리다 보면 여러 layer를 편집했을 것이다. 그것을 CAM 기계가 동작할 수 있게 바꿔줘야 하는데 바뀐 파일이 거버파일...이라고 알고 있다.=_=;; 뭐, 정확한 의미는 사전을 찾아보면 되고, 일단은 생각나는 대로...


그럼 우리가 그린 pcb 도면은 .max 파일로 저장이 되어있는데 어떻게 거버파일로 바꾼단 말인가? 일단 아까 말한 대로 여러 layer 를 이용해서 그렸다는 말을 주목해보자. 거버파일은 한개의 파일이 아니라 여러개의 파일로 구성이 되어있다. 그럼 이걸 어떻게 생성하느냐. layout의 메뉴 중에서 Options - Post process settings 를 클릭하면 거버파일로 만드록 싶은 layer를 선택할 수 있다. Batch Enabled 라는 속성을 보고 거버파일로 만드록 싶은 layer의 속성을 yes로 바꿔주자. Enable for Post Processing 부분을 체크해주면 된다. 근데 이 많은 층 중에서 어떤 걸 거버파일로 만들어서 줘야 하나? 나는 다음의 layer들을 변환해서 넘겨준다.


TOP, BOT, GND, PWR, SMT, SMB, SPT, SPB, SST, SSB, AST, ASB, DRD, FAB


그런데 아직 나도 잘 몰라서 그렇긴 하지만 DRD, FAB는 안 해도 괜찮을 것 같다. 아, 위의 경우는 1층/2층 기판의 경우이고, 복층기판을 설계했을 경우라면 IN# 층도 넘겨줘야 한다.


자, 설정을 해 두었으면 Auto - Run Post Processor 를 클릭하여 거버파일을 생성하자. 생성된 파일은 max 파일이 있는 폴더에 생성된다. 그런데 여기 있는 것만 넘겨주면 스루홀 데이터를 넘겨달라는 전화를 받게 된다. 스루홀 데이터...구멍 데이터??? =_=;; pcb에서 구멍이 있을 건덕지는? 드릴로 뚫어야 하는 곳들. 그러면 이 파일은? thruhole.tap이라는 파일에 그 정보들이 있다. 그럼 이제 끝났다. 생성된 거버파일들과 thruhole.tap 파일을 압축파일로 묶어서 온라인 주문을 넣으면 끝!!


수고하셨습니다. 입금은 PCB 가 도착하면 박스안에 계산서가 다소곳이 동봉되어있을테니 금액을 보고 입금을...뭐 이리 비싸!!! PCB는 또 왜 이렇게 많이 오는 거고!!!

훗, 기판 하나당 하나의 거버파일로 제작해서 주문을 하면 하나의 원판에 해당 기판만 인쇄해서 제작을 하기 때문에 가격이 비쌀 수 밖에 없다. 제작하려는 기판이 작을수록 원판에서의 등분수가 많아지니까 같은 PCB가 여러장이 동봉되어서 올 것은 당연지사.


빌 게이츠가 내 pcb 제작 대금을 대신 내 줄 것도 아니니까 가격을 줄이기 위한 짱구를 굴려보니 다음과 같은 해답.


하나의 거버파일에 여러장의 PCB를 배치해서 넘겨주면 되겠네?


훌륭하다. 그런데 layout에서 하려니 아주 돌겠군. (무시해야 하는 수많은 에러들...그리고 뒤따르는 찝찝함...) 그래서 layout에서는 다음과 같은 툴을 제공한다는거!! 이름하여 gerbtool!!!


layout에서 tools - gerbtool - new 를 선택하니 gerbtool이 실행된다. new를 눌러 post processor를 통해서 생성된 gtd 파일을 선택하니...오, pcb 그림이 보인다. 다른 걸 붙이는 것은...file - merge 이겠군. 오, 사각 박스? 친절한데? 클릭...쉣.


pcb가 겹쳐있는 최악의 상황이 발생했다. 분명 이대로 주문을 하면 괴상망측한 pcb가 올텐데... 따라서 pcb를 서로 merge 하기 전에 위치를 지정해줄 필요가 있다. layout에서 작업을 마치고 나면 각각의 pcb 의 크기를 파악해서 어떻게 이어붙일 것인지 먼저 생각해두자. 계획이 섰는가? 그러면 (0, 0) 위치에 좌표하는 것은 그대로 놔두고, 다음 위치에 놓여야 할 도면을 열자. (0, 0) 위치에 기준점이 있을 것이다. 이 기준점을 아까 (0, 0) 위치에 두는 보드의 크기를 감안해서 현재 도면이 그 옆에 붙을 수 있게 위치 조정을 해주면 될 것이다. 그러면 merge 할 때도 문제가 없을 것. Tool - Dimension - Move Datum 을 이용하면 기준점의 위치를 바꿀 수 있으니 잘 옮겨보자. 옮기고 나서 다시 거버 파일 만들고, gerbtool 에서 merge하니...나이스, 잘 되었다.


미안하지만 이대로 넘겨도 또 퇴짜 맞는다. 복잡한 과정이지만 필요한 과정이니 하나만, 아니 두개만 더 하자. 지금 만든 것은 gerbtool 다루는 파일이다. 거버 데이터가 아니란 말씀. 게다가 이걸 거버 파일로 만든다고 해도 thruhole 데이터가 없다. 따라서 먼저 thruhole 데이터를 병합하고 나서 거버파일로 만들어야겠다.


자, 두가지, 어떤거?

  1. thruhole 데이터 병합
  2. gerbtool 에서 거버 데이터 생성하기

별 거 아닌 걸 가지고 되게 중요한 것처럼 말하네...라고 탓하지 마라. 이거 몰라서 지금까지 6개월간 layout에서 생쑈를 했다. 녹색상자도, 청색상자도, 거인족 괴물까지도 안 알려주더라. 난 정말 저 두 가지를 가지고 좀 티내고 싶다.ㅋㅋㅋ


암튼.


thruhole 데이터 병합을 하기 위해서 File - Import - NC (Drill/Mill)을 통해 도면에 맞는 thruhole 데이터를 병합하자.

그러면 새로운 레이어에 thruhole이 있을 것이다. 이걸 가지고 도면들을 하나로 만들고, 모든 도면을 하나로 합치고 thruhole 데이터도 같이 들어가 있는 걸 확인 했다면 File- Export - GerberFile - Export - NC (Drill/Mill)을 이용하여 거버파일과 thruhole 데이터를 생성하면 된다.


몇 줄 안 되는거 안다. 하지만 이거 몰라서 고생한 시간들을 생각하면...ㅠ,.ㅠ 부디 나 같은 삽질 하는 사람이 더 이상 없었으면 하는 바램이다.


자, 이제 정말 끝났다. sample PCB 기본 가격이 10만원은 넘지만, 그래도 최대한 싸게 샘플을 제작할 수 있는 방법이다. 뭐, 이제 남은 건 더 싼 업체를 알아보는 것 정도? 혹시나 한샘디지텍 보다 더 싼 곳이 있음 알려주시기 바랍니다.ㅎㅎ

이 글은 스프링노트에서 작성되었습니다.





 ㅇㅁㅇ


 
 
 
트랙백 | 댓글



Wearable Computer Competetion
日新又日新 | 2008. 7. 3. 11:16
2008년도 Wearable Computer 경진대회 때문에 카이스트에 왔다. 누굴 대신 보낼 수 없어 직접 오긴 했는데, 집에 오려고 대전에 온 게 아니라 일(?) 때문에 오니 기분이 좀 묘하다.ㅋ

그런데 여기 SDIA 연구원 분이 날 알아보시는데 이거 세미나 하다가 졸면 미안한데...큰일났다. 어제도 밤새고 와서 좀 있다가 졸려워지기 시작할 텐데.=_=;;

 
 
 
트랙백 | 댓글



여러장의 도면을 이용하기
日新又日新 | 2008. 7. 1. 04:27

 처음 OrCAD 를 이용하여 회로를 그리기 시작했을 때 도면 한 장에 회로의 모든 것을 담으려 했다. 당연히 회로도는 공간 활용을 위한 중구난방의 Net Alias로 인하여 나중에는 회로도에서 남은 공간을 찾아볼 수 없을 정도로 빽빽하게 그려지곤 했다.


 하지만 이제 프로젝트의 규모가 좀 커짐에 따라서 회로도를 체계적으로 정리할 필요를 느끼게 되었고, 직접적인 계기가 된 것은 systembase 에서 구한 eddy CPU 도면을 보고나서이다. 음, 그래, 도면이란 이렇게 체계적으로 그려야지, 맨날 아버지 일하실 때 건축도면 봤으면서 이런 거 하나 안 하고 뭐 했나, 그랬다.


 그래서 이번엔 여러장의 도면을 이용하는 방법을 알아보자.


 지금까지 사용했던, 한장의 도면에 회로의 모든 것을 담는 것을 단면설계 라고 한다. 장점은 편하고 작은 회로의 경우 빠르게 작성할 수 있지만 조금이라도 규모가 커지면 알아보기 힘들어질 정도로 공간이 부족해진다는 것.


 그래서 한 Schemetic 폴더에 여러장의 도면을 넣는 평면설계 를 이용하게 되었다. 이 때 필요한 것은 단지 다음의 기호. Place-off page connector 라고 한다.

max232.JPG


위의 예제에서 AVR_UART0_TX 쪽에 보면 >> 모양의 것이 있다. 내가 현재 도면에서 다른 도면에서도 사용을 원하는 wire(port가 아니다!!)를 해당 기호를 이용해서 붙여준다. 이 때 현재 도면에서 나가는 wire이므로 나가는 방향을 사용한다. 연결된 것이 input 핀이든 output 핀이든 상관없이 말이다. 그럼 다른 도면에서는 어떻게 사용한다?


 현재 도면 외부에서 연결시키는 것이기 때문에 다른 도면에서도 마찬가지로 나가는 이중꺾쇠를 사용하면 되겠다. 이를 이렇게 나타낼 수 있겠지.


(1번도면 1번)-wire->>      (넘사벽)        <<-1번-wire (2번도면)    2번-wire->>       <<-2번-wire (3번도면)


이런 성의없는 텍스트 그림으로 이해가 되지 않는다면...음, 제가 연락을 받을 수 있는 방법으로 질문을 하세요.=_=;;


 나중에 프로젝트 규모가 더욱 커져서 계층구조설계(Hierarchical Design)를 하게 되면 관련 내용도 올려놔야겠다. 다른게 아니라 내가 까먹지 않게.-_-;;


이 글은 스프링노트에서 작성되었습니다.


 
 
 
트랙백 | 댓글



Capture에서 원하는 부분의 Part 만들기
日新又日新 | 2008. 7. 1. 04:13
  1. File - New - Library
  2. 자신의 프로젝트를 선택한다.
  3. Project Manager 창에서 Design Resources - Libarary 에서 오른쪽 버튼으로 New Part를 선택한다.
  4. Name에 Part이름을 정해서 넣고 PCB Footprint를 미리 작성한 경우라면 그것도 넣어준다.(대부분의 경우라면 Footprint를 미리 작성하는 경우가 없을 듯.)

    • Part Reference Prefix 를 지정하는 경우는 만들려는 파트의 종류를 지정하기 위해서. 뭐, 잘 지정해주면 편하긴 하다.
  5. 그 외 밑에 옵션들 선택해서 OK
  6. 오른쪽에 보면 핀을 추가할 수 있는 메뉴가 있다. 1개만 추가하는 경우, 여러개 한꺼번에 추가하는 경우 등 여러가지 경우가 있는데 이건 알아서 선택해서 사용하려는 용도에 맞게 사용하면 될 것이다.

 

사용하기

  1. 일반적인 부품 파트의 사용방법과 동일하다. [P]를 눌러서 Name으로 지정했던 파트를 찾아서 사용하면 된다.

 

이 글은 스프링노트에서 작성되었습니다.


 
 
 
트랙백 | 댓글



라이브러리의 중요성
日新又日新 | 2008. 6. 27. 09:00
프로그램 코드도 마찬가지겠지만, 최근 캐드 작업하다 보면 더욱 절실하게 와 닿는다.
코드야 자기가 짠 코드면 머리속에 남아있으니 다시 짜면 그만이라고 하고 자연스럽게 예전보다 더 나은 코드가 나올 수도 있겠지만 도면의 경우에는 그렇지 않다. 풋프린트를 잘못해서 날리기라도 한다면 그 똑같은 노가다 작업을 다시 해야 하는 것이다. 특별히 머리를 쓰는 것도 아니고 오로지 마우스를 가지고 하는 노가다 작업인데, 아주 그냥 하기 싫어 죽는다.

다행히 예전에 작업하던 라이브러리 파일을 날렸나 했는데 어딘가에 백업을 해둔게 있어서 엄청난 시간을 아끼게 되었다. 알럽 소머치, 구글데스크탑.ㅋㅋ

본의 아니게 구글 데스크탑 광고가 되어버렸네...-_-;;     

 
 
 
트랙백 | 댓글



헤더파일처럼 import 사용하기
日新又日新 | 2008. 6. 26. 22:57

헤더파일처럼 import 사용하기#

조건#

  1. >>> import os, sys
    >>> #path 경로에 임의의 디렉토리를 추가한다.
    >>> sys.path.append('C:\\tmp')
    >>> #파일이 존재하는지, 읽기가 가능한지 확인한다.
    >>> os.access('C:\\tmp\\woosung.py', os.F_OK | os.R_OK)
    True

코드#

  1. import woosung
    woosung.TestModule()

설명#

path상에 있는 경로에 import 하려는 모듈을 넣어두고, import 구문을 사용한다.
그 후에는 원하는 대로 import 한 모듈을 사용할 수 있다.

 

이 글은 스프링노트에서 작성되었습니다.


 
 
 
트랙백 | 댓글



위치로그 : 태그 : 방명록 : 관리자
이우성's Blog is powered by Daum / Designed by SSen
관리자  |  글쓰기
BLOG main image
전, 이우성입니다. ( I am Woosung, Lee. ) ""
 Category
 Media
 TAGS
 Recent Entries
 Recent Comments
 Calendar
 Archive
 Link Site
 Visitor Statistics
+ Total :
+ Today :
+ Yesterday :
카피
rss