Problema para detectar interrupción

Hola, saludos a todos. Estoy haciendo pruebas para detectar los valores entregados por un transductor piezoeléctrico. Tengo una placa Arduino Duemilanove y utilizo un Atmega168. Lo intenté de las siguientes maneras:

Siempre con esta sentencia en la funcion setup() attachInterrupt(0, interrupcion, CHANGE  );

y este es el codigo para la detección

void interrupcion()
{
  detachInterrupt(0);
  Serial.print("---------INTERRUPCION------------: ");
  attachInterrupt(0, interrupcion, CHANGE );
  Serial.println(".");
}

1 - Conectando el piezoeléctrico al pin analógico 0 y disparando una rutina para obtener sus valores con analogRead(0). Problema: Si tengo que procesar los valores de muchas entradas simultaneas no parece lo mejor mantener un bucle (menos si uso un multiplexor).

2 - Conecto la salida de un piezoeléctrico al pin analógico 0 y al pin digital 2 de la placa. Defino la interrupción en el código. Problema: Aparte de no saber exactamente que pasa al estar conectados los pines 0 analogico y 2 digital, detecto de 5 a infinitas interrupciones por cada impacto en el piezoeléctrico (se debe a la señal/variación de voltaje entregada por el transductor al ser golpeado)

3 - Igual que antes pero agregando un circuito para acondicionar el voltaje entregado por el piezoelectrico. Utilizo un LM358 para eso. Problema: El comportamiento es menos descontrolado pero sigo detectando de 2 a 6 interrupciones por golpe.

y hasta aca llegué, estuve haciendo unas pruebas usando un comparador, en el mismo LM358 tengo otro amplificador operacional y lo usé como comparador, tambien probé con el LM555 en monoestable usando la salida acondicionada al pin 2 del LM555 (TRIGGER). Con el comparador funcionaba igual que en la 3ra manera, y con el 555 en monoestable igual o peor.

Bueno, espero que se haya entendido algo!, jajaja

Saludos! ;)