Forum: Mikrocontroller und Digitale Elektronik Richtigen Datenbus gesucht


von Darvin D. (darvin_d)


Lesenswert?

Hallo Zusammen,

ich habe einen 3D Drucker (Ultimaker 2) und möchte daran einige 
Modifikationen machen.

Wenn man das System vereinfacht, besteht es soweit ich es verstanden 
habe aus:

- 3 Motoren (Aktoren)
- 1 Endanschlag (Sensor)
- 1 Temperaturerfassung des Extruders (Sensor)
- 1 Ansteuerung
- 1 Leistungselektronik


Nun will ich jeden Sensor sowie Aktor "intelligent machen" um so 
einfacher einen Motor bzw. einen neuen Sensor einzusetzen ohne permanent 
diese komponenten hart anpassen zu müssen. Was als Schritt zwei ein 
abgespecktes Design der Leistungselektronik zur Folge haben wird, da 
jedes Modul als einzelnes voll funktionsfähig über einen Bus sein soll.

Das Bedeutet:

Der Motor ist aktuell hart verkabelt mit der 
Leistungselektronik-Platine.

Im 1.ten Schritt:
Ich nehme den Motor + dazugehörige Leistungselektronik (Allegro 
Treiberbaustein) + Mikrocontroller (vorzugsweise Arduino da riesen 
Community) und verbinde dieses "Modul" mit der Steuerplatine, die auch 
mit einem Arduino bestückt, auf dem Bus die Richtung und die 
Schrittweite für den Motor in Form eines Datenpaketes angibt.

Sodass z.B. der Motor nur eine 12V Versorgung und den Bus als Anschluss 
hat.

Bei den Sensoren das gleiche:

12V bzw. 5V Versorgung und ein Bussignal an dem der Sensor anliegt, ich 
bin gerade so heiß.

D.h. ein Bus mit 12V, 5V, Datenleitung wird verlegt und alle 
Aktoren/Sensoren werden daran angeschlossen.

Das Ganze soll mir dienen einzelne Komponenten anhand meines Druckers 
auszutesten, wie z.B. den mechanischen Endanschlag durch einen 
induktiven Endanschlag zu ersetzen und den Motor durch einen stärkeren / 
schwächeren, falls ich anstatt Drucken auch mal Fräsen will.
Es soll quasi eine Spielwiese von Aktoren und Sensoren anhand meines 
X-Y-Z-Druck-Systems erfolgen.

Nun die konkrete Frage:

Ich willzu Beginn 5 Arduinos zu einem Bus verbinden und den Raspberry Pi 
als Steuerplatine verwenden und das ganze erstmal auf dem Tisch ohne 
Sensoren und Aktoren testen.

Welchen Bus würdet Ihr mir hierzu empfehlen?

Es sollte irgendwas sein, welcher auf 1m Distanz zu einem anderen 
"Modul" kommunizieren kann.

CAN ist der Nachteil, dass die schwachbrüstigen Elektroniken (Arduino) 
nicht von Haus aus CAN können -> d.h. entweder ich weiche von der 
Community mit viel Support ab und neehme einen speziellen Controller 
oder ich bastel CAN über SPI oder I2C dran, was ich als erste Lösung 
nicht sehr elegant finde.
SPI und I2C sind auch nicht wirklich für "lange Wege" geeignet.
Von der Busstruktur wäre es Sternförmig, da alle Module an die Steuerung 
berichten.

Ich steh gerade mit der Auswahl:

günstige Elektronik mit großer Community und überschaubaren Bus etwas 
auf dem Schlauch.

Vielleicht kann mir der ein oder andere von euch helfen.

Vielen Dank
Darvin

von Cyblord -. (cyblord)


Lesenswert?

Irgendwie muss ich bei so was immer denken: Wer hier bei einem solch 
doch recht ambitionierten Projekt, derart allgemeinen Quatsch fragen 
muss, kann es einfach nicht umsetzen und sollte es lassen.

von Operator S. (smkr)


Lesenswert?

Irgendwie muss ich bei so was immer denken: Wer hier bei solch
doch recht einfachen Fragen, derart allgemeinen Quatsch rauslassen
muss, sollte es einfach lassen.

Kleiner Spass, aber du weisst was ich damit sagen möchte.

von Darvin D. (darvin_d)


Lesenswert?

Danke für deine konstruktive Aussage.

: Bearbeitet durch User
von Darvin D. (darvin_d)


Lesenswert?

Wie gesagt,

ich habe versucht möglichst viel Background mitzuliefern und versuche 
das Problem Schritt für Schritt anzugehen. Bei der Auswahl des richtigen 
Datenbusses stehe ich etwas auf dem Schlauch. Ich würde mir gerne eine 
Art Matrix erstellen um anhand meinen Anforderungen den richtigen Bus 
auszusuchen.. genau das ist für mich gerade nicht greifbar wo ich 
ansetzen soll/muss.

von Klaus (Gast)


Lesenswert?

Darvin D. schrieb:
> Ich nehme den Motor + dazugehörige Leistungselektronik (Allegro
> Treiberbaustein) + Mikrocontroller (vorzugsweise Arduino da riesen
> Community) und verbinde dieses "Modul" mit der Steuerplatine, die auch
> mit einem Arduino bestückt, auf dem Bus die Richtung und die
> Schrittweite für den Motor in Form eines Datenpaketes angibt.
>
> Sodass z.B. der Motor nur eine 12V Versorgung und den Bus als Anschluss
> hat.

Das Problem bei solchen Systemen ist, daß die Teile zeitscharf, 
schrittgenau mit einander arbeiten müssen. Da wird das mit einem Bus 
recht anspruchsvoll.

MfG Klaus

von Cyblord -. (cyblord)


Lesenswert?

Operator S. schrieb:
> Irgendwie muss ich bei so was immer denken: Wer hier bei solch
> doch recht einfachen Fragen, derart allgemeinen Quatsch rauslassen
> muss, sollte es einfach lassen.
>
> Kleiner Spass, aber du weisst was ich damit sagen möchte.

Na dann hilf dem TE doch einfach. Das Problem: Der Datenbus ist nicht 
das Problem des TE.
Bei 1m kann man so ziemlich alles nehmen. I2C geht, SPI geht, RS232, 
RS485, CAN, Ethernet was man will. Aber DANN fangen die Probleme doch 
erst an. DANN kommt das Protokoll. Und danach die "Intelligenz" in den 
einzelnen Modulen. Wer hier aber schon so rumeiert bevor er überhaupt 
angefangen hat, und wenn ich dann noch Arduino höre (und raushöre dass 
damit wenig Erfahrung vorhanden ist), dann weiß ich dass da Hopfen und 
Malz verloren sind.
Die Frage nach dem Bus ist eigentlich die einzige die sich nicht stellt.

> Das Problem bei solchen Systemen ist, daß die Teile zeitscharf,
> schrittgenau mit einander arbeiten müssen. Da wird das mit einem Bus
> recht anspruchsvoll.
Darum gibt es IRT bei einigen Feldbussen. Also eine zeitliche 
Deterministik bis zu den IOs. Ein Arduino-Nutzer sollte mit so was viel 
Spaß haben.

: Bearbeitet durch User
von Darvin D. (darvin_d)


Lesenswert?

Hallo,

Das hilft mir schonmal weiter mein Problem einzugrenzen/ zu verstehen. 
Danke.
Was sind denn die Stichwörter wonach ich den uC aussuchen soll.
Arduino sollte als Platzhalter für ein uC mit großer Community stehen. 
Dadurch, dass mein Vorhaben kniffelig ist will ich von vornherein nicht 
auf ein Nischenprodukt setzen, wo der Hauptteil meiner Arbeit nach dem 
Suchen von Support besteht.
Zeitkritisch wäre nur die anstuerung von X-Z-Achsen Motoren.
Die Y-Achse (bewegt sich einmal kurz nach unten und der Druck in der 
X-Z-Ebene geht weiter).

Und die Sensoren (Endanschlag und Temperatur) werden am Start benötigt 
und während des Drucks eigentlich nicht ausgelesen. Wenn ich sie 
auslesen würde dann als nicht zeitkritische Info auf die reagiert werden 
kann/soll.

D.h. das zeitkritische spielt sich nur an den zwei Motoren ab sehe ich 
das richtig?
Darauf ist ein Bus auszulegen?

Viele Grüße
Darvin

von Cyblord -. (cyblord)


Lesenswert?

Darvin D. schrieb:
> Was sind denn die Stichwörter wonach ich den uC aussuchen soll.
> Arduino sollte als Platzhalter für ein uC mit großer Community stehen.

Genau das meine ich. Mit was hast du denn bisher gearbeitet? So was geht 
nicht von null auf hundert. Ich hoffe du hast schon einige 
Controllerprojekte abgeschlossen.

> Zeitkritisch wäre nur die anstuerung von X-Z-Achsen Motoren.
> Die Y-Achse (bewegt sich einmal kurz nach unten und der Druck in der
> X-Z-Ebene geht weiter).
Ich dachte die Z-Achse ist solchen Drucker die Achse die "nach unten" 
gehen kann. Also die Höhe des Druckkopfes. Oder hast du ein anderes 
Koordinatensystem?

>
> D.h. das zeitkritische spielt sich nur an den zwei Motoren ab sehe ich
> das richtig?
> Darauf ist ein Bus auszulegen?

Nun du sprichst von einem modularen flexiblen System. Also musst du den 
Bus auf alle Eventualitäten also eben allgemein auslegen. Du brauchst 
ein allgemeines Konzept um zeitkritische Informationen zu übertragen.
Dazu kann man auch die Schritte vor ab übertragen und auf ein 
Startsignal (per Broadcast) führen alle Baugruppen diese Befehle 
selbständig aus.
Man kann sich an den Motion Modulen für Feldbusse orientieren.

Du willst ja dezentrale intelligente Module. Also müssen die natürlich 
Teilaufgaben autonom lösen, sonst bräuchtest du das alles ja nicht.

: Bearbeitet durch User
von beric (Gast)


Lesenswert?

Darvin D. schrieb:
> Nun will ich jeden Sensor sowie Aktor "intelligent machen" um so
> einfacher einen Motor bzw. einen neuen Sensor einzusetzen ohne permanent
> diese komponenten hart anpassen zu müssen.

Was heisst denn für dich "hart anpassen"?

Ein einzelner Raspi soll an sich schon reichen um dein Drucker 
anzusteuern. Da brauchst du wirklich keine separate Arduinos für jeden 
Sensor und Aktuator. Das macht das Ganze nur komplexer, nicht einfacher.

Sinnvoller ist die Software für den Raspi so modular zu gestalten, dass 
die Softwareteile, die einen bestimmen Sensor oder Aktuator ansprechen, 
einfach austauschbar oder konfigurierbar sind.

von Darvin D. (darvin_d)


Lesenswert?

Cyblord -. schrieb:
> Darvin D. schrieb:
>> Was sind denn die Stichwörter wonach ich den uC aussuchen soll.
>> Arduino sollte als Platzhalter für ein uC mit großer Community stehen.
>
> Genau das meine ich. Mit was hast du denn bisher gearbeitet? So was geht
> nicht von null auf hundert. Ich hoffe du hast schon einige
> Controllerprojekte abgeschlossen.
>
Ja habe ich, bi gerade in einem Elektrotechnik Studium.
>> Zeitkritisch wäre nur die anstuerung von X-Z-Achsen Motoren.
>> Die Y-Achse (bewegt sich einmal kurz nach unten und der Druck in der
>> X-Z-Ebene geht weiter).
> Ich dachte die Z-Achse ist solchen Drucker die Achse die "nach unten"
> gehen kann. Also die Höhe des Druckkopfes. Oder hast du ein anderes
> Koordinatensystem?
>
Ok, das ist eine Koordinaten-System Frage:
Bei den Druckern ist tatsächlich die Z-Achse die Achse die nach unten 
führt und die ich mit der y-achse meine.
Ich habe das Koordinatensystem anders bezeichnet, da Standardmäßig Y 
hoch runter zeigt.
Aber bleiben wir bei der gewohnten X-Y-Ebene = Druckerebene
Z-Ebene = Hoch runter
>>
>> D.h. das zeitkritische spielt sich nur an den zwei Motoren ab sehe ich
>> das richtig?
>> Darauf ist ein Bus auszulegen?
>
> Nun du sprichst von einem modularen flexiblen System. Also musst du den
> Bus auf alle Eventualitäten also eben allgemein auslegen. Du brauchst
> ein allgemeines Konzept um zeitkritische Informationen zu übertragen.
> Dazu kann man auch die Schritte vor ab übertragen und auf ein
> Startsignal (per Broadcast) führen alle Baugruppen diese Befehle
> selbständig aus.
> Man kann sich an den Motion Modulen für Feldbusse orientieren.
>

Das ist ein sehr wichtiger Punkt! Eigentlich kenne ich ja jeden Schritt 
bis zum Ende, weil das Modell schon davor berechnet wird und nur die 
X-Y-Z-Koordinaten übertragen werden. Danke dass du das nochmal 
angesprochen hast.

: Bearbeitet durch User
von Darvin D. (darvin_d)


Lesenswert?

beric schrieb:
> Darvin D. schrieb:
>> Nun will ich jeden Sensor sowie Aktor "intelligent machen" um so
>> einfacher einen Motor bzw. einen neuen Sensor einzusetzen ohne permanent
>> diese komponenten hart anpassen zu müssen.
>
> Was heisst denn für dich "hart anpassen"?
>
Hart anpassen = hart verkabeln.
Ich will mir jetzt den Aufwand machen den Drucker modular zu gestalten, 
damit ich mich nachher ausschließlich auf eine modulare Komponente 
konzentrieren kann, die dann an den Bus angeschlossen wird und sich für 
das restliche System nicht anders verhält wie die davorgehende. Sodass 
ich vorerst nichts an der SW anpassen muss.

Bsp. Sensor:
Aktuell ist ein Endlagensensor dran, der eben noch ausgewertet werden 
muss und danach erkannt wird, ob etwas anliegt oder nicht.
Bringe ich jetzt die Auswerteelektronik räumlich zu dem Sensor hin und 
setzte danach einen uC hin der nur sagt Anschlag Ja/Nein kann ich diesen 
Sensor beliebig ersetzen, ohne dass ich irgend etwas an der SW, bzw, an 
der Auswertehardware im System selbst ändern muss.

> Ein einzelner Raspi soll an sich schon reichen um dein Drucker
> anzusteuern. Da brauchst du wirklich keine separate Arduinos für jeden
> Sensor und Aktuator. Das macht das Ganze nur komplexer, nicht einfacher.
>
> Sinnvoller ist die Software für den Raspi so modular zu gestalten, dass
> die Softwareteile, die einen bestimmen Sensor oder Aktuator ansprechen,
> einfach austauschbar oder konfigurierbar sind.
Das wäre der zweite Schritt, die SW modular anzupassen, sodass wenn ich 
meinen Druckraum vergrößern will ich drei strärkere Motoren einbinde und 
im system eine Variable ändere und der Drucker fährt weiter als er es 
bis jetzt tut. Aber erst einmal alles so belassen udn die komponenten 
ersetzen.

Viele Grüße
Darvin

von beric (Gast)


Lesenswert?

Darvin D. schrieb:
> Ich will mir jetzt den Aufwand machen den Drucker modular zu gestalten,
> damit ich mich nachher ausschließlich auf eine modulare Komponente
> konzentrieren kann, die dann an den Bus angeschlossen wird und sich für
> das restliche System nicht anders verhält wie die davorgehende. Sodass
> ich vorerst nichts an der SW anpassen muss.

Du wirst aber Software anpassen müssen. Nämlich die SW in deiner 
"Komponente" die den Sensor ausliest und dessen Wert(e) auf dem Bus 
legt.Und dann ist es Wurscht ob das in der SW am zentralen Raspi ist 
oder in deiner Komponente.

von Darvin D. (darvin_d)


Lesenswert?

Es gibt aber einen Unterschied:

Anhand meines Sensor Bsp.

Ein Sensor benötigt Zusatzelektronik damit dieser z.B. am ADC eingelesen 
werden kann.

Der Andere eben keine weil er vielleicht schon digital ist.

Das Bedeutet, bei einer zentralen Komponente wie dem PI, müsste ich bei 
Änderung eines Sensors, der eine andere Technologie besitzt:
Sowohl die SW im PI als auch die HW verkabelung im System anpassen und 
evtl auch eine andere Spannung verlegen.

Und zwar jedes Mal wenn sich ein Sensor in seiner Technologie mit dem 
gleichen Aufgabenbereich ändert.

Das umgehe ich indem ich den Sensor und Aktor nach außen immer die selbe 
Schnittstelle gebe und Sensor/Aktorintern die Anpassung mache.
Z.B. immer 12V hinführe und intern im Modul über einen DCDC Wandler die 
benötigte Spannnung generiere.

Ich kann mich also nur auf die Komponente begrenzen und muss nicht immer 
das ganze System anfassen. Aber unterm Strich gebe ich dir recht ist es 
das gleiche.

Aber anders umgesetzt.

Ich könnte auch im ersten Schritt damit leben, dass ich nur die Sensorik 
(Endanschlag, Plattenbeheizung und Extruderheizung) modularisiere und in 
einem zweiten Schritt mich an die zeitkritischen Motoren rantraue. Dazu 
müsste ich aber jetzt schon wissen auf welchen Bus ich setzen muss. Das 
will ich eben vorab nachhaltig klären und deshalb dieser Thread.

Danke um jede Hilfe

von Stefan F. (Gast)


Lesenswert?

Das wird nicht so einfach machbar sein.

Jeder Antrieb hat zum Beispiel ein anderes Timing-Verhalten. Du kannst 
nicht einfach einen kleinen Motor durch einen großen ersetzen, ohne die 
zentrale Steuerung anzupassen.

Jeder Sensor hat einen anderen Erfassungsbereich und Auflösung. Der eine 
Sensor liefert zum Beispiel eine Distanz als analoge SPannung. Der 
andere liefert eine Distanz in 1mm Schritten. Und der dritte liefert die 
Distanz in nicht linearer Form.

All diese Unterschiede muss die zentrale Steuerung berücksichtigen. Denn 
der Drucker soll ja auch mit angemessenem Tempo arbeiten.

Wenn das alles so einfach wären, dann würden unsere KFZ Hersteller schon 
lange ihre Fahrzeuge nach dem Baukasten-Modell zusammenstecken.

> Dazu müsste ich aber jetzt schon wissen auf welchen Bus ich setzen muss.

Das ist vollkommen egal. Mach Dir eher Gedanken zur 
Zeit-Synchronisation. Man kann bei jedem noch so unpassendem Bus für 
Synchrone Zeit sorgen - NTP beweist es.

von normieren (Gast)


Lesenswert?

>Wenn das alles so einfach wären, dann würden unsere KFZ Hersteller schon
>lange ihre Fahrzeuge nach dem Baukasten-Modell zusammenstecken.

Es geht so einfach. Softwaremodule liefern normierte Signale ab und gut. 
So kannst du die Softwaremodule austauschen.

von Cyblord -. (cyblord)


Lesenswert?

Stefan U. schrieb:
> Das wird nicht so einfach machbar sein.
>
> Jeder Antrieb hat zum Beispiel ein anderes Timing-Verhalten. Du kannst
> nicht einfach einen kleinen Motor durch einen großen ersetzen, ohne die
> zentrale Steuerung anzupassen.

Natürlich geht das. Darum geht's ja. Du sagst der Motoreinheit WAS sie 
tun soll. Das WIE entscheidet sie selber. Darum ist sie ja dann 
Austauschbar.

>
> Jeder Sensor hat einen anderen Erfassungsbereich und Auflösung. Der eine
> Sensor liefert zum Beispiel eine Distanz als analoge SPannung. Der
> andere liefert eine Distanz in 1mm Schritten. Und der dritte liefert die
> Distanz in nicht linearer Form.
Siehe oben. Ich will von dem Sensor nur den Abstand wissen. WIE er den 
bekommt ist sein Problem. Darum Intelligent. Deshalb kann man 
Sensoreinheiten austauschen.

Die zentrale Steuerung will eben die Details nicht wissen. Das nennt man 
übrigens Abstraktion.

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

> Softwaremodule liefern normierte Signale ab und gut.

Nein, so einfach ist das eben nicht. Stell Dir mal vor, deine Normierung 
sieht so aus, dass eine Dinstanz in Millimetern ausgegeben wird. Und 
dann hast du einen Sensor, der nur im 3,58mm Raster messen kann. Wie 
normierst du dessen Wert? Dein Ergebnis wird nicht nur Sprünge >1mm 
ausweisen, sondern auch Abweichungen vom realen Wert. Dennoch kann 
dieser Sensor unter umständen genauer sein oder besser geeignet sein, 
als ein Sensor, der exakte 1mm Raster misst.

Und bei den Antrieben wird es noch schwieriger. Der eine Motor kann zum 
Beispiel die Druck-Düse auf ein tausendstel Millimeter genau 
positionieren, aber ist sehr langsam.

Der andere Motor kann gar nicht an bestimmten Stellen gestoppt werden, 
aber ist imstande, die Druckdüse sehr schnell genau berechenbar über 
einen bestimmten Bereich hinweg zu bewegen (Machen übrigens viele 
Drucker so).

Die iddee, alles mit 12V zu Betrieben, halte ich auch für Quatsch. Was 
ist, wenn ich mit diesem System eine große Statue drucken will, was 
Motoren mit einigen hundert Watt Leistung erfordert? Da wären 12V eher 
ein Ärgerniss.

von Cyblord -. (cyblord)


Lesenswert?

Stefan U. schrieb:
>> Softwaremodule liefern normierte Signale ab und gut.
>
> Nein, so einfach ist das eben nicht. Stell Dir mal vor, deine Normierung
> sieht so aus, dass eine Dinstanz in Millimetern ausgegeben wird. Und
> dann hast du einen Sensor, der nur im 3,58mm Raster messen kann. Wie
> normierst du dessen Wert?

Entweder Runden
oder Fehlerausgabe.

> Dein Ergebnis wird nicht nur Sprünge >1mm
> ausweisen, sondern auch Abweichungen vom realen Wert. Dennoch kann
> dieser Sensor unter umständen genauer sein oder besser geeignet sein,
> als ein Sensor, der exakte 1mm Raster misst.

Na und? Der Sensor kann seine Daten vorher bekannt machen. Die zentrale 
Steuerung entscheidet dann ob die Werte ausreichen oder nicht.


> Und bei den Antrieben wird es noch schwieriger. Der eine Motor kann zum
> Beispiel die Druck-Düse auf ein tausendstel Millimeter genau
> positionieren, aber ist sehr langsam.

>
> Der andere Motor kann gar nicht an bestimmten Stellen gestoppt werden,
> aber ist imstande, die Druckdüse sehr schnell genau berechenbar über
> einen bestimmten Bereich hinweg zu bewegen (Machen übrigens viele
> Drucker so).

Alles eine Frage des Interfaces. Was sage ich dem Motor? Was will ich? 
Je abstrakter der Befehl, desto allgemeiner kann die Umsetzung sein.


> Die iddee, alles mit 12V zu Betrieben, halte ich auch für Quatsch. Was
> ist, wenn ich mit diesem System eine große Statue drucken will, was
> Motoren mit einigen hundert Watt Leistung erfordert? Da wären 12V eher
> ein Ärgerniss.
Bisschen Konstruiert alles. Deine Einwände finde ich nicht stichhaltig.

von Darvin D. (darvin_d)


Lesenswert?

Hallo Zusammen,

danke für den guten Input.

Was das Anliegen bezüglich der unterschiedlicher Sensoren / Aktoren 
angeht:

Es geht hier immernoch um ein geschlossenes System bestehend aus 
konkreten Sensoren und Aktoren.

D.h. : Es muss natürlich ein Sensor ausgewählt werden, der den 
Anforderungen des Gesamtsystems entspricht. D.h. Auflösung etc. muss 
passen. Durch die Intelligenz garantiere ich nur, dass ich mich durch 
die Technologie des Sensors nicht mehr beeinträchtigen lasse.

Da nach außen die Schnittstelle und der Wert gleich bleibt.

Im Best Case sagt der Sesnor:

Ich bin ein Endanschlag (somit weiß das System dann dass es High und low 
in z.B. 5V0 Pegel erhält)
Bei den Motoren dasselbe (soweit ich mir gedanken gemacht habe)
Es gibt NEMA Motoren die durch den Allegro Treiber sich lediglich auf 
Vor / Zurück und Stepperweite begrenzen.

Diese Schnittstelle muss eben nach außen definiert werden und dann 
kommen nur diese Motoren der Nema Baureihe zum einsatz die eben genau 
diese Eigenschaft haben.

Also:

Ich bin ein Motor:

Ich will den Befehl:
Richtung
Schrittweite (schnelligkeit bzw. Genauigkeit).

Damit könnte ich stand heute einen Miniaturdrucker mit kleinstem Bauraum 
realisieren und einen größeren als den jetztigen Ultimaker, da das NEMA 
Programm der Motoren sehr groß ist und sie sich alle auf diese zwei 
Parameter Richtung und Schrittweite reduzieren lassen.

In sofern sehe ich gerade kein Problem darin.

Das Datenpaket müsste eigentlich auch so aussehen:
z.B.

1 = Motor
2 = Sensor Endanschlag
3 = Sensor Temp Extruder ...


-> Datenpaket |1|Vor/Zurück + Schrittweite|
bzw. |2..n|Sensorwert (Temperatur, Endanschlag erreicht ja / nein)

etc.

von Karl H. (kbuchegg)


Lesenswert?

Darvin D. schrieb:

> Bei den Motoren dasselbe (soweit ich mir gedanken gemacht habe)
> Es gibt NEMA Motoren die durch den Allegro Treiber sich lediglich auf
> Vor / Zurück und Stepperweite begrenzen.
>
> Diese Schnittstelle muss eben nach außen definiert werden und dann
> kommen nur diese Motoren der Nema Baureihe zum einsatz die eben genau
> diese Eigenschaft haben.

Und wozu brauchst du dann jetzt ein Bussystem.
Du brauchst einen Stecker/Buchse zwischen Rechner und dem 
Leistungstreiber. Der kommt von der Hauptplatine runter, wandert auf 
seine eigene Platine und dazwischen kommt Kable mit einem 
Stecker/Buchse.

Selbiges für die Endlagensensoren.

In der Informatik versteht man unter einem 'Bus' ein bischen etwas 
anderes als nur Art des Kabels und Form der Stecker.

: Bearbeitet durch User
von Darvin D. (darvin_d)


Lesenswert?

Da ich die endliche Anzahl an Sensoren/Aktoren kenne kann ich mir auch 
Gedanken machen welche Konkrete Schnittstelle es geben muss, da ich 
nicht wie bei einer Automatisierten Fabrikkette damit rechnen muss dass 
ein neuer mir unbekannte Sensor hinzu kommt.

Könnte ein Feature irgendwann mal sein.. aber wie hier viele schon 
gesagt haben. Das ganze ich nicht ohne und ich will den Ball flach 
halten.

Wie würdet Ihr vorgehen?

Erst einmal die Sensoren modularisieren und im zweiten Schritt die 
Motoren, da die aufwändiger sind?

Alles auf einmal angehen, was das alles ziemlich komplex macht?

Nur die Motoren und die Sensoren erstmal lassen, sodass das 
zeitkritischte zuerst erledigt wird?

Wie ich schon sagte, will ich zu beginn diesen Aufbau auf dem Tisch 
zusammenstecken OHNE Sensoren/Aktoren um nur die Kommunikation zu 
testen. Ich habe schon oft uC programmiert, allerdings nie ein Netzwerk 
gestaltet. Daher auch die Startschwierigkeiten.

Danke schonmal.

von Darvin D. (darvin_d)


Lesenswert?

> In der Informatik versteht man unter einem 'Bus' ein bischen etwas
> anderes als nur Art des Kabels und Form der Stecker.

Die angeschlossene Elektronik soll ja über Datenpakete mit der 
Systemelektronik kommunizieren. Dafür benötigt man in meiner Welt einen 
Datenbus, an dem geschickt werden kann: Motor1 mach das Motor 2 mach das 
...

von beric (Gast)


Lesenswert?

Darvin D. schrieb:
> Das Bedeutet, bei einer zentralen Komponente wie dem PI, müsste ich bei
> Änderung eines Sensors, der eine andere Technologie besitzt:
> Sowohl die SW im PI als auch die HW verkabelung im System anpassen und
> evtl auch eine andere Spannung verlegen.

Um wieviel Aufwand sprechen wir dann? Wie oft willst du Sensor/Aktuator 
austauschen? Der Aufwand, den du treiben werden musst um dein 
distribuiertes System aufzusetzen, wird höher sein als der für 10 mal 
Kabel wechseln!

Darvin D. schrieb:
> Es geht hier immernoch um ein geschlossenes System bestehend aus
> konkreten Sensoren und Aktoren.
>
> D.h. : Es muss natürlich ein Sensor ausgewählt werden, der den
> Anforderungen des Gesamtsystems entspricht.

Dann soll eine deiner Anforderungen sein, dass ein neuer Sensor die 
vorhandene Verkabelung benutzen kann :-)

Darvin D. schrieb:
> Wie würdet Ihr vorgehen?

Ich würde das ganze lassen, eine einzelne Raspi als Steuerzentrale 
nehmen und nur Kabel wechseln wenn es sein muss.

von Karl H. (kbuchegg)


Lesenswert?

Darvin D. schrieb:
>> In der Informatik versteht man unter einem 'Bus' ein bischen etwas
>> anderes als nur Art des Kabels und Form der Stecker.
>
> Die angeschlossene Elektronik soll ja über Datenpakete mit der
> Systemelektronik kommunizieren. Dafür benötigt man in meiner Welt einen
> Datenbus, an dem geschickt werden kann: Motor1 mach das Motor 2 mach das
> ...


In meiner Welt benötigt ein Schrittmotor eine Buchse auf der "Richtung" 
und "Schritt" und "Masse" liegen. Nicht mehr.
Ob da dann tatsächlich ein Schrittmotor angeschlossen ist, oder ein 
Brushless, der von einer Elektronik so angesteuert wird, dass er sich 
nach aussen hin wie ein Schrittmotor verhält interessiert die 
Zentralplatine nicht. Die definiert: was auch immer da angeschlossen 
wird, muss sich wie ein Schrittmotor verhalten.

In meiner Welt benötigt ein digitaler Eingan eine Buchse auf der 
"SIgnal" und "Masse" liegen.

In meiner Welt benötigt ein analoger Eingang eine Buchse, auf der 
"Signal" und "Masse" liegen.


Sinnvoll wird es sein, auf jeder Buchse noch einen zusätzlichen Pin für 
+5V zu spendieren, damit das daran anghängte Sensormodul eine 
Spannungsversorgung für eventuelle Elektronik hat, die die Aufbereitung 
auf die Zentralplatine macht. Dann ist es auch kein Problem ob der 
Endschalter ein Reed Kontakt, ein Taster oder doch eine Lichtschranke 
ist. An der Zentralplatine liegt an der Signalleitung immer 0V an, wenn 
der 'Schalter' geschlossen ist und 5V wenn er nicht geschlossen ist. Was 
am Ende des Kabels sitzt und welche Elektronik den eigentlichen Sonsor 
auf dieses Verhalten hin trimmt, interessiert die Zentralplatine nicht.


Da haufenweise Arduinos einzusetzen, ist doch mit Kanonen auf Spatzen 
schiessen.
Die Dinge werden immer dann aufwändig und teuer, wenn sie allgemein 
gehalten sind. Sobald man davon weggeht, wird es auch einfach 
habdhabbar. Sieh dir Modellbau-Fernsteuerungen an. Da wird seit 40 
Jahren derselbe Stecker mit derselben Schnittstellendefinition benutzt. 
Und trotzdem kann man dort alle möglichen Arten von Servos, Kreiseln, 
Segelwinden, Lichtschalter etc. anschliessen, weil sich alles dem 
Empfänger gegenüber wie ein Servo der ersten Stunde verhält. Der Stecker 
hat 'Masse', 'Puls' und 'Versorgungsspannung'. Der Puls ist genormt (na 
ja). Was dann auch immer die daran angeschlossene Elektronik damit macht 
interessiert die restliche Fernsteuerung nicht. Und wenn mit dem Puls 
die Schleusenstellung eines Kraftwerks gesteuert wird, dann wird das 
eben so gemacht. Dann ssteht eben der Schleusenwärter mit der 
Fernsteuerung aus dem Modellbauladen am Fluss. Was solls. Es würde 
funktionieren.

: Bearbeitet durch User
von Karl H. (kbuchegg)


Lesenswert?

Nachtrag.

Zumal ....

> Von der Busstruktur wäre es Sternförmig, da alle Module an die Steuerung 
berichten.

... du sowieso jeden Systemteilnehmer an einen eigenen Eingang 
anschliessen willst.

Was dir gerade vorschwebt, das ist möglichst kompliziert die notwendigen 
Informationen von der Zentrale zu den Aktuatoren zu bringen. Das macht 
Sinn, wenn die Zentrale hier bei dir steht, die Motoren aber auf der ISS 
um die Erde kreisen. Aber den Fall hast du nicht. Kein Mensch hat damit 
ein Problem wenn ein 4 poliges Kabel von der Zentrale zu einer 
Satellitenplatine geht, die Schritt und Richtung mittels 
Leistungselektronik auf den Schrittmotor bringt. Niemand braucht für 
diese Distanz dazu eine Ethernetverbindung. Das sind alles nur wieder 
weitere mögliche Points of Failure.

: Bearbeitet durch User
von Michael U. (amiga)


Lesenswert?

Hallo,

da vom TO ja Arduino und Communiy angesprochen wurde:
ich spiele im Moment ziemlich viel mit Arduino-Zeugs rum. Hat einen 
einfachen Grund: China-Kram. Ein Nano oder ein ProMini kostet kein Geld, 
ist schon mit seinen Zutaten aufgelötet und spielt. Sensoren, 
Motortreiber, Displays, was-weiß-ich, alles spottbillig, schon 
steckfertig vorbereitet, eine zum mal Testen.

Die Community, die ich bisher gefunden habe, besteht aus genau diesen 
Leuten.
Zusammengesteckt, Sketch gefunden geht. Zweite Sache genauso.
Nun "mal schnell" den Motortreiber mit dem Ultraschallsensor 
verheiratet.
Nichts geht. Jetzt kommt die Community: ich habe da das geändert, jetzt 
geht es. Warum? keine Ahnung...
Ich habe die Lib gegen die getauscht, jetzt geht es. Warum? keine 
Ahnung...

Mich stört das nicht, wenn mein China-Display sich gespiegelt meldet, 
such ich mir eben das Datenblatt, schau in die Funktionen der Lib und 
passe mir die .ccp eben an. Hat mir trotzdem erstmal die Lötarbeit 
gespart.

Das Problem, daß z.B. eine Sieben-Segmet-Multiplex-Lib eine eierlegende 
Wollmilchsau sein will, löst das nicht. Was nutzen mir 20 Funktionen und 
frei definierbare Pinbelegungen usw., wenn das Teil allein dann locker 
10k Flash belegt und dabei nichtmal die Funktion besitzt, bei Ausgabe 
der Uhrzeit bestimmen zu können, ob bei Stunden und Minuten die führende 
Null nun angezeigt werden soll oder nicht.

Für mich heißt Arduino also: ja, einfache und billige Testmittel, um 
festzustellen, ob eine Komponente für sich allein hält, was ich von ihr 
erwarte.
Dann sowieso selber machen, es gibt im Zusammenspiel zuviel 
Abhängigkeiten, die mehr stören als nutzen.

Keine wirklich vorhersehbares Zeitverhalten mangels sauberer 
Dokumentation der Libs und Komponenten. Man muß alles selber raussuchen, 
die Community ist nur zu gebrauchen, wenn man stur etwas nachbaut, was 
ein anderer schonmal zum Laufen bekommen hat.

Und wenn ich jede Lib-Source selber anschauen muß, kann ich auch jede 
andere nehmen oder meine eigene.

Gruß aus Berlin
Michael

von Humpf Suhn (Gast)


Lesenswert?

OMG. Was für ein Irrsinn, die Hardware abstrahieren zu wollen, anstatt 
der Software. Das macht nur beides kompliziert.

Aber vom Bastlerischen her ist das zugegebenermaßen irgendwie 
interessant. Die Maschine als Memory-mapped IO zu sehen oder ...
Schau Dir mal die VHDL-Sourcen zu den Mesa-Karten (Hostmot2) an, damit 
kannst Du das Beste aus beiden Welten vereinen.

von Darvin D. (darvin_d)


Lesenswert?

Hallo Zusammen,

zu dem Arduino Thema, hat mein Vorredner genau den Punkt getroffen um 
was es mir bei der Aussage auch ging.

Mit Arduino habe ich nicht viele Kosten und kann die Realisierung in 
einer Machbarkeitsstudie testen ohne nachzudenken wieviel HW ich davon 
benötige da der Preis stimmt. Habe ich das einmal bewiesen, wird der 
nächste Schritt eingeleitet und eigene HW mit aus der Erfahrung des 
Projektes abgeleiteten MustHave entwickelt.

Es ist mir durchaus bewusst dass ein uC pro Sensor / AKtor zu spendieren 
mit Kanonen auf Spatzen geschossen ist. Allerdings will ich mir anhand 
das für mich interessante System des 3D Druckers eine Spielwiese 
aufbauen, an der ich alle Komponenten einzeln optimieren kann.
Wieso? Weil´s eben spaß macht.

In SW sollte das gleiche passieren, sodass ich zu jedem Baustein auch 
eine dazugehörige SW abstrahieren kann. Das erlaubt es mir jedes 
einzelne Modul einzeln auszutauschen und z.B. einen Raspberry Pi als 
Steuerung zu nehmen, ein Arduino Board oder auch eine selbst entwickelte 
HW. Sollte etwas nicht funktionieren kann ich es dann auf eine 
Komponente reduzieren.

Es geht mir hier nicht wirklich um den Sinn der Sache, der ist mir 
nämlich ziemlich klar. Es geht mir darum anhand meines 3D Druckers einen 
Baukasten an Sensoren und Aktoren zu entwickeln, um damit auch in 
anderen Projekten rumspielen zu können.

Da ich schon des Öfteren gehört habe, dass Arduino anscheinend 
unzureichend ist, die Frage an euch:

Welche HW würdet Ihr mir denn für soetwas empfehlen?
Pro Komponente ein Raspberry Pi und wenn das alles mal funktioniert dann 
die Peripherie des Raspberry Pis auf den ARM Prozessor reduzieren? Oder 
gibt es optimiertere HW die ich hierzu verwenden kann?

Im Zweifel starte ich wie schon erwähnt nur mit den Zeitunkritischen 
Sensoren als Module und die Motoren werden dann wie gehabt gemeinsam 
angesteuert. Bevor mein Projekt gar nicht realisiert wird, mache ich das 
eben auf einer Stufe drunter.

Ich binn für jeden Tipp, der mich nicht von der Idee abringt dankbar.

von Darvin D. (darvin_d)


Lesenswert?

Ich meine Lego Mindstorms NXT macht ja genau das gleiche. Ich will nur 
ein schwachbrüstigen abklatsch davon generieren. Mehr nicht :)

von Michael U. (amiga)


Lesenswert?

Hallo,

es spricht doch nichts gegen Arduino, spezeill die 8Bit-AVR, es ist 
letztlich doch nur ein ATMega drauf, mit dem man machen kann, was man 
will.
Man kann die Arduino-IDE nehmen, man kann statt setup() und loop() eben 
auch main() reinschreiben und alles selber machen. Man kann AVR-Studio 
nehmen, man kann den Bootloader nutzen oder per ISP programmieren usw.
Ich für mich würde Arduino + Arduiono-IDE eben nicht als endgültige 
Basis eines größeren Projektes nehmen.

PS: im Puppenhaus-Radio meiner Frau ist ein UKW.FM-Modul gelandet, mit 
einem Tiny45, programmiert mit 2 Sketchresten in der Arduino-IDE, 
geflasht mit dem AVR-Dragon per ISP aus der IDE.
Es stört mich garnicht, daß das jetzt ein Tiny45 macht, es hätte auch 
kein Ram und 1k Flash dafür gereicht, so sind es 2,5kB, na und?

Gruß aus Berlin
Michael

von Stefan F. (Gast)


Lesenswert?

Nee, bei Lego Mindstorms NXT befinden sich die drei Motortreiber im 
Computer-Modul. Und die meisten Sensoren von Lego enthalten keinen 
Mikrococontroller, sondern haben analoge und digitale Ausgänge.

Dass die vier Sensor-Ports auch I2C sprechen können, ist lediglich ein 
optionales Feature, welches in der Grundausstattung ausschließlich vom 
Ultraschall-Sensor verwendet wird.

Der wiederum spricht jedoch kein generisches universelles Protokoll. 
Jedes Zubehör mit I2C hat seine eigene spezifische Kommunikation. Du 
kannst noch nichtmal einen Ultraschall Sensor durch einen anderen 
ersetzen, ohne das Programm anzupassen.

Gleiches gilt auch für alle anderen Sensoren mit I2C Schnittstelle.

Außerdem wird bei Lego die I2C Schnitstelle nicht als Bus verwendet. 
Jeder der vier Anschlüsse ist ein eigener "Bus", aber an jeden Port 
schließt man nur einen Sensor an - so zumindest hat Lego es geplant.

von Karl H. (kbuchegg)


Lesenswert?

Michael U. schrieb:
> Hallo,
>
> es spricht doch nichts gegen Arduino,

Natürlich nicht. SO habe ich das auch nicht gemeint.


Was ich in Frage stelle, das ist, ob man unbedingt
1
   +------------+                       +-----------+
2
   |            |           Bus         |           |
3
  Schalter     COmputer  <--------> Computer     Lampe
4
   |            |                       |           |
5
   +------------+                       +-----------+

benötigt, wenn man seinen Kleiderschrank mit Beleuchtung ausstatten 
will, oder ob es ein
1
   +----------------------+
2
   |                      |
3
  Schalter              Lampe
4
   |                      |
5
   +----------------------+

auch tut. Verschiedene Lampen kann man immer noch ausprobieren, wenn man 
die Lampe sockelt.

von Darvin D. (darvin_d)


Lesenswert?

Ja ich zumindest benötige das,

weil ich dadurch eine saubere Abtrennung zur Lampe habe und ich mir wenn 
das System einmal modular steht, keine Gedanken um die Verkabelung mehr 
machen muss, sondern per Plug and Play einen Schalter, Taster, 
Lichtschranke oder übergreifend Schließer/Öffner installieren kann. und 
somit ziemlich schnell ein System weiter Clonen kann..

Auch kann ich dann eine LED, LED Stripe, RGB LED oder welche 
Lichteinheit auch immer anschließen die immer nur dern Befehl An/Aus 
,Farbe, Helligkeit benötigt. Einmnal ausgiebig nachdenken, n Mal 
einsetzen ohne das System von neuem zu verdrahten..

von Karl H. (kbuchegg)


Lesenswert?

Darvin D. schrieb:

> Auch kann ich dann eine LED, LED Stripe, RGB LED oder welche
> Lichteinheit auch immer anschließen die immer nur dern Befehl An/Aus
> ,Farbe, Helligkeit benötigt. Einmnal ausgiebig nachdenken, n Mal
> einsetzen ohne das System von neuem zu verdrahten..

Ohhh. Du musst noch viel lernen. :-)
Aber mach mal.

von Cyblord -. (cyblord)


Lesenswert?

Karl H. schrieb:
> Darvin D. schrieb:
>
>> Auch kann ich dann eine LED, LED Stripe, RGB LED oder welche
>> Lichteinheit auch immer anschließen die immer nur dern Befehl An/Aus
>> ,Farbe, Helligkeit benötigt. Einmnal ausgiebig nachdenken, n Mal
>> einsetzen ohne das System von neuem zu verdrahten..
>
> Ohhh. Du musst noch viel lernen. :-)
> Aber mach mal.

Also deine Haltung verstehe ich hier absolut nicht. Das PRINZIP ist auf 
jeden Fall sinnvoll und kann Vorteile bringen.
Allein die Umsetzung ist nicht ganz einfach.

Aber deine pauschale Ablehnung wirkt gerade etwas borniert.

von Darvin D. (darvin_d)


Lesenswert?

Ich vesreteh auch nicht wieso ich mich permanent erklären muss.

Mir ist bewusst, dass es eine einfachere Lösung gibt indem man die SW 
modularisiert. Da gebe ich den Vorrednern recht.
Mir ist auch bewusst, dass es hart verkabelt einfacher ist. Diese Lösung 
habe ich ja schon in meinem Drucker implementiert.

Ich will eine nachhaltige Lösung für mich selbst generieren umd die 
komponenten dann wenn das system einmal steht auch woanders nutzen zu 
können. Das System soll auch nicht morgen fertig werden und es darf 
ruhig anspruchsvoll sein. Ich will nicht von Beginn an pfuschen, da ich 
das als meine eigene Rapid Plattform nutzen will um Projekte 
nachhaltiger angehen zu können. Als Startschuss habe ich nunmal mein 
geschlossenes System des 3D Druckers genommen.

Falls der ein oder andere mir einige Denkanstöße geben kann wie ich 
diese Lösung anpacken kann wäre ich sehr dankbar..

Und ja ich muss noch viel lernen.. Aber dazu sind wir menschen da.. 
Lernen -> Erfahrungen sammeln -> weiterlernen.

Und um das ganze zu beschleunigen frage ich hier im Forum nach den ein 
oder anderen Experten der mir auf diesem Weg einen guten Rat geben mag 
:)

Trotzdem hat mir die Diskussion bis jetzt sehr geholfen mein eigenes 
Bild zu schärfen über das was ich machen will.

Danke

von Michael U. (amiga)


Lesenswert?

Hallo,

Ich versuche mal, Karl Heinz zu interpretieren.

Man kann beliebig weit abstrahieren. Man muß dann aber den ungünsten 
zukünftigen Fall einplanen. Also so schnell wie möglich, soviele Daten 
wie möglich, so kurze Latenz wie möglich usw.
Man weiß ja vorher nicht, was einem irgendwann in seinem Baukasten mal 
einfällt.

Würde ich nie machen, bei mir wäre es immer so schnell usw. wie nötig.
Alles andere ist zu aufwändig, soll Randbedingungen berücksichtigen, die 
man noch garnicht kennt oder nichtmal ahnt.

Wenn das jetzt runtergebrochen wird auf: erstmal ja nur Schrittmotore 
und ein paar Sendoren, dann sind wir bei Karl Heinz und auch mir: die 
Zentraleinheit hat ein paar Ein- und Ausgänge mit GND/Signal/+Ub.

Gruß aus Berlin
Michael

von Karl H. (kbuchegg)


Lesenswert?

Michael U. schrieb:
> Hallo,
>
> Ich versuche mal, Karl Heinz zu interpretieren.

100% ins Schwarze getroffen.

Ich seh hier ganz einfach nicht den geringsten Grund, warum man sich ein 
Bussystem mit all seinen möglichen Problemen einhandeln soll.

Ein Endlagensensor ist ein Endlagensensor. Er hat genau einen digitalen 
Ausgang, egal mit welcher Technologie er arbeitet.

Selbiges mit den Motoren. Man kann an der Schnittstelle für einen 
Schrittmotor natürlich einen stärkeren Motor anbringen, wenn man will. 
Nur: Das hat natürlich auch Einfluss auf die Programmierung. Die 
Start-Stop Rampen müssen anders berechnet werden. Klar kann man dann 
einfach Motor abstecken und neuen Motor anstecken, die Zentrale fragt 
beim Motor-Modul nach den aktuellen Parametern an und plant entsprechend 
um. Nur: Ob ich jetzt dem Motor-Modul die Motor Parameter konfiguriere, 
oder ob ich das bei der Steuerung mache, schenkt sich nichts. Gemacht 
werden muss es so und so.
Und so oft wechselt man jetzt die Motoren dann auch wieder nicht.

Aber: Ein Bus System schafft ganz neue Probleme, die man vorher so nicht 
hatte. Hatte man vorher das zu vernachlässigende Problem, dass man 2 
Motoren koordiniert steppen lassen muss, was im zentralen µC problemlos 
bis auf die Port-Schaltzeiten möglich ist, so hat man jetzt ein ganz 
neues Problem. 2 Satelliten müssen mit der Schritt Information versorgt 
werden, was nur hintereinander möglich ist, und sollten trotzdem 
möglichst gleichzeitig ihren Schritt machen. Plötzlich ist es notwendig 
sich komplizierte Mechanismen einfallen lassen zu müssen, wie mehrere 
Satelliten synchron arbeiten obwohl sie ihre Befehle hintereinander 
bekommen.
Viel Aufwand. Und wofür?

: Bearbeitet durch User
von Darvin D. (darvin_d)


Lesenswert?

Hallo,

naja.. schade.. irgendwie komme ich heute nicht mehr hier im Forum 
weiter :)

von Darvin D. (darvin_d)


Lesenswert?

> Viel Aufwand. Und wofür?

Um eine Nachhaltige Lösung für mich zu generieren. Was passiert wenn ich 
jetzt 3 Sensoren anschließen will? Wieviel Aufwand benötigt dieser Umbau 
mit der hart verdrahteten Lösung und wiviel mit der Bus Lösung?
Will ich ein System Clonen..

Habe ich die komponenten werden diese an einen Bus angeschlossen und das 
System ist bertreibsbereit. Brauche ich noch einen Sensor kommt er 
dazu.. brauche ich keinen.. wird er abgesteckt.. alles an ein und 
demselben Bus.

Klar kann ich alles hart verdrahten.. ob das nachhaltig ist ist die 
andere Frage.. Ich will ein Fundament schaffen nicht ein konkretes 
Problem lösen.. ich glaube dass kommt nicht so ganz durch.. Ich habe 
meinen Drucker und der tut seinen Job.. an sich gibt es also werde 
Zeitdruck noch sonst etwas.. es wäre nur coll wenn ich den über die Zeit 
modularisiere.. ob das sinnvoll ist oder aufwändig sollte bis dahin 
denke ich einmal mein Bier sein :)

Wenn ich danach Probleme schneller lösen kann durch fertig Komponenten, 
spar ich mir die Zeit wieder ein.. Das ist meine Denke.

von Stefan K. (stefan64)


Lesenswert?

Das kommt sehr darauf an, welche Bewegungen bei welcher Geschwindigkeit 
Du ermöglichen willst.

Eine Kreisbewegung mit 2 getrennt an einem Bus sitzenden x/y Motoren 
dürfte je nach Auflösungs- und Geschwindigkeitsanforderung nicht ganz 
einfach werden. Selbst bei 1Mbaud wirst Du mit 50 - 100us pro Msg 
rechnen müssen. Das wird je nach Anforderung zu langsam sein, um jeden 
Step einzeln zu adressieren. Bei komplexeren Beschleunigungs- und 
Bewegungsbefehlen wird es aber schnell sehr aufwendig.

Wenn ein einziger mc die Bewegungen aller 3 Achsen verwaltet und über 
Step/Richtungspins ausgibt, wird die Firmware wesentlich einfacher und 
effizienter.
Oder: alternativ die Bewegungen schneller.

Gruß, Stefan

von Karl H. (kbuchegg)


Lesenswert?

Karl H. schrieb:

> möglichst gleichzeitig ihren Schritt machen. Plötzlich ist es notwendig
> sich komplizierte Mechanismen einfallen lassen zu müssen, wie mehrere
> Satelliten synchron arbeiten obwohl sie ihre Befehle hintereinander
> bekommen.
> Viel Aufwand. Und wofür?


Selbst wenn ich hinterher zb die Techologie der Endschalter gegen eine 
andere austauschen will, dann kann ich das immer noch problemlos machen, 
wenn ich einfach nur definiere, wie die 3 Pins am Anschluss für einen 
Endlagesensor  belegt sind und welche Funktion sie haben. Dagegen hab 
ich nichts, das ist sinnvoll und auch gut so. Aber wo liegt denn der 
Vorteil, wenn die Zentrale erst mal per (angenommen) I2C eine Nachricht 
an den Endlagensensor schickt "Bist du betätigt" und der Sensor 
antwortet mit "Nein, bin ich nicht". Der Endlagensensor wird (egal in 
welcher Technologie) nie irgend etwas anders antworten als 'Ja' oder 
'Nein'. Er ist ein digitaler Sensor, unabhängig davon, wie er 
technologisch realisiert ist.
Ich seh da keinen Vorteil, solange sich alles in räumlicher Nähe 
zueinander abspielt. Ich seh aber jede Menge Probleme, die man erst mal 
aus dem Weg räumen muss, damit das System überhaupt funktionieren wird. 
Und jeder aus dem industriellen Umfeld wird mir bestätigen: je komplexer 
ein System, desto anfälliger. Was kann bei einem an einem Port 
angeschlossenen Taster gross passieren? Das Kabel kann brechen. Was kann 
an einem per Bussystem angeschlossenem Taster passieren? Eine ganze 
Menge!

: Bearbeitet durch User
von Darvin D. (darvin_d)


Lesenswert?

Hallo Stefan,

Danke!

Das sind die Inputs die ich haben mag.
Wenn das mit den Steppern ein Problem darstellt, dann bilden eben alle 3 
Motoren ein Modul und gut ist. Darum frage ich ja.

Ursprünglich wollte ich alle Modularisieren. Wenn das im ersten Schritt 
nicht geht, dann gibt es ein Aktormodul bestehend aus allen 3 Steppern 
und eben eigene Sensor Module.
Aber der Ansatz: zu umsändlich lass es, bringt mich eben leider nicht 
weiter :)

Tschüssi

von Stefan K. (stefan64)


Lesenswert?

Kommt ein Mischsystem für Dich infrage?
x/y und vielleicht z-Motor direkt angesteuert, die Sensoren über einen 
Bus?

In jedem Fall kann ich Dir den CAN-Bus für Dein Projekt empfehlen:
Der CAN-Bus ist ein Multi-Master-Bus. Jeder Sensor kann sich bei einem 
aufgetretenen Ereignis also selbstständig melden (z.B.: Endanschlag). 
Bei einem Single-Master-Bus muss der Master dagegen alle Sensoren der 
Reihe nach abfragen, was eine um ein Vielfaches höhere Latenzzeit 
bedeutet.

Gruß, Stefan

von Karl H. (kbuchegg)


Lesenswert?

Darvin D. schrieb:
>> Viel Aufwand. Und wofür?
>
> Um eine Nachhaltige Lösung für mich zu generieren. Was passiert wenn ich
> jetzt 3 Sensoren anschließen will?

Da du sowieso von einem Sternsystem ausgegangen bist, bleibt es dir 
nicht erspart, an der Zentrale dafür einen entsprechenden Eingang 
nachzurüsten.

Oder wie hast du dir gedacht, wie ein sternverkabeltes 'Netzwerk' 
funktioniert? Am Knotenpunkt werden die Kabel einfach alle aufeinander 
gelötet?

von Darvin D. (darvin_d)


Lesenswert?

Hallo Karl,

ich gebe Dir recht, dass es vielleicht nicht Sinnvoll erscheint wenn 
alles in der Nähe liegt. Aber wenn ich jetzt ein weiteres Projekt habe, 
wo die Sensoren und aktoren entfernt leieg, schreib ich dann einen neuen 
Thread? Und ab dann gibt es hier konstruktive Vorschläge? Ich starte mit 
einem geschlossenen System und ende wenn das Fundament besteht mit einer 
einfachen Hausautomation, wo der Temp-Sensor meine Raum Temp. Anzeigt 
und der Motor meine Heizung regelt...

Aber um dahin zu kommen backe ich erstmal kleine Brötchen.. das ist 
alles.. Wie gesagt ich will kein Problem lösen.. sondern ein Fundament 
bilden.

Viele Grüße

von beric (Gast)


Lesenswert?

Darvin D. schrieb:
> Auch kann ich dann eine LED, LED Stripe, RGB LED oder welche
> Lichteinheit auch immer anschließen die immer nur dern Befehl An/Aus
> ,Farbe, Helligkeit benötigt. Einmnal ausgiebig nachdenken, n Mal
> einsetzen ohne das System von neuem zu verdrahten..

Hmja, das einmal ausgiebig nachdenken fehtl anscheind noch.

von Darvin D. (darvin_d)


Lesenswert?

Hallo,

eine Sterntopologie kann auch durch ein 10 adriges Flachbandkabel 
realisiert werden ;)

Jede Ader = eine Verbindung zum konkreten Teilnehmer.. jeder Teilnehmer 
hat aber ein 10 adrigen Stecker mit welchem er genau eine Ader 
abgreift.. reicht das als Erklärung?

von Karl H. (kbuchegg)


Lesenswert?

Darvin D. schrieb:
> Hallo Karl,
>
> ich gebe Dir recht, dass es vielleicht nicht Sinnvoll erscheint wenn
> alles in der Nähe liegt. Aber wenn ich jetzt ein weiteres Projekt habe,
> wo die Sensoren und aktoren entfernt leieg

dann haben wir eine andere Situation.

> Aber um dahin zu kommen backe ich erstmal kleine Brötchen.

Das ist auch gut so. Damit rennst du mir sowieso immer offene Türen ein.

Wobei die Koordinierung mehrerer Motoren schon nicht mehr unter den 
Begriff 'kleine Brötchen' fällt. Ich denke du unterschätzt das.

> alles.. Wie gesagt ich will kein Problem lösen.. sondern ein Fundament
> bilden.

Das ist auch ok so. Und das verstehe ich auch.
Aber es macht einen Unterschied, ob ich heute am Hausbus mit ein paar 
Schaltern und Zeitschaltuhren und Motoren ein paar Rollos ansteuere, 
oder ob ein Fräser sich in den Stahl bohrt.

Wobei: Selbst für Schalter und Rollos gibt es unzählige Bussystem für 
den  Hausgebrauch.

: Bearbeitet durch User
von Karl H. (kbuchegg)


Lesenswert?

Darvin D. schrieb:
> Hallo,
>
> eine Sterntopologie kann auch durch ein 10 adriges Flachbandkabel
> realisiert werden ;)

Schön. Und was machst du, wenn die 10 Aderen nicht mehr ausreichen?

> Jede Ader = eine Verbindung zum konkreten Teilnehmer.. jeder Teilnehmer
> hat aber ein 10 adrigen Stecker mit welchem er genau eine Ader
> abgreift.. reicht das als Erklärung?

Das hast du dir jetzt aber nicht gut überlegt.
Das bedeutet nämlich, dass du mit deinem Flachbandkabel zum Beispiel 
durchs ganze Haus fahren musst. Von der Zentrale in den Keller (denn 
dort steht die Heizung) und von dort weg Stockwerk für Stockwerk wieder 
hoch, bis dann letzten Endes auch noch der Windsensor am Dach seine Ader 
kriegt.
Welchen Vorteil hat da jetzt noch mal deine logische Stern-Topologie?
:-)

Schnellschüsse bringen dich nicht weiter. Sieh es so wie bei der 
Verteidigung deiner Diplomarbeit. Du präsentierst deine Ideen und die 
Prüfer wollen wissen, wie gut du dir das alles überlegt hast.

: Bearbeitet durch User
von Stefan K. (stefan64)


Lesenswert?

Zwischen
> ich habe einen 3D Drucker (Ultimaker 2) und möchte daran einige
> Modifikationen machen.

und
> wenn das Fundament besteht mit einer
> einfachen Hausautomation

ist aber ein kleiner Unterschied, oder?

Während beim ersteren eine Synchronisation der Motoren im 
10-100us-Bereich notwendig ist, ist es bei einem Hausbus relativ egal, 
ob der Heizungssteller im Dach 100ms nach dem im EG angesteuert wird.

Stefan

von Karl H. (kbuchegg)


Lesenswert?

Darvin

Schau. Ich will dir das doch alles nicht auf Biegen und Brechen 
ausreden. So ein Bussystem kann schon eine tolle Sache sein. Ich fand es 
beeindruckend, wie ein amerikanischer Chirurg eine Operation per 
Aktuator und Netzwerk an einem ganz anderen Punkt der Erde durchgeführt 
hat.
Aber da steckt eine Unmenge an Aufwand dahinter! Und da darf auch nichts 
auf dem Weg dazwischen schief gehen.

Letzten Endes gibt es die eierlegende Wollmilchsau nicht. In deinem 
Beispiel: es gibt nicht die eine Technologie, die implementiert man und 
alles ist gut. D.h. es gibt schon Technologien, die das Zeug dazu haben. 
Aber sowohl der finanzielle als auch der logistische Aufwand dahinter 
rechtfertigen nicht den Einsatz um damit die Kühlschrankbeleuchtung zu 
steuern (salopp gesagt).
Manchmal ist "keep ist simple" die wesentlich bessere Lösung. (und das 
hab ich mit 'du musst noch viel lernen' gemeint)

: Bearbeitet durch User
von oldmax (Gast)


Lesenswert?

Hi
Wenn ich denn auch mal darf...
 Ein Bussystem hab ich jeden Tag direkt auf Arbeit vor mir. Profibus. So 
schön eine dezentrale Lösung für die verschiedenen Anwendungen sind, so 
haben sie auch ihre Tücken und am Anfang stand ja der 3D Drucker. Da 
kommt es schon auf Genauigkeit an. Wenn da dein Schrittmotor auch nur 
eine 10tel Sekunde zu spät seinen Referenzpunkt gesagt bekommt ist die 
vielgelobte Genauigkeit zum Teufel und erst recht die 
Wiederholgenauigkeit. Bei einem Hausbussystem, ja, da hätte ich 
vielleicht gleich am Anfang meinen Senf dazu gegeben. Wie lange wird ein 
Taster betätigt? Selbst wenn ich mich bemühe, nur einen kurzen Impuls 
auszulösen, wird mein Controller diesen bemerken. Auch wenn da erst mal 
auf einem Bus die Information geschoben werden muss, liegt die 
Reaktionszeit im unbedenklichen Bereich. Gut, Software macht schon 
einiges, aber es ist halt immer die Anwendung, die das tempo vorgibt und 
wenn ich einen Bus habe mit vielen teilnehmern, komme ich nicht umhin, 
wesentlich größeren Aufwand zu betreiben, herauszubekommen, wer da grad 
was wollte. Und modular, um später ein OpenEnd-System zu haben, welches 
einfach ohne große Mühen erweitert wird, na ja, das kann gehen. Mit 
einer Datenbank in der Hinterhand und vorgefertigten Routinen. So kann 
natürlich ein Modul mitteilen: "ich bin ein Schalter" oder "ich bin ein 
Analogwertgeber". Aber dann muß ja auch der Zentralcontroller wissen, 
was er mit der Information anfangen soll. Also bleibt eine weitergehende 
Programmierung ja nicht aus. Wie gesagt, Bussysteme sind keine 
Allheilmittel. Wenn es dein Studiumprojekt ist, gut, warum nicht. Aber 
bedenke, wenns denn mal schnell gehen muss, ist es der Boss, der sofort 
Infos braucht, um eine Entscheidung zu treffen. Wenn da erst ein Bote 
durch die Büros flitzen und nach infos fragen muss, kann die Messe schon 
gelesen sein. Na ja, der Vergleich hinkt etwas.  Aber im Prinzip haben 
es dir die anderen ja schon gesagt. Schau auf die Laufzeiten.
Gruß oldmax

von Darvin D. (darvin_d)


Lesenswert?

Hallo Zusammen,

Was kann ich bis zum jetzigen Punkt zusammenfassen..

Zeitkritische Aufgaben über einenBus anzusteuern ist zu komplex.

D.H:
Motoren über einen Bus Steuern
-> lass es, ist zu komplex

D.h. Ich werde die Motoransteuerung aus den 3 Motoren auf eine 
Leiterplatte setzten und diese dann hart verdrahten mit dem 
Steuersystem.

Dann bleiben noch die zeitunkritischen Komponenten übrig..

Endanschlag, heizbett, Display zur Anzeige der Menü Struktur und 
Sensoren die ich noch nicht kenne und trotzdem im Drucker verbaut sind.. 
Will ich diese nun intelligent machen.. Müsste ein Arduino reichen, denn 
ich vollbestückt im Massen kaufen kann ohne viel lötaufwand zu haben.. 
Hier kommt wieder die Anfangsfrage auf:
Wie kann ich extrahieren welcher Bus für diese Anwendung im Drucker mit 
nicht zeitkritischen Komponenten der beste ist?

Vielen Dank schon mal für die Geduld.
Darvin

von Michael U. (amiga)


Lesenswert?

Hallo,

da ja jetzt Hausbus aufgetaucht ist: ich habe seit 1979 im schönen 
Kaufhaus am Ostbahnhof hier in Berlin (Prestigeobjekt, gebaut von den 
Schweden).

Wir bekamen eine Gebädeautomatisatzionsanlage. Delta 1000 von Honeywell, 
es gab damals in Deutschland  3 oder 4 Stück davon, 2 davon in der DDR.

Zur Technik: einzelne Unterstationen mit einem 6800 mit 256Byte Ram und 
4k Rom. Statuskarten (digitale Eingänge), Analogkarten (analoge 
Eingänge) und Schaltkarten (Relaisausgang). Ich glaube 8 Unterstationen 
ein Datenstrang mit 30mA Stromschleife zur Zentrale.

Die Zentrale ein 4x4Bit Bit-Slice-System mit 48k(Word? weiß ich nicht 
mehr) Ram, davon 16k für das Betriebssytem von Kassette geladen, Eproms 
waren auf der Embargoliste.

Standard war Polling, Zykluszeit im Sekundenbereich, so 3-6 Sekunden, 
jenachdem wieviele Unterstationen im Kanal waren.
Ansonsten Kommandos (von der Zentrale zu den Unterstationen) und Alarme 
(von den Unterstationen zur Zentrale).

Es wurden die gesammte Beleuchtung des Hauses, das Klima, 
Einbruchssicherung damit gesteuert.

Bei Ausfall der Zentrale behielten die Unterstationen ihren Status bei, 
es gab außerdem dort Automatik/Handschalter für wichtige Sachen.
Die Klimasteuerung war autonom und bekam nur Meßwerte und Sollwerte von 
der Honeywell.

Warum ich das schreibe? Es wird heute gern gemacht, was möglich ist.
Ich brauche keine Raumtemperatur im Sekundentakt, auch nicht auf 0,1 
Grad genau. Ich muß nicht ständig wissen, was wo passiert. Wenn ich 
abends am Gartenweg das Licht einschalte sollte es angehen, sofort. Das 
erledigt das Kommando. Entweder stehe ich am Garetnweg dabei, dann 
wundere ich mich, was bei meiner Technik klemmt.
Sehe ich das Ergebnis nicht und kommt der Ausalarm 4s später beim 
Polling (Status von Kommando und Rückmeldekontakt stimmt nicht überein) 
passiert real garnichts.
Ob ich sofort merke, das mein Boiler im Keller nicht anging oder ein 
paar Sekunden später, es schafft keine zusätzlichen Probleme.

Ich habe hier seit 2009 meine Sensorspielerei laufen. Temperatur, 
teilweise Feucht und Luftdruck. Die Funkmodule senden ca. alle Minute 
ein Telegramm ohne jede Rückmeldung. Egal, ob mal 1 oder 2 ausfallen, 
weil 2 Sensoren zeitgleich gesendet haben oder ein anderer Störer da 
war.
Wenn nach 5 Minuten kein gültiges Telegramm empfangen wurde, ist was 
ausgefallen. Real nur passiert, weil eine Batterie endlich leer war und 
ich zu faul war. die Überwachung auszuwerten...

Es passiert auch in den 5 Minuten nichts. Die Zimmertemperatur fällt 
nicht plötzlich um 30 Grad, der Luftdruck steigt nicht aus dreifache und 
es wird auch nicht im Wohnzimmer zu regnen anfangen.

Für mich ist das immer der Kompromiß zwischen Aufwand und Nutzen und 
letztlich immer eine spezielle Lösung.

Gruß aus Berlin
Michael

von Michael U. (amiga)


Lesenswert?

Hallo,

@Darvin Duster: was ist intelligt beim Sensor?
Ein AVR hat digitale Schnittstellen mit 0V/5V, anagloge Eingäne mit 
0V-5V usw.

Die Sensoren müssen letztlich also ihre Meldungen in diesen Bereich 
konvertiren und ausgeben. Das kann ein Tiny oder auch ein Mega328 gern 
erledigen. Zur "Zentrale" gehen dann trotzdem nur +Ub/Signal/GND.

Warum sollte man das jetzt mühsam in ein Protokoll packen und am anderen 
Ende wieder auseinanderbasteln, um letztendlich einen Draht von 1m Länge 
zu ersetzen?

Gruß aus Berlin
Michael

von Darvin D. (darvin_d)


Lesenswert?

Hallo,

ich mache es deshalb, weil ich dann als Anzeige eine LED, ein LCD oder 
ein TFT nehmen kann und alle interpretieren den Text "Hallo Welt" über 
genau einen Bus und eine definierte Schnittstelle. Keine Extra 
Verkabelung kein weiteren schnick schnack. Nur die Anzeige muss in sich 
zusammengebaut werden und eine definierte Schnittstelle erhalten.
Dann kann aus dem Text "Hallo Welt" die LED ein Grünes Licht generieren.
Das LCD das als Text darstellen und das TFT das als Bild. Aber alle 
kommunizieren über ein und den gleichen Bus.

Darum :)

von Karl H. (kbuchegg)


Lesenswert?

Darvin D. schrieb:
> Hallo,
>
> ich mache es deshalb, weil ich dann als Anzeige eine LED, ein LCD oder
> ein TFT nehmen kann und alle interpretieren den Text "Hallo Welt" über
> genau einen Bus und eine definierte Schnittstelle.

Ja. Da spricht ja auch nichts dagegen.
Das macht man seit 60 Jahren so. Genau das ist der Hintergedanke bei 
einem Terminal.

Aber, und das ist der springende Punkt: Was hat das jetzt mit einem 
Endschalter zu tun?
Oder anders rum gefragt: Hast du irgendeinen Vorteil davon, dann du 
einen Endschalter an genau der gleichen Buchse anstecken kannst, an der 
vorher dein LCD gesteckt ist?

> Keine Extra
> Verkabelung kein weiteren schnick schnack. Nur die Anzeige muss in sich
> zusammengebaut werden und eine definierte Schnittstelle erhalten.
> Dann kann aus dem Text "Hallo Welt" die LED ein Grünes Licht generieren.
> Das LCD das als Text darstellen und das TFT das als Bild. Aber alle
> kommunizieren über ein und den gleichen Bus.

Was du in meinen Augen übersiehst, das ist dass es verschiedene 
'Klassen' oder 'Arten' von Busteilnehmern gibt. Dein letztes Beispiel 
kann man getrost in eine Klasse Benutzerinterface zusammenfassen. Ein 
Endschalter ist aber eine ganz andere Kategorie. Macht es irgendeinen 
Sinn, dem den Text 'Hallo World' senden zu können? Möchte man das 
überhaupt können? Welchen Preis zahle ich dafür, das ich das kann, auch 
wenn es in keinster Weise sinnvoll ist? (Mit Preis ist sowohl Hardware 
als auch Software Aufwand gemeint, in Kombination mit natürlich dem 
entsprechenden finanziellen Aufwand.)

von Karl H. (kbuchegg)


Lesenswert?

Karl H. schrieb:

> (Mit Preis ist sowohl Hardware
> als auch Software Aufwand gemeint, in Kombination mit natürlich dem
> entsprechenden finanziellen Aufwand.)

Insbesondere letzters, der finanzielle Aufwand, kann sich nämlich auch 
ganz schnell ausarten. Ein Hausbussystem klingt erst mal toll. Und vor 
dem geistigen Auge entstehen dann auch ganz schnell die tollsten 
Steuerungen innerhalb eines Hauses. Das böse erwachen kommt dann 
meistens ganz schnell, wenn das erste mal abgerechnet wird, was das 
alles kosten würde. Dann ist die automatische Abschaltung des Flurs von 
einer Zentrale aus gleich gar nicht mehr soooo verlockend und ein 
normaler Zeitschalter tuts auch. :-)

Gut. Ein paar Ardunios kosten in deinem Fall jetzt sicherlich nicht die 
Welt. Aber immerhin.

: Bearbeitet durch User
von Robin (Gast)


Lesenswert?

Um mich einmal auf deinen 3d Drucker zurück zu kommen. Wenn du alle 
Motoren an ein Board klemmst, dann ist dein nächstes Problem der 
Endschalter. Den du solltest nach jedem Schritt kontrollieren ob er 
ausgelöst und dann den Motor sofort stoppen können. Nebenbei ist der 
extruder auch kritisch ;)

Das gelingt dir mit einem Bus nicht -> Endschalter auch ans Board.

Dann gibt es noch das Heizbett und Hotend. Und die beiden Sensoren 
dazu...

Warum nicht alles an ein Arduino klemmen, ein Ramps oder was es da 
mittlerweile neueres gibt nehmen und dein Drucker funktioniert.

Soviel zum Thema Drucker. Ein Hausbus ist ein komplett anderes Thema. 
Das ganze spielt auch hier um den Faktor 10000 langsamer ab. Und es ist 
idr. nicht wichtig, was in welcher Reihenfolge geschaltet wird. Wuchtig 
ist, das es in annehmbarer Zeit schaltet und annehmbar schnell auch 
Sensoren reagiert wird.

Überleg dir nochmal was du genau willst und dann kann man dir auch 
helfen.

Btw. Das mir der LED die auf Hallo Welt hört ist ziemlich ineffizient ;) 
. Der Befehl heißt an/aus...

von S. R. (svenska)


Lesenswert?

Ein 3D-Drucker ist ein in sich geschlossenes System, bestehend aus 
aufeinander abgestimmten Komponenten. Du kannst Motor X nicht einfach 
so durch einen anderen Motor Y ersetzen, ohne irgendwelche Dinge an der 
Software zu ändern (und seien es Kalibrierungswerte).

Den Motor durch einen Endlagenschalter, eine LED oder ein Display zu 
ersetzen, wäre sogar zu 100% sinnfrei, denn danach funktioniert dein 
3D-Drucker nicht mehr als 3D-Drucker. Du willst ein System bauen, bei 
dem du durch einfachen Austausch von Modulen einen 3D-Drucker in ein 
Puppenhaus umwandeln können willst, und wieder zurueck - ohne Änderung 
der Software. Das lohnt nicht.

Ein Hausbus ist eine ganz andere Sache. Da hast du vollkommen andere 
Voraussetzungen, ganz andere Möglichkeiten und ganz andere 
Anforderungen. Ab einer gewissen Größe möchtest du dort auch nicht mehr 
alle Sensoren und Aktoren an ein Bussystem anschließen, sondern 
(halbautonome) Untersteuerungen einbinden (pro Raum, pro Geschoss, pro 
Gebäude eines Komplexes). Und dann plötzlich auch redundant, gerne auch 
durch verschiedene Sensortypen fuer die gleiche Messgröße.

Statt deinen 3D-Drucker kaputtzupfuschen, nutze ihn lieber fuer ein 
kleines Projekt:
- drucke dir einen kleinen 3-stöckigen Aufzug als Modell aus
- fuer jeden Stock brauchst du 2 Taster (hoch/runter) und
  1 LED (unterwegs), einen Sensor (Aufzug da) und 1 Motor (Tuer auf/zu)
- und einen Aufzug, der hoch/runterfährt und die Sensoren betätigt

Dann kannst du jeden Sensor und jeden Aktor an ein Bussystem anknoten 
(z.B. mit I2C, das ist aber unkritisch) und dich einmal bei einem 
kleinen Teil einer Automatisierung austoben. Sowas ähnliches gab es an 
meiner alten Uni fuer verteilte Systeme (Sensoren/Aktoren waren 
autonom), um die Probleme solcher Systeme zu studieren.

von Stefan F. (Gast)


Lesenswert?

Deine Nachhaltige Baukastenlösung ist nicht wirklich anchhaltig. Denn 
wann immer du einen anderen Sensor oder Aktuator anschließen wilst, 
wirst du dazu passend einen Mikrocontroller programmieren müssen. Und 
zwar für jedes einzelne neue Teil.

Wenn du hingegen den klassischen Ansatz wählst, hast du einen 10x 
einfacher programmierbaren Computer (zum Beispie einen PC) für die 
Steuerung, sowie ein universelles I/O Interface mit "dummen" analogen 
und digitalen Anschlüssen.

So oder so musst du für jede neue Hardware programmieren. Dein 
"nachhaltiger" Ansatz sieht vor, dazu jedesmal Mikrocontroller mit einem 
komplexen Bus zu programmieren. Mein "herkömmlicher" Ansatz bestände 
darin, nur einen Computer zu programmieren, bei dem das auch noch viel 
einfacher und komfortabler geht.

Hinzu kommt: Jede Komponente erhöht das Ausfallrisiko. Dazu zählen aus 
Softwarekomponenten. Komplizierter bedeutet IMMER auch Fehlerträchtiger.

Was genau ist nun an deinem "nachhaltigen" Modell nachhaltiger? Ich 
verstehe es nicht.

Denk mal darüber nach: Warum haben das nicht schon andere vor Dir so 
umgesetzt? Du solltest nicht nur die Vorteile deiner Idee betrachten, 
sondern auch die Nachteile und möglich Gründe, es doch nicht zu tun.

von Darvin Duster (Gast)


Lesenswert?

Hallo

S. R. schrieb:

> Den Motor durch einen Endlagenschalter, eine LED oder ein Display zu
> ersetzen, wäre sogar zu 100% sinnfrei, denn danach funktioniert dein
> 3D-Drucker nicht mehr als 3D-Drucker.
Wer hat das behauptet? Ich will eine Anzeigeeinheit durch eine 
Anzeigeeihnehit, einen Motor durch einen Motor einen Sensor durch einen 
Sensor ersetzen. Bitte keine eigenen Folgeschlüsse ziehen.

> Du willst ein System bauen, bei
> dem du durch einfachen Austausch von Modulen einen 3D-Drucker in ein
> Puppenhaus umwandeln können willst, und wieder zurueck - ohne Änderung
> der Software. Das lohnt nicht.
Auch das will ich nicht, Ich will ein System bauen anhand des Beispiels 
eines Druckers bei dem ich das wissen über den einzelnen Kompoinenten 
clonen kann und eine Anzeige und einen Sensor übernehmen kann, 
nocheinmal nachbauen und dann für ein anderes Projekt bauen. Das ist ein 
wesentlicher Unterschied.

> Dann kannst du jeden Sensor und jeden Aktor an ein Bussystem anknoten
> (z.B. mit I2C, das ist aber unkritisch) und dich einmal bei einem
> kleinen Teil einer Automatisierung austoben. Sowas ähnliches gab es an
> meiner alten Uni fuer verteilte Systeme (Sensoren/Aktoren waren
> autonom), um die Probleme solcher Systeme zu studieren.
Genau das war meine Grundfrage. Welchen Bus kann ich nehmen?
Ob ich nun alle Motoren modularisiere oder nur die Sensoren haben wir ja 
hier ausdiskutiert und ich bin zum enstchluss gekommen, nur die Sensoren 
und ALLE Motoren als ein Modul zu sehen.

und tschüss

von Darvin Duster (Gast)


Lesenswert?

Hallo nochmal,

Stefan U. schrieb:
> Deine Nachhaltige Baukastenlösung ist nicht wirklich anchhaltig.
> Denn
> wann immer du einen anderen Sensor oder Aktuator anschließen wilst,
> wirst du dazu passend einen Mikrocontroller programmieren müssen. Und
> zwar für jedes einzelne neue Teil.

Wenn ich jetzt Studenten kenne die örtlich nicht hier in D leben, dann 
sage ich denen .. Baut euch ersteinmal die ganze Infrastruktur auf und 
dann können wir eine gemeinsame Basis finden um zu entwickeln?
Mit dem modularen Ansatz benötigen die nur eine Steuereinheit und die 
Schnittstelle nach aussen die das Modul haben muss und sie können 
loslegen. Aber da denken wir anscheinend unterschiedlich.

>
> So oder so musst du für jede neue Hardware programmieren. Dein
> "nachhaltiger" Ansatz sieht vor, dazu jedesmal Mikrocontroller mit einem
> komplexen Bus zu programmieren.
Der Bus wird genau einmal in SW in Betrieb genommen und der SW-Teil auf 
alle uC draufgeflasht. Was bleibt ist lediglich die digitalisierung / 
anpassung des Sensors. Ja das ist nachhaltig.

> Hinzu kommt: Jede Komponente erhöht das Ausfallrisiko. Dazu zählen aus
> Softwarekomponenten. Komplizierter bedeutet IMMER auch Fehlerträchtiger.
Da gebe ich dir recht. Aber wie du auch von redundanz schreibst müsste 
diese Komponente in einen späteren Schritt redundant aufgebaut werden.

> Was genau ist nun an deinem "nachhaltigen" Modell nachhaltiger? Ich
> verstehe es nicht.
>
Wenn die Elektronik eine einheitliche Schnittstelle nach außen hat...
Wenn der Bus als SW implementierung einmal gemacht wird und auf jeden uC 
übertragen wird
Wenn die SW Komponenten in der Steuereinheit modularistert werden, 
sodass jedes Modul ein dazugehöriges SW Paket hat und bei einer änderung 
auch NUR dieses angefasst werden muss...
Dann ist es in meinen Augen nachhaltig.

Da ich elektronik auf einer Basis entwickeln kann ohne das ganze System 
kennen zu müssen.

> Denk mal darüber nach: Warum haben das nicht schon andere vor Dir so
> umgesetzt? Du solltest nicht nur die Vorteile deiner Idee betrachten,
> sondern auch die Nachteile und möglich Gründe, es doch nicht zu tun.
Ich denke weil es aus kosten sicht kein Vorteil gebracht hat zu früheren 
Zeiten, da uC viel gekostet haben. Heute kostet das nichts mehr und auch 
namhafte Laborequipmenthersteller statten ihre Oszis VOLL aus und 
begrenzen diese nur durch die freiuschaltung von softwarelizenzen. 
Warum? Weil eine Vollausstattung billiger ist.

Viele Grüße

von Darvin Duster (Gast)


Lesenswert?

und nocheinmal hallo,

in Foren sagt man immer, dass man den Usern das ganze Projekt nennen 
sollte, damit diese auch genügend Background haben um eine kompetente 
Antwort zu liefern.
Ich sehe das in diesem Thread eindeutig als Fail.

Meine Grundfrage war es :

Mehrere Sensoren und Aktoren über einen 1meter langen Bus miteinander 
kommunizieren zu lassen und jeden davon intelligent zu machen. Das ist 
die Frage der ich immernoch nachgehe.
Stattdessen haben wir hier um die Sinnhaftigkeit der Idee einen 3D 
Drucker zu modularisieren geredet..
Wenn es für euch keinen Sinn macht, dann muss ich das verstehen. Für 
mich macht es das. Da ich darin eine Nachhaltigkeit sehe.
Ich habe rausgezogen dass ein Motor zu zeitkritisch ist das ist ok. Aber 
wenn ich die X-Y-Z Ansteuerung des Druckers für ein Lasercutting oder 
eine Fräse nutzen mag, macht es durchaus sinn die Sensoren die 
zusätzlich hinzukommen als Module anzubinden. Da ich dadurch flexibler 
bin und im Best Case, mir den Sensor kurz testen kann ob er tut was er 
soll und dann in n-Facher Ausführung zu klonen um diesen in anderen 
Anwendungen einzusetzen. Weder im HAUSBUS noch im 3D Drucker.. Einfach 
in weiteren Projekten.

Also habe ich gelernt, dass ich das nächste Mal NUR mein Problem ohne 
die Randparameter beschreiben werde, sodass ich auch nur auf technischer 
Basis mit euch Diskutieren kann.

Ich schätze dieses Forum sehr, weil viel Kompetenz drin steckt, aber 
dieses: das macht keinen Sinn darum gibt es auch keine Antwort, finde 
ich etwas traurig. Da ich vielleicht diese Lösung nicht in meinem 3D 
Drucker implementieren werde. Aber es in einem Anderen System 
ausprobieren könnte. So stehe ich immernoch in der Grundsatzdiskussion 
ob es Sinn macht oder nicht. Und die technischen Fragen sind immer noch 
offen.

Trotzdem möchte ich mich für das ganze Feedback bedanken.

Viele Grüße
Darvin

von spess53 (Gast)


Lesenswert?

Hi

>So stehe ich immernoch in der Grundsatzdiskussion
>ob es Sinn macht oder nicht.

Nö. Du hast dich doch schon längst entschieden.

Also mache es. Oder brauchst du die Absegnung vom Forum?

MfG Spess

von Route_66 H. (route_66)


Lesenswert?

spess53 schrieb:
> Nö. Du hast dich doch schon längst entschieden.
>
> Also mache es. Oder brauchst du die Absegnung vom Forum?
>
> MfG Spess

Nein.
Er möchte vom Forum den für seine Zwecke am besten geeigneten Datenbus 
empfohlen bekommen.
Er hat seinen Zweck beschrieben, das Forum kann dazu keinen Bus 
empfehlen, weil es keinen Sinn macht: er ist beleidigt.

Daraufhin will er eine allgemeine Busempfehlung für einen 
unbeschriebenen Zweck und da ist eine Empfehlung ebenfalls nicht 
möglich.

Es gibt halt keinen Eierlegenden-Wollmilchsau-Bus.

von Darvin Duster (Gast)


Lesenswert?

Route 6. schrieb:

> Es gibt halt keinen Eierlegenden-Wollmilchsau-Bus.

Suche ich auch gar nicht! So weit sind wir hier im Thread ja gar nicht 
gekommen ;)
Ich habe wie oben beschrieben keine Erfahrung mit der Kommunikation von 
Mikrocontrollern über einen Bus und würde gerne wissen wie man den 
richtigen Bus dafür findet. Was die Kriterien sind die ich zu beachten 
habe um diesen richtig auszulegen am von mir genannten Beispiel. Da hier 
gar nicht darauf eingegangen wird, sondern nur um die Sinnhaftigkeit des 
Anwendungsfalls diskutiert wird, fällt es mir auch schwer technisch 
weiter zu kommen.

Viele Grüße

von Michael U. (amiga)


Lesenswert?

Hallo,

Anforderungen?
Geschwindigkeit, Latenz, Datenmenge, Anzahl Busteilnehmer und deren 
Adressierbarkeit, Länge der Busabschnitte, Zuverlässigkeit, Umgebung 
(störbehaftet oder nicht), keine Ahnung, was ich jetzt vergessen habe.

In Deinem Beispiel mit dem 3d-Drucker wurde doch schon geklärt, das für 
diesen Anwendungsfall eine Busstruktur ein sehr ungünstiger Lösungsanstz 
ist. Auch die Gründe wurden schon genannt.

Gruß aus Berlin
Michael

: Bearbeitet durch User
von Stefan K. (stefan64)


Lesenswert?

Wie ich bereits geschrieben habe:
Um eine schnelle Reaktionszeit für Sensorwertänderungen zu erreichen, 
empfehle ich Dir einen Multi-Master-Bus, bzw. den CAN-Bus.

Ok, das ist mit Arduino-Platinen nicht zu erreichen. Aber mit den bei 
Arduino vorhandenen Schnittstellen muss Dein master alle Sensoren 
pollen, mit je nach Poll-Intervall entsprechend schlechter Latenzzeit. 
Wenn Du das in Kauf nimmst, kannst Du I2C (bei 1m Entfernungen) oder 
RS485 (Entfernung egal) benutzen.

Falls Du nicht auf ATmega fixiert bist, gibt es übrigens auch günstige 
mc und Boards mit integriertem CAN in der ARM-Welt (STM32F042), z.B. das 
hier für 10€ mit bereits integriertem Debugger:

http://www.st.com/web/en/news/n3742

... oder das Gegenstück von TI, da gibt es einen mc mit bereits 
integriertem CAN-Treiber (k.A. wegen Demo-Board).

Gruß, Stefan

von Stefan F. (Gast)


Lesenswert?

>  Aber wie du auch von redundanz schreibst müsste diese
> Komponente in einen späteren Schritt redundant aufgebaut werden.

Willst du im Ernst Teile des 3D Druckers redundant aufbauen? Ich glaube, 
du hast keine Vorstellung davon, wie aufwändig das wird. Bzw wie wenig 
sinnvoll es wird, wenn man nicht alles redundant macht.

Andere Leute stellen sich einfach zwei gleiche Drucker hin.

Oder zwei Unterschiedliche Drucker mit USB Anschluss und Treiber - da 
hast du deine Bus-Empfehlung.

Baue deinen Drucker so, dass er über USB angesteuert werden kann und 
einen Hardwareunabhängigen Befehlssatz hat (so wie Postscript bei 2D 
Druckern).

Dann kannst du den Drucker jederzeit durch einen anderen austauschen 
ohne die Steuerung zu ändern, nämlich das Programm, dass dem Drucker 
sagt, was er tun soll.

Folge dem Beispiel anderer Produkte, die sich seit zig Jahren bewährt 
haben.

von S. R. (svenska)


Lesenswert?

Darvin Duster schrieb:
> Wer hat das behauptet? Ich will eine Anzeigeeinheit durch eine
> Anzeigeeihnehit, einen Motor durch einen Motor einen Sensor durch einen
> Sensor ersetzen. Bitte keine eigenen Folgeschlüsse ziehen.

Und plötzlich ist dein Bussystem nicht mehr so universell, wie du es 
urspruenglich mal definiert hattest. Denn nun hast du 
"Motoranschluesse", "Sensoranschluesse", "Displayanschluesse" - ob die 
elektrisch kompatibel sind, bleibt erstmal außen vor.

Frage: Soll dein "Anzeigeeinheitsanschluss" grafische LCDs verwalten, 
oder HD44780-artige Text-Displays? Oder sogar beides?

> Auch das will ich nicht, Ich will ein System bauen anhand des Beispiels
> eines Druckers bei dem ich das wissen über den einzelnen Kompoinenten
> clonen kann und eine Anzeige und einen Sensor übernehmen kann,
> nocheinmal nachbauen und dann für ein anderes Projekt bauen. Das ist ein
> wesentlicher Unterschied.

Ja. Und du vergisst dabei eine klitzekleine Kleinigkeit: "ein 
3D-Drucker" und "ein anderes Projekt" arbeiten mit höchstwahrscheinlich 
unterschiedlichen Voraussetzungen und haben unterschiedliche 
Anforderungen.

> Welchen Bus kann ich nehmen?

Jeden beliebigen und keinen einzigen.
Du musst in der Lage sein, N verschiedene Busteilnehmer /möglichst 
gleichzeitig/ anzusprechen. Das heißt, hohe Bandbreite und geringe 
Latenz; oder hoher Aufwand in der Softwaresynchronisierung.

Da du oben eine Sternverkabelung vorausgesetzt hast, wäre ein 
Point-to-Point-Bussystem äußerst gut geeignet. Du verbindest also 
jeweils einen Sensor oder Aktor mit jeweils einem Busanschluss der 
Steuerung...

> Ob ich nun alle Motoren modularisiere oder nur die Sensoren haben wir ja
> hier ausdiskutiert und ich bin zum enstchluss gekommen, nur die Sensoren
> und ALLE Motoren als ein Modul zu sehen.

Also quasi den gesamten Drucker minus die Anzeige? Das macht vieles 
einfacher, weil dein Bussystem jetzt nicht mehr hart echtzeitfähig sein 
muss. Dann wäre Ethernet ein mögliches Bussystem zwischen verschiedenen 
Modulen (d.h. zwischen verschiedenen Druckern und Displays). Oder auch 
USB. Fertige Protokolle gibt es genug.

von Route_66 H. (route_66)


Lesenswert?

Darvin Duster schrieb:
> Ich habe wie oben beschrieben keine Erfahrung mit der Kommunikation von
> Mikrocontrollern über einen Bus und würde gerne wissen wie man den
> richtigen Bus dafür findet.

Hallo!
Du hast den Zweck eine Bussystems nicht verstanden.
Busse werden eingerichten/konzipiert um Leitungen einzusparen, nicht um 
Funktionalitäten zu standardisieren.
Das ist so bei parallelen Bussen (ECB, ISA...) aber auch bei seriellen 
(I²C, RS485, ASi, CAN...). Für Bussysteme gibt es das 
OSI-Schichtenmodell. Das wurde nicht aus Langeweile oder Spaß am 
Schreiben dokumentiert. Jede Schicht hat Ihre Besonderheiten.

Du musst Dich -je nach Deinem Anwendungsfall- von "oben" (applikation 
layer) nach "unten" (physikal layer) durchwursteln (sorry Conchita!).
Dabei wird Dir die Erleuchtung kommen: je nach Buszweck ist eine andere 
Lösung, mit weniger Kompromissen und anderer Physik, sinnvoll.

Auch im PKW gibt es nicht nur CAN - und zuhause hat man 
Ethernet10/100/1000, WLAN, Blauzahn, NFC, ISDN, I²C, RS485, CAN, K1520, 
IFSS...
Jedes für den dort am besten passenden Zweck.

Was war doch gleich mal Dein Zweck?

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.