Pages - Menu

Translate

jueves, 11 de enero de 2024

Construcción de generador de señal de 3 canales 2-10V para apertura de compuertas de climatización

 Construcción de generador de señal de 3 canales 2-10V para apertura de compuertas de climatización


 Esquemático: ============================================================


 ======================================================================

PDF: Download

Gerber: Download

Con este Generador de señal de 0-10v de 3 canales nos permitirá usar la apertura de compuertas para sistema de climatización que tienen esa señal de control para el porcentaje de apertura y cierre.

Con este proyecto con Arduino al encender el compresor activa con un contacto NA para su apertura y con los 3 potenciómetros dependiendo la posición que se encuentre puedes definir el porcentaje de apertura y al quitar la señal del compresor vuelve a cerrarse.

/*            CODIGO            */

#include <Wire.h>              // libreria para bus I2C
#include <Adafruit_GFX.h>      // libreria para pantallas graficas
#include <Adafruit_SSD1306.h>  // libreria para controlador SSD1306

#define ANCHO 128  // reemplaza ocurrencia de ANCHO por 128
#define ALTO 32    // reemplaza ocurrencia de ALTO por 64

#define OLED_RESET 4                                    // necesario por la libreria pero no usado
Adafruit_SSD1306 oled(ANCHO, ALTO, &Wire, OLED_RESET);  // crea objeto

const int analogInA1 = A1;  // Analog input pin that the potentiometer is attached to
const int analogInA2 = A2;  // Analog input pin that the potentiometer is attached to
const int analogInA3 = A3;  // Analog input pin that the potentiometer is attached to

const int analogOut9 = 9;    // Analog output pin that the LED is attached to
const int analogOut10 = 10;  // Analog output pin that the LED is attached to
const int analogOut11 = 11;  // Analog output pin that the LED is attached to

int sensorValueA = 0;  // value read from the pot
int sensorValueB = 0;  // value read from the pot
int sensorValueC = 0;  // value read from the pot

int outputValueA = 0;  // value output to the PWM (analog out)
int outputValueB = 0;  // value output to the PWM (analog out)
int outputValueC = 0;  // value output to the PWM (analog out)

float outputValue1 = 0;  // value output to the PWM (analog out)
float outputValue2 = 0;  // value output to the PWM (analog out)
float outputValue3 = 0;  // value output to the PWM (analog out)

int pushButton = 3;
int LEDon = 4;

void setup() {
  Serial.begin(9600);
  pinMode(pushButton, INPUT);
  pinMode(LEDon, OUTPUT);
  Wire.begin();                            // inicializa bus I2C
  oled.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // inicializa pantalla con direccion 0x3C
  oled.clearDisplay();                     // limpia pantalla
  oled.setTextColor(WHITE);                // establece color al unico disponible (pantalla monocromo)
    /////////////////////////////////OLED//////////////////////////////
  oled.clearDisplay();                 // limpia pantalla
  oled.setTextColor(WHITE);            // establece color al unico disponible (pantalla monocromo)
  oled.setCursor(0, 0);                // ubica cursor en inicio de coordenadas 0,0
  oled.setTextSize(3);                 // establece tamano de texto en 1-21 2-10 3-7 4-5 caracteres (3)
  oled.print("ZurcoIS");               // escribe en pantalla el texto
  oled.setCursor(0, 24);               // ubica cursor en coordenas 10,30  (24)
  oled.setTextSize(0);                 // establece tamano de texto en 2  (0)
  oled.print("Telf.: (**) ***-****");  // escribe texto
  oled.display();                      // muestra en pantalla todo lo establecido anteriormente
  /////////////////////////////////OLED//////////////////////////////
  delay(1000);
}

void loop() {
  int buttonState = digitalRead(pushButton);
  delay(20);
  sensorValueA = analogRead(analogInA3);               // map it to the range of the analog out:
  outputValueA = map(sensorValueA, 0, 1023, 51, 255);  // change the analog out value:
  outputValue1 = map(sensorValueA, 0, 1023, 0, 1000);  // change the analog out value:
  outputValue1 = outputValue1 / 10;
  delay(20);
  sensorValueB = analogRead(analogInA2);               // map it to the range of the analog out:
  outputValueB = map(sensorValueB, 0, 1023, 51, 255);  // change the analog out value:
  outputValue2 = map(sensorValueB, 0, 1023, 0, 1000);  // change the analog out value:
  outputValue2 = outputValue2 / 10;
  delay(20);
  sensorValueC = analogRead(analogInA1);               // map it to the range of the analog out:
  outputValueC = map(sensorValueC, 0, 1023, 51, 255);  // change the analog out value:
  outputValue3 = map(sensorValueC, 0, 1023, 0, 1000);  // change the analog out value:
  outputValue3 = outputValue3 / 10;
  delay(20);
  if (buttonState == LOW) {
    analogWrite(analogOut9, outputValueA);
    analogWrite(analogOut10, outputValueB);
    analogWrite(analogOut11, outputValueC);
    digitalWrite(LEDon, HIGH);
    /////////////////////////////////OLED//////////////////////////////
    oled.clearDisplay();       // limpia pantalla
    oled.setTextColor(WHITE);  // establece color al unico disponible (pantalla monocromo)
    oled.setCursor(0, 0);      // ubica cursor en inicio de coordenadas 0,0
    oled.setTextSize(1);       // establece tamano de texto en 1-21 2-10 3-7 4-5 caracteres
    oled.print(outputValue1);  // escribe en pantalla el texto
    oled.print(" %");
    oled.setCursor(64, 0);
    oled.print(outputValue2);  // escribe en pantalla el texto
    oled.print(" %");
    oled.setCursor(0, 16);
    oled.print(outputValue3);  // escribe en pantalla el texto
    oled.print(" %");
    oled.setCursor(64, 16);
    oled.print("AA ON");  // escribe en pantalla el texto
    oled.display();       // muestra en pantalla todo lo establecido anteriormente
    /////////////////////////////////OLED//////////////////////////////
  } else {
    analogWrite(analogOut9, 50);
    analogWrite(analogOut10, 50);
    analogWrite(analogOut11, 50);
    digitalWrite(LEDon, LOW);
    /////////////////////////////////OLED//////////////////////////////
    oled.clearDisplay();       // limpia pantalla
    oled.setTextColor(WHITE);  // establece color al unico disponible (pantalla monocromo)
    oled.setCursor(0, 0);      // ubica cursor en inicio de coordenadas 0,0
    oled.setTextSize(1);       // establece tamano de texto en 1-21 2-10 3-7 4-5 caracteres
    oled.print(outputValue1);  // escribe en pantalla el texto
    oled.print(" %");
    oled.setCursor(64, 0);
    oled.print(outputValue2);  // escribe en pantalla el texto
    oled.print(" %");
    oled.setCursor(0, 16);
    oled.print(outputValue3);  // escribe en pantalla el texto
    oled.print(" %");
    oled.setCursor(64, 16);
    oled.print("AA OFF");  // escribe en pantalla el texto
    oled.display();        // muestra en pantalla todo lo establecido anteriormente
    /////////////////////////////////OLED//////////////////////////////
  }
  delay(20);
}


Popular Posts