공머생의 공부노트

PROJECT 2. 아두이노로 간단한 디지털 멀티미터 만들기 본문

전기-전자 공학/전자공학 실험

PROJECT 2. 아두이노로 간단한 디지털 멀티미터 만들기

용감한공대생 2022. 2. 2. 17:50
반응형

우리가 회로를 만들고 테스트 할려면 회로 내에서 발생하는 전압이나 전류의 방향과 그 양을 판단해야 하는 경우가 많다. 주로 멀티미터를 활용하여 이를 간단히 수행할 수 있지만 데이터를 불러오거나 가공하기 어렵고, 그래프로 확인해야 하는 경우 하이엔드 장비가 없다면 매우 불편하다.

실험을 위해 주로 사용하는 멀티미터와 오실리스코프

좋은 전자실험을 위해서는 오차가 적은 멀티미터나 반응속도가 0에 매우 가까운 전문 오실리스코프를 사용하는 것이 맞지만 공부를 하는 입장에서 회로의 거동을 지켜볼 때 조금의 오차는 허용할 만 하다.  

 

그래서 내가 실험에 자주 사용했던 아두이노를 멀티미터로 활용하는 방법을 제시해볼까 한다.  

 

아두이노의 해상도

아래 보이는 것은 우리가 많이 사용하는 아두이노 R3의 설계도인데, 가운데 가장 큰 소자가 바로 아두이노의 핵심인 CPU이다. 아두이노는 ATmega 계열 칩을 사용하는데 ATmega328 chipset은 값이 싸고 기능이 많이 뭉쳐있지만 핵심적인 연산력과 처리 능력은 떨어지는 편이다. 

Arduino uno R3 map figure

하지만 우리가 할 프로젝트에서는 데이터를 많이 처리하는 컴퓨터나 중앙연산장치로 사용하지만 않는다면 그렇게 자원이 모자랄 경우는 없을 것이다. 혹여나 연산량이 딸린다면 ATmega chip을 더 가져와 연결해버리면 그만이다. (약 3000 밖에 안함)

아두이노 설계에 대한 재미있는 접근도 많지만 이번 포스팅에서는 멀티미터를 만드는 것이 목적이니 다시 돌아와보면, 아두이노에는 아날로그 신호를 디지털로 바꾸는 ADC 소자를 가지고 있다. 위의 노란색 부분이 바로 ADC와 연결된 핀들이다.  

아두이노에서 아날로그 신호는 analogrRead() 함수로 받아오는데 10비트 ADC를 활용하여 최대 1024의 해상도를 가진다. 즉 판독해내는 최대 전압은 0.49mV인 것이다. 화학 실험용 potensiostat에서도 많이 사용했던 전압속도가 10mV/s이었던 것을 생각하면 생각보다 사용하기 좋은 해상도이다. 

 

설계코드 및 테스트

복잡하게 생각할 필요 없이 저렇게 아날로그 A0 포트에 pull down으로 선을 연결한후 GND에서 -선을 끌어오면 된다.

그런다음 아래 코드를 입력하면 

 

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 

void setup() {
  Serial.begin(9600);
  pinMode(A0,INPUT);
}

void loop() {

  int temp = 0; //A0 에서의 전압 임시 값 
  double voltage =0; // 전압으로 계산된 변수 값

  temp = analogRead(A0); //0~1023의 값

  voltage = temp*0.004882815; // 5/1024값을 곱해주면 전압으로 변환됨

   Serial.print(voltage);
   Serial.println("V"); //출력시 단위 붙임
   delay(1000); //1초 딜레이
}

 

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 

다음과 같이 전압이 출력된다. 

 

3V 짜리 리튬 코인셀로 테스트를 해본 결과 생각보다 결과가 깔끔하게 나온다. 실제 테스터기로 확인을 해봐도 약 2.9V가 출력된다. 

Comments