태양광 발전의 발전량을 로깅해 보았다. (2) Microbit로 전류 · 전압 측정 (INA260 사용)

【태양광 발전의 발전량을 로깅해 보았다. 목차】

Microbit로 전류·전압 측정(INA260 사용)



전류·전압을 로깅하는 데는 여러 가지 방법이 있지만, 이번 소지의 조각으로 부족하게 하려는 담담하고, 다음과 같은 시스템 구성을 생각했다.



그림 2-1 시스템 구성도

건전한 라즈파이 3이라면 직접 센서와 I2C 통신하고 로깅 할 수 있지만,
불행히도 소지 한 라즈파이 3는 과거 실험 실패시 GPIO가 정상 작동하지 않습니다. I2C도 SPI도 사용할 수 없다.

거기서, 소지의 2장의 Microbit를 도움이 되기로 했다.
Microbit은 I2C 통신도 SPI 통신도 가능하고 A/D 변환도 할 수 있어, MakeCode를 사용해 간단한 블록 조작으로 프로그램을 짜낼 수 있으므로 정말 간단하게 여러가지 수 있다.

이번에는 전류·전압·전력계 모듈INA260을 Microbit에 접속하고 I2C로 전류·전압을 측정했다.

● INA260 준비



이번에 INA260을 스트로베리 리낙스에서 구입했지만, 5핀 핀 헤더와 소켓이 부속되어 있어, 소지의 점퍼선의 종류에 따라 오스메스 어느 쪽이라도 선택할 수 있기 때문에, 편리하다.

하드적으로 필요한 작업은

・INA260 기판에 단자대 부품을 납땜
・INA260 기판에 I2C용 핀 헤더(또는 소켓)를 납땜
・I2C 어드레스를 결정하고, INA260 기판상에서 I2C 어드레스 설정부의 해당하는 단자를 땜납으로 단락시킨다.

자세한 내용은 딸기 리낙스
INA260 모듈 설명서
INA260 데이터시트
참조.

● INA260-Microbit 간 연결



INA260과 Microbit는 I2C로 통신할 뿐이다.
Microbit의 I2C 단자는 19번(SCL)과 20번(SDA).
다만, 핀을 악어로 끼우는 것은 어렵기 때문에, IOBIT 확장 보드가 필요.
나는 이미 모터 드라이버 확장 보드를 가지고 있었기 때문에 그 IO 포트에 핀 헤더를 연결하여 사용했다.



SCL과 SDA의 풀업은 Microbit에서는 내부적으로 풀업되어 있기 때문에 문제 없다.

● Microbit 프로그램



Microbit MakeCode에서 I2C 통신으로 센서 값을 읽으려면 "고급 블록"- "기타"에 I2C 관련 블록이 준비되어있다.
이 블록에서 I2C 주소를 설정하고 센서의 레지스터 값을 읽을 수 있습니다.

이니셜시에, I2C 어드레스와 INA260의 레지스터 설정의 이니셜라이즈를 실시한다.



여기서, INA260의 I2C 어드레스 설정에서 GND와 SDA를 단락했으므로 66 (b1000010)을 설정했다.
다음에 레지스터 설정이지만,주의는 INA260의 레지스터는 형식 "UInt16BE"(16 비트 부호없는 정수 Big Endian)로 읽고 쓰기하는 것입니다.

여기서 「28671(H6FFF)」를 지정하고 있지만, 이것은 이하와 같은 내용을 설정하고 있다.

・평균 모드 샘플수:1024
・버스 전압 변환 시간 8.244ms
・션트 전류 변환 시간 8.244ms
・조작 모드 버스 전압 & 션트 전류(계속적으로)

이니셜 후 루프에서 주기적으로 센서 값을 읽으려면 다음과 같이 읽습니다.



우선, 취득하는 값에 대한 INA260의 레지스터 번호를 지정한다.
전류값은 1, 전압은 2이다.
전류 측정치는 플러스/마이너스이므로, 형식: Int16BE를 지정해 값을 취득한다.
이 측정치는 1이 1.25mA이면 데이터시트에 쓰여 있으므로 1.25배한다.
또한 mA에서 A로 변환하여 표시하기 때문에 1000으로 나눕니다.

이렇게 해서 취득한 전류·전압값을 우선 LED로 표시시켜 보는 프로그램은 이하와 같다.



【태양광 발전의 발전량을 로깅해 보았다. 목차】

좋은 웹페이지 즐겨찾기