⚡ Descuentos en cursos en video - Lleva tu aprendizaje técnico al siguiente nivel y aprovecha precios especiales antes de que termine la oferta. 🔥 Aprovechar oferta ahora 🔥
Electrónica y Diseño de Circuitos

¿existe diseño de puertas lógicas para usar flag?

Meta
Meta
39
hace 4 años
hace 4 años
hola:
hice dos esquemas con proteus. simulando circuitos uno con arduino y otro con solo puertas lógicas.

lo que hace el circuito de arduino.si pulso el botón sport, se activa el relé de la válvula, si vuelvo a pulsar, se cierra. con arduino funciona bien usando flag. en otras palabras, usar el mismo botón para activar y desactivar un relé que controla una válvula. el problema está que en solo puertas lógicas si pulso el pulsador sport y lo suelto, se activa y luego se desactiva. para que no ocurra, tuve que hacerlo con arduino.

quiero hacer lo mismo, con electrónica pura y dura o usando solo puertas lógicas.

¿es posible hacerlo?

dejo esquemas, diagrama de flujo y código de arduino justo abajo.

// constantes.
const byte pininterruptor = 3;
const byte valvula =  4;
const byte sportboton = 8;

// variables.
byte estadopininterruptor = 0;
byte estadosportboton = 0;

// variable para pulsador antirebotes o bounce.
int estadoactual1 = 0;
int estadoactual2 = 0;
int estadoultimo = 0;
int contador = 0;
//--------------------------------------------
void setup()
{
  // configuración de los pines.
  pinmode(valvula, output);
  pinmode(pininterruptor, input);
  pinmode(sportboton, input);
  digitalwrite(valvula, low);
  serial.begin(9600);
}
//--------------------------------------------
void loop()
{
  // lee el estado del pulsador e interruptor.
  estadopininterruptor = digitalread(pininterruptor);
  estadosportboton = digitalread(sportboton);

  // modo 1) normal y 2) modificado.

  // ¿int pulsado?
  if (estadopininterruptor == high)
  {
    // sí. int ha sido pulsado.
    // comprueba el estado del pulsador sport ha sido pulsado.
    estadoactual1 = estadosportboton;
    delay(10);
    estadoactual2 = estadosportboton;

    // ¿los estados no son iguales?
    if (estadoactual1 == estadoactual2)
    {
      // ¿estadoactual es distinto a estadoultimo?
      if (estadoactual1 != estadoultimo)
      {
        // ¿estadoactual es alto, 1, activado o high?
        if (estadoactual1 == high)
        {
          contador = contador + 1;
          serial.print ("Ésta es la pulsación nº ");
          serial.println(contador);
        }
      }
    }
    estadoultimo = estadoactual1;

    if (contador % 2 == 0)
    {
      // cerrar válvula.
      digitalwrite(valvula, low);
    }
    else
    {
      // abrir válvula.
      digitalwrite(valvula, high);
    }
  }
  else // encontes. int no ha sido pulsado.
  {
    // cierra la válvula o el relé en nc.
    digitalwrite(valvula, low);
  }
}
Captura2.PNG Record Monza Abarth Diagrama de flujo.PNG Captura.PNG
Hernan Cass
Hernan Cass
17.886
hace 4 años
hace 4 años
Busca información sobre FLIP FLOPS que son circuitos de memoria de 1 bit, en tu caso en particular lo mas recomendable (creo) es uno tipo T de toggle. Podes usar un integrado flip flop ya hecho (hay flanco ascendentes o descendentes) o armarlo con compuertas puras y duras como decís. Pero buscate la teoría de estos circuitos que estoy casi seguro es lo que precisas es uno tipo T con flanco ascendente, cuando apretas el botón cambia de estado la salida, en uno flanco descendente cambia la salida al soltar el botón. 
Y otra sugerencia: si pensas usar este circuito desde 12V podes usar integrados tecnología CMOS como la serie CD4000, estos integrados funcionan con hasta 18v, por lo que pueden conectarse en un auto en funcionamiento sin problemas. De esta manera solo precisas el pulsador, el integrado, una resistencia, algún capacitor y el circuito de potencia a la salida (de R8 en adelante), nada de optoacopladores ni cosas por el estilo. El integrado que precisarías en este caso es un CD4027 que es un FlipFlop tipo JK, puenteando correctamente las patas podes lograr que funcione como un Toggle, la llave que tenes como "interruptor" tendrias que vincularla al reset por medio de un transistor que le haga un pull down, para que siempre arranque en "apagado", ya que ni bien lo energizas puede llegar a quedar en "encendido". Sino alimentarlo directamente con esa llave y ponerle un pequeño circuito de retardo al reset con algun capacitor para que arranque en "cero" una fracción de segundo luego de ser energizado.

Saludos.

Meta
Meta
39
hace 4 años

Hola campeón:
El INTERRUPTOR si es tipo toggle, el pulsador SPORT es normalmente abierto NO. Es decir, si pulso, se pone a 12V y luego a su posición, así las veces que pulse, en la salida que hay un relé con una válvula, lo activa y desactiva.
El tema de los 12V y en otro lado 5V depende si uso o no Arduino que son de 5V. El funcionamiento en Arduino funciona tal como lo quiero. Si es posible, quiero reducirlo todo a puertas lógica o lógica discreta.
Voy a investigar sobre el CD4027 haber si me deja como pulsador al menos encender y apagar un Led con un pulsador tipo NO, normalmente abierto

Responder
Hernan Cass
Hernan Cass
17.886
hace 4 años

Te va a funcionar, Si buscas en google "CD4027 toggle" vas a encontrar cientos de diagramas donde se lo usa para interruptores infrarrojos, capacitivos y con botón. Lo único es el tema que a veces puede arrancar en estado ON luego de energizarlo, pero eso se soluciona manteniendo en nivel alto el pin reset por una fracción de segundo luego de energizarlo, esto puede hacerse con un capacitor y una resistencia a dicho pin, el capacitor conectado entre el + y el pin y la resistencia conectada entre el pin y - para que el voltaje caiga mas lentamente de + a 0v.

Responder
Meta
Meta
39
hace 4 años

Voy a probarlo. Eso de usar solo puertas lógicas puras y duras parece que es complicado. ;)

Responder

¿Conoces una solución?

¡Aprende a reparar con estos cursos YoReparo!

4.73
(22)

Curso Reparación de Fuentes Conmutadas de PC y Equipos Electrónicos

Maximiliano Resch
$ 40 USD
$ 20 USD
4.6
(10)

Curso Localización de Fallas en Refrigeración en Heladeras/Neveras On/Off

Yamil Alarcón
$ 29 USD
$ 12 USD
4.64
(11)

Curso Electrónica para Reparación de Placas

Santiago Cediel
$ 29 USD
$ 11 USD
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos?
Regístrate gratis