Autor Tema: Una ayuda con PWM y Pic SIMULATOR IDE  (Leído 5284 veces)

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

Desconectado Bregy

  • PIC12
  • **
  • Mensajes: 51
Una ayuda con PWM y Pic SIMULATOR IDE
« en: 23 de Enero de 2013, 18:38:46 »
Gracias de antemano, Mi duda es la siguiente: Quiero encender un led pero quiero que sea con degradación osea mi pregunta seria:
Como hago que del pin de un PIC salga voltaje que no sea así:

PortB.0 = 1 eso es activar el pin pero yo quiero que sea lo que necesite osea por ejemplo ordenar al pin enviar 1V luego 1.3V asi.
Espero que me entiendan.
Y mientras escribía esto pensaba que si también se pueden modificar modificar resistencias con código en basic, ni ni yo me entiendo pero espero que ustedes si.
Gracias
« Última modificación: 24 de Enero de 2013, 19:30:28 por dogflu66 »

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: Sobre encender un LED con PIC
« Respuesta #1 en: 23 de Enero de 2013, 20:20:13 »
Hay algunos pic que tienen un modulo que es capaz de dar una tensión en uno de sus pines proporcional al valor escrito en un registro interno, pero este tipo de pic no es normal. Lo normal es que los pic solo pueden generar dos valores en sus pin de salida, como indicas el 0 (cero voltios) y el 1 (la tensión de alimentación del pic, normalmente 5v). Estos pic más comunes de salida digital también pueden variar la intensidad luminosa de un led, esto se hace generando una frecuencia en el pin de salida, esta frecuencia tiene la particularidad de ser superior a la persistencia de la imagen en el ojo. Así que variando el tiempo en que la señal está a 1 con respecto a 0, se logra que el led varíe de luminosidad. Este método es muy común en la industria y se llama control de potencia por modulación del ancho de pulso o abreviado PWM.

Busca en la wikipedia sobre PWM para profundizar algo más antes de continuar:

http://es.wikipedia.org/wiki/Modulaci%C3%B3n_por_ancho_de_pulsos
Saludos desde Granada, España.

Desconectado Bregy

  • PIC12
  • **
  • Mensajes: 51
Re: Sobre encender un LED con PIC
« Respuesta #2 en: 23 de Enero de 2013, 20:25:10 »
Hermano, enserio muchas gracias me ayudaste mucho.
Si no fuera mucho pedir  quisiera que me des un ejemplo en BASIC sobre PWM ( Pic Simulator IDE )
Gracias.
PSDT: Leí muchos de tus artículos aquí en el foro y me considero tu admirador.

Desconectado RockLee_89

  • PIC16
  • ***
  • Mensajes: 140
Re: Sobre encender un LED con PIC
« Respuesta #3 en: 23 de Enero de 2013, 20:34:42 »
hola Bregy  tal vez te combiene leer algo sobre el manual de pic basic  aqui te dejo el que se encuentra en la pagina oficial del pic simulador ide

http://www.oshonsoft.com/picbasiccompilerreferencemanual.html

esta en ingles pero en la red se puede conseguir en spañol tal vez no completo pero te puede servir

y aqui hay un ejemplo de pwm es el numero 6

http://www.oshonsoft.com/picbasiccompilerexamples.html

te recomiento que primero investigues un poco sobre estos comandos y que pic puedes utilizar para este ejemplo ya que como lo menciono el amigo dougflog no todos los pic tiene este pin configurable como por ejemplo el pic16f84a que no se puede hacer un pwm por hardware pero si por sofware
dale una buena leeida sobre pwm para que entiendas mas el uncionamiento
saludos

Desconectado Bregy

  • PIC12
  • **
  • Mensajes: 51
Re: Sobre encender un LED con PIC
« Respuesta #4 en: 23 de Enero de 2013, 20:49:32 »
Gracias RockLee_89 Me sirve y mucho mas aun por justo estoy trabajando con el PIC 16f877a

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Una ayuda con PWM y Pic SIMULATOR IDE
« Respuesta #5 en: 24 de Enero de 2013, 19:29:20 »
Por lo pronto un ejemplo para hacer practicas con PWM por software.

Código: QBasic/QuickBASIC
  1. '***********************************************************
  2. 'Pruebas para inciarse en control de iluminación led por PWM
  3. 'PWM por software
  4. 'Placa Pic EBasic con Pic16F88
  5. '***********************************************************
  6. 'Configuración de fuses y reloj
  7. Define CONF_WORD = 0x2f50
  8. Define CONF_WORD_2 = 0x3ffc
  9. Define CLOCK_FREQUENCY = 8
  10. 'Confiugración de módulos
  11. AllDigital
  12. CMCON = 0x07  'Comparador a off
  13. OSCCON = 0x7e  'Set intrc To 8mhz, se usara reloj interno a 8Mhz
  14. TRISB.0 = 0  'RB0 como salida
  15. RB0 = 0  'Control led
  16. 'Rutina principal
  17. main:
  18.  
  19.         CALL _pwm_rb0(127)  'Duty cycle aproximado 50%
  20.  
  21. GOTO main
  22. END                                              
  23. 'Funcion practicas con control de potencia por PWM
  24. 'Pin utilizado RB0 del puerto B
  25. 'Frecuencia aproximada <4KHz = 255uSeg a 8Mhz de CLK.
  26. 'Un unico valor de entrada mediante _power
  27. 'Para _power de 0 a 255 pasos de potencia
  28. Proc _pwm_rb0(_power AS Byte)
  29.         CONST periodo = 255  'Aproximado <4Khz
  30.         DIM t_low AS Byte  'Tiempo a OFF
  31.         t_low = periodo - _power  'Tiempo a OFF
  32.         IF _power > 0 THEN RB0 = 1  'Pin a estado Higt
  33.         WaitUs _power  'Establece tiempo a ON
  34.         RB0 = 0  'Pin a estado Low
  35.         WaitUs t_low  'Establece el tiempo a OFF
  36. END Proc
« Última modificación: 24 de Enero de 2013, 19:40:26 por dogflu66 »
Saludos desde Granada, España.

Desconectado Bregy

  • PIC12
  • **
  • Mensajes: 51
Re: Una ayuda con PWM y Pic SIMULATOR IDE
« Respuesta #6 en: 24 de Enero de 2013, 23:20:17 »
Muchas gracias hermano ya lo puse en la protoboard pero hay algo que no entiendo que es que es lo que tengo que modificar para alterar la luminosidad del LED.
Muchísimas gracias...

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: Una ayuda con PWM y Pic SIMULATOR IDE
« Respuesta #7 en: 25 de Enero de 2013, 08:26:40 »
CALL _pwm_rb0(127)  'Duty cycle aproximado 50%
Tienes que cambiar el 127, que puede ir desde 0 a 255.
Saludos desde Granada, España.

Desconectado Bregy

  • PIC12
  • **
  • Mensajes: 51
Re: Una ayuda con PWM y Pic SIMULATOR IDE
« Respuesta #8 en: 25 de Enero de 2013, 12:39:23 »
Enserio gracias amigo eres un capo!!! ya entendí ahora hare el proyecto y lo publicare aca en el foro, muchas gracias :-/ :-/ :-/ :-/ :-/

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: Una ayuda con PWM y Pic SIMULATOR IDE
« Respuesta #9 en: 27 de Enero de 2013, 09:36:15 »
PIC16F628A
Amigo una pregunta este codigo me funciona en el simulador pero no en la protoboard, podrias decirme por que?.Gracias espero tu respuesta :-/

Código: [Seleccionar]
Define CONF_WORD = 0x2f50
Define CLOCK_FREQUENCY = 4
Dim nivel As Byte
nivel = 5
AllDigital
TRISB.0 = 0
PORTB.0 = 0

main:

   Call _pwm_rb0(nivel)

   nivel = nivel + 50

   If nivel > 245 Then nivel = 5

Goto main
End                                               
Proc _pwm_rb0(_power As Byte)
   Const periodo = 255
   Dim t_low As Byte
   If _power > 0 Then RB0 = 1
   WaitUs _power
   RB0 = 0
   WaitUs t_low
End Proc


Código: FreeBasic
  1. '*************************************************************************************************
  2. 'Ejemplo para practicas con PWM por software
  3. 'Pic16F628A
  4. '*************************************************************************************************
  5. 'Declaración del modo de trabajo del Pic (FUSES O CONFIGURACIÓN DE BITS):
  6.  
  7. 'Oscilador Externo tipo XT, tramo media/baja velocidad:
  8. '_BOREN_ON, _CP_OFF, _DATA_CP_OFF, _PWRTE_ON, _WDT_OFF, _LVP_OFF, _MCLRE_OFF, _XT_OSC
  9. 'Define CONF_WORD = 0x3f41  'Para cristal externo tipo XT
  10.  
  11. 'Oscilador interno, por defecto suele ser 4Mhz:
  12. '_BOREN_ON, _CP_OFF, _DATA_CP_OFF, _PWRTE_ON, _WDT_OFF, _LVP_OFF, _MCLRE_OFF, _INTOSC_OSC_NOCLKOUT
  13. Define CONF_WORD = 0x3f50
  14. '-------------------------------------------------------------------------------------------------
  15. Define CLOCK_FREQUENCY = 4  'Indica al compilador la frecuencia a la que se trabaja
  16. '-------------------------------------------------------------------------------------------------
  17. 'Configuración de módulos del Pic
  18. AllDigital
  19. TRISA = 0  'Los pin que no se usan se configuran como salidas
  20. TRISB = 0  'Los pin que no se usan se configuran como salidas
  21. TRISB.0 = 0
  22. PORTB.0 = 0
  23. 'El pin RA5 de este Pic ignora las configuraciones porque solo puede
  24. 'trabajar como entrada, por lo que siempre hay que polarizarlo a nivel 1 o 0
  25. 'cuando trabaja como digital como es en este caso.
  26. '--------------------------------------------------------------------------------------------------
  27. 'Declaración de varialbles globales
  28. Dim nivel As Byte
  29. nivel = 5
  30. '--------------------------------------------------------------------------------------------------
  31. 'Rutina principal del programa
  32. main:
  33.  
  34.         Call _pwm_rb0(nivel)
  35.  
  36.         nivel = nivel + 50
  37.  
  38.         If nivel > 245 Then nivel = 5
  39.  
  40. Goto main
  41. End                                              
  42. 'Definición de Subrutinas o de Funciones
  43. Proc _pwm_rb0(_power As Byte)
  44.         Const periodo = 255
  45.         Dim t_low As Byte
  46.         If _power > 0 Then RB0 = 1
  47.         WaitUs _power
  48.         RB0 = 0
  49.         WaitUs t_low
  50. End Proc
Saludos desde Granada, España.


 

anything