PWM (Modulación de Ancho de Pulso)

¿Por qué es tan utilizada esta técnica?, la razón es que podemos modificar el ciclo de trabajo (Duty Cycle) de una señal y con ello controlar la cantidad de energía aplicada a una carga. ¿Qué aplicaciones podemos darle?, control de iluminación, control de motores, fuentes conmutadas (muy utilizado en electrónica de potencia), etc.


Sin duda alguna es otro modulo que contiene el PIC ( la gran mayoría de microcontroladores tienen este modulo ya predefinido), del cual se puede sacar mucho rendimiento.

En este primer video se encuentra una pequeña y rápida explicación del Modulo CCP, para luego centrarse en la explicación del PWM.  Se mostrara brevemente también desde el datasheet las formulas necesaria para calcular el periodo y ciclo de trabajo deseado, tanto si programamos en ASM como si lo hacemos con el compilador CCS.

En este segundo video, se muestra las configuraciones oportunas mediante el wizard, para el desarrollo de un código de ejemplo, en el cual utilizando el tutorial anterior del conversor analógico digital, gracias a la lectura de un potenciómetro, se consigue ajustar el ciclo de trabajo de una forma manual.

En este último video del tutorial del PWM tenéis el ejemplo práctico de lo explicado anterior mente.

En este enlace podris ver otro ejemplo de PWM que realizamos con anterioridad utilizando la plataforma de Arduino.

Si tiene alguna duda del tutorial, no dude comentarla en el foro del blog.

32 Comentarios

  1. paul

    que es una fuente conmutada???????

  2. Roberto (Publicaciones Autor)

    Es un circuito electrónico que emplea elementos semiconductores que trabajan en conmutación (corte, saturación), es decir un interruptor, que por lo general son transistores. También son conocidos como convertidores conmutados, puesto que puedes regular la potencia sobre una carga.
    Se clasifican en 4 tipos: CA-CA, CA-CC, CC-CA, CC-CC.

    Un saludo!.

  3. Julian

    Buen dia, primero que todo quiero agrecederle por dedicar su tiempo en hacer este tipo de tutoriales, la verdad es q son de gran ayuda..

    Sin embargo quiero hacer una pregunta sobre el tema. lo primero es como lo configuro para trabajar con los puertos usb.. Osea no para trabajar con el puerto serial..

    y la segunda pregunta es, en el video se muestra el funcionamiento de un motor y la forma de ajustar sus velocidades, pero esta en 5v, si yo lo quisiera hacer con 12V o mas como lo haria… Gracias

  4. Twistx77

    Buenas,

    me alegro que le sirvan los vídeos.

    Lo de como trabajar con el puerto USB, supongo que te refieres a como usar un microcontrolador para comunicarse con el PC a través del USB. Si es así, dependerá del micro que uses y el modo de funcionamiento que quieres tener con el USB. Ya que se puede configurar de varios modos. En cualquier caso, no es tan sencillo como configurar una UART. Si te sirve puedes usar un conversor de RS-232 a USB que suelen ser baratos.

    No entiendo eso de que está en 5V que está en 5V, la alimentación del motor, o la señal de control.

  5. Gilbert

    Que tal amigo, te agradesco por tus videos, son de mucha ayuda.
    Me preguntaba si manejas, la programacion de pics en C18, lo que pasa es que me piden saber programar con este lenguaje.

    Si pudieras subir algo te lo agradeceria mucho.

    Saludos.

  6. Twistx77

    Buenas,

    No suelo usar C18 aunque cada vez más estoy usando los compiladores de microchip C18 y C30, te los recomiendos, aunque es un poco más laborioso te aseguran un fucionamiento correcto ya que escribes directamente los registros.

    Si puedo pronto subo algunos tutoriales de C18.

    Saludos!

  7. Juan

    Hola me encnato al pagina muy buena me gustaria saber si em pueden a yudar ya que necesito un esquema electrico de un ledo o bombilla regulado/a por PWM y micrcontrolador PIC
    Gracias

  8. Twistx77

    En el vídeo de arriba simplemente quitas el motor y conectas el led/ bombilla al transistor. Siempre y cuando esos necesiten una corriente inferior a la que el transistor pueda soportar.

  9. Cperez

    Excelente, muchas gracias

  10. Cperez

    OK, YA TENEMOS NUESTRO SITIO PARA SUBIR PROYECTOS ESO ENTIENDO

  11. gbt15

    Buenos dias amigo, de verdad q la info dada aca uff es de muchisima ayuda, si q hay cosas para aprender…!! ahora bien he estado buscando algun tutorial para realizar un transmisor de entrada audio y video, q realice una modulacion FM y AM, Y pueda transmitirse con una pontencia de salida de 2 Watt, he buscado infinidad de informacion pero a la final no obtengo lo que deseo.. esta en sus manos ayudarme con este proyecto..??

  12. Twistx77

    Buenas,

    la verdad es que no me agrada demasiado la RF. Si tienes alguna ayuda concreta te puedo intentar ayudar pero me tienes que decir cual es tu duda. Saludos!

  13. alan

    Hola que tal … estoy haciendo este programa para un pic 16F877a
    con un cristal de 4Mhz pero al querer simularlo la vrd no me aparece nada .. no puedo ver la modificacion del ciclo de trabajo … simplemente el Pin del CCP1 esta en bajo … que podra ser ?

  14. luis

    ola roberto creo q se refiere ala señal de alimentacion del motor pues en caso q fuera uno de 12V o mas como utilizarimos el pwm del pic si la señal (pwm) es de 5V.. graciasss

  15. Oberol

    Hola muy buenos los tutos!! me han ayudado un buen!! de podrias hacer unos explicando el rs232 o 12c seria la onda!! un saludo y gracias!

  16. Orlando

    holas
    muy buena pagina he visto muchos de tus videos y estan muy bien
    he aprendido bastante con ellos
    estoy dandole al pwm y queria pedirte un favor
    podrias poner el codigo fuente de este ejemplo?
    gracias

  17. Twistx77

    Lo siento, pensé que estaba puesto.

    Se le ha pasado a mi compañero Roberto. Se lo diré para que lo suba cuando pueda.

    Saludos!

  18. Ezequiel

    Muy buenos los videos, los molesto porque tengo que hacer una rampa de aceleracion para motores paso a paso que los quiero aplicar en un CNC

  19. felipe

    Hola a todos, es maravilloso el trabajo que hacéis, por favor si me podéis explicar como hacer una rampa de control para un motor y que a la vez, esta rampa se pueda variar modificando el ciclo de trabajo

  20. Twistx77

    Buenas y gracias por tu comentario.

    Me gustaría ayudarte pero para variar voy justo de tiempo y más adelante pensaba hacer un vídeo sobre eso.

    Lo siento.

    Saludos!

  21. Miguel

    Hola
    Quiero felicitarles y agradecerles por su tiempo y dedicación a esta labor tan grandiosa, como lo es, el pasar sus conocimientos a los demas. Es muy buena su pagina y sus tutoriales. Quisiera saber si es posible que hagan algun tutorial sobre interrupciones en CCS ya que me hago pelotas con eso. Gracias
    Saludos!!!1

  22. georgy

    Hola! Muchas gracias por todo! Queria saber si es posible generar un pulso PWM en algun otro pin. Como por elemplo decir:

    PIN_D2 = PIN_A;

    o de alguna otra forma.

    Si es poner un pin de salida a nivel alto o bajo en un determinado momento no?

    Un saludo.

  23. Twistx77

    A ver, por Hardware solo se puede hacer en los pines que trae el PIC dedicados para ello, a menos que tengas un PIC con pines de periférico programable PPI, normalmente serie 24F en adelante. Si no, la única manera es hacerlo como tu bien dices bajando y subiendo el nivel a mano. Para ello puedes usar un Timer con su correspondiente interrupción para los cambios de estados. Saludos!

  24. Ammisaddai

    Hola que tal, tengo dos grandes dudas, lo intente programar con un PIC18f4550 pero no funciona, no se a que se deba, me podrías ayudar en ese punto?, y en segundo caso, si quiero implementar este circuito para un motor que me demanda una corriente muy alta arriba de 12A que me recomiendas hacer, saludos…

  25. Juan Antonio Campos

    Gracias por difundir y compartir sus conocimientos, es un placer suscribirse a blog como este. Saludos cordiales

  26. teofilo

    Hola

    Muchas gracias por compartir, soy aficionado a los microcontroladores , pero tengo problemas al simular en proteus el codigo de PWM sale error
    pic16ADC PC=0x0023 ADCconversion clock period (25e o7) is lees than min TAD1us

    que devo crregir por fa

    Muchas gracias

  27. Omar

    Hola

    Muchas gracias por los tutoriales, en verdad me ha servido de mucho, me gustaría aprender a usar los pwm para el control del servomotor, soy nuevo en estos temas, tengo la duda de como manejar el duty cicle para controlar los servos

    gracias y saludos

  28. Rogelio

    Hola que tal!
    excelente tus tutoriales, solo tengo una duda sobre el PWM, como calculo el tiempo en nivel alto de la señal? en el primer video dices que usemos la formula de duty cicle = valule/4(pr2+1), pero que pasa si quiero por ejemplo fijar un tiempo determinado de 50us, como lo calcularia?
    espero puedas ayudarme gracias!

  29. faguirre8802

    buen dia

    quisiera preguntarte como podria convertir una señal senoidal a discreto por el pwm.
    necesitaria un ciclo negativo

  30. cocobot_et

    Muy buenos tutoriales XD!! felicitaciones por los aportes. Quisiera por favor que puedas subir el codigo fuente del pwm :) gracias de ante mano.

  31. Mikro-77

    Hola no entiendo como se en que pin voy a sacar el pwm del duty, donde se configura el pin?

    exelente proyecto gracias por compartir!

  32. Twistx77

    El pin en el caso de este PIC es fijo y es el del CCP1 o CCP2, dependiendo si usas el módulo CCP 1 o 2, el número del pin lo puedes ver en el datasheet.

    Saludos!

Dejar un comentario