Problema con conversor AD pic 16f877

Hola,

Estoy realizando un pulsioximetro, he visto que aqui hay uno similar a lo que yo estoy haciendo. La diferencia que yo no quiero usar el pc, me gustaría mostrar los datos en una pantalla alfanumerica, entonces tengo unas dudas con el pic que no se como resolver..
Recibo una onda analogica no periodica por en el conversor AD y me gustaría ir almacenando los datos en la memoria para despues trabajar con ellos. Necesito despues buscar el valor maximo y minimo de las muestras almacenadas, que imagino que se podrá hacer, realizar unas operaciones y mostrarlo en pantalla.. ¿es posible almacenar por ejemplo 50 muestras y despues trabajar con ellas? Y mi otro problema que no se si se puede solucionar asi o tendré que buscar una alternativa es que quiero que mi pulsioximetro mida el pulso por tanto necesitaría calcular el tiempo que ha pasado entre dos picos maximos de la onda.. No se como poder solucionarlo, a ver si alguien me puede ayudar.. Si hay alguna duda con mi explicacion preguntadme lo que sea..

Ah por cierto, las muestras las realizo cada 40 ms.
Un saludo y gracias
 
Última edición:
Forzosamente necesitas usar una memoria externa (RAM o EEPROM) que te permita guardar los datos, lo que haces es ir guardando datos y cuando el tiempo lo permita recuperarlos y realizar los analisis que requieras
 
gracias, si, yo habia pensado en usar la eeprom para guardar los datos, mi mayor problema es calcular el tiempo que transcurre entre dos muestras que de antemano no se cuales van a ser.. es decir calcular el que pasa desde un pico maximo a otro maximo, que no se como hacerlo. Lo unico que se me había ocurrido es, como el muestreo va a ser periodico, cuando consiga localizar un maximo, ir sumando los tiempos de espera entre cada muestreo hasta llegar a otro maximo y así tendré el tiempo transcurrido aunque no se bien como hacerlo..
 
Cada muestra la tomas a los 40mS, asique solo cuentas el numero de cuentas y la multiplicas por 40mS... la otra opcion es guardar un tiempo con cada muestra pero eso te obligaria a colcar un reloj de tiempo real y de guardar mas datos... lo cual lo veo complejo para esta aplicacion
 
Hola, para lo del tiempo podes usar el timer 1 que si no me equivoco podes hacer que se desborde cada 500ms aprox. y por el desbordamiento podes usar un registro por si el tiempo es mucho, yo personalmente usaría un RTC (real time clock) como sugerio Chico3001
 
Hola danivr para ti es necesario guardar los datos en una eeprom para trabajarlos luego o puedes utilizar un vector para guardarlos y utilizarlos sin desconectar tu micro otra cosa que resolución adc utilizas en un vector y para ese micro puedes guardar mas o menos 40 muestras int16 o 80 int8 sin necesidad de una memoria externa y también recordando que una eeprom tiene un limite de grabadas no me parece lo mejor reescribirlas tan seguido y para los tiempos que necesitas medir hay varios timerx en este pequeño esperando ser utilizados
saludos
 
Realmente para mi no era necesario guardar los datos en la eeprom, pero fue una solucion que se me ocurrió porque tengo que estar tomando muestras de la entrada y cuando he tomado unas 20 o 25 tengo que realizar unos calculos y mostrarlos por un display LCD y eso de forma rutinaria, es decir que en la pantalla se tiene que ir actualizando el valor de la saturación de oxigeno y las pulsaciones. Dices que se podría hacer sin eeprom usando un vector? me podrías explicar un poco eso..
La resolucion creo que voy a usar 8 bit porque va a ser mas facil trabajar con ese valor.
Lo del real time clock será necesario? yo creo que usando el timer0 y un contador me valdría no? de la forma que dijo chico3001

un saludo
 
El RTC no es exclusivamente necesario, podes usar el timer1 y con un valor pre cargado podes hacer que genere una interrupción cada determinado tiempo.
Acá te dejo un programa que encontré por la red, que sirve para calcular los delay por timer, los baurate del UART y la F del PWM
 

Adjuntos

  • PIC multicalc.zip
    92.4 KB · Visitas: 50
Hola, he estado programando y no estoy seguro que grabar mis datos en la eeprom sea la mejor opción ya que yo no necesito almancer los datos cuando apague el dispositivo y pierdo mucho tiempo para escribirlo y luego acceder a ellos.. asi que creo que sería mejor usar un vector y guardarlos en la ram, alguien me puede echar una mano con vectores?
Para el timer0 precargaré el valor para que me genere la interrupción cada x tiempo como dice sebitronic
Por cierto, estoy programando en ccs
Un saludo
 
Hola Danivr, estuve leyendo tu proyecto y suena muyy interesante! contanos como va, si es que ya lo pudiste terminar y como lo resolviste!

Yo estoy haciendo un equipo para medir Sodio y Potasio en sangre y me estoy volviendo loco para obtener una lectura de conversor estable!, a vos como te fue con esto?

Saludos!!
 
Atrás
Arriba