Rolfs N-Bahn
  I2C_Sim
 


I2C-Simulator


Der I2C-BUS auch oft, als 2 Draht BUS bezeichnet, gehört zu meinen Lieblingsschaltungen. Er ist sehr schnell programmiert, ist sehr zuverlässig und kann leicht in bestehende Programme integriert werden.

Ich werde hier nicht den I2C-BUS und einzelne Schaltungen beschreiben, dies kann man im Internet alles nachlesen und ich möchte dort nicht sinnlos abschreiben. 
Auch die Daten der verwendeten ICs werde ich hier nicht auflisten. Dafür gibt es Datenblätter, wo alles Notwendige steht.
Auf Wissenswertes verweise ich am Ende in einer Linksammlung. Auch diese wird und kann nicht vollständig sein.
Mir geht es hier nur darum zu zeigen, wie ich unter anderem den I2C-BUS zur Simulation nutze. Auch habe ich hier nur die von mir immer wieder genutzten ICs verwendet. Natürlich gibt es unzählige I2C-ICs, mit denen sich alle möglichen Aufgaben verwirklichen lassen. Kommt in meinen Steuerungen mal wieder ein neuer IC zum Einsatz, dann ist sehr schnell eine kleine Streifenleiterplatte zurechtgemacht und der IC kann auch in Zukunft einfach in dieser Form genutzt werden.
Durch die sich mit der Zeit angesammelten I2C_Module kann ein Programm bequem am Schreibtisch geschieben und getestet werden. Und braucht dann nur noch in die Steuerung der Anlage übertragen werden.
 
Aber auch neu entwickelte Schaltungen teste ich so auf alle möglichen Fehler, bevor sie in meine Anlage eingebaut werden.

Hier eine Relais-Steuerplatine meiner Anlage, die nach Gleisänderungen, neu programmiert wurde.

Baugruppen für meinen Simulator:

Häufig findet man beim Programmieren einen Fehler nicht und das Programm verhält sich seltsam. Dann nutze ich sehr oft ein LCD-Display, um mir alle möglichen Werte anzuschauen. Ein Display benötigt mindestens 6 Leitungen für die Datenübertragung. Diese sechs Ports stehen oft nicht zur Verfügung und das Anschließen eines Displays ist umständlich.
In dem Fall ist der I2C-BUS eine einfache Lösung. Häufig sind noch zwei Ports am zu programmierenden Mikrokontroller frei, auf die sich vorübergehend der I2C legen lässt. Bei meinen Steuerungen für die Modellbahn verwende ich von Haus aus bereits immer den I2C_BUS zur Datenübertragung der einzelnen Komponenten. Und dann ist es gar kein Problem das Display einzusetzen.

Angesteuert wird das Display über einen Portexpander PCF8574.
Inzwischen besitze ich auch einige I2C-Display-Adapter, welcher sehr einfach einsetzbar ist. Diese beschreibe ich auf einer separaten Seite,

I2C-Display-Adapter
Genau so benötigt man häufig mal schnell eine Eingabe. Dafür habe ich mir eine kleine Tastatur gebaut, die auch wieder über den Portexpander PCF8574 arbeitet. Auch dies.

In den letzten Jahren hatte ich verschiedene Möglichkeiten ausprobiert, wie sich Baugruppen am besten in den I2C-BUS einbinden lassen.
Irgendwann war ich dann auf 10 poliges Flachbandkabel gekommen. Passende Pfostenbuchsen lassen sich einfach auf Streienleiterplatten einsetzen, da ich einfach die zwei Reihen parallel lege.
Durch das Flachbandkabel kann jede Baugruppe einfach getrennt werden. Sowie weitere Baugruppen durch Hinzufügen von Steckern im Flachbandkabel, leicht hinzugefügt werden.
Links:
Mit weiteren Modulen habe ich mir die Möglichkeit geschaffen die Betriebsspannung in den BUS einzuspeisen. Dies wird notwendig, wenn ich z.B. mit dem Raspberry Pi arbeite, der mit 3,3 V betrieben wird. Und die BUS-Teilnehmer 5V benötigen.

Rechts, sieht man einen BUS-Verteiler, um den BUS sternförmig aufzuteilen.
In weiteres sehr nützliches Modul gibt mir die Möglichkeit durch die 5 polige Buchsenleiste Messgeräte auf dem BUS zu legen und so zu sehen, was auf dem BUS passiert.

Aber auch lässt sich damit der BUS einfach an ICs auf einem Steckbrett anschließen.
Zu dem wohl bekanntesten Portexpander gehört sicherlich der PCF8574. Da dieser Portexpander bei mir sehr viel eingesetzt ist, habe ich auch gleich zwei Module gebaut. 
Den PCF8574 gibt es als Bauform P und AP mit unterschiedlichen Adressen. Jeder IC stellt 8 Ein- / Ausgänge zur Verfügung.
Nach dem inzwischen die Produktion des PCF8574 in der Bauform DIL, eingestellt wurden und bei den Versendern die Restbestände zu Ende gehen, bin ich auf den Portexpander MCP23017 ausgewichen. Dabei hat sich gezeigt, dass dieser IC den letzten Zustand speichert. So geht die Steuerung bei diesem IC nach dem Einschalten sofort in den alten Zustand vor dem Ausschalten. Mit 16 Ports stehen auch mehr Aus- / Eingänge zur Verfügung.
Nachteilig ist, dass der MCP23017 dieselben Adressen nutzt wie der PCF8574. Dies kann sehr schnell zu Konflikten führen, wo besondere Vorkehrungen getroffen werden müssen.

Langfristig wird es nicht zu umgehen sein auf SMD-Bauteile auszuweichen, da immer mehr ICs nur noch in der SMD-Bauform produziert werden.
Immer wieder ist es notwendig Daten zu speichern, um nach dem Einschalten der Anlage diese Daten wieder zur Verfügung zu haben. Hier hilft ein EEprom. In diesem Fall ein 24C16 mit kBit Speichergröße.

Der Raspberry Pi wird über einen  I2C-Repeater mit dem I2C-BUS verbunden.

Der I2C-Repeater dient der Pegelanpassung mit dem Raspberry Pi auf 3,3V. Diesen habe ich auf einer gesonderten Seite beschrieben.



Linksammlung:  
I2C in Wikipedia https://de.wikipedia.org/wiki/I%C2%B2C
I2C-RN Wissen http://rn-wissen.de/wiki/index.php?title=I2C
I2C-Chip-Übersicht RN-Wissen http://rn-wissen.de/wiki/index.php/I2C_Chip-%C3%9Cbersicht
PCF 8574  - Portexpander Datenblatt http://www.ti.com/lit/ds/symlink/pcf8574.pdf
MCP23017 - Portexpander Datenblatt http://ww1.microchip.com/downloads/en/DeviceDoc/20001952C.pdf
24C16 EEprom http://www.produktinfo.conrad.com/datenblaetter/1100000-1199999/001186004-da-01-en-IC_EEPR_16KBIT_M24C16_RMN6TP_SOIC_8_STM.pdf

 
RN-KeyLCD - RN-Wissen http://rn-wissen.de/wiki/index.php?title=RN-KeyLCD
I2C Portexpander RN-Wissen http://rn-wissen.de/wiki/index.php?title=RP6v2_I2C-Portexpander
Ansteuern von I2C-EEPROMS mit BASCOM http://rn-wissen.de/wiki/index.php?title=Bascom_und_I2C_EEprom
   
   


 
   
 
=> Willst du auch eine kostenlose Homepage? Dann klicke hier! <=