Forum: Mikrocontroller und Digitale Elektronik IO-Module an eigenem Bus mit ATMEGA


von Thorsten K. (rastlos)


Angehängte Dateien:

Lesenswert?

Hallo erstmal.

Mein Spezialgebiet ist eindeutig die Software, aber ich möchte mich 
jetzt ein wenig mit ATMEL Mikrocontrollern beschäftigen. Da ich in für 
ein kleines Automatisierungsprojekt bei mir zu Hause eine I/O Steuerung 
für den PC brauche, sehe ich das als den idealen Einstiegszeitpunkt.
Ich habe mich schon intensiver mit dem Forum hier befasst und mir selbst 
schon ein kleines Bild davon gemacht, aber ich bin kein Profi und man 
möge es mir verzeihen, wenn meine Fragen etwas "dumm" anmuten sollten.

Ich habe vor einen kleinen IO-Controller zu entwickeln, der maximal 64 
Inputs bzw Outputs verwalten kann. Die In- oder Outputs sollten in 8er 
Schritten wählbar sein, wobei nicht vorgeschrieben ist, wieviele der 8er 
Input- oder Output-Platinen jeweils genutzt werden (ich möchte das 
System nachträglich aufrüsten und weiss noch nicht genau wie sich der 
Bedarf entwickeln wird). Ob ein In- oder Output-Modul an der jeweiligen 
Select-Leitung hängt, wird vorher im MC festgelegt.

Die Module sollten mit einfacher Verkablung verbunden sein - 
idealerweise mit YTSY oder einfachem Flachbandkabel, aber die Länge der 
einzelnen Kabel kann durchaus mal 3-4m betragen - I2C scheidet also 
wahrscheinlich aus.
Ich habe mir deshalb folgendes System überlegt, das den PORTC am ATMEGA 
als 8-bit I/O-Bus nutzt und über einen anderen Port 8 "Select-Leitungen" 
zur Verfügung stellt.

Die Signale werden parallel und nicht allzu häufig abgefragt bzw. 
gesendet, so dass ich vermute, dass keine HF-Störungen zu befürchten 
sind.
Was ich mich frage ist, ob bei entsprechenden Leitungslängen Bustreiber 
notwendig sind und ob bei der Beschaltung noch zusätzliche Dinge 
beachtet werden sollten.

Ich habe einen schematischen Entwurf einmal angehängt.

Vielen Dank für eure Antworten schon einmal vorab.

von Ralf (Gast)


Lesenswert?

Hi,

also, ich würde nicht sagen, dass I2C ausscheidet. Es gibt ja auch 
entsprechende Bustreiber, die die Maximalkapazität auf das 10-fache 
steigern. Such hierzu z.B. mal nach dem P82B715.

Ich würde generell eine serielle Übertragung bevorzugen, weil man da ja 
ein abgeschirmtes Kabel verwenden kann, bei I2C also eine Leitung mit 
vier Adern,
was wiederum der Störunanfälligkeit zugute kommt. Nicht zu vergessen, 
dass du je nachdem, was an den Outputs hängt, ja auch ziemlich dicke 
Querschnitte brauchst.

Dein System bräuchte dann schonmal mindestens 18 Adern (VCC/GND nicht 
vergessen).

Ausserdem gibts I2C Port-Expander, welche sowohl Ein- als auch Ausgänge 
sein können, das ganze bisweilen sogar bitmäßig konfigurierbar. Ein 
entsprechender Chip wäre der PCA9534.
Desweiteren hättest du bei I2C den Vorteil, dass du z.B. ein EEPROM auf 
jedes Modul bringen könntest, welches dem Controller sagt, um was für 
ein Modul es sich handelt -> fällt bei den bidirektionalen Expandern 
natürlich wieder weg :)

Unabhängig davon, ob du seriell/parallel arbeitest, wäre evtl. eine 
galvanische Trennung der Ein-/Ausgänge von Vorteil, bedeutet aber dass 
du die Module separat versorgen musst. Auf jeden Fall aber würde ich 
Schutzelemente einbauen, z.B. Transzorber-Dioden, um Spitzen usw. 
abzuleiten.

Ralf

von Thorsten K. (rastlos)


Lesenswert?

Vielen Dank für die Antwort.

Das mit dem P82B715 hört sich schon einmal sehr vielversprechend an und 
der IC ist gut verfügbar.
Ich habe mich wohl noch nicht intensiv genug mit I2C beschäftigt, aber 
mir kommt gleich eine Frage in den Sinn:
Sollte man bei I2C den Bus bei allen Modulen durchschleifen, alle Module 
sternförmig an die Controller-Platine anbinden oder ist das egal?

Den PCA9534 finde ich weder bei Reichelt / Conrad noch bei Schuricht - 
bei Farnell gibts den nur ab 1000 Stück Mindestabnahme und dann auch 
nicht als Lagerware - gibt's da irgendwo eine gute Quelle?

Meine Angaben waren leider auch etwas missverständlich. Der Schaltplan 
sollte nur das Grundgerüst des Busses darstellen. Für die "richtigen" 
I/Os ist auf den Input-Boards der MCP3700 (AC/DC Optocoupler mit 
definierbarem Threshold und integrierter Konstantstromquelle für die LED 
bei 3V DC bis 250V AC Toleranz) und auf den Output-Boards jeweils ein 
UDN2981 mit Relais vorgesehen.
Den Logikteil wollte ich dabei trotzdem noch komplett von der 
Hauptplatine aus versorgen und die 5V Stromversorgung also mit über das 
"Datenkabel" führen. Die I/Os selbst (also Optokoppler-Eingäng und 
Relais-Ausgänge) werden über Schraubklemmen potentialfrei ausgeführt.
Oder ist es auch bei dieser Anwenung noch sinnvoll jedes einzelne 
i/O-Modul mit einer eigenen Stromversorgung aufzubauen (ein 
Steckernetzteil kostet ja auch nicht die Welt)?

Thorsten

von Jojo S. (Gast)


Lesenswert?

Zum Thema Porterweiterungen gäbe es hier etwas mit billigen 
Standardbauteilen: 
http://www.mikrocontroller.net/articles/Porterweiterungen
Für längere Strecken müsste man sich noch Treiber dazudenken. Aber 
generell braucht man für eine Hausautomatisierung ein grösseres Konzept 
ich würde mir die Busse ansehen die dafür hier im Unterforum 
http://www.mikrocontroller.net/forum/hausbus auch schon lange diskutiert 
werden. Schwieriger wird meist auch das Ganze Störungsfest 
hinzubekommen.

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.