Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen
Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.
Hinweis kann nach Kenntnisnahme deaktiviert werden!
I2C-Anschluß des BH1750 Lichtsensor an ATmeg8 per Bascom
Arbeite mit Bascon und möchte den Lichtsensor BH1750 mit dem ATmega8 per Bascom anschließen und die Lichtwerte auf dem LCD 16*2 anzeigen lassen.
Wer hat dazu ein Programm-Beispiel??
Danke
Hi, ein link zum Datenblatt ist immer ganz hilfreich. Ich hab' was bei einem Arduino-Bastler was gefunden, war aber nicht gültig.
So wie ich das überrissen hab', liefert der chip absolute Werte für die lux.
Der Lichtsensor BH1750 hat folgende Anschlüsse: VCC, GND (die sind klar), SCL, SDA das scheinen die Daten ausgänge zu sein; hierzu fehlt mir ein entsprechendes Programm in Bascom sowie ein Anschlußschema, um die Lux-Werte am LCD-Display anzeigen zu lassen. Leider ist unter forum.g-heinrichs.de/viewtopic.php?t=93 kein Programm dazu zu finden. Ich hoffe jemand kann hier weiterhelfen.
Ich denke das Forum wird dies schon können. Wäre schön. Allen ein Danke, die sich hier melden.
Also ich habe gerade extra nochmal nachgesehen auf der Forumseite befindet sich ein Beispielprogramm in Bascom.
In grüner Schrift direkt unter dem Schaltplan.
Habe nochmals nachgeforscht und im Internet einige Sachen zum Lichtsensor BH1750 gefunden. Anscheinend läuft er über den I²C-Bus, keine Ahnung wie das geht. Im Forum findet sich unter "I²C Datenübertragung" etwas. Dort werden Adressen ausgelesen. Doch ein Programm für das Auslesen der Lux-Werte Fehlanzeige. Ich stelle deshalb die von mir gefundenen Unterlagen als Dateianhänge hier bei, damit jemand, der mir helfen möchte, nicht unnötig suchen muß.
Wäre für die Hilfe sehr dankbar.
Habe im Internet noch etwas zum Lichtsensor BH1750 gefunden. Siehe Anhang. Allerdings in Englisch. Das scheint ein Ausleseprogramm für die Lux-Werte zu sein, es ist aber meiner Ansicht nach nicht in Bascom geschrieben. Kann es jemand in Bascom umsetzen??
Ich habe das Programm von G.Heinrichs mal herauskopiert. Es Macht eigentlich genau das was du haben möchtest. Natürlich musst du es noch an deinen Prozessor anpassen.
SDA verbindest du mit SDA am BH1750 und SCL halt mit SCL am BH1750. Die Pin's für SDA und SCL findest du im Datenblatt deiner CPU.
Welchen Prozessor benutzt du denn?
BASCOM-Quellcode
' Datei für Attiny-Platine von E. Eube, G. Heinrichs und U. Ihlefeldt
Arbeite mit Bascon und möchte den Lichtsensor BH1750 mit dem ATmega8 per Bascom anschließen und die Lichtwerte auf dem LCD 16*2 anzeigen lassen.
Ich denke mal Du möchtest mit Bascom arbeiten. Dazu gehört aber das man sich mit dem Inhalt und der Syntax befasst und auch etwas versteht von dem was man machen will.
In dem angegbenen Link befindet sich ein Programm was genau das tut was Du eigentlich willst. Dass wird Dir aber nichts bringen wenn Du es nicht verstehst was da gemacht wird. Und dazu ist erstmal erforderlich, das man sich mit der Materie beschäftigt.
Anscheinend läuft er über den I²C-Bus, keine Ahnung wie das geht.
Dann solltest Du Dich als erstes mal der Theorie befassen, da hilft Dir auch ein Beispielprogramm nichts zumal Du es nicht mal als solches erkennst. Eine gute Quelle um sich Wissen anzueignen sind z.B. das Buch von Stefan Hoffmann "Einfacher Einstieg in die Elektronik mit AVR_Mikrocontroller und Bascom" oder Ceperigas Bascom-Kurs hier im Lexikon.
Das Zusammenklicken von Programmcode bringt selten Erfolg. Das Programm in Deinem Screenshot ist übrigens in C geschrieben und Englisch ist nun mal die Techniksprache. Und es bringt nichts wenn Dir jemand ein C-Programm in Bascom übersetzt, mach es selbst. Hilfe dazu wirst Du hier schon kriegen aber nicht in der Form "wir machen Dir das!".
Gruß Harald
Wem ich nicht ausdrücklich widerspreche, der darf das bis auf Widerruf als "Gefällt mir" verstehen.
Hallo Harald,
entschuldige, wenn meine Anfrage Dich entrüstet hat.
Ich bin 73 und habe vor 50 Jahren mal mit Basic begonnen. Es war die Zeit des Comodore 64, das ist lange her. C habe ich nie gelernt. Englisch ist für mich kein Problem. Nun begann ich mit Bascom zu programmieren. Vieles aus meiner frühen Zeit ist noch da, aber es fällt mir halt schwer. So suche ich eben um Hilfe so gut es geht. Ich hoffe Du verstehst das.
Gruß
Schon Fortschritte? Dein 1z Lichtsensorprogramm ist ein brauchbares Gerüst um die I2C(=TWI) hineinzubringen. Die benötigten Zeilen sind schon von Cable vorgegeben. Eine gute Erklärung gibt es auch in der Bascom Hilfe (+über Index/Config SCL zu "Using the I2C protocol") Dort ist sogar ein Anschlußbeispiel des Mega8.
Doch würde es, (learnig by doing) Die haben den Vorteil das erstmal was passiert (oder wenn nicht es ein "nur" Hardware-Problem ist). Dannach kommt das Umschreiben so wie man es braucht wodurch sich die Eigenarten gut einprägen.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Pluto25 ()
zunächst mal besten Dank an Alle, die mir geschrieben haben.
Es war tatsächlich ein Beispiel darunter, das funktioniert: toll.
Für diejenigen, die sich mit meinem Homematic Beispiel befassen möchten, hier noch eine sinnvolle Ergänzung. Ich bleibe noch beim Lichtsensor ALS-PT19. Der liefert je nach Beleuchtung Meßwerte zwischen ca 50-950. Diese Werte kann der 8-Bit-Sender von Homematic nicht verarbeiten (8-Bit = 0-255). In meinem vorigen Programmbeispiel habe ich das Problem so gelöst, daß ich Grenzwerte im Bascomprogramm vorgegeben habe, ab denen z.B. der Rolladen sich bewegen soll. Das hat einen Nachteil: wenn die Grenzwerte nicht passen, dann muß ich meinen Microcontroller neu programmieren.
Hier nun ein Beispiel wie ich dies umgehen kann:
Zunächst teile ich den Meßwert in Zeile 38 durch 4; damit ist die Ausgabe auf 0-255 begrenzt und diese Werte können vom Sender übertragen werden. Auf unserem Display sehen wir, daß sich die Meßwerte sehr schnell um nur wenige kleine Schritte verändern. Bei jedem dieser Änderungs-Schritte sendet unser Sender. Der Sender ist also ständig mit Senden beschäftigt. Das führt zu einem Problem, das mit der Sendetätigkeit zusammenhängt. Sendet der Sender nämlich innerhalb eines festgelegten Zeitlimits zu oft, dann erreichen wir das sogenannte "Duty-Cycle-Limit"; die Anlage stellt für längere Zeit das Senden ein.
Um dies abzustellen, teile ich den Wert in Zeile 39 durch 10, und multipliziere ihn anschließened in Zeile 40 mit 10. Dadurch sendet der Sender nur noch, wenn z.B. von 50 auf 60 der Wert sich geändert hat. Nun kann ich im Homematic-Programm mir die passenden Grenzwerte einstellen; passen sie mir nicht brauche ich nur in Homematic den Grenzwert zu ändern. Ich bleibe also flexibel und lasse mein Bascom-Programm unverändert.
Ihr könnt das ruhig ausprobieren, indem Ihr die Zeile 39 und 40 auskommentiert.
Gruß an Alle und einen schönen Sonntag.