Drucksensoren 4-20ma, Stepper Peristalikpumpen Schaltplan

Hallo,

Ich habe einen Schaltplan gemacht und wollte euch mal fragen, ob dieser so okay ist. Es sollen 4 "Horter" Boards angeschlossen werden mit jeweils bis zu 4 Drucksensoren. Darüber hinaus sollen 16 TMC2209 angeschlossen werden. Es werden maximal 2 Stepper Motoren gleichzeitig laufen, alle Motoren haben die gleiche Drehrichtung und Geschwindigkeit. Die Motoren müssen also nur unabhängig voneinander an und aus geschaltet werden können.

Folgende Teile habe ich mir rausgesucht.

-Adafruit TMC2209
-Adafruit MCP23017
-Adafruit TCA9548A
-Adafruit BSS138
-ESP32 S3
-4-20mA Karte von Horter
-Pololu D24V5F3

Ich würde alle 16 TMC2209 an denselben DIR und STEP Pin vom ESP32 klemmen und nur die EN Pins von den jeweiligen TMC2209 Modulen an unterschiedliche Pins vom MCP23017 klemmen. Die 4 verschiedenen Horter Karten würde ich an verschiedene TCA9548A Pins klemmen.

Die Grüne Klemmleiste vom TMC2209 habe ich jetzt nicht angeschlossen eingezeichnet, ich bin mir aber relativ sicher zu wissen, wie ich das machen muss.

Warum verwendest du nicht mehr kicad?

@wwerner : Verwendet ich eigentlich weiterhin, bei solchen relativ Übersichtlichen Schaltungen nehme ich aber auch gerne Bilder der Bauteile.

PS: Und weil ich nicht weiß, wie ich sowas wie das Horter Board einzeichnen soll.

Hallöchen Schnurz,
Ich habe noch nicht ganz Verstanden warum der I2C Multiplexer dran ist.
Die 4-20mA-Boards können 16 Verschiedene Adressen also könnten Sie an einen Bus, oder ist hier Sterntopologie geplnat?
Wenn ja dann musst du aber auch noch die I2C Busse umschalten (A0-A2) und auch das auf dem ESP berücksichtigen und auf dem Bus nur dann die Teilnehmer initialisieren die dann im Moment dran sind und auch nur mit den richtigen Abrufen an den entsprechenden Adressen ausführen.
Macht denke ich das Projekt u.U. unnötig komplex.
Beim Netzteilboard auf jeden Fall auch den EN Pin beschalten sonst hast du keine Spannung auf der 5V Rail.
Gruß

DerDani

@volvodani : Das ist eine super Anmerkung von dir, hatte ich komplett vergessen, dass die Horter Board ja per Jumper eine andere Adresse bekommen können.

Würde es einen Vorteil mit einer Sterntopologie geben ?

Ich habe das jetzt mal geändert, die vier Horter Board würden alle auf B1 bzw B2 vom BSS138 gehen, ist das so richtig ?

Stimmt das so auch mit dem TCM2209 ? Da bin ich mir nämlich auch sehr unsicher. Oder muss ich noch zwischen TMC2209 EN und 3.3V Leitung Pull Ups setzen ?

Wo ist der? Ich sehe ihn nicht.

Wieviel V kommt hier
image

raus? 5V oder 3.3V?

Das ist der Nachtei von deinen "Bildchen". Du brauchst doch sowieso den Schaltplan. Dann mache ihn doch gleich.

@wwerner : Hier noch ein Bild, diesmal korrigiert.

Da hast du grundsätzlich Recht, wenn ich das aber mit Kicad mache, dann habe ich keine Ahnung, wie ich das mit dem Drucksensor und Horter Board einzeichnen soll. Ich weiß, wie ich das später für mich machen würde, kann es aber nicht "richtig" einzeichnen.

Egal, ich hoffe die Zeichnung passt soweit, ich mache das später noch einmal mit Kicad.

Hast Du überprüft, ob das möglich ist? Der ESP32-S3 kann nur relativ wenige mA schalten und möglicherweise gibt es auch hinsichtlich Kapazitäten Schwierigkeiten. Wenn Du das theoretisch nicht gelöst bekommst, solltest Du mehrere Pins für die Ansteuerung einplanen. Hast Du schon eine Idee, wie Du das auf der Softwareseite lösen willst?

Ich stelle nur Fragen, um Dich auf mögliche Stolpersteine hinzuweisen :wink:

@agmue : Wie meinst du das ? Wenn ich auf Nummer sicher gehen möchte, bräuchte ich dann weitere/andere Hardware oder soll ich DIR und STEP vom TMC2209 einfach auf mehrere ESP32 Pins verteilen ? Wie würdest du es machen ?

Softwareseitig mache ich mir noch nicht die Gedanken, dass war für die ersten Variante das kleinste Problem, dass habe ich ganz gut hinbekommen.

Die

hat keine I2C Pullups. Du brauchst du noch.

Der ESP kann an dem 3.3V nicht viel Strom liefern. Passt das?

Wenn du bei U2 (A/B)1 und (A/B)2 tauschst, ist die Kreuzung raus.

Hast U4 Pull Up Widerstände? Wenn nein, brauchst du die auch noch.

Der LS mit BS braucht keinen GND.

So würde ich das vorsichtshalber als Möglichkeit einplanen.

Bei TTL-ICs ist angegeben, wie viele Eingänge man an einen Ausgang anklemmen kann. Bei Boards wie TMC2209 habe ich sowas noch nicht gefunden, da eine Parallelschaltung eventuell nicht so häufig vorkommt. Probieren geht manchmal über Studieren :wink:

@schnurz90: Ein ganz wichtiger Hinweis. Meist sind die Spannungswandler auf den ESP32-Boards gerade so ausgelegt, das Funken möglich ist, aber nicht mehr. Mein Bauchgefühl rät daher zu einem StepDown auf 3,3 V! Wenn Du den ESP32-S3 mittels 3,3 V versorgst, kann der 5V-Pin unbeschaltet bleiben.

Bin gespannt auf Deinen Ansatz :innocent:

@wwerner : So mit den Pull Ups ?

@fony: Das habe ich leider nicht verstanden.

@agmue: Ich habe jetzt einen Step Down 5V zu 3.3V hinzugefügt und daran alles geklemmt. Der ESP32 ist weiterhin mit 5V versorgt. Ich möchte vier 4er Gruppen von TMC Modulen machen, jede Gruppe geht dann auf denselben STEP DIN Pin.

Mehrere Fragen an alle

  1. Ist das soweit richtig ( Auch das Bild, würde ich dann in Kicad übernehmen ), oder fehlt etwas bzw habe ich etwas falsch verstanden ?

  2. Jeder Step Down Regler hat ja gewissen Spannungsschwankungen, da ich jetzt einen zweiten habe, gibt es dadurch Nachteile für mein Vorhaben ?

  3. Softwareseitig sollte es doch keine Probleme geben, oder irre ich mich da doch ? Es ist ja vollkommen okay, wenn alle Stepper Motoren mit derselben Drehzahl und Drehrichtung arbeiten. Ich muss nur jeden Motor Separat Ein und Ausschalten können.

MCP23017 hat PullUp- wie auch PullDown-Widerstände. Die sind aber nur relavant, wenn die Pins als Eingänge benutzt werden. Da EN vom TMC2209 aber ein Eingang ist, muß der Pin vom MCP23017 ein Ausgang sein. Daher halte ich den 10 kΩ PullUp-Widerstand für überflüssig. Das gilt sinngemäß auch für die 10 kΩ PullUp-Widerstände an STEP und DIR.

Oder?

Warum nicht direkt an 24 V? Netzteil - StepDown - StepDown ist eine recht lange Regelkette, sagt mein Bauchgefühl und würde ich nur machen, wenn der 3,3 V StepDown die 24 V nicht verträgt.

Zu 2: Aus meiner Sicht gilt das möglicherweise für den StepDown auf dem ESP32-Board. Daher würde ich den ESP32 lieber mit 3,3 V versorgen und den auf dem Board nicht nutzen. Die 5 V von USB sind zumindest bei meinem ESP32-S3 entkoppelt.

Zu 3: Jedes Stepper-Objekt hat einen internen Positionszähler und eigene STEP und DIR Pins. Ohne EN verliert der Schrittmotor möglicherweise seine Position. Mein Eindruck ist, Du möchtest die Schrittmotoren wie Gleichstrommotere nutzen. Die Software kennt dann die Position der Schrittmotoren nicht. Technisch möglich, aber willst Du das? Oder hat Deine Software 16 eigene Positionszähler, die Du immer mitrechnen läßt? Wie ist da Dein Konzept?

Die MobaTools 3.1.01) unterstützen nun auch den ESP32-S3. Ob das mit 16 Instanzen klappt, weiß ich aber nicht. Der Entwickler @MicroBahner ist aber in diesem Forum aktiv. Er kann Dir vermutlich auch was über die gemeinsame Nutzung von STEP und DIR sagen.


Anm:

  1. Die Version 3.1.0 läßt sich derzeit nicht über den BoardLibrarymanager installieren :wink:

@agmue :

Mal eine Frage. Beim Einschalten ist der MCP23017 doch noch nicht initialisiert, wodurch die Pins dann doch erstmal nicht sauber als Ausgang gesetzt sind, oder irre ich mich da ?

Stimmt, ich möchte die Motoren wie Gleichstrommotoren nutzen, was auch einen einfachen Grund hat. Peristalikpumpen sind relativ teuer und schwach von der Fördermenge. Peristalikpumpen mit einem Stepper sind meistens sehr teuer, haben aber eine deutlich höhere Lebensdauer. Mit einem 3D Drucker kann ich mir mit einem Stepper Motor, ziemlich leicht eine eigene Pumpe bauen, da die Abmessungen von z.b einem Nema17 genormt sind.

EN: Soll die jeweilige Pumpe freigeben
STEP: Soll die Drehzahl bestimmen
Anzahl der STEP Impulse bestimmt Wassermenge
DIR: Ist die gemeinsame Richtung

Ich bräuchte doch nur einen einfachen Zähler, der die ausgegeben Schritte zählt. Wenn Steps verloren gehen sollten, werden weniger Schritte als gewollt gemacht. Das ist absolut kein Problem.

Ich weiß z.b, dass wenn die Pumpe mit Anzahl x ( STEPS pro Minute ) eine Zeit y ( von 2 Minuten ) läuft, 100ml gefördert werden. Anschließend gibt es eine Soak in Zeit von 5 Minuten.

Dann können zwei Szenarien passieren.

  1. Die untere Schranke wurde getroffen ( Gieße bis >= 90mbar ).

  2. Die untere Schranke wurde nicht getroffen, nach diesen 5 Minuten wird der Spaß einfach wiederholt. Vielleicht sind wir dann bei 91mbar und hätte es diesen minimalen Schrittverlust nicht geben, dann hätten wir in diesem Durchgang evtl schon die 90mbar getroffen und es wäre kein erneuter Durchgang notwendig. Das wird für meinen Bedarf aber absolut tip top sein.

Am Schaltplan habe ich auch weiter gemacht. Die Wiederstände habe ich noch einmal gelassen, die werde ich dann aber auch entfernen, wenn die Rückmeldung dabei bleibt, dass diese unnötig sind. Die anderen Sachen habe ich versucht umzusetzen, ist das so, wie du es meintest @agmue ?

Ja :smiley:

Doch als hochohmiger Eingang. EN wird davon nicht beeinflußt.

Aber: Auf der Adafruit-Platine scheint EN einen PullDown von 20 kΩ zu haben! Die Logik ist wohl anders herum, als Du vermutest. Bitte überprüfen!

Ach so, dann sind die Schritte eher nebensächlich. Ich hatte an ein Ventil gedacht :zany_face:

Dann klappt das mit den Vierergruppen, auch mit den MobaTools, die werkeln schön im Hintergrund :smiley:

@agmue : Okay, das ist gut zu hören, dass es dann so klappen sollte. Ich habe den Widerstand am MCP23017 jetzt entfernt. Würdest du die anderen Widerstände denn so lassen, wie diese jetzt gerade eingezeichnet worden sind ?

Nein, die 10 kΩ halte ich für überflüssig.

Auch die 4,7 kΩ sind m. E. nicht notwendig, da im Levelshifter als 10 kΩ enthalten:

Oder?

@agmue : Okay, danke dir. Ich habe jetzt alle Widerstände entfernt und werde dann jetzt alles in Kicad übertragen und das dann hier Posten.

Bitte gerne :smiley:

Manche meiner Aussagen sind bewußt mit einem Konjunktiv versehen, Überraschungen sind also möglich. Ich verdrücke mich für eine Woche in den Urlaub, viel Erfolg bis dann :blush: