¿Cómo puedo controlar 128 (o más) solenoides?

5

Necesito encender o apagar 128 solenoides individualmente, varias veces por segundo. Me gustaría manejar esto desde una PC o un dispositivo integrado.

¿Cómo recomendarías hacer esto? Tal vez haya una forma en que pueda habilitar el direccionamiento de un grupo de (8 o 16) solenoides y enviarles un comando turn on o turn off ?

Teniendo en cuenta lo que hay por ahí, ¿cuál es la forma más fácil de hacerlo? ¿Cuál es la mejor manera o la más preferida?

Estoy viendo estas válvulas solenoides que cuestan alrededor de $ 50 cada una. Comparta información si conoce alguna más barata / mejor. El propósito es controlar una cascada interior. Es de baja presión, por lo que todo el agua gotea hacia abajo.

enlace

    
pregunta random65537

7 respuestas

16

FTDI USB chip + '595 shift shift' en cadena. Coloque un transistor separado en cada relé.

Más detalles:

Una cadena de 74hc595 se describe aquí: enlace (solo se muestran dos, pero el concepto se puede expandir a cualquier número de '595s.)

Para conducir una cadena, se necesitan tres señales, datos, cierre y reloj.

Puedes usar una parte FTDI en modo "bitbang" para generar tres señales desde el control de computadora. Para usar el FTDI en modo bitbang, use libftdi (También puede usar los controladores oficiales de FTDI, pero libftdi es menos problemas en mi experiencia). Un FT232R tiene suficientes pines para hacer esto. FTDI vende un desglose DIP, y Sparkfun también vende algunos brotes.

Tengaencuentaquenecesitará1282N2222sy128resistenciasde330ohmios.(Puedeobtenermatricesderesistenciasquepodríansermásfácilesdeadministrar).

Dibujéelcircuitoasumiendounaalimentaciónde12Vparasusrelésynomenosde24bobinasdeohmios.Siestenoeselcaso,esposiblequenecesiteuntransistormásresistenteoMOSFETdenivellógico.El2222esuntransistorcasitanbaratocomoloencontrarás,ycuandocompras128piezas,esohaceladiferencia.

Nomostrémayúsculasdederivaciónnilaconexiónexactade232R.Leelahojadedatos.

Bien,acabodeverelsolenoidequeintentascontrolar.2N2222nofuncionará.Necesitacambiar120VCAalsolenoide.Porlotanto,puedetenerunpequeñorelé(con2N2222)paracambiarlos120V,ousarunrelédeestadosólidoquepuedatomarentradaslógicasyconectarlodirectamentealasalida'595.

OK,aquíhayuncódigoparamanejarestousandolibftdi.Asignacionesdepinesenelcódigofuente.apt-getinstalllibftdi-dev,luegocompileasí:"gcc test_595.c -lftdi"

/* This program is distributed under the GPL, version 2 */

#include <stdio.h>
#include <ftdi.h>

#define HC595_CT (1) // number of '595 chips

int main(int argc, char **argv)
{
    struct ftdi_context ftdic;
    int f,i;

    unsigned char buf[2*8*HC595_CT+1]; // latch pulse, 8*HC595_CT clock pulses

    if ((f=ftdi_init(&ftdic)) < 0)
    {
        fprintf(stderr, "ftdi_init failed\n");
        return f;
    }

    f = ftdi_usb_open(&ftdic, 0x0403, 0x6001);

    if (f < 0 && f != -5)
    {
        fprintf(stderr, "unable to open ftdi device: %d (%s)\n", f, ftdi_get_error_string(&ftdic));
        exit(-1);
    }

    printf("ftdi open succeeded: %d\n",f);

    // FTDI cable assignments:
#define BIT_DATA (1<<0)  // 1: orange. TXD, "data"
                         // 2: yellow. RXD, unused
#define BIT_CLOCK (1<<2) // 4: green. RTS, "clock"
#define BIT_LATCH (1<<3) // 8: brown. CTS, "latch"

    ftdi_enable_bitbang(&ftdic, BIT_DATA | BIT_CLOCK | BIT_LATCH);

    // set zero
    *buf=0;
    f = ftdi_write_data(&ftdic, buf, 1);    

    unsigned char *b=buf;


    unsigned char data;
    unsigned char state;

    if (argc == 2) {
      data=atof(argv[1]);
    } else {
      data=0x5a;
    }

    printf("sending data %d\n",data);

    for (i=0; i<8; i++) {   
      state=(data & (128L>>i))?BIT_DATA:0;
      *b++=state;
      state |= BIT_CLOCK;
      *b++=state;
    }
    *b++=BIT_LATCH;

    f = ftdi_write_data(&ftdic, buf, (b-buf));    

    ftdi_disable_bitbang(&ftdic);
    ftdi_usb_close(&ftdic);
    ftdi_deinit(&ftdic);
}

Y aquí hay una foto de mi configuración de prueba:

(Utilicéelcable TTL-232R-3V3 ).

    
respondido por el markrages
4

Esquema limpio con sutilezas (derivaciones, números de pin, etc ...):

Con el FT245 puede usar varias cadenas de registro de desplazamiento más cortas, ya que tiene más IO.

No lo dibujé así, pero ahí estás. De todos modos, el esquema se realiza en Altium Designer. Si desea los archivos esquemáticos, puedo enviárselos, pero necesita el software para abrirlos.

    
respondido por el Connor Wolf
1

¿Hay alguna razón para que un decodificador de 7 a 128 no sea apropiado? Utilizar un chip FTDI y un registro de desplazamiento en serie parece una exageración.

    
respondido por el krapht
1

Cualquiera que sea la solución que termine usando, recomendaría echar un vistazo a la fuente de alimentación de esta bestia. Usted tiene la posibilidad de consumir mucha corriente por accidente (cortocircuitando un transistor debido a un transitorio, un fallo de reloj con un '1' a muchas, muchas salidas, etc.) - Los PTC individuales en cada bobina protegen una bobina individual , y también sugeriría una resistencia de derivación de bajo ohmio (0.1?) o un sensor de corriente de efecto Hall que cortará la energía a toda la sección del controlador si se detecta una sobrecarga. Un amplificador operacional que integra la sobrecarga a lo largo del tiempo es probablemente un buen diseño de disparo de hardware, pero también puede hacerlo en un micro, si eso es lo suyo.

    
respondido por el akohlsmith
0

Pondría 16 de que estos o algo similar en serie podrían manejar. No estoy seguro de cómo desea determinar la activación / desactivación, pero un PIC de 8 pines de gama baja (     

respondido por el kenny
0

Unidad de matriz.

Mutiplex tanto sus fuentes como sus sumideros.

Conecta los solenoides en matrices. (filas y columnas)

mucho menos electrónica.

Los circuitos pueden ser como lo que se muestra, pero puedes salir con mucho menos si lo colocas en una matriz.

    
respondido por el Tim Williscroft
0

Como alternativa, si tiene un poco de dinero para quemar, siempre puede invertir en un Fez Domino y expande el bus I2C a 320 IOs.

El Fez Domino es un dispositivo C # integrado, sin embargo, la placa de E / S mencionada en el PDF usa una Bus I2C estándar, que es común en la mayoría de los uC.

    
respondido por el user3045

Lea otras preguntas en las etiquetas