Steueung eines Hydrauliksteuerventils mit Servomotoren

Hallo,
Ich bin hier neu. Ich bin eigentlich Landmaschienentechniker und kein Programmierer oder Elektroniker. Ich tüftle gerne und mir ist auch keine Herausforderung zu Groß. Ich will für unseren Obsrpantaschentraktor ein zusätzliches hydraulisches Steuerventil nachrüsten, weil ich zusätzliche Funktionen benötige. Da der Platz sehr begrenzt ist und ich keinen Platz für einen Kreuzhebel mit Seilzügen habe, bin ich auf die Idee gekommen ich könnte das Steuerventil mit einem 2 Achsen Joystik und einen Taster oben drauf und einem Arduino UNO mit den beiden Servomotoren Ansteuern. Ich verwende hierfür 2 Servomotoren mit 80 kg. Servoposition 45 Grad ist zum Beispiel Hydraulikzylinder ausfahren. 90 Grad ist Nullposition, 135 Grad ist Hydraulikzylinder einfahren. Ein Servomotor muss auch noch auf 170 Grad schwenken. für die Schwimmstellung in der 4. Position. Soweit funktioniert es auch, bis auf dass Umschalten von der Bewegungsfunktion auf die fest Position über den Taster, es manchmal funktioniert und dann auch wieder nicht. Ich muss dann öfter drücken, dann geht es wieder einmal usw. Den sketch habe ich zum Teil, aus dem Internet, Youtupe, selber. Ich kann leider kein Hydraulikventil mit Magnetventile verwenden, da diese nur eine ein aus Schaltung haben und ich somit keine feinfühlige Steuerung habe, die ich aber brauche. Ein hydraulisches Ventil mit Proportionalsteuerung inkl. allem was ich brauche kommt auf 3500 Euro, was meinen Rahmen komplett sprengt. es währe auch noch praktisch wenn man den Joystik etwas in eine Richtung bewegen müsste bis die Servomotoren beginnen zu arbeiten, da ich vermute das in der Obstplantasche durch Erschütterungen des Joystiks es zu einem ungewolten Ansteuern der Servos kommt. Ich habe leider in meinem Bekannten und Freundeskreis niemanden der sich damit aus kennt. Daher bitte ich hir um Hilfe.
#include <Servo.h>
Servo myservo;

int val;
int Tasterpin = 7;
int Tasterzustand = 0;
int Tasterzaeler = 0;
int letzterTasterzustand = 0;
const int myservo1Position = A1;
int LED = LED_BUILTIN;
const int myservo1pin = 5;
Servo myservo1;
int angle = 0;
bool isManual = false;

void setup()
{
// put your setup code here, to run once:
myservo.attach(10);
myservo1.attach(5);
Serial.begin(9600);
pinMode(Tasterpin, INPUT_PULLUP);
myservo1.write(90);
pinMode(LED_BUILTIN, OUTPUT);

}

void loop()
{
{
Tasterzustand = digitalRead(Tasterpin);
if(Tasterzustand != letzterTasterzustand)
{
if(Tasterzustand == 1)
{
Tasterzaeler++;
}
else
{digitalWrite(LED, LOW);

}

if (Tasterzaeler % 2 == 0)
{
  {
    
digitalWrite(LED, HIGH);

  }




Tasterzaeler = 0;
}
else
digitalWrite(LED, LOW);

}

letzterTasterzustand = Tasterzustand;
delay(5);}
{Tasterzustand = digitalRead(Tasterpin);
if(Tasterzustand != letzterTasterzustand){
if(Tasterzustand == HIGH){
isManual =! isManual;
if(!isManual){
myservo1.write(170);
}
}
delay(5);
}
letzterTasterzustand = Tasterzustand;
if(isManual){
val = analogRead(1);
val = map(val, 0, 1023, 45, 135);
myservo1.write(val);
}
}

{

// put your main code here, to run repeatedly:
val = analogRead(5);
val = map(val, 0, 1023, 45, 135);
myservo.write(val);
delay(5);
Serial.println(isManual);}
} Verwende dieses Symbol um Code zu posten

Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden.
Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.

mfg ein Moderator.

Setze Deinen Sketch bitte in Codetags. Wie das geht, steht hier.
Außerdem formatiere den Code bitte ordentlich. Strg+T in der IDE hilft Dir dabei.
Das kannst Du auch noch nachträglich ändern.
Entferne bitte auch unnötige Leerzeilen.

Gruß Tommy

Wenn du keine Kohle für ein Servoventil ausgeben willst, und ein schwarz/weiß Ventil auch nicht passt. Mit welchem Ventil willst du denn dann arbeiten?
Du kannst ja nur mit einem schwarz/weiß Ventil hantieren. Dann nimmst du deinen Joystick und setzt je Richtung ein Relais mit denen du dein Ventil ansteuerst. Dafür braucht es bestimmt keinen Arduino.

Hallo,
Jetzt habe ich es geschaft den Sketch einzufügen.
Danke für die schnelle Antwort````
tippe oder füge den Code hier ein

#include <Servo.h>
Servo myservo;

int val;
int Tasterpin = 7;
int Tasterzustand = 0;
int Tasterzaeler = 0;
int letzterTasterzustand = 0;
const int myservo1Position = A1;
int LED = LED_BUILTIN;
const int myservo1pin = 5;
Servo myservo1;
int angle = 0;
bool isManual = false;

void setup()
{
// put your setup code here, to run once:
myservo.attach(10);
myservo1.attach(5);
Serial.begin(9600);
pinMode(Tasterpin, INPUT_PULLUP);
myservo1.write(90);
pinMode(LED_BUILTIN, OUTPUT);

}

void loop()
{
{
Tasterzustand = digitalRead(Tasterpin);
if(Tasterzustand != letzterTasterzustand)
{
if(Tasterzustand == 1)
{
Tasterzaeler++;
}
else
{digitalWrite(LED, LOW);

}

if (Tasterzaeler % 2 == 0)
{
  {
    
digitalWrite(LED, HIGH);

  }




Tasterzaeler = 0;
}
else
digitalWrite(LED, LOW);

}

letzterTasterzustand = Tasterzustand;
delay(5);}
{Tasterzustand = digitalRead(Tasterpin);
if(Tasterzustand != letzterTasterzustand){
if(Tasterzustand == HIGH){
isManual =! isManual;
if(!isManual){
myservo1.write(170);
}
}
delay(5);
}
letzterTasterzustand = Tasterzustand;
if(isManual){
val = analogRead(1);
val = map(val, 0, 1023, 45, 135);
myservo1.write(val);
}
}

{

// put your main code here, to run repeatedly:
val = analogRead(5);
val = map(val, 0, 1023, 45, 135);
myservo.write(val);
delay(5);
Serial.println(isManual);}
}

Hallo, zur Frage ob ich mich mit der Hydraulik auskenne. Also für mich gut genug, ich bin natürlich kein Profi. Ich verwende ganz einfache Handhebelventile an der ich eine Halterung montiere die die Servomotoren beiinhalten. Über ein Gästänge verbinde ich dann die Servomotoren mit den Handhebeln. Ich habe auch schon überlegt ob ich die Magnetventile an einem Hydraulikventil mit Magnetventilen so antakten kann, dass ich so auch gefühlvoll Steuern kann. Da ich nicht weiß ob die Magnetventile so etwas überhobt können; auf dauer aushalten, und wie es sich dann unter Betriebsbedinungen verhält ( schwankender Druck,...) habe ich es gleich verworfen. Mit den Servomotoren glaube ich ist es für mich einfacher und ich kann an der Winkelstellung der Hebel sehen wenn etwas nicht in Ordung ist.
Ein Hydraulikblock mit Proportionalsteuerung ist in meinem Buget leider nicht drin, es kann sich halt nicht jeder alles so einfach Leisten. Kaufen kann sich so etwas mit einer proportional Steuerung auch ein jeder mit den nötigen Kleingeld. Ich bastle halt gerne und freue mich dann um so mehr wenn es funktioniert.
Da ich mich in das Gebit mit Arduino nur eingearbeitet habe funktioniert es schon zu 90% (Dank Internet, Youtupe, Bücher, Zeit und Hirnschmalz...). Jetzt komme ich aber nicht mehr weiter, daher mein Hilferuf!

Und die Sicherheit bleibt auf der Strecke. Die Mengensteller sind beidseitig federbelastet, somit werden sie wenn du sie loslässt direkt in die Gesperrtstellung zurückgedrückt. Und deine Bewegung stoppt direkt.
Wie willst du das mit den Servomotoren verwirklichen? Der Arduino kann sich aufhängen, oder die Spannungszufuhr für deine Steuerung bricht weg, oder der Servoantrieb bleibt stehen, solange die Hydraulik weiter Druck liefert wird dein Zylinder weiter fahren da der Mengensteller offen steht und von dem stehenden Servomotor gehalten wird. Wie willst du es bewerkstelligen das die Servoantriebe den Mengensteller direkt bei Ausfall los lassen, das dieser in die Gesperrtstellung zurückspringen kann?
Eine Möglichkeit wäre noch den Mengensteller an eine andere Stelle zu setzen wo Platz ist, und diesen mechanisch direkt mit einem Hebel über ein Gestänge zu verbinden. Aber auch da hast du ein Problem mit Sicherheit. Wenn im betrieblichen Umfeld was passiert wird die Berufsgenossenschaft deinen Eigenbau nicht gut heißen. Du stehst bei sowas immer mit einem Bein im Knast.
Bei einem Betriebsunfall wo ein Rettungswagen gerufen werden muss, kommt auch die Trachtengruppe mit dabei. Dann geht es rund.
Was meinst du warum ein Servoblock so teuer wird, auch da muss ein entsprechender Aufwand getrieben werden um die Sicherheit zu gewährleisten.

Hallo.
Ja ich weiß die Sicherheit ist dir Achillessehne meiner Ansteuerung! Ich baue das Hydraulikventil in den Bestehenden Kreislauf mit einer Druckweiterführung ein. Als Sicherheit habe ich mir gedacht ich baue vor dem Ventil ein 3/2 Wegeventil mit einem Elektromagnetventil ein. Ich will es so Schalten, daß es bestromt das Ventil zu schaltet und unbestromt, federbelasteten das Ventil aus dem Hydraulikkreis raus schaltet. Das soll vom Fahrersitz aus gleich im Notfall geschaltet werden (Notausschalter). Natürlich kommt hinter dem 3/2 Wegeventil ein Druckbegrenzungsventil, welches bei einem blöden Zustand den Druck begrenzt. Weil das Ventil kommt gleich nach der Hydraulikpumpe. Hinter dem Steuerventil kommt noch ein Rückschlagventil weil sonst würde sich bei abgeschaltenen Ventil Druck über den bestehenden Kreislauf in das Steuerventil drücken. Das Hydraulikventil selbst zu montieren ist kein Problem. Problem ist die Bedienung des Ventils, da in der Kabine kein Platz ist. Die originale Kreuzhebelsteuerung mit Seilzug ist sehr groß und die Seilzüge sich nicht gerade flexibel. Eine Joystick und einen Notausschalter bei Platzmangel anzubringen sehr viel Platzsparender.
Ich kann mich an die Anfangszeit erinnern als bei den Traktoren die Proportionalventile eingeführt wurden, die sind auch in betätigter Position hängen geblieben. Könnte man dann nur den Stecker ziehen. Wenn es einer nicht mitbekommen hat und er vom Feld nach Hause gefahren ist, hat sich das Proportional Ventil in ein gelb bis leichtes braun verfärbt und die O Ringe am Flansch waren nicht mehr vorhanden, eine deutliche Ölspur war auch zu sehen. Das könnte auch passieren wenn nichts angekoppelt war Da ging nichts in den Notlauf oder der Fahrer wurde gewarnt. Erst dann wenn das Öl draußen war, dann hat der Getriebeöldruck aufgeleuchtet, weil er das Öl verteilt hat. Auch hatte ich schon das bie Kugel für die Arretierung durch Abnutzung heraus gefallen ist und das Ventil auch auf der Druckposition hängen geblieben ist.
Ich meine nur es gibt nichts was 100 % sicher ist. Ich brauche es nur für den Seitenverschub für den Mulcher. Wenn etwas passieren sollte dann kann maximal ein Baum etwas ab bekommen. Sonst ist es aus geschaltet .
Natürlich Personenschaden darf keiner durch einen technischen Defekt sein.

Auch ich bin der Meinug daß Du diese Umbauten nicht machen solltest. Diese sind nicht sicher.

Grüße Uwe

Die Steuerung mit Seilzug ist doch eigentlich das was du auch platzmäßig hinbekommen solltest, weil du ja nur einen Hebel in einer Achse betätigen musst. Das sollte nicht all zu groß bauen.

Hallo, nein ich brauche 2 Funktionen, davon 1 mal mit Schwimmtstellung in Position 3. Einmal für den Arm ein und aus zu schwenken, und einmal um den Arm aufzuheben und zu senken. Die Schwimmtstellung ist dafür dar damit sich der Mulcher beim Mähen neben dem Obstbaum frei bewegen kann. Die feinfühlige Funktion brauche ich, damit ich mit Gefühl mit dem Arm zum Baum fahren kann. Wie schon geschrieben Hydraulikventil mit Magnetventil und 1/0 Schaltung ist mir zu gefühllos ( ich will nicht das zuviel Gras stehen bleibt oder ich gegen den Baum krache und die Rinde beschädige. Kreuzheben ist die Kabine zu klein ( ich muss auch noch rechts aussteigen können)

Lieber Tüfter,

du hast jetzt zweimal den Code OHNE Code-Tags gepostet.
Das wird überhaupt nicht gerne gesehen!
Und es ist auch einfach das zu editieren:

Du klickst auf das Bleistiftsymbol unter deinem Posting das du editieren möchtest.
Dann kannst du - genauso wie bei einem neuen Posting - den Text editieren.
Dann löscht du zuerst das gesamte Programm raus
Gehst in die Arduino-IDE und machst dort
Strg-T für automatisches Formatieren und dann
kopieren für das Forum dann werden die Code-Tags automatisch eingefügt.

Und dann aus der Zwischenablage wieder in das Posting einfügen

vgs

Guten Morgen,
Tut mir leid das habe ich nicht gewusst. Ich komme aber erst am Abend dazu es richtig zu machen. Ich habe gedacht dass es so stimmt wie ich es gemacht habe.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.