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 까지 측정이 가능해진다.

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




댓글 없음:

댓글 쓰기

3단 6핀 스위치로 DC 모터의 회전 방향을 바꾸어 보자

1. 필요는 연구의 어머니 항상 느끼는 부분이다. 필요하지 않으면 연구하지 않으며, 필요하면 연구한다. DC 모터를 조건에 따라서 정방향 또는 역방향으로 회전시켜야 하는 필요가 생겼다. 처음에는 MCU 및 Relay Switch를 이용하는 방법을 생각...