Nicko aqui tienes las primertas pruebas...
https://www.dropbox.com/sh/bmd0tamkqmmxdpo/_5u8SbymC2Bueno aqui está el código del compañero NICKO_ESX modificado para controlar un elevador electrohidraulico de un tractor... cuando tenga un rato y busque un simulador de arduino cuelgo el esquema!Un saludo a tod@s
/*
Control de elevador electrohidraulico de tractor New Holland TN90F
*/
int pinSensor = A0; // Entrada para el potenciómetro.posicion actual del elevador, indicado por los leds.
int pinSensor2 = A1; //potenciometro de posicion, mando
int pinLed2= 10; // pin de bajar, señal para el mosfet de electrovalvula de bajar
int pinLed = 9; //pin de subir, señal para el mosfet de electrovalvula de subir
int valorSensor = 0; // variable para el valor del sensor.
int posact = 0; //creo que es necesario que la variable empiece de cero.
int valorSensor2 = 0; //variable para el potenciometro 2
int sigpos = 0; // abreviatura de siguiente posición, valor que seria enviado por serial.
int difvalors =0; //diferencia entre sigpos y valor sensor
int pinSensor3 = A2;//potenciometro velocidad (pwm) de bajada
int valorSensor3 =0;//variable potenciometro 3
int pwmbajar = valorSensor3;//valor del sensor para ajustar el pwm de electrovalvula de bajada
void setup() {
// Declaramos el pin del Led como salida:
pinMode(pinLed, OUTPUT);
pinMode(pinLed2, OUTPUT);
Serial.begin(9600);
pwmbajar = map(valorSensor3, 0, 1024, 0 ,255 );
}
void loop() {
valorSensor2 = analogRead (pinSensor2)/2;//lee los datos del potenciometro 2 de posicion requerida
int sigpos = valorSensor2 ;
valorSensor = analogRead(pinSensor)/2; //valorsensor igual al valor del potenciometro de posicion actual
valorSensor3 = analogRead(pinSensor3)/4;//lee los valores del potenciometro de regular velocidad de bajada
difvalors = abs (sigpos - valorSensor);
Serial.print ("valorSensor");
Serial.println ( valorSensor); // para chequear en que posición esta el potenciometro del elevador
delay(1); //le doy delay para que se pueda leer los datos impresos. de lo contrario pasan demaciado rapido
Serial.print ("valor del sensor sig");
Serial.println(valorSensor2); //posición del potenciometro 2
delay(1);
//en este caso si el valor siguiente es menor al del potenciometro, , seria el de subida del elevador
if (sigpos < valorSensor && difvalors > 5) {
digitalWrite (pinLed, HIGH);
analogWrite (pinLed, 220); //pwm
digitalWrite (pinLed2,LOW);
delay(1);
}
// en este caso si el valor siguiente es superior al del potenciometro, , seria el de bajada del elevador
else if (sigpos > valorSensor && difvalors > 5) {
digitalWrite (pinLed2, HIGH);
analogWrite (pinLed2,pwmbajar = valorSensor3);//pwm
digitalWrite (pinLed,LOW);
delay(1);
}
//en este caso al ser iguales los valores se apagarian las dos electrovalvulas
else if (sigpos == valorSensor || difvalors < 5) {
digitalWrite (pinLed2, LOW);
digitalWrite (pinLed, LOW);
delay(1); }
}