[제네카페 데이터 로거 DIY] 2. 파일럿 시스템 개발

우선 라즈베리파이를 준비하고 GY-906를 연결한다.

그리고 센서를 읽어본다.
GY-906의 I2C 주소는 0x5a, 물체 온도 데이터 주소는 0x07와 0x08이다.

Datasheet from Melexis

라즈베리파이의 i2ctools로 0x5a를 dump해봤더니 데이터시트에 적힌 주소 테이블의 두 배 크기가 출력되었다.
EEPROM의 0x0e 주소에 I2C 주소가 들어 있다고 하니 0x0e나 0x2e 둘 중 하나에 I2C 주소가 들어있을 것이다.
확인해보니 0x2e이다.
RAM 주소 이후에 EEPROM 주소가 연결되어있는 모양이다.
파일럿 시스템에서는 EEPROM을 건들 일이 없으니 얌전히 0x07와 0x08로부터 데이터만 읽어오면 된다.

그 이후 데이터시트에 나온 대로 데이터를 해석한다.
데이터시트의 Example을 토대로 0x07은 상위 바이트, 0x08은 하위 바이트가 되며 0x07의 MSB는 에러 비트라는 것을 알 수 있다.
이 센서는 0.02도씨의 해상도를 가지기에 16비트에 0.02를 곱해주면 켈빈 온도가 나올 것이고 거기에 273.15를 빼어 셀시어스 온도로 바꿔준다.
Adafruit에서도 동일하게 처리한 걸 보니 로직은 맞는 것 같다. [Github] (Adafruit_MLX90614::readTemp)

Datasheet from Melexis

코드는 Gitlab에서 확인할 수 있다.
필자는 아티산 프로젝트가 오픈소스로 배포되는 것과 취지를 같이 하여, 아티산 프로젝트에서와 동일한 GPLv3 오픈소스 라이선스를 이 프로젝트에도 적용하였다.
만약 제3자가 참고 수준을 벗어나 이 프로젝트를 GPLv3에 따르지 않는 방법으로 수정하는 경우 필자는 강경하게 대응할 것이다.

우선 250g씩 4배치정도 로스팅해보았다.
사용한 원두는 콜롬비아 후일라

파일럿 테스트인만큼 거치대는 대강 만들어주었다.

센서는 가능한 한 원두와 가깝고 오래볼 수 있는 위치에 두었다.

처음 설치할 땐 반신반의했는데 막상 로스팅해보니 위치가 나쁘지 않다.

실력이 좋지 않아 배치 별로 프로파일이 들쑥날쑥하다.
첫 번째 배치에서는 깜빡하고 쿨러 전원을 안넣어서 오버로스팅이 되었다.
2번과 3번 배치가 가장 좋은 커핑 스코어를 받았다.
대략적인 프로파일은 아래와 같다.

  • 240도 투입 (2번 배치부터는 배치 종료 후 바로 투입)
  • 3분까지 190도 건조 (보통 색깔로 판단하나 이번에는 균일성을 위해 시간을 통일해보았다)
  • 1팝 시작까지 240도 가열 (보통 12~14분 정도에서 1팝)
  • 1팝 시작 후 대강 1~2분 가량 팝핑
  • 팝핑이 멎은 후 대략 1팝 시간(1~2분)동안 210도에서 카라멜라이징
  • 240도 가열 후 색깔과 냄새를 토대로 원두 배출 (1~2분)

보통 15~16분정도면 2팝 직전에 로스팅이 끝난다.

그래프 노이즈는 예상대로 필터링할 수 있는 수준에서 나왔다.
다만 가장 걱정인 것은 측정 정확도
센서 스펙은 200도 언저리에서 3~5도정도 오차가 나는 수준인데, 데이터 상으론 1팝이 140~150도에서 일어나고 있다.
보통 1팝이 190~200도 정도에서 일어나니 약 50도 정도의 측정오차가 발생하고 있다는 것이다.
적외선 센서를 이용한 측정이 보통 어려운 게 아닌 건 알고 있지만 이건 정도가 심하다.

투입온도가 100도, 1팝온도가 150도정도 되는 걸 보면 분명 방사열(Radiation Energy)때문인 것으로 추측된다.
원두에서 발생하는 물체열과 로스팅 챔버 내의 방사열을 복합적으로 고려해 온도보상(Temperature Compensation)을 해주어야 할 것으로 보이는데 상용 온도계들이 방사열 온도보상기능이 있는 걸 보면 인터넷에서 어떻게든 방법을 찾아낼 수 있을 것으로 보인다.

그나마 위안이 되는건 온도 증가 양상이 보인다는 점과 1팝 후 휴지기간이 확인된다는 점이다.

일단 개선의 여지는 있어 보이니 프레임워크가 만들어진 이후 개선해보기로 한다.
다음 포스트에서는 데이터 정제 로직과 실시간 데이터 필터링 방안, 적외선 센서 측정 정확도 향상 방법을 다뤄볼 예정이다.

한편 원두 온도와 더불어 열풍 온도도 측정할 필요가 있어 보인다.
시스템을 개발하고 나면 라즈베리파이 카메라로 온도를 실시간으로 읽어와야겠다 싶다.
요즘 워낙 CV 툴과 OCR 성능이 좋아 프로그램 만드는 건 일도 아닐 것으로 생각된다.
다만 케이싱을 포함한 하드웨어 문제가 좀 벅찰 것 같은 느낌이 든다.

Series Navigation<< [제네카페 데이터 로거 DIY] 1. 실험 및 시스템 설계

댓글 남기기