Mehr Pins!!!! Wie!? (möchte mehr Sachen gleichzeitig ansteuern)

Huhu,

ganz simple Frage eigentlich: Ich will sagen wir 500 Motoren ansteuern... was ist der einfachste / kostengünstigste Weg dies umzusetzen?

Wichtig: Jeder Motor muss für eine individuelle Dauer laufen... also z. B. 1 Sekunde Motor A, 2 Sekunde Motor B.... ansonsten hätte ich die natürlich einfach parallel an einen Pin gesetzt....

Und noch eine allgemeine Frage

Beim bisherigen Spielen ist mir aufgefallen: Der Code wird Stückweise abgearbeitet... merkt man es also wenn ich jetzt z. B. 500 Motoren eine Aufgabe gebe das Motor 1 z. B. eine Sekunde früher anfängt zu starten als Motor 500 wenn ich die Befehle nacheinander ausführe oder ist dies real nicht wirklich spürbar / messbar?

lg Tim

Wofür brauchst du 500Motoren? Müssen sie nur ein/aus, ober auch ein der Geschwindigkeit geregelt werden? Was sind das für Motoren (Spannung/Strom)?

Bei 500 Motoren wird es schon allein beim Speicherplatz recht knapp.

das Motor 1 z. B. eine Sekunde früher anfängt zu starten als Motor 500 wenn ich die Befehle nacheinander ausführe oder ist dies real nicht wirklich spürbar / messbar?

Wenn du die Daten in eine Schieberegister Kette schleust, kannst du alle in der selben tausendstel Sekunde starten. Wobei, die Stromversorgung, wird sich dann bedanken.

Also 500 ist jetzt nur eine wilde Zahl... konkret möchte ich gerne in unserem Flur sowas hier umsetzen:

YouTube Video Kintec Decke

Motoren habe ich mich noch nicht entschieden aber ich dachte dabei an:

Motor

Solche Bälle:

Bälle

und wollte in jeden Ball noch eine LED hauen (die müsste ich ja konkret auch ansprechen)

LEDs

....

Geschwindigkeit müsste überall identisch sein... nur halt Motor A x Sekunden an und Motor B x Sekunden... um die Schnur-länge zu verändern an welche die Bälle hängen...

.... Edit: Habe mal die URLs zu URLs gemacht :slight_smile:

Solche Dinge werden eigentlich nicht von einem Controller gesteuert. Statt dessen haben eine Reihe von Motoren einen µC. Und der bekommt dann von einem anderen µC Daten.

Die Frage ist was ist günstiger?

Aktuell würde ein Motor ja um die 80 Cent kosten - ok, bei der Menge werde ich bestimmt einen Rabatt raus handeln können! Aber ich sage mal: bei 150 Euro / qm2 werde ich bestimmt liegen - je nach Abstand der Kugeln...

Daher die Frage: Ist es überhaupt möglich so viele Pins irgendwie umzusetzen?

bzw. was kosten solche Motoren mit Mikrocontrollern? Grundsätzlich fange ich gerade an etwas talentierter mit Arduino zu werden ... wollte das Feld nun ungerne erweitern haha :smiley:

....

Problematik die ich bisher sehe ist:

  • Die Anzahl der Pins
  • Das die Schnüre, auch wenn ein Motor nur 0,1 Sekunden später startet, irgendwann unterschiedlich lang sein werden... hier wollte ich an der Schnur einen "Stopper" machen, das die Kugeln nicht weiter als Position X hochgezogen werden können... und wenn ein Motor zB. 2 Sekunden runterfährt, 2,1 Sekunden wieder hoch fährt... der Stopper an der Schnur den Motor am weiterziehen allerdings hindert / blockiert und so alle Schnüre immer gleich lang bleiben...
  • Den Speicherplatz kann ich ja mit Sicherheit irgendwie erweitern? Grundsätzlich habe ich zwar noch nie mehr Bedarf gehabt aber das wird ja mit Sicherheit eine häufige Problematik sein wo es sicher bereits Lösungen für gibt?
  • Strom: Sollte Strom ein Problem werden kann ich ja noch ein Reelle vor jeden Motor hauen ... aber dann würden die kosten wohl explodieren und ich wäre nicht mehr in der Lage das vorhaben zu finanzieren ^^

Problematik die ich bisher sehe ist:

Entweder Schrittmotore oder Bürstenmotore mit Drehencoder.
Evtl. mit Bremse.

bzw. was kosten solche Motoren mit Mikrocontrollern?

Entwicklung, Fertigung, Material....
Geschätzt, 50€ pro Stück, bei 500 Stück Abnahme.

Und das ganze hat eine Stromaufnahme von mehreren Waschmaschinen.

Und 500 Outputs lassen sich nicht irgendwie realisieren?

Also ich kann jetzt nicht z. B. 10x hiervon mit Arduino steuern?

Controllino Mega

Edit:

Jetzt wo ich gerade Arduino PLC sehe habe ich es direkt mal gegoogelt:

Arduino PLC mit sowas nur größer müsste es doch gehen oder nicht?

... Can be expanded up to 127 modules through I2C ...

also 127 x 58? Dementsprechend bis zu 7366 Pins? Oder verstehe ich hier was falsch? :smiley:

Das ist doch im Prinzip was ich in #4 gesagt habe.

Sowas sollte man aber erst mal in einem kleineren Maßstab testen!

Oh, ok, sry! Das hatte ich dann nicht direkt verstanden :slight_smile: ... muss gestehen: Selbst µC musste ich erst mal Googlen :slight_smile:

Aber insgesamt hat das Ding ja leider nur 22 Outputs, damit liege ich so mehr oder weniger bei 15 Euro / Output... selbst wenn ich nur jeweils 1 Ball nehme (6cm) und den Abstand auf 4 CM pro Ball erhöhen würde, wäre ich bei 100 Bällen pro QM... alleine die Outputs würde mich hier ja bereits: 1.500 Euro pro qm2 kosten!

Gibt es hier keine günstigeren Alternativen? Mehr Outputs zu weniger Euro / Output?

Bzw. gibt es keinen einfachen Weg einfach zwei, drei oder zehn Arduino Mega Boards irgendwie miteinander zu verbinden? Im Endeffekt wohl die kostengünstigste Lösung? Wenn ja, gibt es irgendwo eine Grundlagen Anleitung wie ich über mehrere Board programmiere / diese verbinde?

Mystery:

  • Den Speicherplatz kann ich ja mit Sicherheit irgendwie erweitern?

Bei einem Computer kann man bei Bedarf noch eine Festplatte zusätzlich reinhängen, bei einem Arduino ist eine Speichererweiterung so nicht vorgesehen. Natürlich kann man Daten beispielsweise auf eine SD-Karte auslagern, dann geht aber die Geschwindigkeit in die Knie. Selbst ein Mega 2560 hat nur 8 kB, bei 500 Motoren benötigst Du pro Motor mindestens einen Sollwert von einem Byte. Dann mußt Du noch Berechnungen der Bewegungen machen, eine Sinuswelle in 3D braucht auch Speicher. Jede RGB-LED braucht mindestens drei Byte. Minimum 2000 Byte.

Jeder Motor soll auch noch einen Endtaster und eine LED bekommen. Also 500 Eingänge, 500 Motorausgänge, 1500 RGB-LED Ausgänge.

Nebenbei: Ich komme auf minimal 8000 Lötungen.

Wenn ich mit Dir befreundet wäre, würde ich Dir den Tipp geben: Suche Dir eine sinnvollere Beschäftigung.

Mehrere Arduinos kann man beispelsweise mittels I2C kommunizieren lassen. Und ein MCP23017 erweitert die IOs.

Was ist daran so schwer zu verstehen. Greife auf IO Expander zurück!!! Deine Kostenrechnung scheint mir falsch zu sein! Damit wirst du nicht hinkommen. Hängt 1 bis 2 Nullen hinten dran. Combie hat es schon geschrieben, wo du preislich schnell mal bist.

Ach, ein Schieberegister ist ein CHIP!?

Ich sagt mit hier wirklich alles und ich kapiere es einfach nicht hahaha! Sry!

Also wenn ich es jetzt richtig verstehe:

Dann kann ich mit dem Aufbau im Example 2 und 12 Schiebereglern aus 1 Output z. B. 96 machen?

Der Aufbau

Der Chip

Dann wäre ich ja umgerechnet bei 4 Cent pro Output? Das wäre ja ein TRAUM der wahr werden würde!

Meinst du nicht dass du dich etwas übernimmst, wenn dir selbst solche einfachen Grundlagen fehlen?

Die Ansteuerung ist eine Sache. Da kommen dann noch andere Dinge hinzu. Motortreiber, da die Dinger vorwärts und rückwärts laufen müssen. Dann wie schon angesprochen eine riesige Stromversorgung.

Serenifly:
Motortreiber, da die Dinger vorwärts und rückwärts laufen müssen.

Bitte noch 500 H-Brücken ergänzen, hatte ich vergessen, sorry. Hoffentlich sollen die Motoren nicht mittels PWM angesteuert werden, dann braucht es TLC5940. Und TPIC6A595 kann mehr Strom.

Ach, ein Schieberegister ist ein CHIP!?

Ich sagt mit hier wirklich alles und ich kapiere es einfach nicht hahaha! Sry!

Also wenn ich es jetzt richtig verstehe:

Dann kann ich mit dem Aufbau im Example 2 und 12 Schiebereglern aus 1 Output z. B. 96 machen?

Der Aufbau

Der Chip

Dann wäre ich ja umgerechnet bei 4 Cent pro Output? Das wäre ja ein TRAUM der wahr werden würde!

@sschultewolter Nun warst du schneller als ich! Ja, tut mir leid... ich dachte bei dem Beitrag von Combie, weil er mich zitiert hatte, dass es sich dabei um die Programmierung handelt um mehrere Motoren simultan anzusprechen und nicht das man hiermit auch Outputs erhöhen kann bzw. dass es sich hier um einen Chip handelt... aber warum die Kostenrechnung von Combie? Diese basiert ja auf Motoren mit µC (habe heute sogar einen neuen Begriff gelernt und nun auch schon eingesetzt haha :D) ... aber ich wollte ja nun diese 80 Cent Motoren nutzen:

80 Cent Motoren

....

@agmue - konkret ist dies mein Job :smiley: Arbeite mit im Mystery House/ und im neuen Laden in Bremen war dies halt meine Idee für den Flur - konkret würde ich es also auch nicht alleine umsetzen (das Löten)....

....

@Serenifly: Ja, ich übernehme mich gerne!!! :smiley: Aber, ja, ich steh halt einfach auf Aufgaben die Anfangs als unmöglich erscheinen - habe mich bisher aber immer durchgekämpft... sonst langweile ich mich nur :smiley:

Also konkret sehe ich es halt so:

  • Ich muss den Speicher erweitern
  • Ich muss die Motoren dazu bringen vor und zurück zu laufen

(sollte ich beides hin bekommen)

  • Nun muss ich über I/O Expander bzw. Schieberegler drei oder 4 Motoren vor und zurück laufen lassen....

... und ab hier ist es dann doch nur absolut langweiliges Copy & Past? (also die Funktion bleibt ja am Ende gleich ob 4 Motoren oder 1.000 Motoren... sofern das Grundgerüst erst mal steht)

Also es mag sich nach einem Mamut-Projekt anhören, evtl. auch von der Masse her sein... aber sind diese Punkte erst mal überwunden sehe ich jetzt keine größeren Schwierigkeiten?

  • Taster wollte ich übrigens nicht nutzen (hatte ich weiter oben schon kurz erklärt)

@agmue 3D-Sinus-Welle ... hast Du hier evtl. Links für mich wo sowas Code-Technisch umgesetzt wurde? Wäre halt - sofern ich das alles zum laufen bekomme - meine größte sorge! Hier die Bewegungen der Motoren zu definieren bzw. jeden Motor / Bewegung einzeln einstellen zu müssen... dachte hier an eine Schleife etc. wo ich irgendwie die Bewegung errechne... hier wäre evtl. dann auch direkt das Speicherproblem gelöst...

Was Strom angeht... habe ich schon in einen Raum 20 Netzteile im Stromkreislauf um alles zum laufen zu halten :smiley: ... da habe ich Erfahrung bei größeren Projekte ... wobei ich hier auch zur Sicherheit einen bekannten zur rate gezogen hatte der Elektriker ist - wollte keinen Kabelbrand etc. riskieren :stuck_out_tongue:

.... boah ist das nervig das ich selbst einen Text nur mit 5 Min Abstand editieren kann :smiley:

Also jetzt mal davon ausgegangen ich mache 5x50 Bälle ... dann würde eine Welle ja z. B. so aussehen:

for(reihe = 0, reihe < 50, reihe++){ // = 50 Durchgänge, für jede Reihe einen....

for(kugel = 0, kugel < 5, kugel++} // = 5 Kugeln pro reihe

MotorStartOneSecondFunktion(Reihe, kugel) // Motor 1 Sekunde starten lassen

}

delay()

}

= Also das wäre jetzt der grobe Code (aber PHP) wie ich eine Welle nach unten Umsetzen würde... also hier würde ich ja bereits mit 250 Bällen eine Welle nach unten machen.... ?

Oh, oh, je. Das solltest du erst mal sein lassen. So wird das nichts.

Mach erst mal ein paar kleinere Projekte. Sowohl um dich mich der Hardware vertraut zu machen als auch Arduino programmieren zu lernen. Etwas mit LEDs wäre da praktisch. Das geht von Teilen der Hardware und die Software in die gleiche Richtung und man hat was zum Vorzeigen.

Das Programmier-Beispiel ging mit jetzt nur um die konkrete Umsetzung weil ich PHP jetzt halt fließend aus dem Stegreif kann, ist mir schon klar, dass die Umsetzung mit Arduino konkret etwas anders aussehen würde!

"Discolichter" etc. wo ich einen längeren Ablauf mit nem dutzend LEDs umgesetzt habe oder auch konkret kleine Sachen ala A und B werden gleichzeitig gedrückt und C geht auf... habe ich schon alles umgesetzt...

Aber egal was ich angehe, auch damals beim programmieren lernen hat mir jeder gesagt: "fang klein an" ... ohne Ziel fehlt mir ehrlich gesagt einfach die Motivation! Und ein Ziel für mich ist ein in der Praxis anwendbares irgendwas... ansonsten entsteht bei mir keine Motivation...

Aber, ja, im Endeffekt wird es ja eh laufen wie Du sagst: Ich werde Teil für Teil umsetzen... erst Motor vor und zurück, dann der nächste kleine Part usw. Stück für Stück... nur die Scheiße an Arduino ist halt wirklich: Du musst teilweise wirklich WOCHEN auf Teile warten... wenn ich es jetzt sage wie Du machst, dann der Motor vor und zurück läuft, und ich plötzlich einen I/O Expander brauche, hier erst mal anfange zu Fragen und mich zu informieren... dann verpuffen mal schnell 2, 4 oder 8 Wochen ohne Fortschritt!

Daher, tut mir leid wenn ich etwas anstrengend bin, aber nachdem ich mich nun etwas weiter eingelesen habe:

  • Der obige von mir verlinkte 74HC595 ... hat 8 Outputs, ich kann allerdings max zwei hintereinander schalten? Ich habe 16 Pins - kann so also theoretisch nur 128 Outputs erzeugen?

  • Nun habe ich konkret auf Arduino bezogen noch den gefunden: PCA9698 from Phillips has 40 bits of digital I/O ... wären also (man kann bestimmt nicht jede Typen hintereinander schalten?) 40 x 16 = min. 640 Outputs ... bzw. mit dem Mega-Board schon Richtung > 1.500 Outputs

  • Was ich jetzt noch (ohne Bezug zu Arduino gefunden habe) ist etwa dieser 128 Pin

  • oder dieser 689 Pin

Also 128 Pin wäre natürlich traumhaft und da würde ich auch in die Richtung kommen wo ich sagen würde: Reicht aus! :smiley: .... nur will jetzt auch nicht mit nem kleinen Anfangen zum testen wenn sich dann herausstellt, dass ich den größeren später anders programmieren / ansprechen muss....

Also meine hoffentlich letzte Frage wäre für heute:

  • Könnt ihr mir einen Chip für Arduino empfehlen? Evtl. wo man auch Anleitungen oder so zu findet, der so im Bereich 100+ Pins ist? Also das ich mit Arduino Mega dann (hat Digital I/O Pins: 54?) also 5.400 Outputs theoretisch möglich wären?

Also ich finde das mit den ganzen Chips die teilweise nur aus XYZ1234 Namen bestehen halt noch extrem kompliziert und schaue da noch nicht komplett durch...

Mystery:
Das Programmier-Beispiel ging mit jetzt nur um die konkrete Umsetzung weil ich PHP jetzt halt fließend aus dem Stegreif kann, ist mir schon klar, dass die Umsetzung mit Arduino konkret etwas anders aussehen würde!

Nicht nur etwas, sondern völlig. Sowas muss man nicht-blockierend ohne Schleifen und ohne delay() machen