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);
}


Construye tu propio micro PLC con STM32F103C con puerto RS232 para Modbus RTU para OpenPLC

 Construye tu propio micro PLC con STM32F103C con puerto RS232 para Modbus RTU para OpenPLC

Alimentación de 12-24vDC 

8 Entradas digitales de 12-24vDC 

8 Salida digitales a RELE 

1 Puerto RS232 

Soporte a Riel DIN

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


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

PDF: Download

Gerber: Download

PLC con STM32 para OpenPLC para programar el microcontrolador STM32f103c8 en lenguaje escalera "ladder" con el cual se facilita ya que es un lenguaje mas conocido para los eléctricos.

Esta placa tiene entradas octoacopladas con lo que nos permite usar entradas de 12-24vDC fácilmente, con logica 3v3 para los mismo y las salidas son de tipo RELE del cual se esta usando el ULN2803 que es un arreglo de 8 Darlington que nos permite activa por cada salida un máximo de 500mA mas que suficiente para alimentar los 8 RELES para asi tener aislada la salida ya que es contacto mecánica.

Para programar tiene un modulo integrado en la placa de TTL-RS232 el cual tiene el chip max3232 que nos permite trabajar con lógica 3v3 sin problemas así también nos deja el puerto libre en el caso que manejemos el protocolo Modbus si lo requerimos.

Proyecto de Tester de componentes electronicos con Arduino UNO y MEGA con pantalla LCD y OLED

 Proyecto de Tester de componentes electrónicos con Arduino UNO y MEGA con pantalla LCD y OLED

 

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

 


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

Con este proyecto con Arduino puedes realizar un tester de componentes electrónicos de fácil construcción, tomar en cuenta que la primera vez que se compila y sube el codigo deben de calibrar el tester de componente con Arduino ya que así tendrán una mejor lectura ya que los componentes para armar pueden tener diferente tolerancia incluso si son de la misma tienda de electrónica.

ArduTester v1.13 y Millenium: Download

PDF: Download

Gerber: Download


Construye una tarjeta de entrenamiento para AT89s52 con programador Arduino As a 8051

 Construye una tarjeta de entrenamiento para AT89s52 con programador Arduino As a 8051


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

 

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

*.ino: Download

PDF: Download

Gerber: Download

Con esta PCB sera mas cómodo la programación como el manejo los pines del AT89s52 ya que no lo permite su facil manejo ya incluye un regulador de 5v con un regulador lineal 7805 y un puerto ICSP para usar un programador AVR o el USBasp con conector compatible.

Popular Posts