필요한 만큼 회로도 공부 : 임베디드 소프트웨어 개발자가 최소한으로 알아야 할 만큼
참고 서적 : 전자공학 만능 레시피, 짜릿짜릿 전자회로 DIY
- 전자공학 분야는 프로그래밍과는 달리 새로운 기능들이 자주 나오지 않는다
- 회로도 : 약속된 기호로 그려진 전기회로. 실제로 보이는 모양과는 차이가 있다
ex) 화장실에서 남녀 그림 -> 언어의 장벽을 뛰어넘어 국적 상관없이 모두가 이해할 수 있음
- 임베디드 소프트웨어 개발자는 회로도를 어느정도로 알아야 하는가
- 회로도를 보고 내가 제어할 부품이 무엇인지, 어떻게 제어해야 하는지 (어떤게 올바른 동작인지) 알아야 함
- 회로도 상의 부품을 실제 보드에서 찾을 수 있어야 함
- 전원 (Vcc)와 GND의 위치를 찾을 수 있어야 함
- 하드웨어 debugging시 어디에 멀티미터기를 연결해야 할지, 오실로스코프를 연결해야 할지 알아야 함
- ex) I2C나 SPI등의 신호선이 있을 때 신호가 어디에 나오는지를 이해해서 그곳에 오실로스코프를 연결해 하드웨어 debugging을 함
- 하드웨어 개발자에게 하드웨어 상의 오류 사항을 전달할 수 있어야 함
- 회로도는 실제 모양이 아닌 편의성을 위해 연결된 선만 표시하는 등의 실물과는 차이가 있음
- 레이아웃이나 artwork 등은 실물과 동일하게 나옴
- PCB Artwork : PCB 판에 원하는 회로를 담아내기 위해 디자인 하는 것
- PCB 판에서는 보통 전선이 연결된게 프린트되어 겉으로 볼록하게 보이지만, 안으로 숨어서 보이지 않는 경우도 있다
- PCB (Printed Circuit Board) : 여러 전자 부품들을 인쇄 배선판의 표면에 고정하고 구리 배선으로 부품들을 연결하여 전자회로를 구성한 판
- 위와 같은 경우는 멀티미터기로 쇼트 테스트를 해서 회로 연결 상태를 확인
- ex) 칩의 1번 핀과 R9를 연결 : -삐 소리가 남 = 한 선으로 연결되어 있음 (사이에 저항이 없음)
- 위와 같이 회로의 각 부품이 어디와 연결되어 있는지 알아야 하드웨어 디버깅 시 어디에 프로브를 대야 할지 암
- ex) 보드에 정확히 3.3V가 인가되고 있는지를 확인
- 23번과 24번을 연결
쇼트 테스트는 프로브의 색깔에 상관없이 연결하나, 전류 측정 시에는 DC로 바꾸고, 검은색은 GND, 빨간색은 Vcc 에 연결
- 오제이 컨트롤러의 각 부품들 해석
따라서 회로도를 볼 줄 알아야 함
- 전원(Vcc), 그라운드(GND)
1) 저항(Resistor) : 회로도에 저항이 없는 경우는 거의 없다.
기호 : R, 단위 : Ω (옴)
- 저항 띠 읽는 법 (참고만. IC 저항을 많이 써 실제로 읽어야 하는 경우는 많이 없음)
- 저항값 읽는 법
1) 4색 저항
- 위의 그림처럼 앞의 두 띠는 첫째, 둘째 숫자를 의미하고 세번째 띠는 10의 배수, 네번째 띠는 허용 오차값을 의미한다
- ex) 갈검빨금 : 1, 0, 10^2, ±1% -> 1000Ω, 오차 ±1%
2) 5색 저항
ex) 갈검검빨갈 : 1, 0, 0, 10^2, ±1% -> 10kΩ
- 저항에는 고유의 오차율이 존재. 오차율이 작은 저항일수록 고가임
- 저항값은 전류가 흐를 때 막아내는 힘을 의미함
- ex) 저항이 10k이다 : 전류가 흐를 때 막아내는 힘이 10k이다
- 저항은 전류 제어에 많이 사용
- ex) 풀업 회로에서의 풀업 저항
- 디버깅시 측정 지점으로 많이 사용됨 : 찾기 쉽고 저항을 지나면 접점이 바뀌기 때문
3) 칩 저항 읽는 법
3-1) 숫자로만 구성된 경우
- 세자리의 숫자중 앞의 두자리는 저항 값을, 마지막 자리는 10의 배수를 나타냄
- ex) 470 : 47, 10^1 = 47Ω
3-2) 영문과 숫자가 함께 기록되어 있는 경우
- R을 제외한 알파벳은 단위를 의미 (K = 10^3, M = 10^6, G = 10^9). R은 단위가 Ω
- 알파벳의 위치는 소수점의 위치
- ex) 1K2 : 1.2KΩ
2) 캐패시터 혹은 콘덴서(Capacitor or Condenser)
기호 : C, 단위 : F(패럿)
- 전하를 저장함. 불안정한 전원으로 인한 전압을 안정화 하거나 노이즈를 제거하여 IC가 안정적으로 동작할 수 있게 함 (필터 등에도 사용)
- 보통 전원을 인가하면 전압은 곡선을 그리며 서서히 증가하는데, 캐패시터를 이용하면 점진적으로 증가하는 전압을 저장한 후 용량이 다 차거나 증가가 종료되면 내보내서 전압을 안정적으로 공급할 수 있음
- DC 전압을 가하면 각 전극에 전하를 저장 (다리가 긴 쪽이 +극)
- AC 전압을 가하면 DC를 차단하고 AC 성분만을 통과시킴 : DC를 차단하고 AC만 통과시키기 위해 사용
3) 코일 혹은 인덕터 (Coil or Inductor)
기호 : L(Linkage), 단위 : H(헨리)
- 도선(구리, 알루미늄)을 절연성 재료 위에 나사 모양으로 감아서 만든 소자로, 전류의 변화를 안정시키려고 하는 성질을 이용한 부품
- 패러데이 전자기 유도 법칙에 따라 전류의 변화량에 비례해 전류의 변화를 방해하는 방향으로 전압을 유도함으로써, 전류의 급격한 변화를 억제하는 기능을 함
- 이때 흐르고 있는 전류의 변화에 따라 전자기유도로 생기는 역기전력의 비율, 또는 시간의 변화량과 권선의 발생하는 기전력의 비를 인덕턴스(기호,L)라고 함
- DC DC 컨버터 사용시 안정화를 위해 항상 옆에 있음
4) 다이오드(Diode)
- 한쪽 방향으로만 전류가 흐르게 함. 아래의 그림에선 -> 방향으로만 흐르게 함
- 신호가 역으로 흐르지 않게 함
5) 트랜지스터 (Transistor) : 전기적 신호로 전류의 흐름을 제어하는 스위치 역할을 함
6) 그 외
- 회로도와 실물 비교
CON1 : Connector 1. 보드의 바깥쪽 부분으로 아래 그림상 왼쪽 바깥쪽 핀들
CON5 : 오른쪽 부분
- FND (Flexible Numeric Display) : 원하는 숫자를 다양하게 표시할 수 있는 소자. 내부는 LED에 의해 구성되어 있다
- SCLK를 통해 Clock을 내보냄 -> PB15에서 클럭을 만들어 낼 수 있어야 함
- DIO로 데이터가 이동
- SCLK, RCLK
- SCLK (Serial Clock) : 직렬 클럭
- RCLK (Read Clock) : 기준 클럭
- FND 회로도 해석
- FND는 2개의 클럭을 사용한다 (용도는 데이터 시트를 봐야 알 수 있다) -> 2개의 클럭을 만들어 내야 함
- 클럭 신호에 따라 데이터가 DIO를 타고 들어옴. 그 데이터를 프로그램으로 풀어냄
- PB15에는 클럭을 만드는 기능이 없으므로 GPIO Out을 설정해야 함 -> GPIO High / Low 제어를 해서 일정시간 동안 high/low를 만들어 클럭을 만듦. 어떤 속도로 어떤 클럭을 만들지는 데이터 시트를 봐야 함
- PB14는 데이터가 이동하는 DIO와 연결되어 있으므로GPIO Input으로 설정 -> 클럭이 왔을 때 GPIO의 현재 값이 high/low인지에 따라 1, 0중 뭘 보냈는지 알 수 있음
- 회로도를 보며 각 핀이 어디에 연결되어야 하는지 알아야 함. 그리고 데이터 시트를 보며 각 기능들을 소프트웨어로 구현을 해야 함
- ex) FND_SCLK가 PB15에 연결되어 있음 : PB15에 클럭을 자동으로 만드는 기능이 있나 확인 후 없으면 GPIO Out을 이용하여 클럭을 생성
- DIO는 데이터가 오는 신호
- RCLK도 클럭을 만듦
Relay : 전기적 신호로 전선을 붙였다 떨어뜨렸다 하는 일종의 스위치 역할
드라이기를 껏다 켰다 하고 싶음 (ex) 설정 온도가 80도이면 80도까지 건조실을 가열해야 함)
박스로 건조실을 만들고 드라이기로 건조실을 가열함. 드라이기의 전원은 항상 켜놓고 Relay를 이용해서 전선을 붙였다 떨어뜨렸다 함
위의 부분은 PB5와 연결되어 있고, PB5는 GPIO 기능이 존재함
위처럼 데이터 시트를 보고 코드를 어떻게 구현해야 할지, 문제를 어떻게 풀어야 할지를 생각할 수 있어야 함
- 숙제
- 위 회로도에 있는 부품들이 실제로 보드 어디에 있는지 찾아보기
- 테스터기로 쇼트테스트 해보기
- 오실로스코프로 LED 제어시 파형이 어떻게 변하는지 보기 (파형 변화를 보려면 프로브로 어디를 찍어야 하는지도 공부)
위 내용의 모든 출처는 유튜버 '[오제이 튜브]OJ Tube' 님께 있습니다.
https://www.youtube.com/watch?v=WmsqsgJbyFA&list=PLz--ENLG_8TNjRg1OtyFBvUyV4PHaKwmu&index=12
'Study_Embedded > [오제이 튜브의 임베디드 실전 강의]' 카테고리의 다른 글
[오제이 튜브의 임베디드 실전 강의] 11강 데이터 시트 읽어주는 남자 (0) | 2022.04.03 |
---|---|
[오제이 튜브의 임베디드 실전 강의] 10강 데이터 시트 보는 꼼수 (0) | 2022.03.26 |
[오제이 튜브의 임베디드 실전 강의] 8강 지금까지 배운 것을 큰 그림에 저장하기 (0) | 2022.02.14 |
[오제이 튜브의 임베디드 실전 강의] 7강 GPIO제어 고아 먹기 (0) | 2022.02.11 |
[오제이 튜브의 임베디드 실전 강의] 6강 GPIO제어 뿌셔 먹기 (0) | 2022.02.08 |