Maskinistens nätverk - information på svenska  Maskinistens nätverk - information på finska  Maskinistens nätverk - information på norska  Maskinistens nätverk - information på danska  Maskinistens nätverk - information på isländska
Forumindex

ForumindexForumindexMaskin-databasFotoalbumKalender-informationKöp & SäljDownloadsLexikonKontaktregisterEfterlysningarShop

Åkerman-register
Visa forum för mobila enheter

ForumindexVerkstadsforumAllmänt[Allmänt] Hydraulik

Elstyrt ventilpaket till frontlastare

20 inlägg • Sida 2 av 2
Diskutera hydraulik i allmänhet här

Bådoktorn (trådstartaren)

#16 » 22:30:54, 16-03-2017
  • Överför markerat ord till lexikonet

Är jag som har svårt med G och 6..

Tror jag måste föröka få leverantören att förklara lite mer..

Har sett de där finska spakarna ska kolla med deras ventil leverantör. Komplett kitt är för mycket pengar att lägga på en BM500.

Slutar nog med ett vajer ventilpaket ändå.
Synd att det är svårt att få någon bra placering på spaken i BM500'an. Byta traktor kanske är enklast.


Har fått till en början på arduino programmet iaf.

Är strömregleringen en PI regulator på köpes ventilstyrningat eller är det mer avancerat?
Bådoktorn
Fler än 100 inlägg
 
Blev medlem: 22:27:34, 14-12-2009
Ort: Västernorrland
Sverige
Maskintyp: Ej angivet

GLIDLAGER - LEDLAGER - BUSSNINGAR - KULLAGER - RULLAGER - TÄTNINGAR - LÄNKHUVUDEN
www.debearings.se


Bådoktorn (trådstartaren)

#17 » 20:59:06, 18-03-2017
  • Överför markerat ord till lexikonet

Här är början på Arduino programmet. Är än så länge bara feldetektering ,dödzon och olinjär utsignal ställbar i fyra steg.
Ska inte ta åt mig äran för nån del av koden. Har lånat kod här och var.. Är mitt första försök med Arduino .
Om jag inte blir klar med det kanske någon annan har nytta av det..


    Kod: Markera allt


    // These constants won't change.  They're used to give names
    // to the pins used:
    const int X1 = A0;  // Analog input pin that the potentiometer is attached to
    const int X2 = A1;  // Analog input pin that the potentiometer is attached to
    const int Y1 = A2;  // Analog input pin that the potentiometer is attached to
    const int Y2 = A3;  // Analog input pin that the potentiometer is attached to
    const int ledPin = 13;       // pin that the LED is attached to

    const int buttonRESET = 2;     // the number of the pushbutton pin
    int buttonState = 0;         // variable for reading the pushbutton status

    const int threshold_HIGH = 550;   // Om summa kommer utanför gräns är det fel Summa_X/_Y
    const int threshold_LOW = 450;    // Om summa kommer utanför gräns är det fel
    const int threshold_MIN = 0;   // Om summa kommer utanför gräns är det fel Summa_X/_Y
    const int threshold_MAX = 500;    // Om summa kommer utanför gräns är det fel
     
     int ERROR_X=1;                   // Error =1
     int ERROR_Y=0;                   // Error =1

    const int analogOutPin = 9; // Analog output pin that the LED is attached to

    int sensorValue_X1 = 0;        // value read from the pot
    int sensorValue_X2 = 0;        // value read from the pot

    int outputValue_X1 = 0;        // Skalat värde
    int outputValue_X2 = 0;        // Skalat värde

    int sensorValue_Y1 = 0;        // value read from the pot
    int sensorValue_Y2 = 0;        // value read from the pot

    int outputValue_Y1 = 0;        // Skalat värde
    int outputValue_Y2 = 0;        // Skalat värde

    int outputValue_X1_dead=0;

    int Summa_X = 0;              // Summa av båda ingångarna X
    int Summa_Y = 0;              // Summa av båda ingångarna X

    int scaled ;
    int Deadband =300;            //  Dödzone mitt
    int Curving=1;                //  Val av kurva 1-4

    void setup() {
      // initialize the LED pin as an output:
      pinMode(ledPin, OUTPUT);
      // initialize serial communications at 9600 bps:
      Serial.begin(9600);
      // initialize the pushbutton pin as an input:
      pinMode(buttonRESET, INPUT);
    }

    void loop() {
      // read the analog in value:
      sensorValue_X1 = analogRead(X1);
      // map it to the range of the  out:
      outputValue_X1 = map(sensorValue_X1, 0, 1023, 0, 500);



      // read the analog in value:
      sensorValue_X2 = analogRead(X2);
      // map it to the range of the  out:
      outputValue_X2 = map(sensorValue_X2, 0, 1023, 500, 0);




    // read the state of the pushbutton value: ÅTERSTÄLLER ERROR
      buttonState = digitalRead(buttonRESET);
       if ((buttonState == HIGH) and (ERROR_X == LOW)) {
        // RESET FEL
      (ERROR_X = HIGH);
      }

      // Tänder led när allt är ok
      if (ERROR_X == HIGH) {
        // turn LED on:
        digitalWrite(ledPin, HIGH);
      } else {
        // turn LED off:
        digitalWrite(ledPin, LOW);
      }

      // Säkerhets funktion lägger ihop de inventerade värdena är de inte 500 - (Hysteres) tilsammans är det något fel!
      Summa_X = outputValue_X1 + outputValue_X2;

     if ((Summa_X > threshold_HIGH) or (Summa_X < threshold_LOW)or (outputValue_X1 < threshold_MIN)or (outputValue_X1 > threshold_MAX)or (outputValue_X2 < threshold_MIN)or (outputValue_X2 > threshold_MAX))
    // ERROR om något värde är utanför gränsvärdena bryter matningen till ventilerna.Återställs med  INPUT 2
      {
       (ERROR_X = LOW);
      }
     


    //Deadzone och Icke-linjär kurva 1-4 LOW > STRONG

    int outputValue_X1_temp = map(outputValue_X1, 0, 500, -1000, 1000);



      int SIGN = 1;

      scaled = outputValue_X1_temp;
      if (scaled < 0) {
        SIGN = -1;
      }
      scaled = abs (scaled);
      if (scaled < Deadband){
        scaled = 0;
      }
      else {
        scaled = (long) (scaled-Deadband)*1000/ (long)(1000-Deadband);
      }
      int squared = ((long)scaled* (long) scaled)/1000;
      switch (Curving) {
        case 0:
           break;
        case 1: // low
          scaled = (2*scaled + squared)/3;
          break;
        case 2: // mild
          scaled = (scaled + squared)/2;
          break;
        case 3: // mid
          scaled = (scaled + 2*squared)/3;
          break;
        case 4: // strong
          scaled = squared;
         break;
      }
     scaled = SIGN*scaled;

     

     
      // change the analog out value:
      analogWrite(analogOutPin, outputValue_X1);

      // print the results to the serial monitor:
      Serial.print("sensorX1 = ");
      Serial.print(sensorValue_X1);
    Serial.print("\t outputX1 = ");
      //Serial.print("sensorX1 = ");
      //Serial.print(sensorValue_X2);
      //Serial.print("\t outputX2 = ");
     // Serial.println(outputValue_X2);
      //Serial.print("\t output summa = ");
     //Serial.println(Summa_X);
     //Serial.println(buttonState);
     //Serial.println(ERROR_X);


    //Deadzone och Icke-linjär kurva 1-4 LOW > STRONG
      //Serial.print("sensor = ");
      Serial.print(scaled);
      Serial.print("\t");
      //Serial.print(" ");
      Serial.print("\t");
      //Serial.print("squared = ");
      Serial.println(squared);

     

      // wait 2 milliseconds before the next loop
      // for the analog-to-digital converter to settle
      // after the last reading:
      delay(2);
    }
Bådoktorn
Fler än 100 inlägg
 
Blev medlem: 22:27:34, 14-12-2009
Ort: Västernorrland
Sverige
Maskintyp: Ej angivet

Jac

#18 » 21:05:26, 18-03-2017
  • Överför markerat ord till lexikonet

Om du fixar PI reglering på strömmen så blir jag imponerad. Visst styr man strömmen i "riktiga" system men jag har intrycket av att det inte är så lätt att mäta PWM ström.

Annan Arduino PWM här: Janson1 @ Bygga egen Rototilt, är det möjligt/försvarbart?
Jac
Fler än 500 inlägg
 
Blev medlem: 12:08:59, 18-01-2006
Ort: Møre & Romsdal

Ulf

#19 » 21:18:16, 18-03-2017
  • Överför markerat ord till lexikonet

Njae, en del analoga system styrde oftast på ström.
Med PWM är det vanligt att man har en konstantströmsgenerator, som är ställbar antingen från processorn eller via en pot. Det senare är enklare...
Inställd ström hålls oavsett.
Kommer du med problem, eller är du en del av det?
Användarvisningsbild
Ulf
Fler än 500 inlägg
 
Blev medlem: 16:04:18, 05-03-2004
Ort: Kil
Maskintyp: Traktor
Maskin: Nuffield 460 -61

Bådoktorn (trådstartaren)

#20 » 16:10:29, 19-03-2017
  • Överför markerat ord till lexikonet

Funderar om en sådan skulle fungera med en:
https://www.arduino.cc/en/Main/ArduinoMotorShieldR3

Och reglera strömmen med arduino. Provade PI regulator i arduinon i går kväll fick det att fungera.
Skalar man rätt borde det räcka med P=1 och och lite I tid för att kompensera för spolen differens.

Kanske blir för "seg" känsla i styrspaken.
Bådoktorn
Fler än 100 inlägg
 
Blev medlem: 22:27:34, 14-12-2009
Ort: Västernorrland
Sverige
Maskintyp: Ej angivet


Återgå till [Allmänt] Hydraulik

Vilka är online

Användare som besöker denna kategori: Inga registrerade användare och 1 gäst



BA Trading AB

Trucking

Älmeboda Maskinservice

trailerbeg

OilQuick

Alftaprodukter

TK Traktordelar

Hammars verkstad AB

D&E Bearings AB

http://www.RESERVdelar24.SE

Bildelar24.com

Vikabacken

Klaravik

Bobcat

glappfri.nu

Beck Maskin

Crazyride

ME

Ygsbostudios

Koneita

Kilremslagret

Wexal

Nordicc

Bra Verktyg

XLKLäder

SSL Certificates