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