ULN2003A Driver Board como generador de códigos y adaptador de niveles lógicos.

No voy a hablar del uso de esta placa como driver de motores unipolares, sino como driver para alimentar un numero diverso de receptores de codigo de cuatro hilos aplicables a cualquier placa arduíno con una sencilla adaptación de la placa. Al mismo tiempo que nos sirve de adaptador de niveles lógicos entre 5 y 12 V.

Tenemos que saber que este integrado consta de un array de siete par darlington como se muestra en el esquema, y necesita entradas de alto nivel para cambiar el estado a bajo nivel en su salida.Su uso ideado para alimentar las bobinas de motores paso a paso o simplemente un motor DC, hace que un extremo del bobinado se conecte directamente al polo positivo de la fuente o bateria y cierra el circuito a traves del elemento del array, (emisor -colector) conectado a gnd.

De los siete elementos del array solo se utilizan cuatro entradas, luego si queremos utilizarlo como driver generador de codigos obtendremos ´”2 elevado a 4″ posibilidades segun la tabla lógica:

Los valores entre parentésis son las salidas invertidas y adaptadas.

Puesto que no vamos a conducir bobinas, podemos cortocircuitar lo leds y conectar ahí los hilos de salida para alimentar a los receptores. Tener en cuenta que disponemos cuatro resistores limitadores de corriente.

APLICACIÓN: Una placa Esp-32 generando doce registros de codigo de cuatro hilos que se conectarian al driver, generando salidas invertidas para otros receptores protegiendo a la placa y sirviendo simultaneamente como “level Shifter” con niveles de 5 a 12 V. Solo tener la precaución de escribir dos tabalas de verdad correspondientes a la salida de los GPIos y la correspondiente invertida que es la que vamos a utilizar.

BLYNK_WRITE(V18) {
  switch (param.asInt())
  {
    case 1: // REG 1
      tft.fillScreen(TFT_BLACK);//refreco de pantalla
     tft.setCursor(10,100);
   tft.print("REGISTRO 1");
    digitalWrite(17,LOW);
    digitalWrite(16,LOW);
    digitalWrite(4,LOW);
    digitalWrite(15,HIGH);
      break;
    case 2: // REG2 
       tft.fillScreen(TFT_BLACK);//refreco de pantalla
       tft.setCursor(10,100);
   tft.print("REGISTRO 2");
   digitalWrite(17,LOW);
    digitalWrite(16,LOW);
    digitalWrite(4,HIGH);
    digitalWrite(15,LOW);
      break;
      case 3: // REG3
      tft.fillScreen(TFT_BLACK);//refreco de pantalla
       tft.setCursor(10,100);
   tft.print("REGISTRO 3");
   digitalWrite(17,LOW);
    digitalWrite(16,LOW);
    digitalWrite(4,HIGH);
    digitalWrite(15,HIGH); 
    break;
   case 4: // REG4
     tft.fillScreen(TFT_BLACK);//refreco de pantalla
       tft.setCursor(10,100);
   tft.print("REGISTRO 4");
   digitalWrite(17,LOW);
    digitalWrite(16,HIGH);
    digitalWrite(4,LOW);
    digitalWrite(15,LOW);
    break;
    case 5: // REG5
     tft.fillScreen(TFT_BLACK);//refreco de pantalla
    tft.setCursor(10,100);
   tft.print("REGISTRO 5");
   digitalWrite(17,LOW);
    digitalWrite(16,HIGH);
    digitalWrite(4,LOW);
    digitalWrite(15,HIGH);
    break;
    case 6: // REG6
     tft.fillScreen(TFT_BLACK);//refreco de pantalla
    tft.setCursor(10,100);
   tft.print("REGISTRO 6");
   digitalWrite(17,LOW);
    digitalWrite(16,HIGH);
    digitalWrite(4,HIGH);
    digitalWrite(15,LOW);
    break;
       case 7: // REG7
    tft.fillScreen(TFT_BLACK);//refreco de pantalla
    tft.setCursor(10,100);
   tft.print("REGISTRO 7");
   digitalWrite(17,LOW);
    digitalWrite(16,HIGH);
    digitalWrite(4,HIGH);
    digitalWrite(15,HIGH);
    break;
     case 8: // REG8
    tft.fillScreen(TFT_BLACK);//refreco de pantalla
    tft.setCursor(10,100);
   tft.print("REGISTRO 8");
   digitalWrite(17,HIGH);
    digitalWrite(16,LOW);
    digitalWrite(4,LOW);
    digitalWrite(15,LOW);
    break;
     case 9: // REG9
   tft.fillScreen(TFT_BLACK);//refreco de pantalla
    tft.setCursor(10,100);
   tft.print("REGISTRO 9");
   digitalWrite(17,HIGH);
    digitalWrite(16,LOW);
    digitalWrite(4,LOW);
    digitalWrite(15,HIGH);
    break;
        case 10: // REG10
    tft.fillScreen(TFT_BLACK);//refreco de pantalla
   tft.setCursor( 10,100);
   tft.print("REGISTRO 10");
   digitalWrite(17,HIGH);
    digitalWrite(16,LOW);
    digitalWrite(4,HIGH);
    digitalWrite(15,LOW);
    break;
     case 11: // REG11
    tft.fillScreen(TFT_BLACK);//refreco de pantalla
      tft.setCursor( 10,100);
   tft.print("REGISTRO 11");
   digitalWrite(17,HIGH);
    digitalWrite(16,LOW);
    digitalWrite(4,HIGH);
    digitalWrite(15,HIGH);
    break;
     case 12: // REG12
     tft.fillScreen(TFT_BLACK);//refreco de pantalla
    tft.setCursor( 10,100);
   tft.print("REGISTRO 12");
   digitalWrite(17,HIGH);
    digitalWrite(16,HIGH);
    digitalWrite(4,LOW);
    digitalWrite(15,LOW);
    break;
}

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Translate »