Forum: Mikrocontroller und Digitale Elektronik Daten über digitale pins übertragen


von Viktor (Gast)


Lesenswert?

Guten Tag,

habe folgendes Problem:

Ich möchte Daten (Zahlenwerte) zwischen einem µC (Arduino Nano) und 
einem Roboter (ABB 6 DOF) übertragen.

Leider hat der Roboter nur  je 10 digitale Ein- und Ausgänge zu 
Verfügung.
Je vier davon sind verwendet. Bleiben also je 6 digitale Ein-und 
Ausgänge.

Ich möchte aber Daten an den Roboter übermitteln.

Hat Jemand eine Idee wie man es machen könnte?

Die einfachste Möglichkeit die mir in den Kopf kommt ist die Verwendung 
eines D-FlipFlops mit einer Leitung für Chipselect und 5 Datenleitungen.
Das Problem ist, dass ich dann nur Zahlen von 0 bis 31 übertragen kann.
Das ist aber zu wenig.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Eine serielle Verbindung kommt je Richtung mit einer Signalleitung aus 
(Stichwort Soft-UART, wenn Du nicht die Hardware-UART Deines Arduinos 
nutzen möchtest/kannst) und kann beliebige Informationen übertragen.

von Chris (Gast)


Lesenswert?

Tja serielle Übertragung
1. bit 0 oder 1 setzen zweite Leitung auf High setzen bit wird 
eingelesen
2. links oder rechts shiften
3. zweite Leitung auf Sprung zu 1

 Anzahl der Leitung 2 aber mal nur so gefragt der hat doch auch ne UART 
oder sind die Pins dafür schon vergeben??

von Joe S. (bubblejoe)


Lesenswert?

Einen seriellen Bus statt parallel nutzen.

von Viktor (Gast)


Lesenswert?

Den Roboter kann man um UART erweitern (aktivieren). Man hat mir gesagt, 
dass es ca. um die 1500 Euro kosten wird. Außerdem finde ich in der Doku 
von RobStudio (Software des Roboters) nirgendwo Funktionen für UART. 
Wahrscheinlich bekommt man diese nach der Aktivierung mitgeteilt.

Deswegen versuche ich es auf eine andere Art.

Der µC hat eine UART Schnittstelle aber die Benutze ich um den Status 
des µC abzufragen.

Das mit der seriellen Verbindung, wird die Lösung sein. Danke!
Werde mir gleich ein paar Gedanken machen.

von c-hater (Gast)


Lesenswert?

Viktor schrieb:

> Hat Jemand eine Idee wie man es machen könnte?

Dafür gibt es fast unendlich viele Möglichkeiten.

Als erstes wäre mal festzulegen, ob es eher auf einen möglichst geringen 
Verbrauch an Signalleitungen ankommt oder doch eher auf eine möglichst 
hohe Datenrate. Und es wäre festzulegen, ob eine unidirektionale oder 
bidirektionale Datenverbindung benötigt wird und im letzteren Fall noch, 
ob diese halb- oder vollduplex betrieben werden soll.

> Die einfachste Möglichkeit die mir in den Kopf kommt ist die Verwendung
> eines D-FlipFlops mit einer Leitung für Chipselect und 5 Datenleitungen.
> Das Problem ist, dass ich dann nur Zahlen von 0 bis 31 übertragen kann.
> Das ist aber zu wenig.

Unsinn. Wenn die Breite eines Datenwortes nicht reicht (egal wie breit 
es konkret ist), dann muß man halt mehrere solcher Datenworte für ein 
Datum übertragen.

Davon mal abgesehen scheint also eine unidirektionale Verbindung 
angestrebt zu werden. Bliebe nur noch zu klären, ob lieber mit möglichst 
wenig Signalen oder lieber möglichst schnell.

Wenn mit möglichst wenig Signalen, dann reicht genau eins. Womit wir bei 
OneWire oder einem ähnlichen Protokoll wären.

Wenn mit möglichst hoher Geschwindigkeit, würde man ein Strobe-Signal 
vorsehen und ein Ack-Signal und die verbleibenden vier Signale zur 
Übertragung von Nibbles, also 4Bit breiten Datenwörtern verwenden.
Also im Prinzip eine klassische LPT-Druckerschnittstelle, bloß mit nur 
vier statt acht Datenbits. Oder, fast genauso, die physische 
Schnittstelle eine SDHC-Karte mit maximaler Datenwortbreite.

Du scheinst rein garnix davon zu kennen. Also mach dich einfach mal 
schlau, wie sowas funktioniert.

von Viktor (Gast)


Lesenswert?

Vielen Dank für den Beitrag.

Die Schnittstellen an sich, sind mir schon bekannt.

Die Idee digitale Pins dazu zu nutzen um eine Schnittstelle selber zu 
erstellen, habe ich hier gefunden. Finde ich echt klasse.

Werde mir ersteinmal eine srielle Schnittstelle aus zwei Leitungen 
aufbauen und versuchen Daten zu übertragen.

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.