4 votos

Este es el método adecuado para frenar en esta máquina.

Así que estoy siguiendo el esquema aquí para la conexión de un MC14067BCP: http://fluidforms.eu/docs/MultiplexedArduinoWiringDiagram.pdf

La única diferencia es que yo estoy haciendo un juego de 16 sensores y no cuatro. Además, mis sensores 5k - 250k LDRs (sensible a la luz de resistencias, que me he conectado a tierra en el extremo opuesto de los conectados a las conexiones mostradas en el diagrama de arriba.

Cuando ejecuto mi dibujo, de la línea de serie se muestra el resultado que es similar a la que se muestra si no hay cables estaban conectados a mi analógico en todo. (vea la pregunta aquí para ver a lo que me refiero: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1238854387) Este es realmente me estresa y sería increíble si alguien pudiera aclararme lo que está pasando.

Aquí está mi código:

int CONTROLpin1 = 2;
int CONTROLpin2 = 3;
int CONTROLpin3 = 4;
int CONTROLpin4 = 5;
int analogPin = 0;


// Variables:
int actualSensorValue = 0;             // value from the analog input


void sendCommand(int value) {
  Serial.println(value);
}


void setup() {
  //  set the states of the I/O pins:
  pinMode(CONTROLpin1, OUTPUT);
  pinMode(CONTROLpin2, OUTPUT);
  pinMode(CONTROLpin3, OUTPUT);
  pinMode(CONTROLpin4, OUTPUT);
  pinMode(analogPin, INPUT); 

  Serial.begin(9600);
}


void loop() {
  int i;
  for (i=0; i <16; i++) {

    // set control pins on the multiplexers
    digitalWrite(CONTROLpin1, bitRead(i,0));//bit4
    digitalWrite(CONTROLpin2, bitRead(i,1));//bit3
    digitalWrite(CONTROLpin3, bitRead(i,2));//bit2
    digitalWrite(CONTROLpin4, bitRead(i,3));//bit1


    Serial.println(i); // print which pin we are on
    actualSensorValue = analogRead(analogPin);
    sendCommand(actualSensorValue);


    delay(1000); 
  }
}

Además, he tratado de cortarlo al mínimo y sólo la conexión de un solo sensor. Cuando se mira en la salida, no parece haber ningún cambio. Aquí está una foto de el desnudo huesos de cableado:

picture

(para ser mas claro mi objetivo final es todavía el diagrama en la parte superior de este post).

1voto

Alex Andronov Puntos 178

La manera más fácil de conectar un montón de entradas en un micro usando partes comunes es el uso de un registro de desplazamiento como un 74HC165 para cada grupo de 8 bits. Atar el "/PL" alambre de cada registro de desplazamiento juntos, y hacer lo mismo para la "CP". Los cables deben ir a una CPU con un pin de cada uno. Lazo /CE de todos los dispositivos de baja. Atar el Q7 de salida de todos, pero el último dispositivo para la DS de alambre de la siguiente; el Q7 cable desde el último dispositivo en caso de empate a un tercio de la CPU pin. Leer todas las entradas, de la unidad de CP baja, pulso PL baja y, a continuación, dejar reposar alta. El Q7 cable desde el último dispositivo será el estado del dispositivo D7 entrada tenía cuando /PL se fue alto. Pulso CP alta y luego baja, y el Q7 cable desde el último dispositivo mostrará el valor de su D6 entrada tenía cuando /PL se fue alto. Pulso de nuevo, D5, etc. Después de que el último dispositivo del D0 ha sido la salida, el siguiente pulso de salida será el dispositivo anterior D7, a continuación, D6, D5, etc. Si usted tiene 12 fichas con 8 entradas cada uno, 96 pulsos dejar de leer el 96 entradas. Este enfoque es ampliable a cualquier número de fichas, con la única salvedad es que uno no puede leer el estado de, por ejemplo, el 1000 pin de entrada sin leer el estado de los otros 999 primera.

1voto

Duncan Smart Puntos 9195

Para hacer "multiplexación" tendría alguna forma de control de la línea de selección de los mux (lo que significa un extra de registro de la base 2 entradas según el número de sensores que tiene, así que para 16 sensores necesitaría cuatro más salidas para el control de la línea de selección). Y tienes un montón de puertas Y seleccionar la que mux canal que desea conectar a las entradas.

Si hubieran CS (Chip Select) pines de sí mismos, se puede evitar las puertas. Pero usted todavía tiene que preocuparse acerca de la conversión de 4 salidas en 16 chip selects; probablemente podría conseguir un 4 bits decodificador para hacer eso.

No me gusta ninguna de esas soluciones, aunque. Son muy desordenado. Personalmente, me gustaría usar un par I2C buffers de entrada y, a continuación, conectar todos los insumos para aquellos y, a continuación, lea los búferes con el Arduino. Más fácil de manejar, y sólo se utilizan dos entradas en el Arduino. Fácilmente extensible también, así que usted no tiene ninguna dirección conflictos.

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