Forum: Haus & Smart Home Wetterstation mit I2C-Bus


von Uwe O. (schwede)


Lesenswert?

Hallo...
mit dem I2C-Bus arbeite ich schon seit geraumer Zeit - und nun will ich
mich mit Mikrocontrollern beschäftigen und miteinander verbinden. Ich
habe sehr viel gelesen und das letzte Buch hat mich dann richtig
verwirrt.

Der Controller (80C31) auf deren Entwickler-Board lässt sich nicht
programmieren (???) , also verwendet der Autor ein Ladeprogramm,
welches in einem EPROM gebrannt ist, um das eigentliche Programm in
einem RAM zu speichern und von dort auszuführen.

Da ich ausschliesslich einen I2C-Bus steuern möchte, habe ich mich für
einen Phillips-Controller P87LPC764 entschieden. Es ist ein
80C51-Controller mit 128 Byte RAM und 4KB OTP, ISP-fähig.

Nun verratet mir doch mal bitte, wenn ich mein Programm seriell in den
Controller lade :
   - wo wird es gespeichert
   - ist es dauerhaft gespeichert (Spannungsabhängig oder nicht)
   - ist es jederzeit löschbar bzw. überschreibbar

Wen es interessiert Datenblatt gibts hier - ich kann leider Gottes kein
englisch deshalb ist es für mich keine Hilfe !!!

http://www.semiconductors.philips.com/acrobat_download/datasheets/P87LPC764_11.pdf

von Ruedi Wiesendanger (Gast)


Lesenswert?

OTP ist nur einmal programmierbar !
Würde Dir einen Kontroller mit Flash empfehlen.
Hält Daten bei Stromausfall aber lässt sich wieder
umprogrammieren.

MfG
RuediW

von Michael (Gast)


Lesenswert?

Sich ganz ohne Englisch in der Welt der Elektrotechnik zu bewegen ist
sehr schwierig, denn ich kenne keinen Hersteller (ich möchte nicht
ausschließen, das es noch welche gibt), die ihre Dokumentation nicht
auf Englisch schreiben.

Versuch es doch einfach mal, ich würde sagen, jemand der ein Datenblatt
auf Englisch versteht, muss nicht auch zwangsläufig wirklich englisch
können. Der Spachstil ist ein technisches Englisch, einfach geschrieben
und oftmals sagen Bilder auch mehr als tausend Wörter. Aber ganz ohne
das Lesen von Datenblättern wird es nicht gehen, du brauchst sie immer
wieder!

So, das nur mal allgemein, und nun zu deinen Fragen.

Erstmal ist das von dir zuletzt gelesene Buch sicherlich ein wenig
älter oder? Der 80C31 gehört nicht mehr zu den neuesten Controllern und
gerade die Entwicklung der Elektrotechnik schreitet schnell vorran. Der
80C31 hat keinen internen Programmspeicher, sondern das Programm wird
extern in einem EPROM gespeichert

Der von dir ausgewählte Controller hat ein internen Programmspeicher,
der aber OTP (one time programmable) ausgeführt ist, das heißt, du
kannst ihn nur einmal programmieren. Für die Entwicklung eines
Programmes ist dies eher ungeeignet, dies nimmt man in der
Massenproduktion, wenn das Programm steht und es auf jeden Cent ankommt
(OTP Programmspeicher ist billiger).

Was ich dir empfehlen würde, ist ein Controller mit internem Flash
Speicher. Diese lassen sich fast beliebig oft neu programmieren. Den
I2C Bus unterstützen mittlerweile die allermeisten Controller.
Du kannst dich ja einfach mal auf den Homepages der gängigen Hersteller
umschauen, was sie so im Angebot haben. Letztendlich wirst du viele
Controller finden, die deine Anforderungen erfüllen.

Und noch ein Tip für dich als Anfänger, ich würde an deiner Stelle
einen Controller wählen, der häufig genutzt wird und zu dem man damit
viel Support im Internet finden kann.


Ich hoffe, ich konnte dir soweit erstmal helfen. Bei weiteren Fragen,
frag nur :-)

Michael

von Gerhard (Gast)


Lesenswert?

Und was hat das mit dem Hausbus gemeinsam?
Omnibus ist auch ein Bus ':-)

von Uwe O. (schwede)


Lesenswert?

@ Gerhard...
sei nicht so ungeduldig, das war doch erst der Anfang, es geht bald
weiter.
Und Dank an die anderen "Schreiberlinge" für die Tipps.
Ich verstehe schon einige Brocken englisch, nur manchmal reicht es eben
nicht aus um den Zusammenhang zu verstehen !
Das Buch heisst übrigens "Das grosse 51er Anwendungsbuch" 2004

Bis bald Uwe

von Uwe O. (schwede)


Lesenswert?

Hallo
also nach einigem Suchen habe ich nun den AT Tiny 26 als möglichen
Controller ins Auge gefasst. Mit Dip-20 ist er nicht so gross und hat
ein Universal Serial Interface (USI). Ich hab gelesen es ist kompatibel
zum I2C-Bus.
Wäre der vielleicht besser geeignet?

Gruss Uwe

von Michael (Gast)


Lesenswert?

Der sieht schon viel besser aus für erste Gehversuche in der
Mikrokontrollerprogrammierung :-)

Kannst du vielleicht nochmal genau beschreiben, was du entwickeln
möchtest? Also bei einer Wetterstation möchtest du wahrscheinlich
verschiedene Sensoren über I2C auslesen und die Daten dann auf
irgendeine Art weiterverarbeiten (Display/PC?) oder? Erzähl doch
einfach mal dein Konzept bitte...


Gruß
Michael

von Michael (Gast)


Lesenswert?

Übrigens nennt Atmel den I2C Bus aus Lizenzgründen anders, nämlich TWI
(TwoWireInterface). Wenn du bei Atmel auf die Mikrokontrollerübersicht
gehst
(http://www.atmel.com/dyn/products/param_table.asp?family_id=607&OrderBy=part_no&Direction=ASC)
dann siehst du da auch eine Spalte mit TWI. Also I2C bzw. TWI
unterstützen die allermeisten Kontroller, und selbst wenn es nicht
hardwaremäßig vom Kontroller unterstützt wird, kann man es noch
softwaremäßig nachbilden, was aber dann ein wenig aufwendiger ist.

Gruß
Michael

von Andreas (Gast)


Lesenswert?

Stop, bloß aufpassen!

USI ist nicht gleich TWI! USI ist leider nur eine verkrüppelte
Variante.
Tu Dir also den Gefallen und lassen den Tiny sein und nimm einen Mega.
Der hat eine richtige I2C-Schnittstelle drin. Viel mehr Beinchen hat
einer der 8er Megas auch nicht.

von Uwe O. (schwede)


Lesenswert?

Danke für den Tipp Andreas !

Mein Projekt:
Ich will einige Sensoren (z.B. Feuchte, Temp, Windgeschw.) auslesen und
die Daten in einem Eeprom speichern, dafür verwende ich einen 24C64.
Wenn ich jede 1/2 Stunde eine Messung durchführe kann ich bei 8
Byte/Messung 3 Wochen speichern.
Als zweiten Controller auf diesem Bus verwende ich einen PCF8584. Der
ist über die LPT-Schnittstelle mit meinem PC verbunden (ist bereits in
Betrieb). Nun kann ich ein mal in der Woche die Daten vom Eeprom
auslesen und in einem Programm auswerten bzw. in einer Datenbank
speichern. Dieses PC Programm schreibe ich in Delphi.
Mal was anderes:
Der Syntax in AVR-Studio ist nicht der selbe wie das einfache
Assembler. Ich bekomme ständig Fehlermeldungen. Hat jemand für mich ein
kleines Beispielprogramm, mit Studio4 geschrieben, sodas ich mal
vergleichen kann?

Gruss Uwe

von Sven (Gast)


Lesenswert?

Hi Uwe
Lass das mit Studio 4 sein . Programme die nicht gerade zeitintensiv
(im µs bereich)sind schreibst du leichter und schneller in BASCOM da
hier bei weitem übersichtlicher gearbeitet wird.
im übrigen kannst du auch das EEPROM vom Mega8 nutzen und den PCF8584
kannst du bei der Gelegenheit auch eliminieren und durch eine RS232
ersetzen weil die auch schon drin ist oder eben einen der Ports direkt
an die Parallele Schnittstelle verweisen.
Jetzt hab ich aber auch mal ne frage. Hast du mal ein link über
Adressierung von I²C Master & Co. Ich hab noch keine Fahrkarte aber der
Bus ist echt Interessant für mich. Ich möchte einige Mega8 an einen
eigenen Bus klemmen .Uhrsprünglisch
hatte ich ein CAN BUS vorgesehen, der mir aber zu teuer und mächtig
Platz ergreifend wird.

von Uwe O. (schwede)


Lesenswert?

Hallo...

eine Liste aller I2C-Geräte gibts hier
www.grifo.com/PRESS/DOC/Philips/ANGUIDE.pdf

und die dazugehörigen Adressen gibts hier
www.semiconductors.philips.com/acrobat_download/various/IC12_97_I2C_ALLO 
CATION.pdf

Sven - ich hoffe, das wars was Du gesucht hast !!
Nun wieder zurück zum Bus.
Der Feuchte/Temperatur-Sensor SHT71 hat einen 2-Draht-Bus - und im
Datenblatt schreiben die ausdrücklich er ist NICHT mit I2C kompatibel.
Wenn ich mir aber mal die Start und Stop-Bedingung ansehe und die Art
der Datenübertragung (Adressbyte, Datenbyte) kann ich keinen
Unterschied finden.
Ist das etwa auch so ein "Lizens-Trick" ? Wer weiss mehr ?
Dieser Sensor wäre nämlich optimal für mein Projekt.

Gruss Uwe

von Sven (Gast)


Lesenswert?

Danke Uwe !
Die Links haben 100% gepasst.
Zu dem SHT . Mit der ausführlichen Beschreibung im Datenblatt sollte es
nicht schwer sein das Teil über zwei x beliebige Ports vom µP
anzusprechen .( sinnvoll wäre da SDA und SCL  Probeweise ) Also ohne
I²C. Warum das so ist darfst Du mich nicht fragen.

von Michael (Gast)


Lesenswert?

Hallo, da bin auch wieder...
Ich denke der AtMega8 wäre eine gute Wahl für dich. Er beietet auch
genug Flash Speicher für zukünftige Erweiterungen. Nichts ist nämlich
ärgerlicher wenn der Cotroller auf einmal zu klein wird.

In Bezug auf die Programmiersprache kann ich dir persönlich nur von
Bascom abraten. Ich programmiere in C und wenns zeitkritisch wird in
Assembler. Aber letztendlich musst du das natürlich auch selber für
dich entscheiden.

Und dann würde ich deine Busstruktur nochmal überdenken. Mit der
seriellen Schnittstelle und deinem Mikrocontroller hast du zwei
Masters, die u.u. auch gleichzeitig auf den Bus zugreifen können.
Vielleicht ist es geschickter, den Mikrocontroller allein auf den I2C
Bus zugreifen zu lassen um Messwerte abzufragen und sie abzuspeichern
und dann die Daten bei Bedarf über die serielle Schnittstelle zum PC zu
übertragen. Das bietet außerdem den Vorteil, das du mit jedem
Terminalprogramm dir die Daten holen kannst. Nu so als Vorschlag, du
kannst ja mal drüber nachdenken...

Und dannn noch zum Sensirion Feuhtesensor. Wir haben ihn hier mal
verwendet, lweider hat es mein Kollege gemacht, so das ich es dir nicht
genau sagen kann. Aber im FAQ von Sensirion findest du:

"Is your bi-directional 2-wire interface compatible with I2C ?

No it is not. The difference is in the start/stop sequence (transition
start with SHTxx) and how the SHTxx humidity sensor signals the end of
a measurement. SHTxx should not share a I2C bus with I2C components.
However sharing of the SKC line and using a dedicated DATA line for the
SHTxx humidity sensor will work well."

Das wäre natürlich ein bischen doof für dich, wenn du ein richtigen I2C
Bus aufbauen möchtest. Aber vielleicht gibt es ja auch ähnliche Sensoren
mit richtigem I2C Interface, und frag mich nicht warum Sensirion das
gemacht hat ;-)

So viel erstmal von mir...

Gruß
Michael

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.