Arduino Pneumatiksteuerung mit Lichtschranke

Hallo,

ich bin noch neu in der Welt des Arduinos.
Ich möchte gern einen einfachen Prototyp einer Maschine bauen, hierzu wird eine Ansteuerung von Pneumatikzylindern mittels Relais und Arduino benötigt.

Die Maschine soll folgendermaßen funktionieren:

Zwei doppelt wirkende Pneumatikzylinder sollen in einem Magazin installiert werden. Diese sollen über das Laptop mit Arduino auf Lösen oder Dauerdruck stellbar sein.

Des Weiteren gibt es eine Reflexionslichtschranke. Diese soll beim Auslösen zwei weitere Pneumatikzylinder zum Drücken ansteuern. Also Reflexionslichtschranke wird ausgelöst -> Zylinder drückt / Reflexionslichtschranke wird nicht ausgelöst -> Zylinder fährt zurück bzw. drückt nicht.

Ich habe schon begonnen den Code für das Auslösen per Lichtschranke zu schreiben, leider fällt mir das Programmieren generell sehr schwer. Könnte jemand mal über meine Ansätze schauen und mir Tipps geben, bzw. seinen Lösungsweg posten und mir diesen dann erklären? :slightly_frowning_face:

Über eine Rückmeldung würde ich mich sehr freuen.

Gruß

sketch_jun10a.ino (390 Bytes)

Hi

In Code-Tags schaut's dann so aus:

int Lichtschranke = 3; 
int Ventil = 4;

void setup() {
  pinMode(Lichtschranke, INPUT); // put your setup code here, to run once:
  pinMode (Ventil, OUTPUT);
}

void loop() {
  if (Lichtschranke, HIGH) // put your main code here, to run repeatedly:
  {
    digitalWrite(Ventil, HIGH);
  }                             
  else
  { 
    digitalWrite(Ventil, LOW);
    }
  }

Die Funktionalität ließe sich in eine Zeile bringen ( digitalWrite(Ventil,digitalRead(Lichtschranke)); )

Weiter befürchte ich, daß Dein Sketch nicht kompiliert.

Umschreibe Deinen Ablauf bitte erneut, benenne die verschiedenen Zylinder dabei nicht gleich, auch die Lichtschranken könnten dabei sinnige Namen vertragen, oder ein Auslöseknopf darf auch gerne so heißen.

Ein Doppelwirkender Zylinder kann beidseitig einzeln angesteuert werden, oder bei Anstsuerung in die eine Richtung fahren und ohne Ansteuerung in die Gegenrichtung - Das sollte auch eine Nennung wert sein - Das braucht dann seitens des Arduino nur einen Ausgang für diesen Zylinder.

MfG

Warum erinnert mich die Aufgabenstellung an Indiana Jones?

Hallo,

na ja der Ansatz stimmt - fast. Ich vermisse die Anweisung

digitalRead(lichtschranke)

in der IDE sind jede Menge einfache Beispiele zum üben.

Datei/Beispiel/digital/Button

kommt Deinem Ansatz sehr nahe. Arbeite möglichst viele der Beispiele durch.

Ich vermute mal es handelt sich um 24V DC Ventile, die kannst Du auch mit einem Relais schalten, es geht aber auch mit einem MOSFET. Schaltungsbeispiele dazu gibts im Netzt reichlich.
Verwende auf jeden Fall Löschdioden für die Ventile. Es gibt dazu fertige Schutzbeschaltungen als Modul die unter den DIN Stecker am Ventil gesteckt werden.

Wenn Du einzelne Relais verwenden willst ist auch da eine Schutzbeschaltung Freilaufdiode für die Spule erforderlich. Es gibt fertige Module für die Arduino Welt die haben in der Regel alles mit drauf und können direkt an einen Arduino angeschlossen werden.

Wenn es sich um industrielle Lichtschranken handelt sind auch die meist für 24VDC (10-30V) ausgelegt. Wenn diese positiv schaltend sind, was in der Regel der Fall ist,kannst Du sie über einen Spannungsteiler ebenfalls anschliessen.

Heinz

Vielen, vielen Dank für eure Antworten.

Ich habe versucht, eure Anmerkungen in meinem Programm umzusetzen.
Die Funktionalität habe ich noch nicht in eine Zeile gebracht, da es mir so zum Verstehen und Lernen glaube ich leichter fällt.

@postmaster-ino: Das mit den doppelt wirkenden Zylindern bzw. der Nennung müsstest du mir noch einmal genauer erklären. Plan ist es, dass der Arduino die Relais schaltet, und die Relais den/die Zylinder ansteuern.

@Rentner: Genau, es handelt sich um zwei 24V DC Ventile von Festo. Das eine soll die Pneumatik Zylinder zum Drücken ansteuern und das andere die fürs Magazin. Ich werde mir Schutzbeschaltungen als Modul bestellen. Könntest du mir vielleicht eine Schutzbeschaltung für die Relais verlinken, da bin ich mir nicht sicher, nicht das ich eine falsche kaufe.

Anbei mein geändertes Programm, es treten keine Fehler beim Kompilieren auf.
Noch einmal vielen Dank für eure Hilfe.

sketch_jun23c.ino (756 Bytes)

Hi

Dein Sketch passt doch prima in CODE-Tags - dann ist Er direkt für Jeden sichtbar, wird entsprechend formatiert dargestellt und kann kopiert werden, wenn man Ihn denn selber Anspielen möchte.

Die 'Schutzbeschaltung' besteht aus einer Diode in Sperr-Richtung parallel zur Spule - ob man Das als Modul braucht, wage ich zu bezweifeln.
Siehe dazu: die-drei-moeglichkeiten-zur-spulenbeschaltung-von-relais, vogel.de
Ansteuern würde ich die Ventile mit einem FET in der Minus-Leitung des Ventil, was in der Art ist auch in dem Link zu Sehen.

Zur Benennung:
Mir als Laie ist einzig der Sketch bekannt, wenn darin jedes 2.te Wort Zylinder ist, werde ich Da keine direkten Unterschiede sehen, für Dich ist Das aber ganz klar der Press-Zylinder und der Magazin-Zylinder - genau deshalb hießen die Beiden bei mir auch so ungefähr.
Auch ist mir der Ablauf noch nicht ganz klar - habe aber Deine aktuelle Version des Sketch nicht gesichtet.
Beschreibe, wie der Ablauf sein soll, möglichst kleine Schritte - so, als ob Deine Oma Das verstehen soll (Rubber-Duck-Debuging - so erklären, daß Das eine Gummi-Ente verstehen würde).

Dann programmierst Du diese kleinen Schritte einfach - je kleiner die Schritte, desto einfacher sind Diese Einzelschritte in ein Programmcode zu gießen.
Wenn Du mit Gießen fertig bist, werde die ganzen Unzulänglichkeiten ausgebessert, Die der Kompiler nicht mag und dann bist Du Deinem Ziel schon recht nahe.

MfG