5 votos

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

Debo cambiar de 128 solenoides o desactivar de forma individual, varias veces por segundo. Me gustaría esta unidad desde un ordenador o un dispositivo embebido.

¿Cómo podría usted me recomienda que hacer esto? Tal vez hay una manera que puedo activar el direccionamiento de un grupo de 8 o 16) solenoides y enviar un turn ono turn off comando para ellos?

Teniendo en cuenta lo que hay, ¿cuál es la manera más fácil de ir sobre esto? ¿Cuál es la mejor o de forma más preferida?

Estoy mirando estas electroválvulas que son alrededor de $50 cada uno. Compartir información si sabes de alguna más baratos y/o mejores. El propósito es el control de una cascada en el interior. Es de baja presión, de modo que toda el agua gotea hacia abajo.

http://www.ascovalve.com/Applications/ProductSearch/ProductInfo.aspx?productid=8262H001AC120/60,110/50D&userAction=view

5voto

Mark Puntos 1998

Sea cual fuere la solución que terminan usando recomiendo echar un vistazo a la fuente de alimentación para esta bestia. Usted tiene el potencial para realmente dibujo de una gran cantidad de corriente por accidente (cortocircuito de un transistor debido a transitorios, un reloj de fallo configuración de un '1' para muchas, muchas salidas, etc.) - Individual PTCs en cada bobina protege a una persona de la bobina, y también me gustaría sugerir una baja ohmios (0.1?) la resistencia de derivación o de efecto hall sensor de corriente que cortar la energía a toda la sección del controlador si se detecta una sobrecarga. Un op-amp que integra la sobrecarga a lo largo del tiempo es, probablemente, un buen hardware viaje de diseño, pero se puede hacer en un micro, si eso es lo tuyo, también.

4voto

AnonJr Puntos 111

USB FTDI chip + daisy-chained '595 registro de desplazamiento. Poner por separado un transistor en cada relevo.

Más detalle:

Una cadena de integrado 74hc595 se describe a continuación: http://www.arduino.cc/en/Tutorial/ShiftOut (Sólo se muestran dos, pero el concepto puede ser ampliado a cualquier número de '595s.)

A la unidad de la cadena, se necesitan tres señales, datos, pestillo, y el reloj.

Usted puede utilizar un FTDI parte en "bitbang" modo de generar tres señales de control de la computadora. Para utilizar el FTDI en bitbang modo, el uso de libftdi (también Se puede utilizar FTDI oficial de los pilotos, pero libftdi tiene menos problemas en mi experiencia). Un FT232R tiene suficiente pines para ello. FTDI vende un CHAPUZÓN breakout, y Sparkfun vende algunos brotes de acné también.

alt text

El aviso deberá 128 2N2222s y 128 330 ohm resistencias. (usted puede obtener la resistencia de las matrices que pueden ser más fáciles de manejar.)

He dibujado el circuito suponiendo una tensión de 12 v para su relés y no menos de 24 ohmios bobinas. Si este no es el caso, usted puede ser que necesite un más robusto transistor o lógica-nivel de MOSFETs. El 2222 es tan barato un transistor como se dará cuenta, y cuando usted está comprando de 128 trozos que hace una diferencia.

No me muestran las tapas de bypass o exacta de 232R del circuito. Lea la hoja de datos.

OK, acabo de ver el solenoide está tratando de controlar. 2N2222 no funciona. Se necesita cambiar de 120VAC para el solenoide. Así que usted puede tener un pequeño relé (con 2N2222) para cambiar el 120V, o el uso de un relé de estado sólido que puede tomar la lógica de entradas y conectarlo directamente a la '595 de salida.

OK, aquí está el código para impulsar el uso de este libftdi. Pin de asignaciones en el código fuente. apt-get install libftdi-dev, a continuación, compile como esta: "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í una imagen de mi configuración de prueba:

alt text

(He utilizado el TTL-232R-3V3 cable.)

2voto

Adam Puntos 11

Yo pondría 16 de estos o algo similar en serie podría unidad. No está seguro de cómo desea determinar de encendido/apagado pero de gama baja de 8 pines del PIC (

0voto

hunterp Puntos 139

La matriz unidad.

Mutiplex tanto sus fuentes y sumideros.

Conecte los solenoides en las matrices. ( filas y columnas)

mucho menos de la electrónica.

Los circuitos pueden ser como lo que representa, pero usted puede conseguir con mucho menos si la matriz.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X