KICAD로 설계한 PCB를 JLCPCB를 통해 주문 할 때 아래와 같은 방법으로 Gerber 파일을 생성해줘야 합니다.

1. Gerber 파일 생성 방법 (KICAD8 기준으로 작성 되었습니다.)

1.1 Kicad 의 PCB 에디터를 통해 작성된 PCB Artwork 파일을 준비 합니다.

1.2 메뉴바를 통해 [파일] - [기판 제조 출력] - [거버 파일(.gbr)] 선택.

 1.3 아래 그림과 같이 설정 합니다. (현재 PCB는 4-Layer 기준으로 설계되어 있습니다.)

만약 2-Layer 혹은 그 이상의 Layer로 제작 할 경우 해당 Layer를 추가 혹은 선택 삭제 해줘야 합니다.

* 선택 해야 할 레이어 목록 

 - F.Cu (맨 윗면 PCB 구리층 Layer)

 - In1.Cu (4 Layer의 Inner Layer/ 2-Layer 제작 시 선택 삭제)

 - In2.Cu (4 Layer의 Inner Layer/ 2-Layer 제작 시 선택 삭제)

 - B.Cu (맨 아랫면 PCB 구리층 Layer)

 - F.Paste

 - B.Paste

 - F.Silkscreen (윗면 실크스크린 데이터)

 - B.Silkscreen ( 뒷면 실장되는 부품이나 실크가 없을 경우 생략 가능)

 - F.Mask

 - B.Mask

 - Edge.Cuts (보드 outline)

등을 지정 합니다.

1.4 필요한 레이어를 선택 후 일반 옵션으로 이동하여 다음 사항을 확인합니다.

(텐트 비아 미 체크 시  생성된 비아들이 flood 되지 않고 동박면이 모두 오픈된 채로 제작이 됩니다.)

1.5 출력 디렉토리를 설정하여 거버 파일이 출력 될 디렉토리를 지정해줍니다.

1.6 모든 설정을 그림과 같이 완료 하였으면 [플롯] 버튼을 눌러 거버 파일을 생성 합니다. (플룻 버튼을 누르기 전 Kicad에서 경고 메세지를 보내긴 하겠지만 그라운드 카파 등 영역 채움을 하지 않을 경우 현 상태 그대로 거버 파일이 제작되어 카파가 없는 상태로 출고될 수도 있습니다. 오래된 pads layout 과 같은 프로그램들은 거버 파일 생성 시 별도의 경고 없이 그대로 거버가 생성되어 종종 문제가 되는 경우가 있습니다.)

1.7 PCB 파일의 거버 파일 이외에도 드릴 파일 역시 함께 JLCPCB에 전달되어야 합니다. 오른쪽 하단의 [트릴 파일 생성] 버튼을 클릭합니다.

1.8 아래 그림과 같이 드릴 파일 형식 및 원점, 맵 파일 형식, 0 표시 형식 등을 설정 하고 [드릴 파일 생성] 버튼을 누릅니다.

1.9 [맵 파일 생성] 은 사람이 읽을 수 있도록 드릴 맵을 제공해주는 기능을 합니다. JLCPCB에 필수 제공 파일은 아니나 제조 과정 상 오류를 줄이기 위해 함께 전달해주는 것이 좋습니다.

1.10 이후 출력 폴더로 지정된 폴더로 이동하여 생성된 데이터를 압축 하여 JLCPCB 사이트에 올리면 됩니다.

1.11 만약 거버 파일의 정상적인 생성 여부를 확인 하기 위해서는 KICAD 메인 프로그램의 거버 뷰어를 선택하여 거버 데이터가 저장된 폴더를 선택해주면 생성된 데이터를 확인 가능 합니다.

1.12 [파일] - [거버 플롯 파일 열기] 혹은 [자동 감지된 파일 열기]를 눌러 생성된 거버 파일을 선택해주면 됩니다.

1.13 아래 그림과 같이 Gerber 파일을 열 수 있으며, Layer 별 정상적으로 생성되었는지, 좌표에 이상이 없는지 확인하시면 됩니다.

1.14 이외 거버 데이터와 맵파일, 드릴 데이터 등이 정상적으로 생성되었어도 JLCPCB의 PCB 제조 역량에 따라 문제가 되거나 불필요한 비용이 지출될 수도 있으므로 항상 JLCPCB의 PCB 제조 역량을 확인하시어 설계에 들어가야 할 것입니다.

해당 부분은 JLCPCB의 아래 사이트로부터 확인이 가능합니다.

https://jlcpcb.com/capabilities/pcb-capabilities

 

PCB Manufacturing & Assembly Capabilities - JLCPCB

 

jlcpcb.com

이외 사용하는 비아의 크기나 PCB 라인의 최소 굵기에 따라서도 추가 요금이 발생할 수 있으니, 최대한 적은 비용을 발생하기 위해서는 위 사이트를 통해 확인 후 발주를 진행하는 것이 많은 도움이 될 것입니다.

 

반응형

'KICAD' 카테고리의 다른 글

KICAD 기본 단축키  (0) 2026.01.06
더보기

단축키 목록

Ctrl + F1 (단축키 목록을 불러와서 새로운 윈도우에 띄워준다)

 

회로 편집기

PCB Artwork 편집기

 

반응형

'KICAD' 카테고리의 다른 글

KICAD로 설계한 PCB JLCPCB 주문을 위한 Gerber 생성 방법  (0) 2026.02.12

국내 한샘 디지텍을 비롯한 대다수 PCB 업체들의 4-Layer PCB stack-up의 경우 아래와 같은 구성을 가짐. (1.6T 1OZ 기준)

JLCPCB의 경우 원판 제조사가 상이하여 아래와 같은 구성을 가짐.

위 내용처럼 JLCPCB는 기본 설정 되는 4 Layer PCB의 내부 구리층이 0.5OZ, 외부 구리층이 1OZ로 구성되나 국내는 외층 0.5Oz, 내층 1OZ로 되어 반대 입니다.

고전력을 사용하는 모터 드라이브와 같은 PCB를 제작 시 주의하여 주문 제작하여야 합니다.

 

반응형

'MCU > HW 이야기' 카테고리의 다른 글

콘덴서의 종류와 선정  (0) 2009.08.22
128 회로 설계시 주의 점!!  (0) 2009.06.22
푼수의 블로그 개설  (0) 2009.06.18

cubeide사용 시 printf 를 이용하여 float 형 데이터를 출력하기 위해 설정하는 방법입니다.

더보기

project -> Properties -> C/C++Build -> Settings -> Tool Settings -> MCU Settings -> Use float with printf from newlib-nano (-u _printf_float) 체크

Use float with printf form newlib-nano (-u_printf_float) 체크박스의 체크를 할 시 printf 함수를 이용한 float형 데이터 출력이 가능합니다.

반응형

'ARM > SW 이야기' 카테고리의 다른 글

modbus CRC16  (0) 2026.01.06
전력 검침 칩셋 MAX78630 인터페이스  (0) 2016.07.13
대표적 ASCII 정리  (0) 2010.06.07
C언어를 이용한 CGI 웹 프로그래밍 Intro...  (0) 2010.01.12
리눅스 rpm명령어  (0) 2009.11.10
unsigned char CRCTableHigh[] = {
    0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81,
    0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
    0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01,
    0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,
    0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81,
    0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
    0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01,
    0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
    0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81,
    0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
    0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01,
    0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
    0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81,
    0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
    0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01,
    0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
    0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81,
    0x40
};

//Table of CRC values for low–order byte
unsigned char CRCTableLow[] = {
    0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, 0x07, 0xC7, 0x05, 0xC5, 0xC4,
    0x04, 0xCC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09,
    0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A, 0x1E, 0xDE, 0xDF, 0x1F, 0xDD,
    0x1D, 0x1C, 0xDC, 0x14, 0xD4, 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3,
    0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3, 0xF2, 0x32, 0x36, 0xF6, 0xF7,
    0x37, 0xF5, 0x35, 0x34, 0xF4, 0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A,
    0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29, 0xEB, 0x2B, 0x2A, 0xEA, 0xEE,
    0x2E, 0x2F, 0xEF, 0x2D, 0xED, 0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26,
    0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60, 0x61, 0xA1, 0x63, 0xA3, 0xA2,
    0x62, 0x66, 0xA6, 0xA7, 0x67, 0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F,
    0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68, 0x78, 0xB8, 0xB9, 0x79, 0xBB,
    0x7B, 0x7A, 0xBA, 0xBE, 0x7E, 0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5,
    0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71, 0x70, 0xB0, 0x50, 0x90, 0x91,
    0x51, 0x93, 0x53, 0x52, 0x92, 0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C,
    0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B, 0x99, 0x59, 0x58, 0x98, 0x88,
    0x48, 0x49, 0x89, 0x4B, 0x8B, 0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C,
    0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42, 0x43, 0x83, 0x41, 0x81, 0x80,
    0x40
};

unsigned short Calc_Crc(unsigned char* ptr, unsigned short len)
{
    unsigned char crchi = 0xff;
    unsigned char crclo = 0xff;
    unsigned short index;

    while (len--)
    {
        index = crclo ^ *ptr++;
        crclo = crchi ^ CRCTableHigh[index];
        crchi = CRCTableLow[index];
    }
    return (crchi << 8 | crclo);
}

int main(void)
{
    unsigned char tx_data[8] = { 0x01, 0x05, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00 };
    unsigned short crc = Calc_Crc(tx_data, 6);

    printf("\r\n Calc Crc :: %04x\r\n", crc);

	return 0;

}

Calc_Crc 함수 호출을 통해 modbus crc16 체크섬 계산이 가능합니다.

 

반응형

Pads 9.3 버젼의 Decal wizard 의 창이 잘리는 문제 해결을 위한 방안

 

1. reshack.exe 파일을 인터넷에서 다운로드 (https://blog.naver.com/insist20/10111136179 )

 

Reshack 리소스해커 (무설치) - 프로그램 한글화

Reshack 리소스해커 (무설치) - 프로그램 한글화 각종 게임이나 프로그램등을 사용함에 ...

blog.naver.com

2. 실행 후 C:\MentorGraphics\9.3PADS\SDD_HOME\Programs\enu\powerpcbres.dll 파일을 좌측편에 드래그하여 넣기.

3. Dialog 의 10010\1033 번 Dialog 열기.

4. 해당 다이얼로그의 크기를 짤리는 부분이 없을 정도로 늘림.

5. 스크립트 컴파일 및 저장 후 Pads 실행하여 확인. 끝.

반응형

+ Recent posts