ich beschäftige mich momentan mit zwei Arduino Due Boards. Ich möchte gerne einen digitalen Ausgang des einen mit einem digitalen Eingang des anderen Arduino Boards verbinden. Nun frage ich mich ob dies ohne Vorkehrung funktioniert?
Das Problem ist bei mir, das Arduino Board, welches den digitalen Eingang besitzt wird von Personen nachher programmiert. Nun könnte es ja sein, das diese den Eingang als Ausgang definieren. Kann das Board dadurch irgendwelche Schäden davon tragen? Kann ich den Schaden durch Vorkehrungen, z.B. Begrenzung des Stroms durch Widerstand vermeiden.
Wie ist das, wenn ich ausversehen beide als digitalen Eingang setzte?
Optokoppler dazwischen. Welches ist das andere Board? Wenn es kein Due ist, gibt es allein schon Probleme mit den unterchiedlichen Spannungen. I2C wäre hier eine deutlich bessere Lösung oder direkt über die Serielle Schnittstelle.
Ist auch ein Arduino Due Board. An Optokoppler habe ich gar nicht gedacht danke, das wäre natürlich eine gute Lösung.
Den Optokoppler benötige ich auch wenn ich eines der DAC0/1 Ausgänge mit einem Analogen Eingang des anderen Mikrocontroller verwende richtig?
Gibt es eine Lösung auch für ein PWM Ausgang in ein Analogsignal zu wandeln? Ich habe einen IC gesehen, bei LTSpice die soetwas machen, allerdings habe ich keinen zum Kaufen gefunden. Der Due PWM Ausgang hat ja eine Auflösung von 8 Bit, erreiche ich mit einem passiven Tiefpass 1. Ordnung diese Auflösung auch am analogen Eingang des anderen Boards?
Hintergrund:
Mein Aufbau soll eine Simulationsumgebung schaffen. Der eine Mikrocontroller wird dann zum Programmieren von Anwendern verwendet und der andere simuliert diese Umgebung. Die Umgebung gibt verschieden digitale und analoge Sensorwerte zurück.
Außerdem soll ein in der Simulationsumgebung vorhandener Motor per PWM gesteuert werden. D.h. der Anwender programmiert ein PWM Signal, welches auch aus dem Board so an einem Pin ausgegeben wird. Dieses Signal soll dann von dem Simulationsboard verwertet werden, ich dachte dabei an eine PWM Analog Konvertierung um somit die Geschwindigkeit des Motors zu verändern. Je nach Spannungswert wird dann die Geschwindigkeit berechnet.
Wie gesagt das vernünftigste wäre eine Kommunikation über die serielle Schnittstelle oder I2C. Da kannst du dir ein Kommunikationsprotokoll basteln dass die Werte von bestimmten Pins überträgt. z.B. drei Bytes: Pin Nummer / Wert High / Wert Low
Die anderen Sachen gehen zwar auch theoretisch ist aber irgendwie Pfusch wenn man digitale Schnittstellen hat
Wenn ein Ausgang mit einem Eingeng verbunden wird können sie direckt verbunden werden.
Wenn die Gefahr besteht, daß 2 Ausgänge zusammengeschaltet werden könnten, dann verbinde die beiden Pins mit einem 1,5kOhm Widerstand ( oder leicht größer). So bliebt der Strom unter einem gefährlichen Wert auch wenn 2 Ausgänge unterschiedliche Level haben.
Ein Optokoppler isoliert die beiden Arduinos, schützt aber nicht davor daß ein Pin als Ausgang statt Eingang deklariert wird.
Um ein PWM Signal in ein Analogspannung zu wandeln braucht es ein RC Glied. Auf die schnelle weiß ich aber nicht welche Werte am besten funktionieren.
Der Due PWM Ausgang hat ja eine Auflösung von 8 Bit, erreiche ich mit einem passiven Tiefpass 1. Ordnung diese Auflösung auch am analogen Eingang des anderen Boards?
wenn der Tiefpass richtig dimensioniert ist würd ich ja sagen.
Könnte der Threadersteller bitte etwas genauer beschreiben, wofür sein Vorhaben genau gedacht ist? Ich denke hier liegen mangelhafte Kenntnisse mit µC vor. Vermutlich macht nach derzeitigen Kenntnisstand der erste Due (der nicht von anderen Programmiert wird) nichts anderes, als die einzelnen Pins abzufragen und entsprechend dazu was zu machen. Vermutlich hängen da hinter kleine Prototypen (Förderstrecke oder sonstiges). Wenn dass der Fall ist, nehm anstatt des Dues eine Platine und baut euch eine Adapterplatine, sodass ihr mit den Prototypen nur noch eine Kabelverbindung (flachkabel) aufbauen müsst.
sschultewolter:
Könnte der Threadersteller bitte etwas genauer beschreiben, wofür sein Vorhaben genau gedacht ist? Ich denke hier liegen mangelhafte Kenntnisse mit µC vor. Vermutlich macht nach derzeitigen Kenntnisstand der erste Due (der nicht von anderen Programmiert wird) nichts anderes, als die einzelnen Pins abzufragen und entsprechend dazu was zu machen. Vermutlich hängen da hinter kleine Prototypen (Förderstrecke oder sonstiges). Wenn dass der Fall ist, nehm anstatt des Dues eine Platine und baut euch eine Adapterplatine, sodass ihr mit den Prototypen nur noch eine Kabelverbindung (flachkabel) aufbauen müsst.
Es werden verschiedene Szenarien auf dem Simulationsboard laufen. Genau deshalb haben wir uns für zwei Mikrocontroller entschieden. Momentan entwickel ich mehrere Szenarien eine Förderbandanlage ist auch dabei zudem noch eine Abfüllanlage mit mehreren Behältern. Vom Ablauf her ist es genau so ich frage zyklische meine Eingänge ab und berechne anschließend die benötigten Daten. Diese werden dann an die Ausgänge je nach Sensor dementsprechend ausgegeben und auch auf einem Display angezeigt.
Momentan bin ich am Designen der Platine die sich zwischen beiden Boards befindet. Um diese dann über Flachband oder ähnliches mit einander zu verbinden.
interessantes Projekt! Würde ich auch gerne umsetzen
I2C ist natürlich unpassend, da es ja gerade darum geht, möglichst viele Pins individuell zu verbinden.
Der Weg zur Lösung dürften Optokoppler sein. Klar ist aber auch, dass die Optokoppler für Eingänge in die eine Richtung und für Ausgänge in die andere Richtung "koppeln" müssen. Da an Hand der Anlage ja klar ist, was ein Eingang und was ein Ausgang ist, könnte man die pro Kanal richtig anordnen (in der Anlage wird ja aus einem Endlagen-Taster nicht plötzlich ein Motor werden )
Ich würde aber noch einen Schritt weiter gehen und pro Kanal zwei Optokoppler vorsehen (für jede Signalfluss-Richtung einen) und die im einfachsten Fall per Jumper "umschalten". So kannst Du das Board bei welchselndem Anlagen-Aufbau "umkonfigurieren".
Noch komfortabler wäre es natürlich, die Optokoppler ebenfalls per DUE zu schalten. Alternativ würde ich dafür aber statt dem DUE einen DigiX nehmen. Der hat mehr Pins. So kann man alle Pins des "Steuerungs-DUE" mit denen "Anlagen-DigiX" verbinden und die überschüssigen steuern zum Beispiel per Schiebe-Register die Optokoppler.
Danke für die hilfreichen Informationen ich bin nun einiges weiter gekommen!Hat mir sehr weitergeholfen!
Noch eine Frage kurz, ich verwende das Display TFT 1.8 das man über SPI ansteuern kann. Nur ich hab nun bis jetzt noch nicht gefunden wofür der D/C Anschluss verwendet wird?