포스트

2025-09-04

2025-09-04


Pasted image 20250905085032.png Pasted image 20250905085056.png Today’s Todo List


Reflecting

What did I leran yesterday?

Electronics Lab II

Pasted image 20250904104211.png

아두이노는 마이크로컨트롤러, 디지털 입출력 핀, 아날로그 입력 핀, 전원 공급 핀(VIN, GND, 5V, 3.3V), 리셋 버튼, USB 포트로 구성된다.

마이크로컨트롤러는 CPU, Memory, I/O 컨트롤러를 포함한 제어칩이다.

디지털 입출력 핀이 무엇인가? 신호를 보낸다는게 5V의 전압을 껐다 켰다 한다는거구나.. 즉 디지털 핀도 전압 공급 장치인데, 코딩을 통해서 전압을 제공할지 제공하지 않을지 제어할 수 있는 핀이다. HIGH는 전압을 제공하고, LOW는 전압을 제공하지 않는다. pinMode() 함수로 핀을 INPUT mode, OUTPUT mode로 설정할 수 있다. 이후 digitalWrite(pinNum, HIGH/LOW) 함수로 해당 핀 번호의 전압을 제어할 수 있다.

OUTPUT mode는 이해가 간다. 특정 핀에 전압을 출력하는 모드다. 그렇다면, INPUT mode는 무엇인가? 특정 소자가 만들어내는 신호를 아두이노가 디지털 핀을 통해서 입력을 받을 수 있는 모드다. 예를들어, 스위치를 누르면 전압이 흐르거나, 흐르지 않게 된다. 이떄 스위치를 누르면 전압이 흐르지 않아 스위치와 연결된 INPUT pin에 전압이 차단되고, 이 전압을 digitalRead() 함수로 판단이 가능하다. 스위치를 누르지 않으면 전압이 흘러 INPUT pin에 신호가 들어올 것이고, 이것 또한 digitalRead() 함수로 읽어들일 수 있다.

Pasted image 20250904105519.png

그럼 여기에 물결표 쳐져있는(~)건 뭐고, TX는 뭐고 RX는 뭐야? PWM~은 무슨 뜻이지? GND, AREF는 또 뭐야?

디지털 신호는 0V 또는 5V 전압만 출력 가능하다. 그러나 PWM (Pulse Wave Modulation) 기술을 사용하면 디지털 신호로 아날로그 신호 2.25V, 3.14V, … 등을 출력하는 것 처럼 보이게할 수 있다. 어떻게? 1초에 수천번 깜빡이면 사람은 50~100Hz이상의 깜빡이는 감지할 수 없기 떄문에 중간 밝기로 보이게 된다. 즉 실제 전압은 0V, 5V밖에 출력할 수 없지만 평균 전압을 0~5V 사이로 출력하는 방법이 PWM 방법이다. 이때, 한 주기 내에서 HIGH가 차지하는 비율이 duty cycle이다. duty cycle=44.4%면 평균 전압은 5V x 0.444 = 2.22V와 같다. PWM은 analogWrite(pin, value) 함수로 사용 가능하다.

위에 물결 쳐져있는 핀이 PWM를 지원하는 디지털 핀이다.

TX는 뭐고 RX는 뭘까? TX (Transmit)는 데이터를 보낼 수 있는 핀이다. RX (Receive)는 데이터를 받을 수 있는 핀이다. 다른 아두이노, PC, 센서 간 데이터를 주고받을 때 사용한다고 한다.

통신 속도를 지정하는데, 표준값은 9600bps다. bps란 bit per second, 초당 9600비트를 보낼 수 있는 속도다. 속도는 빠를수록 좋은 것 아닌가? 250000bps도 가능하다. 빠르면 데이터를 빠르게 보낼 수 있지만, 그만큼 데이터 손실 확률이 높다고 한다. 그래서 안정성과 속도. 두 가치의 trade off를 고려하여 적당한 속도인 9600을 선택한다.

통신 속도를 지정하고, Series Class를 사용하여 데이터를 주고받을 수 있다.

그럼 TX, RX가 아닌 다른 핀으로는 데이터를 보내거나 받을 수 없나? 그럼 만약 하나의 아두이노에서 여러개의 아두이노로 데이터를 보내야 한다면 어떻게하지? 라이브러리를 사용하면 다른 핀을 데이터 송수신 핀으로 만들 수 있다.

아날로그 입력 핀이 무엇인가? 진짜 아날로그 신호를 정수값으로 입력받을 수 있는 핀이다. 0V를 입력받으면 0, 5V를 입력받으면 1023, 그 사이값은 0~1023 사이의 정수값과 같다.

Pasted image 20250904164059.png

전원 공급 핀이 무엇인가? 전원을 출력하거나, 공급할 수 있는 핀이다. 3.3V, 5V를 사용하여 전원을 다른 소자에 공급할 수 있다. 반대로 Vin으로 전원을 공급받을 수도 있다. Vin으로 공급받는 권장 전압은 7~12V라고 한다. 그러나 전원 잭이 있는데, Vin으로 공급받는 것은 무슨 차이가 있을까? 만약 전원 잭과 Vin 둘다 전원을 공급받으면 어떤일이 벌어질까?

전원 잭은 보호 다이오드가 있어서 실수로 +- 반대로 연결해도 문제가 없다. Vin은 없어서 문제가 있다. 단일 전원만 사용하는 것을 권장한다.

Pasted image 20250904164117.png

GND는 뭘까? 기준 전압, 0V를 의미한다. 만약 전원 전압 5V만 연결하면 어떻게 될까? 전압차가 발생하지 않아 전류가 흐르지 않는다. GND와 -를 연결하면, +쪽에 5V, -쪽에 0V 전위가 걸리고 닫힌 회로가 완성된다. 전위차가 생기므로, + 방향에서 - 방향으로 전류가 흐르기 시작한다. 이때 아두이노에 공급되는 에너지가 닫힌 회로를 계속 순환시키는 동력 역할을 한다.

회로는 반드시 닫혀있어야 한다. 그러나 열려있는 직선 도선에도 한쪽이 +5V, 한쪽이 0V이면 전류가 흐르지 않나? 맞다. 그러나 잠깐 흐르고 말 것이다. 그 이유는 +전하가 0V쪽으로 이동하고, 결국 두 전위는 평형을 이루게 된다. 이 과정이 매우 짧게 일어나기 떄문에 전류가 잠깐 흘렀다가 마는 것처럼 보일 것이다.

그렇다면, 전류를 계속 흘려주기 위해선 닫힌 회로에서 +로 들어온 전자를 -로 옮겨주는 전원이 필요하다. 이것은 건전지의 화학에너지가 될 수 있고, 아두이노에 공급되는 전력이 될 수 있다.

즉 회로의 원리는 단순하다. Power를 +에 연결하고, GND를 -에 연결하면 닫힌 회로가 완성된다. 이후 아두이노에 전원을 공급하면, GND(-)에 들어온 전류를 다시 +로 옮겨주어 계속 전류가 흐르게 된다.

왜 디지털 핀에도 GND가 있고, 전원 핀에도 GND가 있을까? 그 차이가 뭘까? 둘다 똑같은 Ground 접지 핀이다. 그러나 디지털 핀쪽에도 있고, 전원 핀쪽에도 있는 이유는 효율 때문이다. 디지털 핀에서 전류가 공급되면, 디지털 핀과 가까운 GND에 연결하는 것이 배선상 더 짧아진다. 전원 핀에서 전류가 공급되면, 전원핀과 가까운 GND에 연결하는 것이 배선상 더 짧다.

옆에 있는 IOREF, RESET은 뭘까? RESET 핀에 LOW 신호를 주면, 보드의 리셋 버튼을 누른 것과 완전이 동일한 효과를 준다. 즉, 더 큰 스위치를 만들거나 외부에 리셋 스위치를 만들고 싶을 때 쓰면 되겠네.

IOREF는 I/O Reference로 I/O 전압이 몇5V인지 정보를 제공하는 출력 핀이다. 여기서 5V가 제공된다. 그럼 IOREF가 5V 전원을 공급한다 이거네? 그럼 전원핀 대신 IOREF에 꼽아도 이론상 작동하는건가? 작동은 하지만, 이 핀은 말그대로 전압 체크용으로 만들어진 핀이다. 배선이 굉장히 얇으므로, 감당 가능한 전류가 매우 작다. 따라서 전원용으로 사용하면 안된다.

AREF는 뭘까? Analog Reference다. Analog input의 기준이 되는 Max 전압 값을 설정해줄 수 있다. 예를들어, AREF에 3.3V를 공급해주면 아날로그 입력 핀은 0V~3.3V를 0~1023 정수값으로 입력받는다.

주의할 점은 5V 이상을 연결하면 안된다. 마이크로컨트롤러가 고장날 수도 있다 한다. 근데 왜 AREF에 전압을 굳이 공급해야 할까? 그냥 아두이노에서 함수로 최대값을 3.3V로 설정하면 되는거 아님? 함수로도 지정할 수 있다고 한다. analogReferece() 함수의 인자값으로 DEFAULT, INTERNAL, EXTERNAL 세가지가 있다. DEFAULT는 5V, INTERNAL은 아두이노 칩 내의 1.1V 기준 전압을 사용한다. EXTERNAL은 AREF 핀으로 들어오는 외부 전압을 기준으로 사용한다.

그럼 어떻게 AREF에 전압을 공급하는가? 그냥 아두이노 전원 3.3V 핀과 AREF 핀을 연결하면 되는건가? ㅇㅇ.

근데 왜 기준전압이 필요한거지? 이걸 이해하려면, 아날로그 입력 핀이 어떻게 신호를 입력받는지 이해할 필요가 있을 것 같다. 아날로그 입력 핀에 신호가 들어오면, Analog Digital Converter가 신호를 받는다. ADC는 기준 전압과 들어온 신호를 비교하여 입력 전압이 기준 전압의 몇%인지 계산할 수 있다. 이를 통해 정수값으로 변환한다. ADC가 퍼센트를 계산할 때 기준 전압이 필요하기 떄문에, 기준 전압을 공급해주는 것이다.

저항을 사용하는 이유가 무엇인가? 전류를 줄이기 위함이다. 각 소자마자 감당할 수 있는 전류 양이 다르다. 만약 감당할 수 없는 전류를 제공하면 소자가 타버린다. 때문에 저항을 꼽아서 전류량을 줄인다.

\[V = IR\]

저항의 위치는 소자와 직렬로 연결만 되어있다면 상관 없다. 전류 양은 그저 전압과, 직렬로 연결된 저항에만 의존하지 그 위치에는 의존하지 않기 때문이다.

빵판을 어떻게 사용하는걸까?

Pasted image 20250904172045.png

Pasted image 20250904172243.png

버스 띠에 전원을 공급하고, 단자 띠에는 소자를 연결한다. 브레드보드는 위와 같이 연결되어 있다. 전원은 열이 모두 연결되어 있고, 단자 띠는 행끼리 연결되어 있다.

Pasted image 20250904172120.png

합선이 뭘까? 회로의 저항이 0과 가까운 상태가 합선이다. 저항이 0이되면 어떻게 될까?

\[I = \frac{V}{R} \simeq \infty\]

전류가 엄청 커진다. 전류가 엄청 커지면 회로가 타버릴 수 있다.

왼쪽에 저항을 연결했는데 왜 저항이 0과 같은건가? 그 이유는, 단자 띠 한 행에 +와 -를 동시에 연결하면, +에서 나온 전류가 저항을 거쳐서 -로 흐르는게 아니라, 그냥 다이렉트로 -로 흐르고 그 위에 저항이 꼽혀있는 것과 같다. 따라서 저항이 0과 같으며, 합선이 발생한다.

즉, 올바른 배치는 +와 -를 다른 단자 띠의 행에 꽂으며 저항을 사용할 땐 반드세 +에서 나온 양전하가 ‘유일한 경로로 저항을 거쳐’ -로 흐르도록 설계해야 바람직하다.


Improve:

턱밑살 흡입 뮤잉을 습관화하자.

Thanks:

육회도 맛있고, 교수님들도 좋고, 현영씨도 좋고, 예성이에게도 감사하다.

Emotion:

오늘은 좀 초조했던 것 같다. 그런데 턱밑살 뮤잉하고 나니깐 좀 자신감도 붙고 내 자유롭게, 내 주체성을 갖고 행동할 수 있을 것 같은 느낌이 들었다.