¿Por qué obtengo lecturas analógicas en los puertos no conectados al tocar el piezoeléctrico en el canal 1?
El elemento piezoeléctrico solo está conectado al Canal 1 (puerto Arduino A[0]). Los canales Ch 1 - Ch 6 están conectados a conectores hembra mono y el cableado de tierra (GND) está en serie desde el conector 1, 2 y 3 y así sucesivamente... hasta el extremo del canal 6 al 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 de 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.
No estoy seguro de si esta es una respuesta válida o no, pero la enviaré de todos modos, ya que existe una remota posibilidad 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 tal vez haya una función de biblioteca a la que pueda llamar para que haya una suspensión/retraso dependiente del procesador que se usa al leer los canales ADC. En cualquier caso, puede probar fácilmente esta teoría retrasando las lecturas del canal ADC para ver si el problema desaparece.
El multiplexor en ATMega necesita tiempo para cambiar de una entrada a otra entrada. Puede agregar un retraso para esperar hasta que se estabilice y luego leer su entrada.
analogRead(A0);
delay(10);
sensorReading[0] = analogRead(A0);
analogRead(A1);
delay(10);
sensorReading[0] = analogRead(A1);
kenny