Go Down

Topic: PROYECTO TUBOS MIDI [ayuda] (Read 2 times) previous topic - next topic

mrjtwo

May 05, 2012, 07:41 am Last Edit: May 05, 2012, 07:44 am by mrjtwo Reason: 1
Que tal a todos recurro a uds ya que no es mucha la informacion que he encontrado en la red, para capturar la variacion de presion estoy usando unos sensores de presion MPX10D estos tienen una salida diferencial v+ y v- estoy usando el diseño del documento AN1668 de motorola y pues los AO que uso son los LM358.

el montaje es el siguiente:



en donde R+S1 = 1K, R+S2 = 100, Vref = que a mi parecer es el Aref de la tarjeta arduino, R1 = 39K, R2 = 100, R3 = 100, R4 = 39K, Vout_fs = lo conecto a A0 (entrada análoga de la tarjeta arduino).

el codigo es el siguiente :

Code: [Select]
byte s1;

void setup ...
void loop:

s1 = analogRead(A0)/8;
  if (s1 > 0) {
    notes(158,57,s1);
}
  if (s1 == 0) {
    notes(142,57,0);       
}
}
void notes(int cmd, int note, int velocity){
Serial.println(velocity);
delay(1000);     
}


en este caso el único valor que me interesa es el del velocity, pero pues tengo un problema viendo el monitor de arduino el sensor me envía datos sin aplicarle presión; estoy buscando que me envié ceros al no aplicarle presión y datos variables según la presión que se le aplique....        no se que hacer ya he probado muchas cosas, recurro a vuestra ayuda

gracias!

Cheyenne

En esa co figuración de amplificación diferencial indica que a la salida tienes un offset de 0,66 V. Lo tienes que restar en el código de Arduino.

mrjtwo


ya lo intente pero aun asi el problema persiste

Cheyenne

Sólo se me ocurre que saques por el monitor los valores que estás leyendo por la entrada analógica Y los pongas aquí a ver si vemos algo.

mrjtwo

bueno aqui unas capturas de los datos que salen en el monitor sin aplicar presion (al no aplicar presion el dato sea 0)... la idea es que al aplicar presion los datos que me arroje el monitor oscilen entre 1 y 127 correspondientes al velocity del midi.



gracias

Cheyenne

s1 lo tienes declarado como byte. Prueba sólo este código (con s1 declarado como int) para ver las lecturas reales de la entrada analógica. Mira lo que saca por el monitor cundo no ejerces fuerza sobre el sensor y cuando hace mucha fuerza (a ver si satura).
Code: [Select]

int s1 = 0;

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

void loop() {
  s1 = analogRead(A0);
  Serial.println(s1);
  delay(200);
}

mrjtwo

pues la variable la declare como byte para que me diera datos del 0 al 255 .... pero aun así no logro que se quede quieto el monitor siguen saliendo datos como en la captura pasada sin estar aplicando presión sobre el mp10d  =(

Cheyenne

Ya sé tu idea con lo de byte. Pero lo que hay que hacer es leer una entrada analógica en una variable int y después tratarla como se necesite. Puede convertirse a otro tipo de variable o para tu caso lo que habrá que hacer es mapear los valores para que el rango de lectura 0 - 1023 pase a tener un rango 0 - 127 que es el que quieres. Este mapeo se hace fácilmente con la función map() http://arduino.cc/en/Reference/Map.

Por otra parte haz la prueba que te he dicho antes, con el código que te he puesto captura las lecturas del monitor cuando no ejerces fuerza sobre el sensor y cuando sí la haces (muy fuerte para ver el rango de valores que está teniendo). Y pones aquí las lecturas.

mrjtwo


no entiendo lo del map ... como veo esos valores?

Cheyenne

Fase 1: comprobar las lecturas de la entrada analógica, en rango de medida y estabilidad. Para ello sube el código que he puesto y copias las lecturas del monitor sin ejercer fuerza sobre el sensor y después ejerciendo mucha fuerza.

En función de los resultados irán las siguientes fases entre las que estará la del mapeo.

mrjtwo

mmm solo me salen ceros aplico presion y no pasa nada :(

curro92

Hola,
lo del map es como una regla de tres: si la lectura de arduino va de 0 a 1024 ( 10 bits), y tú quieres medir un rango de 0-255, sacas la proporción.

Y si no es indiscreción: ¿que son los "tubos midi"?



mrjtwo

curo la idea es adaptar un tubo cualquiera para que me sirva como controlador midi para esto el byte caracterisco sera el del velocity, pero pues no he tenido suerte con estos por que sin aplicar presion me envia datos y al aplicar presion no pasa nada  =(

Cheyenne

mrjtwo a ver si nos centramos un poco, en dos mensajes seguidos has puesto

Quote
mmm solo me salen ceros aplico presion y no pasa nada :(

y
Quote
sin aplicar presion me envia datos y al aplicar presion no pasa nada


Sin aplicar presión, ¿qué lecturas da? ¿Y aplicando presión? En cualquier caso tiendo a pensar que tienes mal el circuito de amplificación. Deberías poner un esquema con todas las conexiones que has hecho y valores de resistencias y alimentaciones.

Por otro lado empiezo a pensar que "tubos" tiene en Colombia algún otro significado ya que con la explicación que has dado de lo que son los "tubos MIDI" al menos yo no me he enterado de nada.

mrjtwo

cheyenne ... el circuito amplificador esta bien explicado y todo con resistencias al inicio del tema

Go Up