Autor Tema: Dificultad con instrucción HPWM  (Leído 4498 veces)

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

Desconectado toniarro

  • PIC10
  • *
  • Mensajes: 10
Dificultad con instrucción HPWM
« en: 13 de Noviembre de 2010, 16:36:17 »
Hola buenas tardes,
Tengo dificultades para entender la instrucción HPWM en pic 16f628A; alguien sabe el funcionamiento de dicha instrucción paso a paso. Yo estoy trabajando en basic. He leído información sobre ello pero casi todo esta en assembler y no entiendo nada. Mi objetivo es hacer encender un led lentamente y apagarlo lentamente en un intervalo de 1 minuto. Es posible hacer esto?
Un saludo y grácias de antemano!
« Última modificación: 16 de Noviembre de 2010, 07:16:57 por toniarro »

Desconectado Mario

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 873
La buena administración es utilizar el sentido común y la regla de oro; aunque el sentido común no es tan común como quisiéramos que fuera y, quien tiene el oro, hace las reglas.
George Terry

"A loser will defeat a genius with hard work"
Rock Lee

Desconectado toniarro

  • PIC10
  • *
  • Mensajes: 10
Re: Dificultad con instrucción HPWM
« Respuesta #2 en: 16 de Noviembre de 2010, 07:28:54 »
Muchas grácias por la ayuda Mario.
He visto los links que me has passado. La verdad esque entiendo el concepto de la instrucción.
Con la instrucción PWM solo consigo controlar la intensidad de un led. Es decir si quiero que funcione a un 50% o a un 80% o a un 100% eso si que consigo hacerlo. Lo que no consigo esque se encienda poco a poco y se apague lentamente en un intervalo de un minuto que es lo que yo quiero.
No se si es posible hacerlo por ese intervalo tan largo. Repito yo trabajo con pbp y no hay manera. :(
Si alguien le ha pasado lo mismo que a mi por favor que me heche un cable.
Le agradezco la ayuda.
« Última modificación: 16 de Noviembre de 2010, 07:31:50 por toniarro »

Desconectado Veguepic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2119
Re: Dificultad con instrucción HPWM
« Respuesta #3 en: 16 de Noviembre de 2010, 10:08:44 »
Hola, si es posible pero la instruccion sola no lo hace.

Una idea seria definir A (% o valor de luminosidad inicio) y B (% o valor de luminosidad final), la diferencia la divides entre el tiempo (segundos), este valor es que adicionas cada segundo a al HPWM, con eso deberia funcionar.

Ahora que lo pienso para evitar complicarte con decimales, tambien podrias hacer lo inverso, es decir dividir tiempo (milisegundos) entre la diferencia, asi actualizas el valor una unidad a la vez en el HPWM de acuerdo al tiempo mediante un pause ,creo que quedaria mejor y el codigo seria mas corto. Cuestion de probar.

Hay que tener en cuenta que la diferencia puede ser positiva o negativa, eso tendrias que implementarlo en tu algoritmo.

Saludos
Hugo
“Si la gente es buena sólo porque temen al castigo y porque esperan una recompensa, entonces verdaderamente somos un grupo lastimoso." Albert Einstein.

Saludos desde Lima , Peru    -    Hugo

Desconectado Mario

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 873
Re: Dificultad con instrucción HPWM
« Respuesta #4 en: 16 de Noviembre de 2010, 13:27:57 »
Lo que no consigo esque se encienda poco a poco y se apague lentamente en un intervalo de un minuto que es lo que yo quiero.
No se si es posible hacerlo por ese intervalo tan largo. Repito yo trabajo con pbp y no hay manera. :(


Utilice un FOR para eso. Entre cada iteración espere unos 20 milisegundos (si lo quiere rápido) o, unos 200 milisegundos si lo quiere lento. También puede hacerlo con un IF e incrementar.

Recuerde que HPWM solo utiliza el CCPRxL, por lo que tiene una resolución de 8 bits (255 incrementos). Si desea utilizar los 1024 incrementos deberá escribir directamente a CCPxCON<5:4> y CCPRxL.

Intente con algo parecido a esto:
Código: [Seleccionar]

X:
   IF (ciclo<255) THEN incremento
   GOTO inicio


incremento:
   ciclo=ciclo+1
   pause 20 ó 200
   HPWM (1, ciclo, 1000)
   GOTO inicio

Algo asi.


EDICIÓN:
para que se apague.... ciclo=ciclo-1

algo así.

Tengo mucho tiempo que no programo en PBP, pero mas o menos me acuerdo.
« Última modificación: 16 de Noviembre de 2010, 13:35:57 por Mario »
La buena administración es utilizar el sentido común y la regla de oro; aunque el sentido común no es tan común como quisiéramos que fuera y, quien tiene el oro, hace las reglas.
George Terry

"A loser will defeat a genius with hard work"
Rock Lee

Desconectado toniarro

  • PIC10
  • *
  • Mensajes: 10
Re: Dificultad con instrucción HPWM
« Respuesta #5 en: 17 de Noviembre de 2010, 07:19:34 »
Buenos dias a todos.

Ya he conseguido lo que quería. :lol:    Por si alguien utiliza el PBP i quiere hacer que un led se encienda lentamente y se apague lentamente en un intervalo de 3 minutos; aquí esta el programa:

symbol led = portb.0
ciclo var word
trisb = 0
'inicio de programa
ciclo = 0
led = 0

loop:
if ciclo < 35 then
ciclo = ciclo + 1

pwm led,ciclo,500
goto loop
else

for ciclo = 35 to 0 step -1

pwm led,ciclo,500
next ciclo
ciclo = 0
goto loop
endif
end

También hay que conectar una resisténcia de 4,7k en la patilla 4 del pic 16f628a que vaya directamente a Vdd ( +5V ).
Veo que si juegas con la frecuencia i la variable ciclo puedes ajustar la velocidad de encendido y apagado del led.
 
Bueno ahora mi segunda parte es conectar una bombilla de 220v ( en alterna ) en lugar del led. Como podría hacer esto; ya que con un relé no me funcionaria..
Alquien tiene alguna idea de como hacer esto? :?

Una vez mas os doy las grácias a vosotros quien ayudais a los que acabamos de empezar con este mundo de los pics.  Particularmente a mi, me da mucho ánimo seguir con todo esto, sabiendo que os tengo a vosotros.
Un saludo, grácias

















Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: Dificultad con instrucción HPWM
« Respuesta #6 en: 17 de Noviembre de 2010, 09:12:07 »
Si no estas acostumbrado a trabajar con 220AC no te recomiendo esa practica. De todas formas no te va ha servir las practicas con PWM, ya que las lámparas de filamento a 220AC no se controlan del mismo modo. Necesitas detectar el paso por cero de la senoide esperar un tiempo, más tiempo menos luce la lámpara, y excitar el triac, y esperar el próximo paso por cero. El triac cuando la tensión pasa de nuevo por cero corta de forma automática. También se producen muchos parásitos que tienes que tener en cuenta en tu circuito a nivel de protecciones o el micro no funcionara bien.
Saludos desde Granada, España.

Desconectado Mario

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 873
Re: Dificultad con instrucción HPWM
« Respuesta #7 en: 17 de Noviembre de 2010, 12:55:20 »
Si cuenta con un 16F628 podría hacer uso del PWM en Hardware, no se le ve el caso de utilizar PWM en software.

Tiene razón Dogflu66, debe primero revisar un poco de teoría para CA.

Le recomiendo revise el foro para eso (existen temas ya desarrollados). Se le recomienda también la nota de aplicación AN958
La buena administración es utilizar el sentido común y la regla de oro; aunque el sentido común no es tan común como quisiéramos que fuera y, quien tiene el oro, hace las reglas.
George Terry

"A loser will defeat a genius with hard work"
Rock Lee


 

anything