728x90
반응형

제품을 설계하다 보면 전압의 변동이나 혹은 Battery의 사용시간을 검토해야 합니다. 이런 일들을 진행하기 위해서는 꾸준히 전압을 측정해야 하기에 오늘은 아두이노(ARDUINO)의 ADC Pin을 이용하여 5Channel의 전압을 측정하는 법을 진행 하겠습니다.

 

Arduino UNO ADC Pin Map

 

▲Arduino uno ADC PIN

아두이노 우노(Arduino UNO)같은 경우는 총 6개의 ADC Pin을 가지고 있습니다. 즉, 6개의 아날로그 신호를 읽을 수 있다는 애기죠 이를 이용하기 위해서 Firmware작업을 진행합니다.

 

Arduino 전압측정 Firmaware작업
▲ADC 전압측정 Setup

 

각 채널을 정수로 선언 -> ADC값을 선언 -> ADC를 전압으로 표현하기 위해 Float를 이용해 실수로 선언 -> ADC0 ~ 4번까지 사용설정 ->Searial통신 시작시 TEST Start를 뿌려주고 진행

 

▲ 전압측정 값 Serial로 날려줌

각 ADC채널로 읽어 드린 값을 Value1 ~5번이라고 표현 -> Value 1~5번은 ADC가 10BIT이기에 2^10=1024 값 으로 나눠 준다.(0.034는 그냥 제가 넣은 보정 값 입니다.) -> 계산된 출력 Vout 1~5번을 시리얼 통신을 통해서 출력한다.

 

Firmware작업은 비교작 아주 간단 합니다. 어떠한 조건문도 필요 없죠 단순히 측정만 하면 되기 때문입니다. 제대로 동작되는 것을 확인하기 위해서 아래와 같이 작업을 진행합니다.

 

전압측정 H/W작업
▲ 전압측정 H/W작업

5개의 2.3V Battery를 측정해서 전압을 확인 해보겠습니다.

 

▲ 측정 간격을 1초로 진횅

 

측정 간격을 1초로 진행하니 5개의 각 data가 잘나오는 것을 확인했습니다. 단점이 있다면 Arduino에서 지원하는 시리얼 모니터를 통해서 진행할 경우 data가 3만~3만5천줄이 넘어가면 초기 DATA가 지워지는 현상이 보이네요 이 부분은 향후 다른 개선법을 찾아봐야 겠습니다.

반응형
728x90
반응형

기존에 자료에서 추가적으로 온도센서 ADC값을 CLCD로 디스플레이 하려고 합니다.

기존에 사용하던 LCD가 너무 오래되서 2번째 줄에 디스플레이가 안되서 I2C가 달려있는 LCD를 하나 구해왔습니다. 납땜이 되어있어서 빼지도 못하는 구조로 되어 있습니다..

<구성도>

뒤쪽 I2C모듈을 위와 같이 연결 합니다. SDA데이터핀은 A4, SCL클락핀은0 A5입니다.

저희가 사용할 헤더파일이 <Wire.h>, <LiquidCrystal_I2C.h> 2개입니다. 아두이노 사이트에 보면 A4,A5로 설정되 어있는걸 확인할 수 있습니다. 제가 전에 올린 자료를 이용해서 LCD를 한다면 따로 필요는 없습니다.

 

<LiquidCrystal_I2C.h> 설치

<Wire.h>은 기본적으로 아두이노에서 제공하는 Header파일 이기때문에 따로 설치가 필요 없음

<LiquidCrystal_I2C.h>를 사용하기위해서는 위처럼 라이브러리 관리에서 설치를 해줘야합니다.

검색 필터에 LiquidCrystal을 검색하시고 버전을 선택하시는데 1.1.1말고 1.1.2를 설치하시는걸 추천드립니다.

그 이유는 제가 1.1.1버전을 써봤는데 LCD에 출력시에 한글자씩만 출력되는 문제가 있었습니다.

<소스 코딩>

LiquidCrystal_I2C(0X27)은 I2C통신시 주소 값인데 이건 제품 출하시에 정해 지는 것입니다. 이건 0X27인데 제가보니 0X20, 0X3F제품도 있는 것으로 보입니다.

V=전압, T=온도, A=센서 ADC값입니다.

SetCursor 함수를 이용하여 ADC값은 첫번째줄 11번째칸에(0~10 이니 11번째에 표현) V전압은 2번째줄 첫번째, 온도 값 2번째줄 7번째에 디스플레이 하였습니다.

 

 

 

 

 

 

반응형

+ Recent posts