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

Temas similares

04/05/2014 #1


PWM de varios segundos
Estoy haciendo un proyecto y encesito poder configurar el PWM con el tiempo en estado alto y bajo de varios segundos, no de ms ni us, ayuda porfavor ... estoy usando el pic 16f877a y programo en picc
04/05/2014 #2
Moderador general

Avatar de Fogonazo

¿ Que llevas programado hasta ahora ?
04/05/2014 #3


estoy haciendp un electroestimulador muscular, en el que puedes seleccionar tiempo de la sesion, tiempo de contraccion, de relajacion y la frecuencia de los pulsos, hasta ahora, solo puedo enviar por un pin la frecuencia seleccionada, pero no mas :(, y quisiera saber, como usar el PWM teniendo por ejemplo en estado alto unos 4 segundos y en estado bajo unos 2 segundos, y durante e lestado alto, mandar pulsos a la frecuencia seleccionada, adjunto mi proyecto
Archivos Adjuntos
Tipo de Archivo: zip New WinRAR ZIP archive.zip (95,8 KB (Kilobytes), 14 visitas)
04/05/2014 #4

Avatar de Daniel Meza

Hacer PWM con esa frecuencia en un micro es algo complicado por la parte de los preescaler, postcaler, etc para dividir frecuencia y agrandar el periodo de reloj. Para ello te recomiendo utilices los módulos temporizadores y divisores de frecuencia por software.

Deja busco un programa que tengo de un proyecto similar para que te explique como lograr tal efecto.
Saludos
04/05/2014 #5


Estoy semanas y semanas que llevo rompiéndome la cabeza pensando como puedo hacer y es para dentro de poco este proyecto.
Cabe mencionar que soy un novato en la programación de pic en C.
04/05/2014 #6

Avatar de Daniel Meza

Para simplificar las cosas es mejor usar un cristal externo de 32.768KHz en el TMR1 del 877 aparte del de 4MHz principal. Con ésto será fácil conseguir grandes periodos de temporización. Lee la sección de TMR1 en la hoja de datos del 877 para que te hagas una idea de su funcionamiento. Mientras hago un bosquejo de diagrama de flujo de la idea que te sugiero
04/05/2014 #7


mmm en el PWM creo que no se puede hacer esos tiempos que dices, mas bien tendrías que usar el Timer y hacerlo funcionar las veces que sea necesario para cumplir los tiempos que necesitas.
Una pregunta, que transformador estas usando para los pulsos??

Saludos
04/05/2014 #8


¿Transformador? En el programa que subí hay un pequeño error en una ecuación de los pulsos pero más allá de eso, nada. No entiendo a q te refieres.
04/05/2014 #9

Avatar de Daniel Meza

Los electroestimuladores suelen llevar un transformador que se encarga de elevar el voltaje para generar los pulsos estimuladores
04/05/2014 #10


Obvio sí, esa parte está de mas, porque ya hice uno utilizando dos 555, pero ahora necesito hacerlo con pic. Parecía más sencillo de lo que es.
05/05/2014 #11


Gokesefa dijo: Ver Mensaje
¿Transformador? En el programa que subí hay un pequeño error en una ecuación de los pulsos pero más allá de eso, nada. No entiendo a q te refieres.
Hola, disculpa por el off-topic, pero solo era curiosidad.
Saludos!
08/05/2014 #12


Hola.

Primero, puede que te estés complicando mucho más de lo que necesites.

Necesitás precisión? Cambia mucho si el pulso es de 1,1s o de 0,9?

Si querés hacer un circuito básico básico, te recomiendo 2 LM555, uno astable y el otro monostable, para generar el PWM más básico (y pedorro...) de todos.

Como mencionaste segundos, y el 555 no opera bien a bajas frecuencias, podés usar un oscilador de cristal, y eso mandarlo a un divisor de frecuencias que te active un monostable, el cual generaría el ancho de pulso deseado.

Otra, es usar bastante memoria del micro, generando un contador. El módulo PWM depende del clock del cristal, entonces, podés usar una interrupción que cada ciclo (con prescaler al máximo, obvio) aumente en 1 una variable de 8 o 16 bits.

Si querés usar menos memoria, y la aplicación que necesitás no maneja displays ni nada que requiera velocidad, podés usar el oscilador interno, o uno de la mínima velocidad que el micro acepta.

Y para lo regulable, por ahí necesites el ADC del micro, controlado por el pote...
10/05/2014 #13


podrias usar el timer 0 para el tiempo de encendido del pwm y el 1 para del apagado de esa manera tenes 2 tiempos regulabes independientes uno del otro, cabe destacar que para lograr segundos deberias usar en los temporizadores algun bucle , ejemplo:cada 200ms interrumpis e incrementas una variable hasta 20 y de ese modo tenes los 4 segundos y cuando termina el ciclo habilita al otro temporizador, me explique bien?
11/05/2014 #14


mi solucion
Que les puedo decir, programar en C es lo peor, tuve que generar retardos a base de contadores cual ensamblador.
G
racias a todos por su paciencia.
13/05/2014 #15

Avatar de Scooter

Habiendo timers...
Con un solo timer basta, cuando dispare la interrupción lo recargas con el siguiente valor y listo. Se ajusta un poquito por lo que tardas en recargar y así tienes tooooooodoooo el tiempo para hacer todo lo demás . Ahora tienes un sistema zombie.
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.