2018년 7월 31일 화요일

ESP8266으로 20V 측정하기

Wemos D1 mini 에는 A0 핀을 이용하여 아날로그 신호를 받을수 있다.
ESP8266 ADC 핀은 0 ~ 1V의 입력을 받지만,  Wemos D1 mini의 A0는 0 ~ 3.3V의 입력을 받는다. 이유는  A0핀과 Ground 사이에는 220K + 100K의 저항이 이미 존재하기 때문이다.

 pinMode(A0, INPUT);
 unsigned int raw = analogRead(A0);
위와 같이 하면 0 ~ 1023의 값이 나온다.

우리는 20V를 측정해야 하기 때문에 아래와 같이 2개의 저항을 사용하여, 전압을 분배한다.

위의 그림처럼 9V를 입력한다면 A0 측에는 최대 1V 정도의 전압이 걸리며 대략 값을 읽는다면,
0 ~ 310  정도의 값이 나온다.

 unsigned int raw = analogRead(A0) ;
 float volt = raw / 1024 * 3.3 * ((80+10) / 10);
[파란색 부분은 저항에 따른 전압 배분율인데 연결한 저항에 따라서 달라진다]

이렇게 계산하면 된다.

다만 위의 그림과 같이 저항을 연결하면 최대 30V 까지 측정이 가능해진다.

* 최대 측정 전압이 높아지면 높아질수록 정밀도는 당연히 떨어진다.
* 기판 마다 오차가 있어서 수치는 일부 보정을 해 주어야 한다.
* 어떻게 하던 정밀도는 그리 높지 않으니 큰 기대는 하지 말자.
* 경험상 배분율은 계산상 수치보다 커야 하며, 전압이 낮을수록 더 낮게 측정된다.




댓글 없음:

댓글 쓰기

ESP8266 Digital Input Pin의 불편한 진실

1. 믿었던 놈인데... ESP8266은 2017년도 부터 사용했기 때문에, 7년 정도 사용해 왔었다. 그동안 여러 종류의 내 프로젝트에 사용한 MCU이고, 이에 따라서 신뢰도가 상당히 높았다. 물론 순수한 ESP8266으로 사용하지는 않고 Wemos...