Autor Tema: Generar pulsos de frecuencias entre 1 y 100 Hz, de ancho de pulso variable  (Leído 4948 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado vesperia

  • PIC10
  • *
  • Mensajes: 34
Hola! Estoy viendo como generar una serie de señales de frecuencia entre 1 y 100 Hz, con ancho de pulso variable entre 0.1 y 1 mS.

Pense en usar un timer interno (TMR_0) para generar una interrupción cada 10 mS y utilizar una serie de contadores, pero el ancho de pulso tendría que estar dentro del ciclo del timer. Otra opción es usar en conjunto series de tiempos por ciclo fijo y variable..

Que me recomiendan?

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Generar pulsos de frecuencias entre 1 y 100 Hz, de ancho de pulso variable
« Respuesta #1 en: 01 de Febrero de 2012, 14:22:58 »
No te viene mejor usar el PWM?

Desconectado vesperia

  • PIC10
  • *
  • Mensajes: 34
Re: Generar pulsos de frecuencias entre 1 y 100 Hz, de ancho de pulso variable
« Respuesta #2 en: 01 de Febrero de 2012, 14:44:33 »
El tema es q las frecuencias son muy bajas.. Además tanto la frecuencia como el ancho de pulso son seteables por el usuario a través de la interfaz de un gLCD, por lo que estaría obligado a calcular los porcentajes de acuerdo a cada ingreso. Por ejemplo, si el usuario elige 1 Hz y 100 uS tendría un periodo de 1 seg y un ancho de pulso demasiado bajo para el PWM

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Generar pulsos de frecuencias entre 1 y 100 Hz, de ancho de pulso variable
« Respuesta #3 en: 01 de Febrero de 2012, 15:19:17 »
Hola.

Utilizando dos timers:

Uno que interrumpe según los Hertz seleccionados e inmediatamente pone en alto la pata del pulso, y ahi mísmo enciendes el segundo timer(asociado al ancho de pulso). Cuando termina de interrumpir el segundo timer pones la pata en bajo y esperas a la próxima interrupción del 1er timer.

o bien utilizando sólo 1 timer para los Hertz y demoras para el ancho de pulso seleccionado.

No se que tan dificil será hacerlo en Niple ya que nunca lo he utilizado.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado vesperia

  • PIC10
  • *
  • Mensajes: 34
Re: Generar pulsos de frecuencias entre 1 y 100 Hz, de ancho de pulso variable
« Respuesta #4 en: 01 de Febrero de 2012, 15:29:16 »
Gracias, veré que hago y despues comento!

Desconectado henryflash

  • PIC16
  • ***
  • Mensajes: 130
Re: Generar pulsos de frecuencias entre 1 y 100 Hz, de ancho de pulso variable
« Respuesta #5 en: 01 de Febrero de 2012, 20:36:54 »
hola, los taimers en niple se los puede configurar con tiempo fijo o por un registro, haciéndolo con registro por ejemplo 0 a 255 ms el tiempo de on y otro registro para el tiempo de off , esto es orientativo pero lo veo muy fácil con los temporizadores, siempre y cuando que el micro se dedique solo a generar los pulsos.
Saludos enrique...

Desconectado vesperia

  • PIC10
  • *
  • Mensajes: 34
Re: Generar pulsos de frecuencias entre 1 y 100 Hz, de ancho de pulso variable
« Respuesta #6 en: 02 de Febrero de 2012, 12:29:01 »
Gracias, pero lamentablemente mientras genera la serie de pulsos ademas tiene que refrescar un gLCD, controlar un teclado matricial y varios canales analógicos, y si lo hago solo con lapsos es medio complicado.. Por eso mi idea era usar el TMR_0 como base de tiempo de 10 mS (para la freq de 100 Hz, que es la más baja) y a partir de ahí generar varias bases de tiempo usando la interrupción por TMR. Igual ya va a salir, en cuanto tenga novedades aviso!

De paso, no se si les pasa, pero si quiero mostrar una variable en el gLCD de 128 x 64 que aparezca en justo en medio de la pantalla, el número se corta y aparece el pedazo faltante en el extremo izquierdo (creo q si llega a la columna 64 del chip 0 sigue por la col 0 del mismo chip, en vez de pasar al chip 1). Si están trabajando con un gLCD pueden comprobarlo facilmente mostrando una variable con font_3 (la de 16 x 16) en la col 55. 


 

anything