Willkommen! Anmelden Ein neues Profil erzeugen

Erweiterte Suche

(Servo-)Pins invertieren

geschrieben von Skimmy 
(Servo-)Pins invertieren
28. July 2015 11:33
Ist es möglich, Pins bzw. deren Signal per Firmware zu invertieren?

In meinem konkreten Fall habe ich über ein gängiges Relaisboard Lüfter angeschlossen, z.B. den Hotendlüfter. Sobald mein Mega mit Spannung versorgt wird, leuchten die Indikator-LEDs der einzelnen Relais auf dem Relaisboard auf und die angeschlossenen Lüfter werden ausgeschaltet. Erhält die Firmware den Befehl, den entsprechenden Lüfter anzuschalten, setzt sie den entsprechenden Pin auf dem RAMPS (bei mir in dem Fall D04) auf Low, die Indikator-LED auf dem Relaisboard geht aus, das Relais fällt ab und der Lüfter geht an.

Ich weiß, dass ich bei dem Relais dann natürlich Öffner oder Schließer anschließen kann und damit ja das Signal quasi invertieren kann. Allerdings leuchtet die Indikator-LED des Relaisboards dann genau "andersrum".

Ich fände es besser, wenn die Indikator-LEDs auch nur dann leuchten würden, wenn der entsprechende Verbraucher angesteuert wird. So wie z.B. bei den Heizelementen (D08, D09, D10).

Geht da was? smiling bouncing smiley

1-mal bearbeitet. Zuletzt am 28.07.15 13:53.


Der 3D-Druck ist tot, lang lebe der 3D-Druck!

Schreibt mich nicht mehr an, ich hab das drucken an den Nagel gehängt.
Re: (Servo-)Pins invertieren
28. July 2015 13:24
Sorry, ich verstehe dich nicht ganz.

LEDs auf nem Mega, RAMPS keine Ahnung was werden nicht separat angesteuert. Das würde ja nur unötig Eingänge verbrauchen. Oder was meinst du?


Triffid Hunter's Calibration Guide --> X <-- Drill for new Monitor Most important Gcode.
Re: (Servo-)Pins invertieren
28. July 2015 13:50
Die LEDs auf dem Relaisboard leuchten "andersrum" als das Relais schalten soll.

Lüfter aus = Pin auf RAMPS HIGH = LED auf Relaisboard AN = Relais AUS

Ich will aber:

Lüfter aus = Pin auf RAMPS LOW = LED auf Relaisboard AUS = Relais AUS

bzw. Repetier setzt Lüfter aus mit Pin auf HIGH gleich, ich will das aber andersrum.

Relaisboard, damit mein ich sowas: [www.google.de]

2-mal bearbeitet. Zuletzt am 28.07.15 13:54.


Der 3D-Druck ist tot, lang lebe der 3D-Druck!

Schreibt mich nicht mehr an, ich hab das drucken an den Nagel gehängt.
Re: (Servo-)Pins invertieren
28. July 2015 14:03
Du willst also deine Schaltung invertieren?


Triffid Hunter's Calibration Guide --> X <-- Drill for new Monitor Most important Gcode.
Re: (Servo-)Pins invertieren
28. July 2015 16:05
Quote
Wurstnase
Du willst also deine Schaltung invertieren?

Nein, eher nicht. Ich will, das Repetier das Signal invertiert ausgibt, statt HIGH ein LOW und statt LOW ein HIGH.

Die Schaltung will ich nicht invertieren, das Relaisboard ist ja ein "fix-und-fertig"-Teil.


Derzeit ist es so:

Repetier schaltet Lüfter aus und setzt dazu den entsprechenden Pin auf HIGH. Aus = HIGH <- das stört mich.


Der 3D-Druck ist tot, lang lebe der 3D-Druck!

Schreibt mich nicht mehr an, ich hab das drucken an den Nagel gehängt.
Re: (Servo-)Pins invertieren
28. July 2015 16:25
Du wirst wohl den Quellcode ändern und dort an (sehr vielen) Stellen
LOW gegen HIGH tauschen müssen. Ein Invertieren ist nicht vorgesehen.
#if FAN_PIN>-1 
     SET_OUTPUT(FAN_PIN); 
     WRITE(FAN_PIN,LOW); 
#endif
Vielleicht lötest Du besser die LED's auf der Relaiskarte aus, dann ist Ruhe. smiling smiley

Herzl. Grüße
Re: (Servo-)Pins invertieren
28. July 2015 17:31
Ah nu raff ich es. Wenn du quasi nen M106 S255 sendest, macht er den Lüfter aus?!?


Triffid Hunter's Calibration Guide --> X <-- Drill for new Monitor Most important Gcode.
Re: (Servo-)Pins invertieren
28. July 2015 17:34
ich nutz nen anderen M-Befehl:

M42 P7 S0   ;Licht an
M42 P7 S255 ;Licht aus

Aber ja, 255 macht Lüfter / Licht aus. Und die automatische Lüftersteuerung von z.B. dem Hotend funktioniert genauso, der Pin geht LOW wenn der Lüfter angehen soll.


Der 3D-Druck ist tot, lang lebe der 3D-Druck!

Schreibt mich nicht mehr an, ich hab das drucken an den Nagel gehängt.
Re: (Servo-)Pins invertieren
28. July 2015 17:35
Quote
AlterBastler
Du wirst wohl den Quellcode ändern und dort an (sehr vielen) Stellen
LOW gegen HIGH tauschen müssen. Ein Invertieren ist nicht vorgesehen.
#if FAN_PIN>-1 
     SET_OUTPUT(FAN_PIN); 
     WRITE(FAN_PIN,LOW); 
#endif
Vielleicht lötest Du besser die LED's auf der Relaiskarte aus, dann ist Ruhe. smiling smiley

Herzl. Grüße

Ja, da hatte ich auch schon geschaut, aber da sind in 7 Dateien entsprechende Befehle...


Der 3D-Druck ist tot, lang lebe der 3D-Druck!

Schreibt mich nicht mehr an, ich hab das drucken an den Nagel gehängt.
Re: (Servo-)Pins invertieren
28. July 2015 17:46
Wenn du es richtig machen möchtest kannst du für jedes LOW/0 beim FAN_PIN nen FAN_PIN_INVERTED oder xyz_INVERTED reinmachen. Für jedes HIGH/1 nen !FAN_PIN_INVERTED. Dann in deiner Config am besten unter die Pins noch nen #define FAN_PIN_INVERTED 1 rein, wenn die invertiert werden sollen und ne 0 wenns passt. Dann kannst auch mal umschalten.


Triffid Hunter's Calibration Guide --> X <-- Drill for new Monitor Most important Gcode.
Re: (Servo-)Pins invertieren
28. July 2015 17:50
Ja, das könnte man machen., gute Idee. thumbs up Muss ich mir mal genauer anschauen...

Edit: war schon spät grinning smiley

2-mal bearbeitet. Zuletzt am 29.07.15 02:09.


Der 3D-Druck ist tot, lang lebe der 3D-Druck!

Schreibt mich nicht mehr an, ich hab das drucken an den Nagel gehängt.
Re: (Servo-)Pins invertieren
28. July 2015 18:26
Ähm nö.

Du schreibst auf einen Pin mit WRITE(pin, status)
status ist hier entweder 1 oder 0 als an. Bei deinem Adapter ist 0 an und 1 aus. Dementsprechend invertiert ist die Geschichte. Also wenn man #define INVERTED_PIN TRUE angibt dann wäre das WRITE(pin, !INVERTED_PIN) für WRITE(pin, 0).

Wenn du nen Vergleich machen möchtest dann auch mit "==".


Triffid Hunter's Calibration Guide --> X <-- Drill for new Monitor Most important Gcode.
In diesem Forum dürfen leider nur registrierte Teilnehmer schreiben.

Klicke hier, um Dich einzuloggen