Arduino y AD620

Aqui les dejo un esquema, de como estan armados los MPX10DP, que hemos usado para respiradores mecánicos, medir niveles de líquidos y ventosas para heridas para uso medico, en diabécticos etcétera, solo hay que tener cuidado que no le entren líquidos al sensor eso lo daña, su medición es muy lineal lo mismo en vacío que en presión, en fritzing no logre conseguir los componentes, para el esquemático los suplí con otros en un rato regreso y lo explico con detalle.
Saludos

Hola, intento explicar esquema:
cable rojo 5v
cable verde gnd
cable amarillo datos o señal
cable violeta o morado -5v
resistencia ganacia pin 1 a pin 8 2k 1%
resistencias pin 2 mpx a pin 3 ad623 pin 4 mpx a pin 2 ad623 50k 5%
dht esta supliendo al mpx
el LM358 suple al ad623
ad654 suple al tc7660
el transistor N suple al trimpot
los capacitores electrolíticos 10uf
el capacitor del tc7660 esta invertido la tierra va al pin 4 (franja blanca)
tc7660:
pin 1 n/c
pin 2 positivo capacitor electrolítico
pin 3 gnd
pin 4 negativo electrolítico
pin 5 salida -5v
pin 6 n/c
pin 7 n/c
pin 8 entrada 5v
ad623:
pin uno resistencia de ganancia
pin 2 in-
pin 3 entrada+
pin 4 -5v
pin 5 trimpot ( ajuste a cero)
pin 6 salida a arduino A0
pin 7 +5v
pin 8 resistencia ganancia 2k 1%
mpx pin 1 -5v (este pin tiene una muesca)
pmx pin 2+ salida a pin 3+ de ad623
pin 4- a pin 2- de ad623
trimpot pin central a pin 5 ad623
pin izquierdo -5v
pin derecho a +5v
si tienen alguna duda con gusto les respondo
ad623 o ad620 llevan 4 capacitores en pin7 y pin 4 uno cerámico y un electrolítico por pin ver hoja de datos
en la foto que publique antes solo se ve uno un cerámico el otro esta por debajo

Aqui les dejo este protoboard el tc7660 su código impreso es muy poco visible,


solo faltan los cables de alimentación, desde el arduino que van al pin 8 5v y gnd al pin 3 del tc7660, y el cable que va del pin 6 del ad523 al pin A0 del arduino, este esta calculado para operar de 0 a 250 mili bars y 0 a 4.9 volts, en los rieles de laterales del proboard ya van simétrica la energía +/- 5 volts

Lo mismo que el post#7, mas filtros que aseguran funcionamiento estable. De todas formas todo sirve y contribuye.

Buenos días a todos compañeros,

Primero que todo, gracias por sus mensajes, les vengo a actualizar en que parte voy con el desarrollo de este proyecto.

Después de analizar sus mensajes y con ayuda de un profesor de mi universidad, termine aplicando este circuito a modo de amplificador operacional:


Fuente: AD620 Instrumentation Amplifier Module - ProtoSupplies

Hice las respectivas pruebas y me funciono de la manera deseada. Ahora bien, tengo unos inconvenientes, cuando conecto el sensor al multímetro y mido la salida de voltios a medida que le aplico una presión me muestra los valores de manera correcta, ejemplo, subo la presión del sensor de 0 kPa a 12.5 kPa, y los valores de voltios que mide el multímetro aumentan progresivamente, no hay picos extraños o variaciones en la medición, me genera valores muy estables, ahora bien, al conectar el sensor al Arduino y leer los valores de voltaje que me marca, pasan cosas muy extrañas, cuando le aplico presión de 0 kPa a 12.5 kPa, los valores que lee el Arduino son muy inestables, pasa de 0 [V] a 2[V], después baja a 1[V] y vuelve a aumentar a 2.5 [V], en fin, no funciona de la mejor manera, así que vengo a pedirles ayuda para encarar este problema de la mejor manera, que podría realizar?

Nota: Estoy casi seguro que mi Arduino no es original, lo compre en una tienda de mi ciudad de dudosa procedencia.
Ya probe todos los pines analogos y todos se comportan de la misma manera.

Estoy revisando el mensaje #21 del compañero Surbyte donde me recomienda una pagina donde implementan filtros, lo intentare, si tienen otras soluciones, los escucho.

Saludos

Carga la salida Vout con una R de 100k primero y luego con otra de 10k y obviamente con el AD0 conectado a ver como se comporta el Arduino.
No uses cables largos entre el protoboard (donde imagino has armado todo) y el Arduino.

De la salida del amplificador conducto en serie una de 100k y después una de 10k, y de ahí al Arduino, verdad?

Para confirmar que no entendí mal.

Gracias

Además de poner una R de carga a la salida del OP (o sea entre Vout y masa), setea los pines analógicos que no utilices como salidas y luego ponlos en HIGH, para reducir el ruido.

Saludos

hice lo que dijiste y aun se comporta de forma irregular:


Fuente: propia

Lo tengo sin delay, reduje los cables a lo mas corto posible y puse las resistencias, en el multimetro sale perfecto la salida de voltaje.

Alguna otra idea :c?

Lo acabo de hacer, sigue comportandose igual, el arduino es lo que genera el ruido? porque al leer el voltaje de salida con el multimetro en ningun momento muestra variaciones de ese tipo mientras hacia la parametrizacion del sensor, el problema es al leer el valor con el arduino.

Sube el código que estas usando por más simple que sea, por favor

mira:

/*
  ReadAnalogVoltage

  Reads an analog input on pin 0, converts it to voltage, and prints the result to the Serial Monitor.
  Graphical representation is available using Serial Plotter (Tools > Serial Plotter menu).
  Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground.

  This example code is in the public domain.

  https://www.arduino.cc/en/Tutorial/BuiltInExamples/ReadAnalogVoltage
*/

// the setup routine runs once when you press reset:
void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
  pinMode(A1, OUTPUT);
digitalWrite(A1, HIGH);
pinMode(A2, OUTPUT);
digitalWrite(A2, HIGH);
pinMode(A3, OUTPUT);
digitalWrite(A3, HIGH);
pinMode(A4, OUTPUT);
digitalWrite(A4, HIGH);
pinMode(A5, OUTPUT);
digitalWrite(A5, HIGH);
}

// the loop routine runs over and over again forever:
void loop() {
  // read the input on analog pin 0:
  int sensorValue = analogRead(A0);
  // Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 4V):
  float voltage = sensorValue * (4.0 / 1023.0);
  // print out the value you read:
  Serial.println(voltage);

}

Use este codigo con una libreria de un filtro, pero igualmente sigue con el rudio muy alto:


Fuente: propia

// Arduino Signal Filtering Library: fir filter example
// Copyright 2012-2015 Jeroen Doggen (jeroendoggen@gmail.com)

#include <firFilter.h>

firFilter Filter;

int value;
int filtered;

void setup()
{
  Serial.begin(9600);
  Filter.begin();
  pinMode(A1, OUTPUT);
  digitalWrite(A1, HIGH);
  pinMode(A2, OUTPUT);
  digitalWrite(A2, HIGH);
  pinMode(A3, OUTPUT);
  digitalWrite(A3, HIGH);
  pinMode(A4, OUTPUT);
  digitalWrite(A4, HIGH);
  pinMode(A5, OUTPUT);
  digitalWrite(A5, HIGH);
}

void loop()
{
  value = analogRead(A0);
  filtered = Filter.run(value);
  Serial.print("In: ");
  Serial.print(value);
  Serial.print(" - Out: ");
  Serial.println(filtered);
  delay(0);                                     //make it readable
}

Porque pones 4V? Es 5V en la ecuación

  float voltage = sensorValue * (5.0 / 1023.0);

Y esto porque lo haces?

pinMode(A1, OUTPUT);
digitalWrite(A1, HIGH);
pinMode(A2, OUTPUT);
digitalWrite(A2, HIGH);
pinMode(A3, OUTPUT);
digitalWrite(A3, HIGH);
pinMode(A4, OUTPUT);
digitalWrite(A4, HIGH);
pinMode(A5, OUTPUT);
digitalWrite(A5, HIGH);

Retira eso para probar el AD0.

Hi,
Porque tienes el ad640 conectado al LM358. Yo conectaria la salida del ad620 al arduino ya que el ad620 te esta amplificando la senal de salida del sensor de presion.

@Surbyte le dije yo que ponga los pines A1 a A5 en alto para reducir el ruido.

Saludos

Ya hice lo que me dijiste y nada, intente con una libreria para filtrar y tampoco, cuando elevo la presion a 160 mmHg y empieza a bajar de forma lenta (unos 5mmHg por segundo), aparecen valores en escala de voltaje entre 0 y 1 [V] que me dañan la señal, si pongo un condicional para evitar esos picos, me va a retrasar la señal y lo que necesito es leer los valores de voltaje rapido para detectar pequeñas variaciones de presion :frowning:

@hubertd14 Podrías poner el serial a 115200 y hacer una nueva captura como la de #49?

A mi me da la impresión de que el amplificador está oscilando.


Fuente: propia

Ahi no esta en reposo, se supone que le aplique 200[mmHg] de presion y deberia bajar 5 [mmHg] x segundo, tienes razon, esta oscilando, pero en el multimetro no oscila, jamas me ha pasado de un valor de 1.9 [V] a 0.X [V], podria ver la señal mañana en el osciloscopio y confirmar lo que me muestra el multimetro, pero, en el caso que la señal este oscilando, por que seria D:?

A la frecuencia que está la oscilación el multímetro no la "ve".

Más allá de la oscilación (que puede ser ruido eléctrico por una masa mal conectada o falta de apantallamiento), para mi, esta señal como la de #49 están saturadas.
¿Está bien ajustado el amplificador?

Pues, bien conectado no, los cables no están bien acoplados, ahora bien, el sensor lo alimento con 12v de una fuente y el Arduino lo alimento con 5V USB, el AD620 lo alimento con el Arduino y la masa de salida del AD620 va al Arduino, el Arduino y el sensor no comparten masa (porque tenías razón, no podían compartir masa), podría integrar todo bien soldado y los cables bien sujetos y volver a hacer la prueba, pero, está bien alimentar el AD620 con el Arduino?

Cuando dices bien ajustado, te refieres a la ganancia?, Lo ajuste con el osciloscopio enviando una señal con 10[mVrms] a 120hz, la amplifique 100 veces y dejé el offset en 0, y así lo conecté al sensor.