Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

08/10/2014 #1


Ayuda Equipo de electroterapia (TEMS,TENS) con PIC
Hola

En el curso de instrumentación medica de la universidad, debo construir un equipo de electroterapia basado en un puente H con IGBT o mosfet. Son en total 7 tipos de ondas que se generaran, el problema es el rango del primer temporizador el cual debe ser desde 5us hasta 1s. Entonces se me ocurrió mediante un temporizador del PIC generar la una interrupción cada 1us, pero gran sorpresa hasta ahora la medición por break point dentro de la ejecucion me dio como mínimo 9.8us entre interrupcion e interrupcion usando un cristal de 40MHz. Empecé con el PIC16F877, ahora pase el 18F452 y no logro generar esa interrupción con ese tiempo, pareciera que el compilador CCS al usar esas instrucciones alto nivel consume varias ciclos lo cual genera que no pueda realizar esa interrupción en ese intervalo, será que deberé programar en asembler para obtener este tiempo. Adjunto circuito proteus, .cof y .hex.

Gracias
08/10/2014 #2

Avatar de JoaquinFerrero

¿Qué temporizador estás usando? ¿El TIMER0?

Mira aquí.
08/10/2014 #3


JoaquinFerrero dijo: Ver Mensaje
¿Qué temporizador estás usando? ¿El TIMER0?
Hola

el temporizador TMR1 de 16 bit. el objetivo es lograr el menor tiempo posible entre interrupcion o una manera de incrementar algun registro cada 1us o por debajo de este tiempo para generar el ton de la onda y el toff de esta.

gracias
08/10/2014 #4

Avatar de JoaquinFerrero

Con el TIMER0 te vale:


Con los valores

tenemos

Solo necesitas modificar la rutina de interrupción -que se ejecutará cada 1 µs- para que actualice el valor de TMR0 a 251.
09/10/2014 #5

Avatar de Saint_

... Veámoslo de este modo:

Si se usa un oscilador de 48Mhz (máxima cpu pic18f4550) -> 12Mips por lo cual tenemos 12 ciclos maquina aprovechables dentro de 1us.

Se usan 2CM(ciclos maquina) para que uC salte a la dirección de interrupción y guarde el contador de programa en la pila.

2CM para verificar y borrar el flag de interrupción.

2CM para retornar a la rutina principal (retfie).

2CM para cargar al timer0 (movlw y movwf).

Después de esto solo quedan 4CM para cambiar de estado el pin de salida, comparar valores y demás, aun si se lograra hacer, no quedaría tiempo en la rutina principal.

En resumen aun en asm una interrupción de 1us es muy poco tiempo incluso para un pic18.
Con un ATMega se tendrían 16Mips aprovechables pero aun seria poco.
Sería mejor un DSPic "hasta 30Mips" pero en asm.

... Por otro lado para hacer un puente de mosfet o más aun IGBTs ... ¿Con cuánto de corriente van a trabajar... 10A?...
¿Para ondas tens 1us o 5us? Hace un buen tiempo estaba haciendo lo de las ondas tens como pasatiempos pero lo que encontré como información (que por cierto no había mucha) es que los niveles altos no pasaban del milisegundo...
09/10/2014 #6

Avatar de JoaquinFerrero

Estoy de acuerdo. A 40 Mhz son 10 CM libres, con lo que le quedan 2 CM libres. Invertir el valor del pin de salida, y nada más.

Pero, además, no quedaría ningún tiempo libre para el resto del programa... En ese caso, mejor no usar ningún temporizador, sino una precisa colección de instrucciones en un bucle.

Si necesita una señal de 1 µs, casi mejor que fuera creada por un reloj externo. O tener un sistema más rápido.
09/10/2014 #7


Primero les doy las gracias por su respuestas, encontre una forma no usando la interrupcion, sino mediante la instruccion delay_us(), como el rango es tan amplio (desde 5us hasta 1E6 us), al usar una variable tipo int16 al llegar a 2^16, paso a delay_ms() para mantener todo el rango.
Ahora el problema se presenta en la simulacion ya que al cargar delay_us() con 5, si lo ejecuto paso a paso se aprecia que el puerto que activara los transistores se pone en 1 espera el tiempo en us se pone en cero espera el otro tiempo en ms, todo normal, pero en el osciloscopio no se aprecia algunos pulsos. solo ocurre cuando el tiempo de activacion es muy pequeño, para otros valores funciona normal. no se si es por el compilador o el simulador
Adjunto circuito en proteus, el .hex y el .cof para la simulacion.

gracias.

---------- Actualizado después de 17 minutos ----------

hola

adjunto documento en word donde detallo el problema. lo comprimi ya que le tamaño no me dejo subirlo.

gracias.
Archivos Adjuntos
Tipo de Archivo: rar circuito IM_onda_1_2.rar (59,3 KB (Kilobytes), 43 visitas)
Tipo de Archivo: rar prueba.rar (373,5 KB (Kilobytes), 21 visitas)
10/10/2014 #8

Avatar de Saint_

Des afortunadamente el archivo *.cof que enviaste si bien ejecuta el programa no es posible ver el codigo.
10/10/2014 #9


Hola

Pues con el circuito ya le realice las 7 formas de ondas que me solicitan, el único detalle es el que les comente anteriormente. Pareciera que fuera problema en la etapa de simulación, no del código. Vamos a ver que dice mi tutor, ojala me de 3.0.
a todos gracias por la ayuda, me parece algo muy interesante, ya que al preguntarle a otras personas sobre mis dudas, al leer las preguntas hechas, me ayudan a reflexionar y a encontrar más soluciones.
Les dejo el video del circuito construido hasta el momento y espero sus opiniones.
Gracias


https://www.youtube.com/watch?v=42q6...ature=youtu.be

---------- Actualizado después de 9 minutos ----------

lo ultimo que me falta es que el puente H genere 170VDC en la carga, no se al subirles por encima de 130 VDC los transistores generan una pequeña corriente inversa, no tengo ni la menor idea de porque ocurre este fenomeno, depronto saben de algun transistor que se le pueda subir a este nivel de tension.


gracias
Imágenes Adjuntas
Tipo de Archivo: png puente H.png (47,1 KB (Kilobytes), 19 visitas)
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.