Autor Tema: Ayuda a novatisimo  (Leído 1866 veces)

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

Desconectado RacalcaR

  • PIC10
  • *
  • Mensajes: 3
Ayuda a novatisimo
« en: 28 de Marzo de 2005, 14:23:00 »
Hola, estoy practicando con servos de radio control y ya he conseguido controlarlo con un pic Giño, pero como soy muyyy novato y por mucho que relea en el foro no me entero de nada, necesitaría ver un ejemplo de lo siguiente : quiero hacer que una señal pwm variable (entre 1 ms y 2 ms) entre por un puerto del pic y salga por otro puerto tal cual entro, les rogaría que me ayudasen, graciasSonrisa Gigante

Desconectado Lager.

  • Moderadores
  • PIC18
  • *****
  • Mensajes: 477
RE: Ayuda a novatisimo
« Respuesta #1 en: 28 de Marzo de 2005, 16:47:00 »
Que onda RacalcaR
No seria mas facil solo producir el pulso con el pwm del pic??....para lo que quieres hacer, necesitas samplear la señal(pulso) que entra por el pin(de preferencia uno que tenga interrupcion) asi cada ves que cambie el pulso, entre a la rutina de interrupcion y cambie el pwm del pic, asi simularias la entrada y salida(con retardo...) de un pwm
Para aprender a usar el  PWM con ccs  reviza aqui los ejemplos del pana pocher:
 http://personal.auna.com/asencio5/Ejemplos%20C/PWM/

Salu2 pana

Desconectado fenix_jn

  • PIC18
  • ****
  • Mensajes: 418
RE: Ayuda a novatisimo
« Respuesta #2 en: 28 de Marzo de 2005, 23:30:00 »
No esta muy claro, creo q el kiere generar la señal PWM via PIC, pasar esta señal a RF y luego recibirla en otro PIC, eso fue lo q entendi....loco

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
RE: Ayuda a novatisimo
« Respuesta #3 en: 29 de Marzo de 2005, 04:08:00 »
Pues a mí me suena que lo que este colega quiere montar es un dispositivo para salvar el vehículo radiocontrolado.
Supongo que en condiciones normales el pwm que recibe el receptor pasa por un pic tal cual entra, y maneja el servo. Sin embargo, cuando el vehículo se aleje demasiado y pierda la señal de la emisora, el pic podría detectarlo y enviar el servo a posición de frenado.
¿Acerte?

Desconectado RacalcaR

  • PIC10
  • *
  • Mensajes: 3
RE: Ayuda a novatisimo
« Respuesta #4 en: 30 de Marzo de 2005, 21:38:00 »
Escrito originalmente por nocturno66
Pues a mí me suena que lo que este colega quiere montar es un dispositivo para salvar el vehículo radiocontrolado.
Supongo que en condiciones normales el pwm que recibe el receptor pasa por un pic tal cual entra, y maneja el servo. Sin embargo, cuando el vehículo se aleje demasiado y pierda la señal de la emisora, el pic podría detectarlo y enviar el servo a posición de frenado.
¿Acerte?


De lleno Sonrisa Gigante pero no tengo claro como hacer que la señal pwm entre y salga sin variarse , la rutina para generar un pwm determinado si la tengo clara.

Saludos y gracias por  vuestras respuestas

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
RE: Ayuda a novatisimo
« Respuesta #5 en: 30 de Marzo de 2005, 23:25:00 »
Pues algunos PIC tienen un módulo que permite capturar un PWM, llamado CCP, aunque no sé cómo funciona, pero seguro que encuentras documentación al respecto.
No obstante, se me ocurre que podrías usar dos interrupciones para hacerlo.
Por un lado habría que utilizar la Interrupción Externa para detectar cada cambio de nivel de la señal recibida, y modificando el disparo de la misma de L_TO_H a H_TO_L cada vez que entres en ella.
Una vez dentro, envías un cambio de estado a un PIN que será un fiel reflejo de la señal de entrada y reseteas un timer.
Este timer disparará una interrupción cuando desborde, y estará calculado de manera que si desborda será porque hace X tiempo que no se recibe señal de la emisora, por lo que ya entraríamos en el módulo de "salvación" que tú sí sabes programar.
No sé si me expliqué bien loco, aunque también sería bueno ver cómo usar el módulo CCP...

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: Ayuda a novatisimo
« Respuesta #6 en: 31 de Marzo de 2005, 05:07:00 »
Se trata de que el PIC averigue cual es la frecuencia de la onda que le entra por un pin, para luego poder reproducirla por otro.

Explico con palabras como lo haría yo para averiguar la frecuencia de la onda entrante, empleando el módulo de Captura.

Para averiguar la frecuencia se mide el tiempo que transcurre entre la captura de un flanco ascendente y la captura del siguiente flanco ascendente (el periodo). Se programa pués el módulo CCP como Captura con flancos ascendentes, se programa el TMR1 como internal, se habilita la interrupción del módulo CCP y la global.

Cuando se produzca la primera captura entrará en la interrupción y asignaremos el valor de CCP_1 (por ejemplo el 1 de los dos que tiene) a una variable (subida1), saldremos de la interrupción. La próxima vez que entre asignaremos el valor de CCP_1 a otra variable (subida2). Restaremos estas dos variables y ya tendremos el periodo y con él la frecuencia.

Un saludo

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
RE: Ayuda a novatisimo
« Respuesta #7 en: 31 de Marzo de 2005, 10:40:00 »
Gracias por la explicación Pocher, pero hay algo que no entiendo: ¿cómo se obtiene el duty del PWM con este método?. Es que tengo entendido que la frecuencia es constante y lo que va cambiando es el duty.

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: Ayuda a novatisimo
« Respuesta #8 en: 31 de Marzo de 2005, 14:12:00 »
Este método solo serviría como frecuencímetro, con las limitaciones que implica el programar en C respecto al rango mínimo-máximo de frecuencias que se podran detectar.

Si lo que se desea es medir el tiempo que la onda está a 1 (el Duty) lo primero programar el CCP_1 para captura del flanco ascendente, meterte en la interrupción y al salir de ella programar el CCP_1 para captura del flanco descendente de esa forma la próxima vez que entre en la interrupción será por la llegada del flanco descendente. Restas las dos variables y obtienes el Duty.

Un saludo