GPIO Schnittstellen

  • Hallo zusammen,


    ich möchte ein Projekt umsetzen, indem ich 10 Motoren (Geschwindigkeit einstellbar, also mit pwm) und 20 Schalter anschließen muss.

    Da reichen mir die Pins auf einem raspberry pi 4 leider nicht. Habt ihr Tipps, wie man das umsetzen könnte? Oder gibt es ein gutes alternativ Gerät? Der Grund warum ich einen PI verwenden möchte, ist der, dass ich mit Java und Python diese Pins ansteuern möchte. Sind PIs überhaupt für so viele Pins ausgelegt und eignet sich da eventuell eine SPS besser? Bin neu in diesem Thema und könnte da Hilfe gebrauchen.

    Vielen Dank für jeden Support!

  • Da benutzt man dann sowas in der Art https://www.adafruit.com/product/815 fuer die PWMs, und zB http://www.ti.com/lit/ds/symli…575.pdf?&ts=1589624071914 fuer die digitalen IOs.


    Java UND Python klingt falsch. Warum zwei Sprachen, wenn auch eine tut? Welche ist dabei relativ egal, aber nur weil eine 20-Zeilen-Bibliothek nur fuer Python vorfuegbar ist, wuerde ich das nicht reinbringen. Denn dann bist du in der Welt von Interprozesskommunikation, und auch wenn das alles machbar ist, sind das unnoetige Komplexitaeten.

  • Vielen Dank für die schnelle Antwort.


    Das würde bedeuten, die zwei verlinkten Platinen schließe ich dann an den PI an, richtig? Kann man mit dem Adafruit Board auch andere Motoren (keine Servo) ansteuern?

    Gibt es für beide Platinen auch eventuell gute Tutorials, die du empfehlen kannst? Mir fehlt da auch so ein bisschen das Verständnis, wie ich dann die Pins auf den jeweiligen Platinen ansteuern kann.


    Wegen den Sprachen, ja da hast du Recht. Ich komme aus der Java Welt, da werde ich wahrscheinlich dann auch Java dafür verwenden.

  • Die Dinger generieren eine PWM, ob fuer Servos oder anderes ist dann nur eine Frage, wie genau die aussieht. Wobei wenn es *kein* Servo ist sich die Frage stellt, was der Motor sonst ggf. zur Ansteuerung braucht.


    Tutorials musst du selbst suchen. Ich brauche nur Datenblaetter, weil ich schon mehr Erfahrung habe. Und da habe ich dann keine Ahnung, was du alles lernen musst/brauchst.

  • Wegen dem Motor: Also momentan nutze ich dazu einen l298n, an dem noch ein Netzteil (12V) hängt (mein erster Test). Allerdings bekomme ich so ja keine 10 Motoren an den PI + die 20 Schalter. Würde das dann mit den Platinen von oben klappen?

  • Mit einem l298n bekommst du auch keine 10 Motoren an den PI. Ein bisschen weiter ausholen, was du da vor hast, darfst du schon.

  • Okay, also zum einen benötige ich 8 Motoren, aus denen ich 8 Schlauchpumpen baue (Gehäuse der Pumpe mit 3D Druck). Da dachte ich mir zuerst, dass ich das nur mit Relais mache, allerdings möchte ich auch die Geschwindigkeit der Pumpe einstellen können. Ein weiterer Motor ist dafür zuständig, eine kleine Plattform, auf der später ein Becher steht, horizontal zu bewegen. Ähnliches Prinzip wie bei einer Linearachse. Und noch ein Motor ist für die vertikale Bewegung der Plattform verantwortlich. Die ganzen Schalter benötige ich dann eben um gewisse Positionen abzufragen etc.


    Da die Motoren 12 Volt benötigen, habe ich nach etwas Recherche den l298N entdeckt.

    Das ist mal so grob der Aufbau. Ist das mit einem PI überhaupt so möglich?

  • Moeglich ist relativ. Das Problem besteht in der Regelung. Das kannst du nur mit PWM knicken. Es gibt einen guten Grund, warum alle DC-Motoren an Robotern wie zB das MD25-Kit, das ich hier gerade zum Basteln auf dem Schreibtisch stehen habe, Encoder mitbringen. Denn eine PWM verhaelt sich nicht linear, und deine Lasten wechseln (leicht, aber merklich) ueber die Zeit. Da muss man also bestaendig nachregeln.


    Mit so einem Setup wie bei dir geht also im Grunde nur volle Pulle, oder nicht.


    Bei den Schlauchpumpen halte ich das auch fuer voellig vertretbar. Die gewuenschte Regelung kann da genauso gut ueber die Zeit erfolgen, ein sanftes anfahren/abfahren oder aehnliches ist IMHO ueberkandidelt. Ausser du hast da Dinge vor, deren Praezision dann aber das Mass des Selbstgefrickelten schon uebersteigt. Also zB Pippetieren im ml-Bereich.


    Eine andere Frage ist die nach den zwei Linearantrieben. Jeder 3D-Drucker, Portalfraese oder anderes macht das im Hobbyisten-Bereich mit einem Schrittmotor. Und das solltest du auch tun. Da gibt es dann wiederum andere Motortreiber fuer, aber auch schon fertig.


    Du kannst natuerilch auch deine Pumpen mit Schrittmotoren machen. Aber wie gesagt, das halte ich fuer uebertrieben.


    Und dann stellt sich die Frage, ob ein PI, oder nicht doch besser einen der groesseren Arduinos zwischenschalten. Denn ein Arduino Due hat ausreichend Ports, und einen riesen Vorteil: er hat kein Betriebssystem, das dir an jeder Ecke um die Ohren fliegen kann. Wenn zB der Endabschalter triggert, dann willst du SOFORT den Motor abschalten. Nicht erst, nachdem Linux deinen Prozess gerade mal ne halbe Sekunde verzoegert, weil eine wichtige Email reingekommen ist.


    Die hoehere Logik kannst du dann immer noch auf einem PI machen, und den zB seriell an den Due anbinden.

  • Okay, das ist interessant. Dann werde ich mich mal mehr mit Arduino auseinandersetzen. Dann habe ich wenigstens mal einen Ansatz.

    Vielen Dank für die Infos und deine Zeit!