Testprogramm
Das Testprogramm verwendet die Gobot-Bibliothek für den INA3221 (Listing 3). Weiterhin importiert das Programm die Module time und fmt, um Zeitintervalle zu definieren und eine Ausgabe auf der Konsole zu erzeugen.
Die Funktion main() definiert einen Adapter für den RasPi. Danach lädt sie den Treiber für den INA3221 in diesen Adapter. Die Funktion work dient dazu, jede Sekunde die Sensordaten auszulesen und auf der Konsole auszugeben. Zu guter Letzt definieren Sie einen neuen robot, der diese Funktion ausführt.
Listing 3
package main
import (
"fmt"
"time"
"gobot.io/x/gobot"
"gobot.io/x/gobot/drivers/i2c"
"gobot.io/x/gobot/platforms/raspi"
)
func main() {
raspberry := raspi.NewAdaptor()
sensor := i2c.NewINA3221Driver(raspberry)
work := func() {
gobot.Every(1000*time.Millisecond, func() {
u1,_:=sensor.GetBusVoltage(1)
u2,_:=sensor.GetBusVoltage(2)
u3,_:=sensor.GetBusVoltage(3)
i1,_:=sensor.GetCurrent(1)
i2,_:=sensor.GetCurrent(2)
i3,_:=sensor.GetCurrent(3)
fmt.Printf("Voltage Channel 1: %.2f V\n", u1)
fmt.Printf("Current Channel 1: %.2f mA\n", i1)
fmt.Printf("Voltage Channel 2: %.2f V\n", u2)
fmt.Printf("Current Channel 2: %.2f mA\n", i2)
fmt.Printf("Voltage Channel 3: %.2f V\n", u3)
fmt.Printf("Current Channel 3: %.2f mA\n\n", i3)
})}
robot := gobot.NewRobot(
"Raspberry Pi",
[]gobot.Connection{raspberry},
[]gobot.Device{sensor},
work,
)
robot.Start()
}
Um das Programm zu starten, verwenden Sie das Kommando go run INA3221.go; Abbildung 3 zeigt ein Beispiel für die Ausgaben. Die Spannungen aller Kanäle fallen identisch aus, was daran liegt, dass in dem INA3221-Modul alle Kanäle miteinander verbunden sind. Das Modul kann also nur eine Spannung und drei Ströme verarbeiten, obwohl der Baustein selbst drei unabhängige Spannungen und Ströme messen könnte.
Fazit
Der INA3221 erweist sich als probater Baustein, wenn es darum geht, den Stromverbrauch einer Schaltung zu messen oder zu überwachen. Ärgerlicherweise bietet das hier verwendete Modul nicht die Möglichkeit, alle Messkanäle zu verwenden. Der Baustein verfügt zusätzlich über die Möglichkeit, Grenzwerte für Alarme zu setzen. Alles in allem handelt es sich um ein sehr nützliches Modul, von dessen Möglichkeiten dieser Artikel nur einen kleinen Teil beleuchten konnte.
Der Autor
Martin Mohr hat seit jeher eine Vorliebe für alles, was blinkt. Nach einem Informatikstudium entwickelte er überwiegend Java-Applikationen. Mit dem RasPi erwachte die alte Liebe zur Elektronik wieder.
Infos
- INA3221-Modul bestellen: https://de.aliexpress.com/item/I2C-INA3221-Alimentazione-Tensione-Monitor-Sensor-Board-Sostituire-Modulo-INA219-Triple-Channel-Shunt-IIC-I2C-Interfaccia/32840142514.html?spm=a2g0s.9042311.0.0.39284c4dHBetHe
- Datenblatt zum INA3221: http://www.ti.com/lit/ds/symlink/ina3221.pdf
- I2C-Workshop, Teil 18: Martin Mohr, “Unter Kontrolle”, RPG 04/2018, S. 80, http://www.raspi-geek.de/40583
- Gobot-Treiber: https://gobot.io/documentation/drivers/ina3221/






