Der BH1750 erlaubt nur Versorgungsspannungen bis maximal 3,6 V. Trotzdem kann die Platine direkt über unsere Attiny-Platine versorgt werden; auf dem Modul befindet sich nämlich ein entsprechender Spannungswandler, der unsere 5,0 V auf 3,3 V heruntertransformiert.
Die Kommunikation mit dem BH1750 erfolgt über I2C; die Schreibadresse ist &H46. Bei unserer Attiny-Platine müssen die Jumper für die Pull-Up-Widerstände nicht gesetzt werden; auf dem GY302-Modul sind nämlich diese Widerstände schon eingebaut. Verschiedene Betriebsarten und Auflösungen sind möglich. In unserem Beispielprogramm (s. u.) wählen wir den "Continuously H-Resolution Mode" mit einer Auflösung von 1 lx. Der zugehörige Initialisierungscode ist &B00010000. Die Messzeit beträgt in diesem Fall typischerweise 120 ms.
Wir lassen die Beleuchtungsstärke jede 2 Sekunden messen und geben das Ergebnis über ein LCD aus. Weitere Einzelheiten kann man dem folgenden Programm entnehmen.
Code: Alles auswählen
' Datei für Attiny-Platine von E. Eube, G. Heinrichs und U. Ihlefeldt
' Lichtsensor GY302 (BH1750) an I2C
' Ausgabe über LCD
'----------------------------------------------------------------------------
$regfile = "attiny2313.dat"                                 'Attiny2313
$crystal = 4000000                                          '4 MHz
'**********************************************************
'******************* Deklarationen ************************
Dim Messung1 As Byte
Dim Messung2 As Byte
Dim Lux As Word
'****************** Initialisierung ***********************
Ddrb = &B11111111                                           'Port B als Ausgangsport
Ddrd = &B01110000                                           'D4, D5, D6 als Ausgang; Rest als Eingang
Portd = &B10001111                                          'Eingänge auf high legen
Config Lcd = 16 * 2                                         'LCD konfigurieren
Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.4 , Rs = Portb.6
Cursor Off
Config Sda = Portb.5
Config Scl = Portb.7
I2cinit
'**********************************************************
'******************** Hauptprogramm ***********************
Const Bh1750fvi_w = &H46
Const Bh1750fvi_r = &H47
Wait 1
Do
   I2cstart
   I2cwbyte Bh1750fvi_w
   I2cwbyte &B00100000                                      'Auflösung 1 Lux
   I2cstart
   I2cwbyte Bh1750fvi_r
   I2crbyte Messung1 , Ack
   I2crbyte Messung2 , Nack
   I2cstop
   Lux = Messung1
   Lux = Lux * 256
   Lux = Lux + Messung2
   Cls
   Lcd Lux
  Wait 2
 Loop
End
Sie zeigen, dass hier die Additivitätsbedingung mit hoher Genauigkeit erfüllt ist.
.
