색상 코드를 일일이 확인해 저항을 분류하기엔 너무 게으르신가요? 멀티미터 사용조차 귀찮으신가요? 그렇다면 '궁극의 게으른 옴미터'가 해결책이 될 수 있습니다!
알려진 저항값 몇 개, 아두이노, 디스플레이(I2C OLED 사용)만 있으면 미분류 저항값을 측정하는 간단한 옴미터를 만들 수 있습니다.
작동 원리: 전압 분배기와 자동 레인지 전환
전압 분배기 공식을 이용해 알려진 저항(R_known)과 미지의 저항(R_unknown)을 직렬로 연결해 미지의 저항값을 구합니다.
Vout = Vin × R_unknown / (R_known + R_unknown)
하지만 두 저항값 차이가 클수록 측정 정확도가 떨어지는 단점이 있습니다. 이를 극복하기 위해 여러 개의 기준 저항을 두고, 아두이노가 미지 저항값에 가장 적합한 기준 저항을 자동으로 선택하도록 코드를 작성했습니다.
I2C 디스플레이를 사용하는 경우 아두이노 나노의 A4(SDA), A5(SCL) 핀에 연결하면 됩니다.
코드 핵심 로직
루프에 진입하면 아두이노는 A0 핀의 전압을 읽습니다. 기준 저항을 1MΩ부터 100Ω까지 순차적으로 전환하며 ADC 값이 350~800 범위(약 2.5V 근처)에 들어오는지 확인합니다. 적절한 기준 저항을 찾으면 전압 분배기 공식으로 미지 저항값(Ru)을 계산하고, 표준 저항값(E24 시리즈 등)에 가깝게 반올림해 디스플레이에 출력합니다.
// 주요 변수
int R1 = 100, R2 = 1000, R3 = 10000;
long R4 = 100000, R5 = 1000000;
int D2=2, D3=3, D4=4, D5=5, D6=6;
float raw=0, Vout=0, Ru=0;
int Analogohm = A0;
void loop() {
// 1MΩ 기준 저항으로 측정 시작
pinMode(D2, OUTPUT); digitalWrite(D2, HIGH);
raw = analogRead(Analogohm);
Rn = R5;
// ADC 값이 범위 밖이면 다음 기준 저항으로 전환
if (raw < 350 || raw > 800) { ... }
// 전압 계산 및 미지 저항값 산출
Vout = 5.0 * (raw / 1024.0);
Ru = (Rn * Vout) / (5.0 - Vout);
// 표준값으로 반올림 (예: 4.7kΩ → 4.7kΩ)
if (Ru < 100) Ru = 10 * round(Ru/10);
else if (Ru < 1000) Ru = 100 * round(Ru/100);
// ... 이하 생략
Resistance(Ru); // OLED에 표시
delay(1000);
}
주의사항: 각 if문에서 사용하지 않는 핀을 INPUT 모드로 바꿔야 합니다. OUTPUT 상태로 두면 저임피던스 경로가 생겨 A0 측정에 영향을 줍니다.
브레드보드 테스트 및 3D 프린트 케이스 제작
브레드보드에서 정상 동작을 확인한 후, 3D 프린터로 출력한 케이스에 납땜하여 조립하면 휴대용 저항 정렬기가 완성됩니다.
이제 뒤섞인 저항을 구멍에 꽂기만 하면 값이 화면에 표시됩니다. 작업대가 깔끔해지는 마법 같은 도구입니다!
전체 코드
Adafruit_SSD1306 라이브러리가 필요합니다. 라이브러리 매니저에서 설치 후 아래 코드를 업로드하세요.