1. PCB ( Printed Citcuit Board ) 제작 이유 

  

브레드보드에 케이블을 연결해서 작동 시켜 보는 것은 어디까지나 정상적으로 작동되는지 여부를 시험하기 위한 용도이고  제대로 작동하는 메이커 작품을 만들 때에는 구성한 회로를 납땜작업 등으로 견고하게 제작해야 한다. 그런데 회로구성이 조금만 복잡해 지면 케이블을 잘라 일일히 납땜하는 작업도 번거로울 뿐만아니라 부피가 커져 지저분해 지고 접촉불량 등 고장도 자주 발생한다. 

 

따라서 PCB기판 형태로 제작하면 회로가 PCB내부에 이미 구성되어 있어 부품만 해당 위치에 꼽고 납땜하면 되기 때문에 작업이 간편하고 크기도 훨씬 작아진다.      

 

예전에는 PCB제작 비용이 비싸 전문적인 업체에서 상품 생산용으로나 제작하는 것으로 알려졌으나, 최근에는 PCB제작비용이 혁신적으로 저렴해져  일반인 메이커들이 취미용으로 제작해도 될 정도로 부담없는 가격이 되었다. 즉  가로 세로 각 10cm 크기로 5장 제작하는 비용이 2달러인 경우도 있을 정도이다 ( 중국 업체 서비스이기 때문에  배송기간이 총 10일정도 소요되고 국제배송료가 10달러 정도 소요됨)

 

 

2. PCB 설계 방법

 

Fritzing 회로설계 화면은 브레드보드,스케메틱,PCB 세가지 종류가 있는데, 이 중 스케메틱화면은 회로도 도면 형태인데 도면 형태로 문서를 제출하거나 할 때 사용하는 것이고 PCB화면은 회로설계 내용을 PCB기판 형태로 제작하기 위한 것이다. 

 

1) PCB 크기 설정 및 부품배치 

   

 PCB 탭을 선택하면 표시되는 PCB설계 화면에서 속성화면을 보면 다음과 같이  모양과 크기를 설정하는 부분이 있는데  여기에 원하는 PCB보드의 크기를 먼저 지정하고 레이어 종류를 선택한다. 레이어는 PCB보드의 표면에 구리판 회로를 인쇄할 때 한쪽면에만 할 것인지 양면에 둘다 할것 인지 선택하는 것인데, 비용 차이는 없으므로 극히 간단한 회로가 아니면 양면 레이아웃을 선택하는 것이 편하다.       

 

 

PCB보드의 크기를 정한 이후에는 설계회면에 입의로 배치되어 있는 부품들을 PCB 보드 영역내에 원하는 모양으로 구성되도록 재배치해야 한다. 

 

2) PCB 회로 라우팅 

 

부픔의 재배티가 완료되면 실제 부품간 회로가 연결되도록 내부 구리판 연결을 설정해 주어야 하는데 케이블로 연결할 때와 달리 PCB판위의 구리판은 서로 중첩되어서는 안된다는 제약 사항 때문에 상당히 복잡해진다.

따라서 브레드보드 화면에서 회로를 구성했어도 PCB화면에 와보면 점선으로만 회로연결이 되어 있을 뿐 실제 구리판 배열 모양은 보이지 않는데 간단한 경우라면 점선으로 보이는 회로 연결을 하나씩 구리판 회로 형태로 변경하는 작업을 수행할 수 도 있다.  

 

그러나 수작업으로 일일히 연결하기에는 너무 복잡한 경우 자동으로 하는 하는 방법이 있다. 매뉴에서 Routing -> 오토 라우터기능을 실행시키면 설계한 회로대로 구리판 배열이 자동 생성된다.

 

 

오토 라우칭 작업이 완료되면 다음과 같이 점선의 회로가 구리판 모양으로 변경되어 표시된다. 구리판의 모양이 두종류 인것은 양면 레이아웃 이기 때문에 앞면과 뒷면을 구분하기 위한 것이다. 이 모양을 적당히 재조정하거나 수정하여 변경할 수도 있다.

 

3) PCB Design Rule Check

 

  다음으로 해주어야 할 작업은 설계한 PCB가 과연 PCB보드 형태로 생산할 수 있는 사양인지 Check하는 작업을 수행해 보아야 한다. 

 

매뉴에서 Routing -> Design Rule Check 기능을 실행시키면 다음과 같이 문제가 있는 사항이 표시된다. 대부분은 부품과 또는 구리선 배열간의 간격이 좁거나 중첩되어 PCB제작에 부적합하다는 내용이므로 해당되는 부분의 배선의 위치나 모양 등을 세부조정하고 다시 CHeck해 본다.  

세부 조정을 거쳐 다음 메세지가 나오면 보드로 제작가능한 형태로 PCB설계가 완료된 것이다.

 

 

4) Garber File 추출 

 

PCB보드의 설계가 완료되면 생산을 위해 제작업체에 생산을 의뢰하기 위해서는 PCB제작도면을 보내주어야 하는데 이 도면의 형식이 Garber파일이다. 다음과 같이 메뉴에서 내보내기 -> 생산을 위해 -> Extended Garber 를 선택하고 저장될 폴더를 지정하면 PCB설계도면 파일들이 여러개 생성된다. 

 

통상은 이 파일들을 하나의 ZIP파일로 압축하여 PCB생산 업체에 전달하게 된다. 

1. 화면의 구성

 

Fritzing 프로그램을 기동 시키면 위와 같은 화면이 표시된다. 각각의 용도는 다음과 같다.

 

1)브레드보드 영역

  메인화면 부분으로 실제 연결되는 회로를 표시하고 편집하는 여역이다. 상단의 탭메뉴 선택에 따라 다음과 같은 방법으로 표시한다.   

 

    - 브레드보드 : 브레보드 형태로 보여 주고 부품 선택 영역에서 부품을 가져와 부품간 연결을 하는 형태로 보여준다.즉 마치 실제로 브레드보드에 부품을 꼽고 케이블을 연결하는 작업을 직관적으로 그대로 보여 주므로 초보자들이 간단한 회로를 구성해 볼때 편리하다.  

 

    - 스케메틱 : 전자회로도 형태로 보여준다. 즉, 전자회로 설계도 형태로 보여 주는 화면으로 회로설계 경험이 있거나  좀 더 체계적으로 회로를 구성하고자 할 때 사용할 수 있다. 

 

   - PCB  : 설계한 전자회로를 전자 PCB기판 형태로 제작하고자 할 때 사용한다. 즉 구성한 회로를 PCB기판 위에서 재배치 함으로서 실물 PCB를 제작할 수 있도록 하는 작업이다. 브레드보드에서 케이블로 연결할 때에는 한 케이블위에 다른 케이블을 여러개 중첩할 수 있으나 PCB판 회로는 평평한 구리판을 녹여 회로를 구성하는 것이기 때문에 두개의 연결이 겹치면 안되고 따라서 회로선의 구성에 어려워지고 복잡해진다. 복잡한 회로의 경우 연결 구리판의 층수를 여러개 쌓아 올리는 방식으로 하지만 복잡한 회로일 수록 PCB회로 구성은 기하급수적을 난해해 진다)      

 

위 세가지 형태의 회로의 구성은 동일하나 용도에 따라 표현하는 방법이 다를 뿐이다. 즉 브레드보드에서 부품을 추가/삭제하거나 연결을 변경하면 다른 화면에도 영향을 미치지만 표시되는 위치를 변경하는 것은 영향을 미치지 않는다.      


2) 부품 선택 영역 

 사용할 부품을 찾거나 선택하여 브레드보드 영역에 추가할 수 있는 영역이다.  기본적으로 아두이노, spark fun 등 여러 제조사의 제품이 등록되어 있지만, 사용자가 추가로 부품을 등록할 수 있다. 

 

3) 부품 속성 설정 영역 

사용할 부품의 속성을 설정하는 영역(inspector)으로 부품의 위치, 회전, 사이즈 등을 설정할 수 있으며, 부품에 대한 설명 및 속성을 확인할 수 있다. 

 

 

 

2. 회로의 구성 절차  

 

1) 부품 선택 영역에서 사용할 부품을 골라 브레드보드영역으로 드래그&드롭방식으로 옮기고,  
2) 부품 속성 설정 영역에서 선택한 부품에 대한 속성을 수정 및 설정 후,
3) 브레드보드 영역에 서 각 부품들끼리 연결을 진행하는 식의 과정으로 회로를 구성한다. 여기에서 브레드보드도 하나의 부품으로서 브레드보드를 통해 케이블을 연결시켜도 되고 브레드보드를 삭제하고 부품간 케이블을 직접 연결해도 된다. 

 

부품간 케이블을 연결하는 방법

 

  -부품에 표시된 연결단자를 글릭하면 케이블이 표시되는데 이 케이블의 다른 끝을 다른 부품의 단자까지 끌어 연결하면 된다.  부품단자간 연결이 된 상태가 되면 한쪽 단자를 클릭했을 떄 연결된 다른 부품도 함께 깜박이므로  연결여부룰 확인할 수 있다.

 - 오른쪽 마우스 버튼을 클릭하여 케이블의 색상을 바꿔 표시할 수도 있고, 케이블 중간을 클픽하여 드래그 함으로써 케이블의 모양을 바꿀 수도 있다.      

 

 

 

3.부품의 추가 

부품의 검색

 

Fritzing시스템에 내장되어 있는 부품목록은 아두이노와 관련된 기본적인 부품들은 포함되어 있으나, 이 목록안에 없는 부품을 가지고 회로를 구성해야 하는 경우도 많다. 이럴때에는 부품선택 화면에서 부품을 끌어올 수 없기 때문에 부품선텍화면에 표시되도록 해당 부품관련 설계내역을 외부에서 가져와서 넣어 주어야 한다. 

 

Fritzing 부품설계를 제공해 주는 곳은 여러곳이 있으니 이 사이트들을 검색해서 해당 부품을 찾아야 한다.   

 

 

 

fritzing/fritzing-parts

Electronic components for use in the Fritzing app (aka the parts library) - fritzing/fritzing-parts

github.com

 

 

Fritzing

Fritzing is an open-source hardware initiative that makes electronics accessible as a creative material for anyone. We offer a software tool, a community website and services in the spirit of Processing and Arduino, fostering a creative ecosystem that allo

fritzing.org

 

 

ArduinoModulesInfo - modules, sensors, example code

Arduino modules tutorials, source code, frizting parts, specifications and connection diagram for Arduino sensors.

arduinomodules.info

 

위 사이트에 접속하여 부품명을 검색해보면 아두이노 관련 왠만한 부품들을 검색된다.  

 

 

해당 부품 설명에 다음과 같이 Fritzing 설계내역을 다운로드할 수 있는 링크가 표시되므로 이를 다운로드받는다. 

 

 

부품의 등록 

 

부품 목록화면에서 "MINE"을 선택하고 마우스 오른쪽 버튼을 선택하면 나오는 서브 메뉴에서 "Import"를 선택한 후 다운로드 받아둔 파일을 선책하면 된다.  

 

1. 시스템개요 

 

YK04 4채널 리모트콘트롤러 모듈은 송신기에서 A~D버튼 중 하나를 누르면 수신기 D0~D3 단자중 해당 단자에 5V전압이 걸리는 방식이므로 원하는 순간동안만 기기를 ON시킬 수 있지만, 계속 ON상태로 켜 놓았다가 원하는 시간에 OFF시키는 식의 작동을 원할 경우 별도의 프로세서로 이렇게 작동되도록 제어해야 한다.

 

즉, 수신기에서 출력되는 5V 신호를 전원제어를 위한 릴레이에 직접 연결하는 것이 아니고, 이아두이노에서 입력받아  이 신호 구분에 따라 원하는 방식으로 작동되도록 아두이노에서 릴레이를 제어하는 방식으로 제작해야 한다. 

 

 

2. 회로의 구성 

 

3. 릴레이와 아두이노와의 연결 

 

전원제어용 기기를 각각의 릴레이에 연결하고 각각의 릴레이들을 제어하기 위해 아주이노와 다음과 같이 연결한다.

  • VCC to 5V
  • IN1 to A0
  • IN2 to A1
  • IN3 to A2
  • IN4 to A3 
  • GND to GND

 

4. YK04 4채널 리모트콘트롤러 모듈과 아두이노의 연결 

 

 

5. 아두이노 프로그램 

#include <rm4.h>

// Arduino pin connected to the receiver VCC in. Set this high to enable the
// receiver.
static const int kEnablePin = 13;

// Arduino pins connected to the data pins on the receiver.
static const int kData0Pin = 9;
static const int kData1Pin = 10;
static const int kData2Pin = 11;
static const int kData3Pin = 12;
const int relay1 =  14;            
const int relay2 =  15;     
const int relay3 =  16;     
const int relay4 =  17;     

// Create an RM4 object to read the button codes from the remote.
RM4 remote(kData0Pin, kData1Pin, kData2Pin, kData3Pin);

void setup() {
  // Initialize the serial interface.
  Serial.begin(9600);

  // Turn on the receiver.
  pinMode(kEnablePin, OUTPUT);
  digitalWrite(kEnablePin, HIGH);
  pinMode(relay1, OUTPUT);
  pinMode(relay2, OUTPUT);
  pinMode(relay3, OUTPUT);
  pinMode(relay4, OUTPUT);

}

void loop() {
  // Print the button code to the serial interface every 100 ms.
  const int button_code = remote.buttonCode();
   if (button_code == 8) {        
    digitalWrite(relay1, LOW); 
    delay (2000);                     
  } else {                                        
    digitalWrite(relay1, HIGH);     
  }
   if (button_code == 2) {             
    digitalWrite(relay2, LOW);          
    delay (2000);                        
  } else {                                        
    digitalWrite(relay2, HIGH);            
  }
   if (button_code == 1) {                
    digitalWrite(relay3, LOW);              
    delay (2000);                          
  } else {                                        
    digitalWrite(relay3, HIGH);        
  }
   if (button_code == 4) {          
    digitalWrite(relay4, LOW);       
    delay (2000);                 
  } else {                                        
    digitalWrite(relay4, HIGH);    
  }

 // Serial.println(button_code);
  
 // delay(100);
}

여기에 사용된 rm.h 라이브러리는 다음 사이트에서 다운로드 받을 수 있다. 

 

 - github.com/msparks/arduino-rm4   

 

 

위와 같은 제어 시스템을 만드는 것이 번거롭고 단지 필요만 하다면 다음 사이트에서 구매해서 사용하면 된다.

 

 

3.16US $ 60% OFF|GERMA Universal Wireless Remote Control Switch DC 12V 4CH relay Receiver Module With 4 channel RF Remote 433 Mh

Smarter Shopping, Better Living! Aliexpress.com

www.aliexpress.com

 

 

+ Recent posts