[DIY] 볼트메터 시계만들기 1-5
Analog Meter구동회로 만들기
아두이노의 아나로그 출력은 0~5V가 나옮니다. 아두이노의 아나로그 출력은 실제로는 500HZ의 PWM 으로 출력이 나오니 이 출력을 메터에 공급하면 됩니다.
아나로그 멀티 메터의 출력을 만들기 제어를 해 보기로 합니다.
멀티메터 회로를 보기로 합시다.
멀티메터의 메터부분은 homo-polar라는 모터인데 다행이 DC 전류에 비례하는 성능이 우수한 기기입니다. 우리가 사용할 메터는 1mA에 Full Scale되는 메터입니다. 외부에 저항을 붙여 1kOhm의 내부 저항을 가진 메터로 구성하기로 합니다.
Ra + Rb + Rm = 1kOhm입니다.
아나로그 출력이 3V가 출력되도록 한다면 R1은 2.0kOhm으로 결정되면 메터가 출력됩니다.
3V가 출력 될 때 메터의 Full Scale로 가게 만들 예정입니다. 이 회로에 C1을 더하여 500Hz의 PWM을 DC전압을 해당하는 전압을 만들어 줍니다. 이 RC회로를 2.5Hz의 주파수 특성을 갖는 회로로 설계하도록 합니다. 이번에 회로에서 필요로하는 C1을 결정하여 보도록 합시다.
[너무 어려운 사람들은 그냥 통과 해도 좋습니다.] 2.5 hz의 low pass filter의 전달함수를 구하는 방법은 다음과 같습니다. 2.5Hz는 각 속도로 2 x π x 2.5 = (약) 15 radian/Sec입니다. 15 f(s) ------- s + 15 이 주파수의 시간축 특성과 주파수특성(Bode Plot이라고 합니다.)을 계산하여 실험하여 봅니다. 이 회로의 15는 어떻게 사용 될까요? 위의 수식의 주파수 특성과 스텝 파형의 출력 특성은 그림과 같습니다.
그림에서 보여 주듯 0.2초에 목적값의 95%까지 접근하는 전류값이 됩니다. 0.4초에는 99.6%까지 도달하게 됩니다. 이러한 특성을 가진 Filter를 만들면 되는 것을 알수 있습니다. 이 회로를 시뮬레이션 하려면 그림의 Rth는 데브닌 등가회로 값이라는 값을 가지게 됩니다. 그 값은 1KΩ//2KΩ =0.67KΩ입니다. 15 = 1/(Rth x C1)으로 Rth에 667Ω을 대입하면 C1은 98uF입니다. 즉 100uF를 사용하면 됩니다.
|
필요한 회로는 Arduino에서 출력 되는 AnalogWrite()에 대하여 알아 보도록 합시다.
참고로 Arduno의 Timer 3개의 용도는 다음과같다.
Timer0: 8bit timer |
__delay()__, __millis()__ and __micros()__ |
Pins 5 and 6 |
Timer1: 16bit timer |
__Servo library__ |
Pins 9 and 10 |
Timer2: 8bit timer |
__tone()__ |
Pins 11 and 3 |
아두이노의 3핀을 이용하므로 정확한 시간을 위하여 회로에는 RTC Chip인 DS1307을 사용하여 시간을 외부에서 정확하게 유지하기로 합니다. 시간을 유지하는 별도의 Battery를 가져 전원이 연겨리 안된 상태에서도 정확한 시간을 유지하므로 Timer나 analogWrite를 자유롭게 이용할 수 있습니다.
실제로 회로는 기존의 메터를 개조하는 순서부터 진행하도록 합니다.
메터를 뜯어 보면 내부에 AC전압을 DC전압으로 변환하는 화로가 있습니다. 이 회로를 피하고 동작하는 회로를 개조하여 보도록 하겠습니다.
아나로그 메터 무브먼트는 그림과 같은 형태입니다. 메터 안에 어댑터 회로가 있어 900V전압을 측정하게 하여 줍니다, 무브먼트가 1.0mA가 full Sacle이므로 1V에 1mA에 맞게 회로를 변경하면 됩니다.
아두이노 회로는 다음과 같습니다.
기능을 정리하면
1. Analog Meter로 가는 analog 출력은 digital 핀으로 P9, P10, P11번 핀으로 출력 2. 필요한 경우 LED Display는 TM1637을 통하여 시간을 디스플레이 시킬 수 있다.
3. 별도의 Battery로 시간이 백업되는 RTC가 연결되어 시스템에 전원이 연결 안되어도 시간을 다시 설정할 필요가 없다.
로 정리됩니다.
그리고 시간 설정은 스위치 S1~S4로 설정되는데 이 부분은 추후 설정하기로 합니다.
아나로그 출력을 이해 하기로 합니다.
아나로그 출력은 회로를 만능 보드에 설치하고 오실로스코프로 파형을 보고, 또 전원메터를 연결하여 동작을 살펴 보는 것으로 하겠습니다.
우선 동작을 실험할 회로부터 간단하게 꾸미고, 소프트웨어를 작성하도록 합시다.
회로는 그림과 같이 간단하게 만듭니다. 위에 표시된 회로 전체는 추후 만들고 지금은 한가지만 집중하여 실험할 것이므로 간단하게 실험 회로를 꾸밉니다.
그리고 회로실험에 사용될 오실로스코프와 아두이노 나노 보드가 있으면 전체 준비 끝입니다.
그리고 프로그램을 작성합니다.
프로그램 내용
a. analog Port로 1초동안 5V 출력하고 , 1초동안 0V 출력하는 프로그램
b. analog Port로 1초동안 2.5V 출력하고, 1초동안 0V 출력하는 프로그램
c. 0V 부터 5까지 0~59등분하여 출력하는 프로그램, 각 Step은 1초임. (초시계 구동과 유사)
// program 1 // analog Port로 1초동안 5V 출력하고 , // 1초동안 0V 출력하는 프로그램 #define OutSecond 9 void setup() { pinMode(OutSecond, OUTPUT); } void loop() { analogWrite(OutSecond, 255); delay(1000); analogWrite(OutSecond, 0); delay(1000); } |
// program 2 // analog Port로 1초동안 2.5V 출력하고 , // 1초동안 0V 출력하는 프로그램 #define OutSecond 9 void setup() { pinMode(OutSecond, OUTPUT); } void loop() { analogWrite(OutSecond, 127); delay(1000); analogWrite(OutSecond, 0); delay(1000); } |
// program 3 // analog Port로 매초 일정 전압증가 // 60초동안 출력하는 프로그램 #define OutSecond 9 void setup() { pinMode(OutSecond, OUTPUT); } void loop() { for (byte X = 0; X < 60; X++){ analogWrite(OutSecond, X*4); delay(1000); } } |
실험 결과입니다.
프로그램 1을 실행하여 봅니다.
test Point의 전압을 보면 부드럽게 둥글둥글 하게 신호가 변하는 것을 볼 수있습니다.
전압은 1.1Volt로 다소 높게 올라가는 것을 알 수 있습니다.
다음은 프로그램 2를 구동하여 봅니다.
파형은 전과 아주 유사한데 파형만 50%로 변하는것을 알 수 있습니다. 거의 1초마다 신호가 변합니다.
이때 analog 출력단자의 전압을 살펴보기로 합니다. 아나로그 출력은 사실은 해당하는 PWM으로 출력이 되어 아나로그가 아닌 것을 검증하는 단계인셈이죠. ㅎㅎㅎ
출력은 2.5volt는 사실은 50%의 5V와 0V 의 PWM입니다.
여기서 다시 보면 5V도 사실은 정확한 5V가 아니고, 4.7V정도 전압입니다.
여러 가지 생각할게 많은 사항을 한꺼번에 가져 온 것 같습니다.
일단 회로를 연결하고 메터의 음직을 살펴 보기로합시다.
6 STEP입니다. 60 sTEP 구동
[잘 됩니다]