Forum: Mikrocontroller und Digitale Elektronik I2C programmierung lernen


von Georg (Gast)


Lesenswert?

Hallo!

Ich muss mich mit C Programmierarbeiten und I2C auseinander setzen.
Ansteuern möchte ich bistabile Relais mit einem coil.
Am Ausgang des Bistabilen Relais soll eine LED.

Wenn ich recht gesehen habe, könnte ich mit einem L293 4 bistabile 
Relais schalten?
Für den Schaltimpuls am L293 würde ich noch einen I2C Bauteil benötigen, 
das ich an einem Mikrocontroller anschließe.

Kann mir jemand eine Bauteileliste geben, die ich nutzen soll um einen 
Testaufbau zu machen?
Möchte gerne auf einem Board das aufbauen und die Steuerung aus Linux 
üben.

Ich muss mich mit der Hardware etwas auseinandersetzen ... Software ist 
eigentlich mein Kern.

Vielen Dank!

Georg

von Georg (Gast)


Lesenswert?

die Info hierzu habe ich hier gefunden:
http://www.mikrocontroller.net/attachment/preview/108012.jpg

Danke!

von Karl H. (kbuchegg)


Lesenswert?

Was du suchst, sind I2C Port Expander.

zb sowas hier
http://www.mikrocontroller.net/articles/Port-Expander_PCF8574

von Purzel H. (hacky)


Lesenswert?

>Möchte gerne auf einem Board das aufbauen und die Steuerung aus Linux
üben.

Einen I2C von einem controller ansteuern ist eine Sache, von einem 
Betriebssystem her eine andere Sache.
Lass das Betriebssystem  mal weg zum Beginnen.

von Karl H. (kbuchegg)


Lesenswert?

Sind die Relais Pflicht?

Denn wenn nicht: lass sie weg. verkompliziert nur alles, weil du dann 
einen Treiber für die Relais brauchst, wie zb den von dir erwähnten 
L293, der den Strom für die Relais aufbringt.

Ein PCF8574 kann 25mA gegen GND schalten. Das reicht für ein paar LED.

von Georg (Gast)


Lesenswert?

Hallo!

Perfekt, danke!
Dann habe ich auch gleich die Eingänge für die Rückmeldung.

Mit dem I2C Port Expander schalte ich den L293 welches wiederum das 
Relais schaltet(?)
Nun würde ich noch neben dem Mikrocontroller das selbe Relais mit einem 
"normalen" Taster schalten. Diese soll aber nicht über den 
Mikrocontroller laufen.

Zwischen I2C Port Expander und L293 bräuchte ich also ein "ODER" Glied 
(wie man in der Software sagen würde).
Einfach parallel schalten?

Danke!

von Georg (Gast)


Lesenswert?

Hallo!

Danke für die Antworten!
Ja, Relais muss "leider" sein, da dadurch die Rückmeldung wieder kommt 
die ich in den Mikrocontroller einlesen muss.

Ich würde das Carambola 2 Board nehmen ... Beispiele findet man.
Meine Aufgabe ist eben aus Linux die Relais zu schalten und den Status 
darzustellen. Laut einigen Seiten in Linux mittelschwer.
"Leider" benötige ich eine Minimumhardware um es zu testen.

Danke für Eure Hilfe(!)

von Karl H. (kbuchegg)


Lesenswert?

Georg schrieb:

> Nun würde ich noch neben dem Mikrocontroller das selbe Relais mit einem
> "normalen" Taster schalten. Diese soll aber nicht über den
> Mikrocontroller laufen.

Normalerweise eine ganz schlechte Idee.
Wenn möglich, lass alles über den µC laufen! Der µC hat die Relais unter 
seiner Kontrolle. Er und nur er darf da drann schalten.

Das heisst ja nicht, dass man extern dem µC nicht seinen Wunsch 
vortragen kann, dass das Relais zu schalten ist. Aber am Computer 
vorbei, ist bis auf den Fall einer Notabschaltung, meistens schlecht. 
Denn wie heisst es so schön: Viele Köche verderben den Brei. Und dieses 
'viele' beginnt bereits bei 2.

von Stefan F. (Gast)


Lesenswert?

@Georg
Ich habe Dir in diesem Thread:
Beitrag "Bistabiles Relais mit I2C und externen Taster"

bereits mehrfach geschrieben, dass das bistabile Relais für diese 
Aufgabe ungeeignet ist.

Weiterhin hatte ich Dir den ULN2003 als Treiber empfohlen.

Willst du trollen?

Georg hat folgendes vor:
Über acht Taster möchte er acht Verbraucher im 230V Netz ein und aus 
schalten. Einmal drücken -> ein, nochmal drücken -> aus. Zusätzlich 
möchte er die Schaltimpulse über einen I²C Bus auslösen und den 
aktuellen Status zurück melden. Der Status soll auch per LED angezeigt 
werden.

Ich habe ihm dazu Stromstoß-Schalter empfohlen. Die wollte er nicht, 
weil er keine mit Rückmeldekontakt gefunden hat.

Daraufhin habe ich ihm gezeigt, wie er welche mit Rückmeldekontakt über 
Google findet.

Die wollte er dann wieder nicht, weil nicht für Printmontage gedacht 
sind.

Daraufhin habe ich ihm ein Stromstroß-Relais für Printmontage (von 
Conrad) empfohlen. Außerdem habe ich ihm eine Optokoppler + LED 
Schaltung gegegen, mit der er den Status zurück melden kann.

von Karl H. (kbuchegg)


Lesenswert?

Stefan us schrieb:
> @Georg
> Ich habe Dir in diesem Thread:
> Beitrag "Bistabiles Relais mit I2C und externen Taster"

Ach, der war das!

Ich bin trotzdem immer noch der Meinung, dass dieses ganze 'ich will am 
Computer vorbei schalten können' der falsche Ansatz ist. Macht alles nur 
unnötig kompliziert.

Direkt an den Relais sitzt ein µC der die Oberaufsicht über die Relais 
hat. Er und nur er ist befugt, die Relais zu schalten (egal was das dann 
konkret für Relais sind). Ob der dann seine Kommandos von externen 
Tastern, Schaltern oder auch anderen Computern (per Netzwerk, WLAN, I2C, 
RS2332, ... wie auch immer) kriegt, ist dann wurscht. Bei Bedarf gibt 
der auch Auskunft darüber, wie die Relais gerade stehen und macht dann 
auch noch die Anzeige des Relais-Zustandes an den LED. Aber dieser ganze 
Kram mit 'externe Schalter können auch so die Relais schalten und 
deswegen braucht es dann wieder eine Rückmeldung' ist doch ausser 
kompliziert nur noch kompliziert. 'Geradlinige' Systeme, bei der es eine 
zentrale Stelle gibt über die alles läuft haben sich nicht nur in 
Software bewährt. Nicht ohne Grund gibt es in Firmen zb Lagerverwalter 
und die Parole, dass sich nicht einfach jeder am Lager bedienen kann wie 
er lustig ist sondern über den Lagerverwalter als zentrale Stelle laufen 
muss. Die Relais als diese zentrale Stelle anzusehen, sorry, da sind mir 
die Relais nicht 'intelligent' genug und zu unflexibel.

Meine Meinung.

: Bearbeitet durch User
von Georg (Gast)


Lesenswert?

Hallo Stefan!

Du hast natürlich recht und bitte denk nicht das ich deine Hilfe nicht 
sehr schätzen würde(!)

Da ich auf dem Gebiet kompletter Laie bin freue ich mich für jede Hilfe.
Vermutlich habe ich es selbst noch nicht erkannt, warum es mit den 2 
Bauteilen kein bistabiles Relay schalten kann. In dem Beitrag wird ja 
explizit dies so genannt.

Was passiert mit deinem Vorschlag, wenn keine AC Spannung am Relay 
anliegt?
Erhalte ich dann ein Feedback zum einlesen?

Gerne trage ich deinen Vorschlag weiter. Ich habe auch schon TE 
Connectivity angeschrieben/gerufen um ein Stromstossrelais zu bekommen.
Möchte aber nicht nur Conrad als Lieferant haben. Bei Bistabilen Relais 
ist eben die Auswahl und Anbieter entsprechend höher!

Nochmals sorry falls du denkst, ich ignoriere deine Hilfe oder schätze 
dies nicht. So soll das nicht hier stehen bleiben!

von Georg (Gast)


Lesenswert?

Hallo Karl Heinz!

Ich möchte dir erstmal Recht geben.
Als zweites muss ich noch eine Info nachreichen:
Den externen Taster über das Carambola Board zu machen geht nicht, weil:
a) Bootzeit des Board viel zu lang. Man muss sofort nach 
Betriebsspannung schalten können
b) Fehlerhafte Software von mir würde den Ausgang nicht mehr schalten 
lassen.

Gerne kann der Taster in der Elektronik soweit nach hinten rutschen wie 
möglich. Aber nicht am Mikrocontrollerboard.

Liebe Grüße!

von Karl H. (kbuchegg)


Lesenswert?

Georg schrieb:
> Hallo Karl Heinz!
>
> Ich möchte dir erstmal Recht geben.
> Als zweites muss ich noch eine Info nachreichen:
> Den externen Taster über das Carambola Board zu machen geht nicht

Ich hab ja zum Schluss gar nicht mehr darüber gesprochen, dass das der 
Carambola machen soll. Der Leib und Magenprozessor des Forums hier, ein 
AVR, macht das bereitwillig und der ist ein paar Tausendstel Sekunden 
nach Anlegen der Spannung da.

> b) Fehlerhafte Software von mir würde den Ausgang nicht mehr schalten
> lassen.

:-)
Dagegen lässt sich aber was tun.

: Bearbeitet durch User
von Karl H. (kbuchegg)


Lesenswert?

Karl Heinz schrieb:

> Ich hab ja zum Schluss gar nicht mehr darüber gesprochen, dass das der
> Carambola machen soll. Der Leib und Magenprozessor des Forums hier, ein
> AVR, macht das bereitwillig und der ist ein paar Tausendstel Sekunden
> nach Anlegen der Spannung da.

Aus welchem Grund gibt es eigentlich diesen Carambola?

Man kann ihn natürlich nehmen, keine Frage.
Aber für das Schalten von 8 Verbraucher eine 2.4Ghz CPU einsetzen?
Ok, wenn du das Teil schon hast und zb WLAN brauchst, sieht die Sache 
etwas anders aus, aber das könnte ein Arduino mit WLAN Shield genauso 
und bei dem musst du dich nicht erst mit Linux rumschlagen und so ganz 
nebenbei wäre dann auch I2C damit obsolet geworden :-)
Es ist nicht immer schlau, da einen derartigen Boliden einzusetzen, wenn 
es ein Schubkarren auch tut.

: Bearbeitet durch User
von Georg (Gast)


Lesenswert?

Hallo Karl Heinz!

Tja, AVR ist hier sicher besser, jedoch spielen andere Faktoren noch 
eine Rolle:
a) 2x Ethernet
b) IPv6
c) SNMP Protokoll

Daher der Kompromiss für mich ein Carambola zu nehmen. Einschränkungen 
eben bei Boot und anderen Dingen, aber kann ich selber machen.

Einen AVR Netzwerkfähig mit IPv6 und SNMP zu bekommen würde mich einige 
Tausend Euro kosten, da ich dann Software nicht selber machen kann :-(

Bei b)
:-) ... tja Software kann mal Probleme machen.

von Georg (Gast)


Lesenswert?

Ja, Arduino habe ich auch geprüft.
Es gibt IPv6 mit einem passenden Ethernet Chip ... einen 5-Port "China" 
Switch habe ich schon bei mir liegen der eigentlich funktioniert.

Wlan ist nice to have ... aber nicht wichtig.

Arduino mit IPv6 und SNMP habe ich mich nicht drüber getraut.

von Georg (Gast)


Lesenswert?

Andererseits könnte ich mit Arduino einen UDP Server bauen, der nur 
einen Teil von SNMP unterstützt.
Ich muss ja nur die Relais schalten und den Status rück melden.

Du würdest dann Arduino mittels I2C die Tasten anhängen und den Arduino 
die Schaltung machen lassen?

Muss ich nochmal suchen ob ich für Arduino die IPv6 schaffe.

von deathfun (Gast)


Lesenswert?

Hallo,

ich bin auch für die Lösung der Zentralen Steuerung und gegen 
"parallele" Schaltwege. Schnapp dir einen AVR der als Gehirn den Zustand 
deiner Aktoren überwacht und bei Bedarf jedem der will Auskunft gibt.

Bus ------> |AVR| ---> Relais
Schalter -> |___|



Gruß
deathfun

von deathfun (Gast)


Lesenswert?

Ahhh vergessen:

Wenn du Ethernet brauchst:

Pollin AVR NET IO
ca. 20€ mit Ethernet und Atmega32




Gruß
deathfun

von Georg (Gast)


Lesenswert?

Hallo!

Welcher AVR wäre als Laie passend?

In Summe sollten:

8x Relais geschaltet werden
8x der Status der Relais zurückgemeldet werden
2x normale LED als Status
8x Taster für die Relais
2x "externe" 12V Relais (Monostabil)

Danke!

von Stefan F. (Gast)


Lesenswert?

> 2x normale LED als Status
Ich dachte, die LED's sollen den Status der Relais anzeigen. Brauchst du 
dann nicht 8 oder 16 LED's?

Erkläre doch mal, warum du monostabile Relais verwenden willst.

> 2x "externe" 12V Relais (Monostabil)

Zusätzlich zu den 8 Relais? Also insgesamt 10 relais, aber nur 8 davon 
mit Rückmeldung und Taster?

von Oliver S. (oliverso)


Lesenswert?

Georg schrieb:
> Ich muss

Noch Fragen ?

Oliver

von deathfun (Gast)


Lesenswert?

Hallo Georg,

da hier keine wirkliche Arbeit durch den uC geleistet werden muss 
(insgesamt 28EAs) würde bereits die kleinsten Modelle mit Expander 
reichen.

Empfehlen würde ich dir jedoch das Pollin Board mit Portexpander.

Grund:
-Günstig
-Ethernet onBoard
-kleiner Webserver schon dabei
-Bereits fertig Montiert zu bekommen
-Fertiges, öfters schon verbessertes, Board
-Atmega32 zur not gegen 644 oder 1284 aufrüstbar
-Communityprojekte (zb. von Ulrich oder Ethersex)



Gruß
deathfun

von Stefan F. (Gast)


Lesenswert?

Um auf deine ursprüngliche Frage in diesem Thread nochmal zurück zu 
kommen:

Als ich I²C programmierung lernte, benutzte ich zuerst einen PCF8574 mit 
LED's, den ich an den Parallel-Port meines PC angeschlossen hatte.

Das I²C Protokoll hatte ich dann per Software emuliert (Bit-Banging).

Danach hatte ich einen EEPROM-Chip mit I²C Bus angeschlossen, da 
funktioniert die Adressierung etwas anders.

Ich denke, es ist beim Lernen hilfreich, die beiden Leitungen SCL und 
SDA man ganz "zu Fuß" anzusteuern.

von Stefan F. (Gast)


Lesenswert?

> Empfehlen würde ich dir jedoch das Pollin Board

Das Pollin Board hat kein IPv6 und nur einen Ethernet Port. Er will zwei 
Ports, mit Switch und IPv6.

Ich denke, der PCF8574 ist keine schlechte Wahl. Und wenn er wirklich 
bistabile Relais mit nur einer Spule verwendet, ist die Idee, einen 
Motortreiber zu verwenden gar nicht dumm.

Es geht auch mit einfacher Spannungsversorgung (ohne negative Spannung) 
:
1
                     _________
2
                    |         |  470µF   Relais
3
µC oder PCf8574 o---| Treiber |---||----XXXX---- GND
4
                    |_________|  +  -

von Georg (Gast)


Lesenswert?

Hallo Stefan!

Sorry für die Verwirrung. In Summe und als Erklärung:
8x Bistabile oder Stromstossrelais mit 8A 230V~
Grund: Die Position muss bei Spannungsabfall der Spule erhalten bleiben

8x Taster für oben
Grund: Manuelle Notbedienung

8x LED für oben
Grund: Damit man weiß ob der Ausgang (Relais) ein oder aus ist.

2x 12V= Ausgang für externe Relais
Grund: Ich möchte optional externe Hutschienen Relais (Beispiel Finder 
mit 16A) dranhängen. LED Anzeige benötige ich nicht. Auch keine 
Notfallbedienung

1x Power LED
Grund: System wird mit Spannung versorgt

1x Running LED
Grund: Connect an übergeordneter Sender ist vorhanden (Netzwerk)

Alles soll über SNMP geschalten und gemeldet werden. IPv6 ist als 
Grundlage zu sehen (Der Grund dahinter ist komplexer und muss denk ich 
auch nicht weiter erklärt werden :-) )
Ich benötige also einen UDP (SNMP) Server/Client der die Befehle aus dem 
Netzwerk entgegen nimmt und an die Hardware "weiterreicht".


Ich möchte also eine kleine Applikation schreiben, der diese genannte 
Hardware steuert.


Da ich selbst kein Engineer bin, dachte ich, mit einem fertigen Board 
die Software schreiben zu können und jemand baut mir die Elektronik.
Jedoch benötige ich für die Software eine Minimal Hardware zum üben. 
Natürlich vorteilhaft wenn der Aufbau dem Endprodukt ähnelt.

Jedoch vor allem zum üben!

von Stefan F. (Gast)


Lesenswert?

> Grund: Manuelle Notbedienung

Das spricht ja wiederum für die Stromstoßschalter, denn dann 
funktionieren die Taster weiterhin, wenn die Steuerung defekt ist.

Meine Rückmledeschaltung mit Optokoppler und LED würde den Status an der 
LED auch anzeigen, wenn der Mikrocontroller ausgefallen oder gar 
Stromlos ist.

Vielleicht finde ich die Variante mit Stromstroßschalter auch nur 
deswegen so attraktiv, weil ich das schon zweimal in realen 
Licht-Schalt-Anlagen so umgesetzt habe.

von Georg (Gast)


Lesenswert?

Stefan us schrieb:
> Das Pollin Board hat kein IPv6 und nur einen Ethernet Port. Er will zwei
> Ports, mit Switch und IPv6.

Ich habe für Arduino das gefunden:
https://sites.google.com/site/ghoelzl/ipv6ethershield

Das Pollin Board hätte zwar den selben Chip, aber dann muss ich noch 
einen Switch dahinterhängen.
Wobei die 2 Eth Ports vom Carambola auch einen Kompromiss darstellen:
Linux Bridge und kein echter Switch.

@deathfun
Welchen Portexpander meinst du?

von Georg (Gast)


Lesenswert?

Aber zusammenfassend:
1. PCF8574 mit nachfolgend 2x L293 wäre zum schalten der Relais 
möglich(?)

bzw.
2. AVR mit nachfolgend 2x L293 als Alternative?


ZU 1.
Dann müsste ich mehrere PCF8574 zusammenhängen um auf die Anzahl zu 
kommen:
10x out (8x Relais, 2x LED)
Hinweis: Die LED für die Relais Anzeige würde ich wie hier erfahren 
habe, mit einem 2 poligen Schließer Relais machen und die LED über den 
2. Kontakt führen. So muss ich die nicht auch noch steuern.

8x in (8x Handschalter für Relais)


Arduino mit I2C oder Carambola mit I2C wäre dann am Anfang zu setzen für 
IP

ZU 2.
Sofern der AVR mit IPv6 zu betreiben ist, wäre es eine Alternative

von Georg (Gast)


Lesenswert?

Gerade gefunden:
http://www.ethersex.de/index.php/Ethersex_(Deutsch)

Auszug:
unterstützt Atmega 8,16,32,64,128,644 und viele mehr
nutzt den Ethernet-Controller ENC28J60
leicht anzupassen und zu erweitern um deine Anforderungen zu erfüllen

Protokolle:
TCP/IP IPv4/IPv6
OpenVPN
Software USB stack
RFM12 / RFM12B (433 MHz / 868 MHz)
i²c Master (Untersützung zahlreicher Chips) / Slave
onewire
http server
kann mit dem Ethersex Command Protocol (ECMD) ferngesteuert werden

Wenn ich also das Board hole und einen ATmega644-20PU draufstecke, wäre 
ich meinem Ziel schon näher?

Danke!

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.