¿El problema de lectura de la señal analógica de Arduino?

3

¿Por qué obtengo una lectura analógica de los puertos no conectados al grabar el piezo en el canal 1?

El elemento piezo solo está conectado al Canal 1 (puerto Arduino A [0]). Los canales Ch 1 - Ch 6 están conectados a tomas mono hembra y el cableado a tierra (GND) está en serie desde los jack 1, 2 y 3, así sucesivamente ... hasta que el Ch 6 finaliza en el puerto Arduino GND.

Los canales Ch2 - Ch6 no tienen conexión piezoeléctrica, pero aún están conectados a la placa arduino. A 1 -A [5]

Esta es la lectura en serie ... la primera columna es Ch1 ... Ch 6.

Taped 3 times

787 0 0 0 0 0 
191 0 0 0 0 0 
19 0 0 0 0 0 
937 123 63 5 0 0 < ch2, ch3 ch4 ERROR !> 
86 0 0 0 0 0 
13 0 0 0 0 0 
507 83 126 16 8 0 < ch2, ch3, ch4 ch5 ERROR !>
21 1 1 0 0 0  < ch2, ch3 ERROR !>
0 0 18 0 0 0 < ch3 ERROR !>

Este es el código arduino:

const int singnalLevel = 10;  
boolean treshold = false;

int sensorReading[6];

void setup() {
  Serial.begin(9600);          
}

void loop() {
   int sensorReading[6] = {0, 0, 0, 0, 0, 0}; 
   boolean treshold = false;
   sensorReading[0] = analogRead(A0);
   sensorReading[1] = analogRead(A1);
   sensorReading[2] = analogRead(A2);
   sensorReading[3] = analogRead(A3);
   sensorReading[4] = analogRead(A4);
   sensorReading[5] = analogRead(A5);

  for (int index = 0; index <= 5 ; index++) {        
    if(sensorReading[index] > singnalLevel){
      treshold = true;
    }
  }
    if(treshold){  
        for (int index = 0; index <= 5 ; index++) {        
          Serial.print(sensorReading[index]);   
          Serial.print(" ");  
        }
    Serial.println();  
  }    
  delay(1);  
}

Este es el esquema del circuito.

    
pregunta Calle Wennström

2 respuestas

4

No estoy seguro de si esta es una respuesta válida o no, pero la enviaré de todas formas ya que existe una posibilidad remota de que sea útil.

En otros microcontroladores que he usado antes, debe tener un tiempo de establecimiento entre las lecturas del canal ADC, o es probable que la lectura anterior afecte las lecturas posteriores. Todavía no he usado el ADC en el Arduino, pero quizás haya una función de biblioteca a la que pueda llamar para que haya un tiempo de espera / retraso dependiente del procesador que se usa al leer los canales de ADC. En cualquier caso, puede probar fácilmente esta teoría demorando las lecturas del canal ADC para ver si el problema desaparece.

    
respondido por el Dave
1

El multiplexor en ATMega necesita tiempo para cambiar de una entrada a otra entrada. Puede agregar un retraso para esperar hasta que esté estable y luego leer su entrada.

  analogRead(A0); 
  delay(10);
  sensorReading[0] = analogRead(A0);
  analogRead(A1); 
  delay(10);
  sensorReading[0] = analogRead(A1);
    
respondido por el nurie

Lea otras preguntas en las etiquetas