가전제품의 전류, 전력, 역률 등 에너지 데이터를 정밀 측정해 SD 카드에 CSV 형태로 기록하는 데이터 로거를 만듭니다. Dr. Wattson 보드는 Microchip MCP39F521 전력 모니터링 IC를 기반으로 하며, 전류/전압 트랜스로 메인 전원과 완전 절연되어 안전합니다. 버튼으로 로깅 시작/중지, LED로 상태 표시, 로그 파일 자동 번호링(DATA00.CSV ~ DATA99.CSV) 기능을 갖췄습니다. 엑셀에서 바로 그래프로 그릴 수 있습니다.
Dr. Wattson 보드 특징
측정 범위: 1mA ~ 4A (4000:1 다이나믹 레인지), 대기 전력 측정 가능
최대 12A까지 견딤 (보드 설계 상)
I2C 인터페이스 (주소 0x74~0x77 솔더 점퍼로 선택 가능)
ZCD(영점 검출), 이벤트 알림(과전류, 과전력, 전압 강하/서지) 지원
보정 루틴 내장, 다중 보드 동시 사용 가능
회로 구성
주요 연결
Dr. Wattson → 아두이노: SCL→A5, SDA→A4 (I2C), VIN→5V, 3.3V→3.3V, GND→GND
void setup() {
Serial.begin(9600);
pinMode(LED, OUTPUT);
pinMode(CHIP_SELECT, OUTPUT);
if (!SD.begin(CHIP_SELECT)) {
Serial.println(F("SD 카드 실패"));
return;
}
wattson.begin(); // 기본 주소 0x74
// 기존 파일명 확인 후 빈 파일명 찾기
for (uint8_t i = 0; i < 100; i++) {
filename[4] = i/10 + '0';
filename[5] = i%10 + '0';
if (!SD.exists(filename)) {
Serial.print(F("데이터 파일: "));
Serial.println(filename);
break;
}
}
Serial.println(F("초기화 완료"));
}
loop(): 버튼 토글 → 데이터 수집 → SD 저장
void loop() {
myBtn.read();
if (myBtn.wasReleased()) { // 버튼 떼어짐 감지
readData = !readData; // 토글
digitalWrite(LED, readData);
}
if (readData) {
UpbeatLabs_MCP39F521_Data data;
UpbeatLabs_MCP39F521_FormattedData fData;
int ret = wattson.read(&data, NULL);
unsigned long currentMillis = millis();
if (ret == UpbeatLabs_MCP39F521::SUCCESS) {
wattson.convertRawData(&data, &fData);
// 시리얼 터미널용 화면 클리어 후 출력 (screen 명령어 권장)
Serial.write("\x1B""c"); // ANSI 클리어 시퀀스
printMCP39F521Data(&fData);
// SD 카드에 CSV 기록
File dataFile = SD.open(filename, FILE_WRITE);
if (dataFile) {
dataFile.print(currentMillis); dataFile.print(",");
dataFile.print(fData.currentRMS); dataFile.print(",");
dataFile.print(fData.activePower); dataFile.print(",");
dataFile.print(fData.reactivePower); dataFile.print(",");
dataFile.println(fData.apparentPower);
dataFile.close();
} else {
Serial.print(F("파일 열기 오류: ")); Serial.println(filename);
}
} else {
Serial.print(F("읽기 오류: ")); Serial.println(ret);
}
}
}