Control valvula solenoide mediante pwm

Taln

Tal cual, en eso tenés razón. En teoría dice que ronda el voltio y medio / dos.
La salida del DAC del PLC está tirando 22.3v / 23v como máximo. Probando, me di cuenta que con 22 está ya tiene apertura del 100% ... Creo que se puede pulir un poco más y dejarlo perfecto. En un rato comparto sketch
Bien, voy con el sketch y el diagrama como quedo el circuito ahora para el arduino NANO (puede ser un arduino uno tambien... el ESP8266 no me funciono, es muy suceptible al ruido de la DC-DC que tenia en el circuito y en la salida del PWM, no puedo tener con el filtro 0-5v por que son puertos de 3.3v)

Código:
/* - ETI - https://sites.google.com/a/educ.ar/eti/home -
 *  PROYECTO: "Ctrl valvula proporcional hidraulica con regulador lineal lm317 por medio de una señal pwm"
 *  DISEÑADO POR: prof.martintorres@educ.ar
 */

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,2);


int Valvula1 = 11;
int dirPin1 = 4;
int dirPin2 = 7 ;
int yPin = A1;

int yVal;
int APERTURA;
int compAPERTURA;
int APERTURA2;
int dt = 100;
int dt2 = 5000;


void setup() {
  Serial.begin(9600);
  pinMode(Valvula1, OUTPUT);
  pinMode(dirPin1, OUTPUT);
  pinMode(dirPin2, OUTPUT);
  pinMode(yPin, INPUT);
   digitalWrite(dirPin1, 1);
   digitalWrite(dirPin2, 1);
lcd.init();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print ("Ctrl Proporcional");
lcd.setCursor(0,1);
lcd.print ("-beta 1.3-");
delay (1500);
lcd.clear();
}

void loop() {
  yVal = analogRead(yPin);
  Serial.println( "Lectura PUERTO: " );
  Serial.println(yVal);
 lcd.setCursor(0,0);
 lcd.print ("POSICION   L:");
 lcd.print (yVal);
 lcd.setCursor(0,1);
 
 if (yVal > 421 & yVal <430) {
   APERTURA2 = map(yVal,0,0,0,0);
lcd.print ("-SIN GIRO- ");
lcd.print (APERTURA2);
     }

if (yVal < 420) {
 APERTURA2 = map(yVal,1023,420,0,255);
lcd.print ("GIRO DER.: ");
lcd.print (APERTURA2);
delay (150);
lcd.clear();
     }

if (yVal > 431) {
 APERTURA2 = map(yVal,431,1023,0,-255);
lcd.print ("GIRO IZQ.: ");
lcd.print (APERTURA2);
delay (150);
lcd.clear();
     }

compAPERTURA = APERTURA;

if (compAPERTURA <= 10) {
    digitalWrite(dirPin1, 1);
    digitalWrite(dirPin2, 1);
     }

  if (yVal > 410 & yVal <460) {   
    //if (yVal > 320 & yVal <380)
    // if (yVal > 508 & yVal <512)
    digitalWrite(dirPin1, 1);
    digitalWrite(dirPin2, 1);
    APERTURA = map(yVal,500,0,0,0);
    analogWrite(Valvula1, APERTURA);
     } 
 
  if (yVal > 460) {
    APERTURA = map(yVal,460,1023,0,255);
    //APERTURA = map(yVal,380,1023,0,255);
    digitalWrite(dirPin1, 0);
    digitalWrite(dirPin2, 1);
    analogWrite(Valvula1, APERTURA);
   } else {
   digitalWrite(dirPin2, 0);
  }
 
  if (yVal <= 410 ) {
    APERTURA = map(yVal,410,0,0,255);
    digitalWrite(dirPin1, 1);
    digitalWrite(dirPin2, 0);
    analogWrite(Valvula1, APERTURA);
   }else {
   digitalWrite(dirPin1, 0);
  }
  }

diagrama.png
 
Ya esta probado y funcionando :silbando: ... si se aguanto 3 días, significa que safa :ROFLMAO:

Comparto los PCB por si alguien quiere replicarlo. Gracias a todos por su aporte :aplauso:(y)

PCB.png
 

Adjuntos

  • PCB_Ctrl_EVsolenoidePROPORCIONAL_lcd.PDF
    21.5 KB · Visitas: 3
  • PCBSilk_Ctrl_EVsolenoidePROPORCIONAL_lcd.PDF
    46.2 KB · Visitas: 3
  • SILK_Ctrl_EVsolenoidePROPORCIONAL_lcd.PDF
    7.4 KB · Visitas: 2
Aquí zafar es más o menos "esquivar", "salvar un escollo" . Si, vale zafarse del problema por el momento. "Quitarse de encima".
Pero Safar no es nada. Bueno si, en valenciano es palangana y muchos lo emplean en castellano. Problema del seseo; soy de los pocos que no pronuncian igual la "sa" que "za".
 
Atrás
Arriba