Hallo! Ich habe hier einen Ultimaker 2 3D Drucker, der Microendschalter jeweils in der X, Y und Z-Achse verbaut hat, um die Endposition zu erkennen wenn ein Druck fertig gestellt wurde. Die Frage klingt nun für jemanden der sich gut mit µC Technik und Elektronik auskennt wahrscheinlich etwas blöd ... aber ist es möglich, dass ich das Schaltsignal von diesen Endschaltern zusätzlich mit einem anderen Microcontroller auch noch abfrage? Also z.B dass ich den X- Endschalter zusätzlich an einen Arduino hänge (Digitaler Eingang?)und so auch dort das Signal 0/1 bekomme, je nachdem ob er betätigt ist oder nicht. Bin mir nicht sicher ob sich die zwei Controller dann gegenseitig irgendwie beeinflussen wenn ich den Endschalter doppelt abfrage? Ich stelle mir das dann so wie auf der Skizze im Anhang vor. Danke!
Zeichne mal 5V (oder andere Versorgungsspannung) und GND in deinen "Schaltplan" mit ein :-)
Das ist so einfach nicht zu beantworten. Es gibt (mindestens) 2 Möglichkeiten, einen Eingang abzufragen. a) Beim Betätigen des Schalters eine Spannung auf den Eingang durchschalten, Eingang geht auf High. b) Beim Betätigen des Schalters eine Spannung, die am Eingang liegt, auf Masse runterziehen, Eingang geht auf Low. (Diese Möglichkeit ist meist besser, weil sie eine Kabelbrucherkennung erlaubt) In Deinem Fall müssten beide Eingänge gleich funktionieren, das musst Du prüfen. Außerdem müssen beide Controller mit der gleichen Spannung arbeiten, und die Massen müssen verbunden sein. Sicherer wäre, mit dem Mikroschalter ein Relais 2xUm zu betätigen und mit den beiden Controllern je einen der Umschalter abzufragen.
Frank U. schrieb: > Bin mir nicht sicher ob sich die zwei Controller dann gegenseitig > irgendwie beeinflussen wenn ich den Endschalter doppelt abfrage? Wenn GND der beiden Controller verbunden ist, geht das, z.B. wenn der Schalter nach GND schaltet und einen Pullup-Widerstand hat. In dem Fall würde ich einen Pullup in beiden Controllern vorsehen, die wirken dann wie ein einziger mit dem halben Widerstand, das macht aber nix wenn sie hochohmig genug sind, und so funktioniert es auch noch, wenn ein Controller ausgeschaltet ist. Es kann dann akllerdings sein, dass der Eingang des ausgeschalteten Controllers durch seine Begrenzungsdioden das Signal auf Lo zieht, das kann man aber verhindern mit einem Widerstand vor jedem Eingang. Ein weniger offensichtliches Problem könnte sein, dass der Schalter entprellt werden muss, und dass die Entprellroutinen in beiden Controllern unter ungünstigen Umständen zu unterschiedlichen Ergebnissen kommen. Das muss man eben prüfen - was passiert wenn ein Controller EIN erkennt und der andere nicht. Georg
Danke für deine Ausführliche Antwort. Also der Endschalter ist nur 2-polig angeschlossen an den Microcontroller vom 3D-Printer. Im Prinzip so: http://www.printme3d.com/ulitmaker-endstoppack.html Sind die nicht einfach zwischen einem Digitalen Pin und Ground? Und je nachdem ob betätigt, oder nicht erhalte ich am jeweiligen Pin dann 0 oder 1 ? Oder bin ich da komplett falsch mit meiner Überlegung? Eventuell wäre es doch besser einen zusätzlichen Endschalter zu verwenden wenn es da noch andere Probleme geben kann (Entprellen etc.)
:
Bearbeitet durch User
Frank U. schrieb: > Oder bin ich da komplett falsch mit meiner Überlegung? Vielleicht, vielleicht auch nicht. Das hängt von der Eingangsschaltung des Druckers ab, die weder du noch wir kennen. Du kannst aber versuchen nachzumessen, ob ein Ende de Schalters mit GND verbunden ist (musst du erst mal finden) und das andere Ende beim Schalten zwischen GND und plus 3..5 V wechselt. Georg
Georg schrieb: > Frank U. schrieb: >> Oder bin ich da komplett falsch mit meiner Überlegung? > > Vielleicht, vielleicht auch nicht. Das hängt von der Eingangsschaltung > des Druckers ab, die weder du noch wir kennen. Du kannst aber versuchen > nachzumessen, ob ein Ende de Schalters mit GND verbunden ist (musst du > erst mal finden) und das andere Ende beim Schalten zwischen GND und plus > 3..5 V wechselt. > > Georg Das wäre glaube ich nicht das Problem, das PCB vom Drucker ist das hier: https://jtechphotonics.com/wp-content/uploads/2014/04/Laser-Connection-Ultimaker-2.jpg Die Endschalter hängen an X-Stop, Y-Stop und Z-Stop. Dort müsste ich ja nachmessen können?
Frank U. schrieb: > Danke für deine Ausführliche Antwort. > Also der Endschalter ist nur 2-polig angeschlossen an den > Microcontroller vom 3D-Printer. > Im Prinzip so: > http://www.printme3d.com/ulitmaker-endstoppack.html > > Sind die nicht einfach zwischen einem Digitalen Pin und Ground? Und je > nachdem ob betätigt, oder nicht erhalte ich am jeweiligen Pin dann 0 > oder 1 ? > Oder bin ich da komplett falsch mit meiner Überlegung? > > Eventuell wäre es doch besser einen zusätzlichen Endschalter zu > verwenden wenn es da noch andere Probleme geben kann (Entprellen etc.) Günter hat ja schon die beiden prinzipiellen Möglichkeiten beschrieben. Wie Du das am besten machst, hängt im wesentlichen davon ab, was Du Dir zutraust. Die einfachste Möglichkeit, bei der Du ohne weitere Kenntnisse relativ sicher gehst, dass Du nichts kaputt machst, ist, wie Du vorschlugst ein zweiter Endschalter. Das wird dann nur mechanisch eine Herausforderung, die beiden Schalter in einem Toleranzbereich, der eng genug ist, fast zur selben Zeit, wenn sie betätigt werden, schalten zu lassen. Das kann schwierig werden; hängt davon ab wieviel Geduld und mechanisches Geschick Du aufbringen kannst. Übrigens ist das Entprellen mit ziemlich sicher kein Problem. Das ist ein Vorgang, der per Software in den beiden uCs abläuft und der keine Rückwirkung auf den Schalter und den jeweils anderen uC hat. Mechanisch einfacher, weil es eben dann nur einen Schalter gibt, bei der die Schaltposition ausser Frage steht, ist eine elektrische Lösung. Allerdings erfordert das vermutlich Eingriffe in die Elektronik und wahrscheinlich auch in die Software. Dazu wäre es gut wenn Du den Schaltplan beider Platinen postest.
Frank U. schrieb: > Das wäre glaube ich nicht das Problem, das PCB vom Drucker ist das hier: > https://jtechphotonics.com/wp-content/uploads/2014/04/Laser-Connection-Ultimaker-2.jpg > > Die Endschalter hängen an X-Stop, Y-Stop und Z-Stop. Dort müsste ich ja > nachmessen können? Der Link zeigt einen Bestückungsplan und keinen Schaltplan. Den letzteren würde man benötigen. Und, wie gesagt, von beiden Platinen. Vermutlich wird man den Quelltext von der Software nicht sehen können, oder doch? Das Problem ist vermutlich, dass Pull-Ups verwendet werden. Falls es die internen Pull-Up-Widerstände der uCs sind, und in beiden uCs die Pull-Ups aktiviert sind (was vermutlich so ist) dann könnte der Strom höher als gewünscht werden. Das kann man aber nur in Software ändern. Falls Du aber Glück hast, sind die Widerstände extern als eigene Bauteile realisiert.
Mach einfach mal bitte erst ein Tutorial mit schaltern und µC. In dem Tutorial sollten die Begriffe Pull-up und Pull-down vorkommen. Um mal auf das Problem einzugehen, dein Schalter hat 2 Kabel eins ist an V+ angeschlossen das andere Ende am µC. Wenn der Schalter geschlossen ist, liegt durch die Verbindung V+ auch am µC-Pin. Was aber passiert wenn der Schalter geöffnet wird? Die Verbindung zwischen V+ und µC wird getrennt. Das bedeutet aber nicht, dass aufeinmal die Spannung am dem µC-Pin auf 0V geht. Es würde ein undefinierter Zustand entstehen. Deshalb wird zwischen GND und µC-Pin ein Pull-down Widerstand angeschlossen. Der sorgt dafür, dass das Potential in der Leitung auf GND geht. Du kannst die das wie einen Gartenschlauch vorstellen der am Haus einen Wasserhahn hat und am Ende eine Spritze. Wenn du den Wasserhahn aufdrehst (Schalter geschlossen) geht Druck auf den Schlauch, den Kannst du an der Spritze auch messen. Wenn jetzt die Spritze geschlossen ist (hochomig, wie ein µC-Pin) und du den Hahn zudreht, wirst du immer noch druck im schlauch haben und den würde man auch an der Spritze messen. Um also zu wissen ob der Hahn offen oder geschlossen ist, musst du mit der Spritze etwas Wasser aus dem Schlauch ablassen (Pull-down), entweder geht dann der Druck zurück (geschlossen) oder er bleibt gleich, dann ist der Hahn geöffnet.
Habe den Schaltplan gefunden. Also zwischen 5V und GND mit Pullup wenn ich das richtig sehe?
:
Bearbeitet durch User
Frank U. schrieb: > Habe den Schaltplan gefunden. > Also zwischen 5V und GND mit Pullup wenn ich das richtig sehe? Da Dein verlinktes Bild nur Schalter mit zwei Anschlüssen zeigt, schliesse ich messerscharf ;-), dass es sich um den Schaltplan einer der beiden Platinen handelt. Bitte poste den Schaltplan beider Platinen.
Jochen schrieb: > Frank U. schrieb: >> Habe den Schaltplan gefunden. >> Also zwischen 5V und GND mit Pullup wenn ich das richtig sehe? > > Da Dein verlinktes Bild nur Schalter mit zwei Anschlüssen zeigt, > schliesse ich messerscharf ;-), dass es sich um den Schaltplan einer der > beiden Platinen handelt. Bitte poste den Schaltplan beider Platinen. Also das ist der Schaltplan vom 3D-Drucker, so wie die Endschalter angeschlossen sind. Hier sind alle Files bzw. der ganze Schaltplan: https://github.com/Ultimaker/Ultimaker2/blob/master/1091_Main_board_v2.1.1_(x1)/Main%20Board%20V2.1.1.pdf Und ich würde einen Arduino Mega verwenden, als zweiten µC: https://www.arduino.cc/en/uploads/Main/arduino-mega2560_R3-schematic.pdf danke!
:
Bearbeitet durch User
Sehr schön. Danke. Also. Da die zweite Platine, der Arduino, Port-Pins ohne externe Pull-Ups (oder Pull-Downs) hat, brauchst Du elektrisch nichts zu ändern. Du kannst (unter einer weiteren Voraussetzung, von der ich unten schreibe) den Arduino ohne weiteres parallel an den Schalter anschliessen. Elektrisch ist das völlig in Ordnung (etwa an die unbenutzten Pins von Port A). Jetzt kommt das zweite Problem mit der Software. Schreibst Du die selbst? Falls nicht, kommst Du an den Quelltext? Der Punkt ist nämlich, das der ATMega eingebaute Pull-Up-Widerstände hat, die sich per Software ein- oder ausschalten lassen. Falls Du die Software selbst schreibst, ist es einfach. Schalte die Pull-Ups einfach nicht ein. Falls Du Fremdsoftware verwendest, von der Du den Quellcode nicht hast, musst Du feststellen, ob die internen Pull-Ups eingeschaltet sind. Das ist einfach. Starte die SW und miss mit dem Voltmeter an dem jeweiligen Pin. Falls Du den Quellcode hast und die Pull-Ups eingeschaltet sind, ändere den Quellcode so, dass die Pull-Ups ausgeschaltet bleiben. Da helfen wir hier gerne. Alles klar?
Jochen schrieb: > Sehr schön. Danke. > > Also. Da die zweite Platine, der Arduino, Port-Pins ohne externe > Pull-Ups (oder Pull-Downs) hat, brauchst Du elektrisch nichts zu ändern. > > Du kannst (unter einer weiteren Voraussetzung, von der ich unten > schreibe) den Arduino ohne weiteres parallel an den Schalter > anschliessen. Elektrisch ist das völlig in Ordnung (etwa an die > unbenutzten Pins von Port A). > > Jetzt kommt das zweite Problem mit der Software. Schreibst Du die > selbst? Falls nicht, kommst Du an den Quelltext? > > Der Punkt ist nämlich, das der ATMega eingebaute Pull-Up-Widerstände > hat, die sich per Software ein- oder ausschalten lassen. > > Falls Du die Software selbst schreibst, ist es einfach. Schalte die > Pull-Ups einfach nicht ein. > > Falls Du Fremdsoftware verwendest, von der Du den Quellcode /nicht/ > hast, musst Du feststellen, ob die internen Pull-Ups eingeschaltet sind. > Das ist einfach. Starte die SW und miss mit dem Voltmeter an dem > jeweiligen Pin. > > Falls Du den Quellcode hast und die Pull-Ups eingeschaltet sind, ändere > den Quellcode so, dass die Pull-Ups ausgeschaltet bleiben. Da helfen wir > hier gerne. > > Alles klar? Danke dir, ja die Software für den zusätzlichen µC würden wir selbst dafür schreiben, bzw. ein Kollege von mir der weitaus mehr Ahnung hat von dem Zeugs als ich (Sollten ja nur ein paar Zeilen sein denke ich). Die Pullups sind beim Arduino standardmäßig deaktiviert? LG
:
Bearbeitet durch User
Frank U. schrieb: > > Danke dir, Bitteschön. > ja die Software für den zusätzlichen µC würden wir selbst dafür > schreiben, bzw. ein Kollege von mir der weitaus mehr Ahnung hat von dem > Zeugs als ich (Sollten ja nur ein paar Zeilen sein denke ich). > Die Pullups sind beim Arduino standardmäßig deaktiviert? > > LG Was die internen Pull-Up-Widerstände betrifft, kann ich das nur für den ATMega2560 im Auslieferungszustand sagen: Dort sind die Pull-Up-Widerstände nach dem Reset deaktiviert. Allerdings kann ich nicht sagen, was die Arduino-Firmware tut. Das sollte aber der von Dir erwähnte Kollege wissen bzw. aus der Dokumentation ermitteln können. Ich meine mich aber dunkel zu erinnern, dass das entsprechende Register auch mit der Arduino-API zu ändern ist. Notfalls kann man ja nachmessen. Notfalls schmeisst man halt das Arduino-Gewusel (Du siehst, die Dinger sind mir nicht sympathisch :-) ) raus. Das sollte kein Problem sein.
Frank U. schrieb: > Die Pullups sind beim Arduino standardmäßig deaktiviert? Das steht im Datenblatt des Prozessors, und Arduino ändert daran nichts. Außer, wenn du Wire nutzt, dann werden für die Pins die Pullups aktiviert.
Arduino F. schrieb: > Frank U. schrieb: >> Die Pullups sind beim Arduino standardmäßig deaktiviert? > > Das steht im Datenblatt des Prozessors, und Arduino ändert daran nichts. > Außer, wenn du Wire nutzt, dann werden für die Pins die Pullups > aktiviert. Aber doch nur an den entprechenden I2C Pins/Leitungen, oder? Die Sache ist nämlich die, dass an dem Arduino den ich verwenden möchte dafür noch andere Sensoren über I2C angeschlossen sind.
:
Bearbeitet durch User
Jochen schrieb: > Frank U. schrieb: > Notfalls schmeisst man halt das Arduino-Gewusel (Du siehst, die Dinger > sind mir nicht sympathisch :-) ) raus. Darauf habe ich leider keinen Einfluss ;) Ich selbst bin Maschinenbauer, kenne mich mit dem Microcontroller Zeugs nur sehr marginal aus, die Sachen die man halt im Laufe der Zeit so mitbekommt. :)
Frank U. schrieb: > Jochen schrieb: >> Frank U. schrieb: > > >> Notfalls schmeisst man halt das Arduino-Gewusel (Du siehst, die Dinger >> sind mir nicht sympathisch :-) ) raus. > > Darauf habe ich leider keinen Einfluss ;) Ich selbst bin Maschinenbauer, > kenne mich mit dem Microcontroller Zeugs nur sehr marginal aus, die > Sachen die man halt im Laufe der Zeit so mitbekommt. :) Naja. Dann brauchen wir aber nicht so ins Detail zu gehen. Dass Du den Endschalter dem Grunde nach an die beiden Platinen anschliessen kannst, reicht dann doch als Information für Dich. Den Rest macht der Software- bzw. Hardwareentwickler. Dem hättest Du eigentlich auch die Frage aus Deinem Eröffnungspost stellen können. Ändert den Lauf der Welt nicht, aber das hättest Du auch einfacher haben können. Es ist ja ein Unterschied, ob ein Maschinenbauer mal eine Auskunft braucht die sich auf die Mechanik/Physis auswirkt oder ob jemand der 3D-Druck-Fan ist, sich notgedrungen und mit geringsten Grundkenntnissen mit Elektronik und Softwarefragen beschäftigen muss.
Frank U. schrieb: > Bin mir nicht sicher ob sich die zwei Controller dann gegenseitig > irgendwie beeinflussen wenn ich den Endschalter doppelt abfrage? > > Ich stelle mir das dann so wie auf der Skizze im Anhang vor. > > Danke! Zwei Eingänge parallel bringt Probleme. Werde dir klar über welchen Eingang soll der Schalter mit +V versorgt werden, da dürfte zu 99,9% nur die original Spannungsversorung in Frage kommen. Und lass den zweiten Eingang nur passiv die Spannung einlesen. Dazu muß die Schaltung auf der gleichen Bezugsmasse liegen und der Eingang sehr hochohmig sein. Am einfachsten wäre es einen Endschalter zu verwenden der 2X Schließer hat! Damit dürfte alles eifacher sein. Wichtig ist noch, das die Endschalter mechanisch nur durch einen Anschlag angesteuert werden. sonst könnte es zu inkonsitenten Signalzuständen kommen. Also Schalter A erkennt "auf", Schalter B ist immer noch "geschlossen". Alternative wäre ein Signalvervielfältiger. Da wäre dann noch die Speisung zu klären (Wo kommt die Spannungsversorgung her).
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.