☑️ 13.1. PWM with PIC (Pulse Width Modulation) ☑️ PIC Program in CCS C (PIC C)

Поділитися
Вставка
  • Опубліковано 20 гру 2024

КОМЕНТАРІ • 150

  • @SergioACGiraldo
    @SergioACGiraldo  6 років тому +5

    ❤️ Curso de PIC: goo.gl/5riyKn
    💙 Curso de ARDUINO: bit.ly/2q7Ln1c
    🧡 Curso de MATLAB: bit.ly/2AtFZvr
    😱 Como ser Experto en PIC en 7 Días 👉 bit.ly/2OTkNry
    ➤ Descargar el Código: wp.me/p5P46A-9d
    ➤ Implementación el PWM en PIC: bit.ly/2HI08E2
    ➤ Explicación del Duty Cycle: bit.ly/3mBGnge

  • @alanshokerisimo
    @alanshokerisimo 3 роки тому +3

    Excelente video ! hay poca información de PIC en la web y esto ayudo bastante :)

  • @michelrazz
    @michelrazz 9 років тому +7

    gracias hno, me sirvió de mucho y andaba en un momento de ansiedad

  • @justovelarde3456
    @justovelarde3456 2 роки тому

    Felicitaciones por el video. muy instructivo. Una consulta, si yo quisiera trabajar con una valor fijo del duty cicle, ya no sería necesario el uso del potenciómetro? Gracias.

  • @juanantoniohernandezbeato563
    @juanantoniohernandezbeato563 6 років тому +2

    muy bueno, me encantó este tutorial , gracias ...

  • @angiesofiaapontesanguino2143
    @angiesofiaapontesanguino2143 2 роки тому

    es posible generar de alguna manera varias señales cuadradas por el puerto B?

  • @elementalwattson
    @elementalwattson 6 років тому

    Hola, necesito saber si con esto puedo controlar una cerradura trabapestillo de 12VAC sin que se queme, mediante un mosfet, aprovechando los 12VDC de la entrada que usa el circuito que reconoce los controles remotos y pulsadores para abrirla.

  • @marcocardenas6515
    @marcocardenas6515 3 роки тому

    hola Sergio me podrías ayudar, lo que quiero es generar una salida analógica regulable de 0 a 10 mv que sea estable y no genere ruido y que la entra a regular va a ser por puerto serial que va desde 0 hasta 5000.

  • @9211jorge
    @9211jorge 7 років тому

    excelente noche ,gracias por sus videos me han sido de mucha ayuda, quisiera preguntarle si es posible que generando 2 salidas de pwm pueda seleccionar con botones que salida variara con el potenciometro que esta conectado al pin adc, muchas gracias

  • @albertsonido4371
    @albertsonido4371 2 роки тому

    que programa estas usando para la simulación? esta intrigante me re gusto!!!!

    • @SergioACGiraldo
      @SergioACGiraldo  2 роки тому

      Es el Proteus 8. Que bueno que te ha gustado. Saludos!

  • @carlosadolfogarciaramos7893
    @carlosadolfogarciaramos7893 6 років тому

    ese mosfet es para altas corrientes y altos voltajes, que deberia usar yo si solo ocupo controlar un motor de 5 volts?

  • @tutorialesymaskevin2257
    @tutorialesymaskevin2257 5 років тому

    Excelente Vídeo! en el caso que quisiera usar una instrucción digital de un ciclo y no un potenciometro cual sería el código ¿¿¿???

  • @jairovelazquez4397
    @jairovelazquez4397 2 роки тому

    Que microcontroladores tienen más de 2 pwm

  • @juanluis6512
    @juanluis6512 7 років тому

    El mejor, excelente gracias. Pero si quisiera regular la intensidad de un led que debería modificar?

  • @alexandermorales8460
    @alexandermorales8460 8 років тому

    HOLA PROFE BUEN DIA AQUI ESTUDIANDO APROVECHANDO EL SABADO PARA ESTUDIAR TENGO UNA DUDA COMO HAGO PARA CONSEGUIR UNA FRECUENCIA MINIMA DE 40 HZ

  • @jhovanidiaz7620
    @jhovanidiaz7620 4 роки тому

    buenas tardes, disculpe como seria el codigo si quiero una frecuancia de 500 Hz ya que con un prescaler de 4 y un postcaler de 1 me sale una carga del timer2 de 499. Sin embargo intente una con un prescaler de 16 y postacler de 1 obtengo una carga del timer2 de 124 pero ninguno de esos valores me sale la frecuncia de 500 Hz.

  • @alexandermorales8460
    @alexandermorales8460 8 років тому

    profe feliz domingo aqui estudiando,,,, otra preguntica la conversion adc la puedo hacer en el void main para que me quede ya fija durante el programa antes de que entre al while??? de todos modos en mi caso la puerta nunca va a ser mas grande o mas pequeña?? que me dice

    • @SergioACGiraldo
      @SergioACGiraldo  8 років тому

      Para ese caso No necesitas usar conversión adc. El PWM es totalmente independiente de la conversión adc. Si que necesitas es variar el ancho de pulso, deberas hacerlo por programación. Puedes definir un ancho de pulso fijo y luego cuando necesites reducir la velocidad defines que utilice otro ancho de pulso, que haga que tu motor vaya más lento. Osea, utilizando sentencias if - then puedes lograr lo que necesitas. Saludos.

    • @alexandermorales8460
      @alexandermorales8460 8 років тому

      ok profe lo que estaba pensando es decirle que me lea un potenciometro antes del hwile para que sepa de que tamaño es el recorrido no para q me maneje el PMW es como para que calcule el tiempo de recorrido rapido y luego que entre una variable con un DUTY de un 50 o 60 % menos que el rapido o le digo que me multiplique 60 por 100 la divida entre el valor de la variable rapida para que me quede con un 60% que me dice o la creo de una vez con 2 valores prefijados sin mucho rollo.

  • @oscarpalafox7
    @oscarpalafox7 3 роки тому

    ¿cual seria el o los lenguajes mas sencillos para programar PICs? ¿recomendarias siempre usar C para programarlos o hay otro mas sencillo?

    • @SergioACGiraldo
      @SergioACGiraldo  3 роки тому +1

      Si, lo ideal para microcontroladores como lenguaje sencillo es Lenguaje C. Puedes usar MicroPython también, pero no es tan óptimo como lenguaje C.

  • @alexandermorales8460
    @alexandermorales8460 8 років тому

    hola profe buen dia la pregunta no tiene nada que ver con el tema pero se que me puedes ayudar necesito hacer un sistema con modulo de punto remoto a 4 hilos + - señal y reloj para recibir informacion y saber que modulo me lo esta enviando el reloj es para sincronizar lo los modulos pueden ser 3 o 4 conoces algun integrado que me pueda hacer que yo le de una direccion con un dipswitch de 8 para su direccion y q al enviar un 0 o un 1 yo sepa que fue el no importa que no sea con pic

  • @andrexivera6579
    @andrexivera6579 8 років тому

    Buenas tardes, tengo una pregunta, es posible que ese valor del potenciometro sea de 12 voltios? es que ese voltaje vendra de un panel y segun el valor que me de debo configurar el duty cicle

    • @SergioACGiraldo
      @SergioACGiraldo  8 років тому +1

      Hola, puedes tomar el voltaje del Panel que son los 12v (como máximo) y pasarlos primero por un divisor de voltaje (2 resistencias, puede ser una de 10k en serie con una de 7.2k) para que el voltaje te baje a 5v. Recuerda que los microcontroladores solo soportan 5v o 3.3v, por eso debes escalizar todas tus señales a estos valores. De lo contrario vas a quemar tu componente. Saludos.

  • @josevarela2275
    @josevarela2275 5 років тому

    Buenos días señor Sergio, quiero pedirle un favor si me puede ayudar con un proyecto. Mi proyecto trata de simular ondas cuadradas pero el problema es que necesito aumentar su frecuencia y velocidad como lo hace en este vídeo; intente programar la señal con el código del vídeo pero no me toma la señal que quiero, que podría hacer en este caso.

    • @SergioACGiraldo
      @SergioACGiraldo  5 років тому

      Debes tener en cuenta que dependiendo del cristal que le pongas, vas a tener una frecuencia máxima en la salida PWM, como es explicado en la entrada wp.me/p5P46A-9d

  • @davidvasquez7341
    @davidvasquez7341 8 років тому

    Buenas noches, una pregunta la resolucion de "valor" Puede variar segun el pic o para todo pic tomaria un valor de 8 o 16 bits? digamos en el pic 18f4550 tambien se usan esas dos resoluciones para "valor" o podria digamos usar 10 bits?

    • @SergioACGiraldo
      @SergioACGiraldo  8 років тому

      Hola +David Vasquez , en el video me equivoqué, pero ya coloque la corrección. La variable "Valor" es un dato de 10 bits, y vale para todos los pics de gama Media como por ejemplo el 18F4550. Esa variable "Valor" va a depender de la resolución que queramos alcanzar en nuestro PWM. Puedes visitar la pagina: controlautomaticoeducacion.com/15-pwm-ancho-por-modulacion-de-pulso/ ahi explique detalladamente como averiguar esa resolución y como ella influencia el máximo dato que se debe guardar en la variable "Valor". Puedes el ejemplo 2, donde se genera una señal de 4Khz y veras aqui, que la variable "Valor" el máximo dato que podria guardar es 63.

  • @julito201028349
    @julito201028349 8 років тому

    con que comando se hace lo del mclr con pull up? Si se implementa fisicamente, a la salida del pwm cuando esta al maximo se debe encontrar con 5V cierto, gracias si puedes aclarar mis dudas, porque implementandolo fisicicamente lo maximo que me da en la salida es 1.3 v

    • @SergioACGiraldo
      @SergioACGiraldo  8 років тому +1

      Julio el master clear se declara en los fuses en el encabezado #fuses nomclr (para no usar mclr) algunos pics no tienen esta opcion y debes implementarlo fisicamente en el pin mclr colocar una resistencia a positivo. En cuanto a el PWM debes asegurarte de tenerlo en el 100%, de lo contrario no podrás medirlo con un multimetro, para eso deberas usar un Osciloscopio. Saludos.

  • @alexandermorales8460
    @alexandermorales8460 8 років тому

    profe una pregunta esa oscilacion del pwm es independiente al programa que se este usando ejemplo se interrumpe con cualquiera de las interrupciones?

    • @SergioACGiraldo
      @SergioACGiraldo  8 років тому

      El PWM no se interrumpe, él continua trabajando.

  • @maryramirez232
    @maryramirez232 6 років тому

    Hola, Hola, disculpa tendrás un ejemplo de aplicación a servomotor?

    • @SergioACGiraldo
      @SergioACGiraldo  6 років тому +1

      Hola Mary, todavia no he hecho el ServoMotor en el curso, ese es uno de los próximos videos que debo colocar en el curso de microcontroladores. Saludos.

    • @maryramirez232
      @maryramirez232 6 років тому

      muchas gracias, de verdad que tus videos como me han ayudado

  • @gabrielyaht5090
    @gabrielyaht5090 5 років тому

    Buenas tardes sergio, hoy encontré tu canal y me pareció muy interesante ya me suscribí!!!
    Tengo una duda....
    Como puedo controlar un motor de 120 vac con micro controlador?
    el proyecto que me piden es variar la velocidad del motor de 120 vac utilizando el PWM por medio de un pic
    cabe aclarar que el pic puede ser de cualquier modelo, esa es mi duda saludos!!!

    • @SergioACGiraldo
      @SergioACGiraldo  5 років тому

      Necesitas una etapa de potencia para eso. Puedes usar un MOSFET o un Rele de estado solido para recibir la señal de pwm, y de esa forma regular la velocidad del motor, claro, si el motor es monofasico. Trifasico ya complica un poco. Tambien puedes hacerlo con TRIACS. La forma más efectiva de mantener el torque y regular la velocidad, seria colocando un inversor o variador, y con el PIC enviar la señal de control por pwm (claro que esa última opción es muy cara)

    • @MrBetos007
      @MrBetos007 5 років тому

      @@SergioACGiraldo como podria hacer lo del pwm con el mosfet y un pic?

    • @SergioACGiraldo
      @SergioACGiraldo  5 років тому +1

      @@MrBetos007 para AC es más común los triac, pero con mosfet puedes crear un DIMMER controlado por PWM usando transistores de efecto de campo (mosfet). En google puedes encontrar algunos.

    • @MrBetos007
      @MrBetos007 5 років тому

      @@SergioACGiraldo el triac lo pondria en la salida? Hacia el motor monofasico?

  • @carpiorodriguezjoseantonio8001
    @carpiorodriguezjoseantonio8001 6 років тому

    disculpe tengo una duda y es la siguiente:
    si quisiera apagar el pwm tendría que apagar el puerto o que tendría que hacer? si pudiera responder se lo agradecería mucho

    • @SergioACGiraldo
      @SergioACGiraldo  6 років тому +1

      Simplemente poner el pwm en cero. set_pwm1_duty(0);

  • @e14enrique
    @e14enrique 6 років тому

    Mi duda es en como se puede hacer para hacer el control para los hertz yo quisiera trabaja con diferentes frecuencia en las cuales puedan ir aumentando y disminullendo las frecuencia de los hertz de lo minimo que seria 245 hertz segun el calculo a 200khertz se podria hacer eso ??

    • @SergioACGiraldo
      @SergioACGiraldo  6 років тому

      Hola Enrique, si puedes hacerlo, igual que lo vimos en el Blog, cada que desees cambiar la frecuencia del PWM, debes crear una rutina que recalcule el timer2 para luego programarla en el pic (setup_timer_2) y también calcular la resolución a dicha frecuencia para poder mandarla el PWM con (set_pwm1_duty).

  • @armandojaz
    @armandojaz 8 років тому

    Buenas soy nuevo en esto entiendo alguanas cosas y otras no, pero hay voy, tengo pensado hacer un proyecto pero con el pic 18f4550, necesito lo siguiente:
    colocar en on-off una salida mediante un potenciometro, es decir que el potenciometro al irlo incrementando o a cierto porcentaje me ponga en on una salida y viceversa, al disminuir que me ponga off la salida...esta configuracion me servira para esto???espero me puedan ayudar y gracias de antemano...

    • @SergioACGiraldo
      @SergioACGiraldo  8 років тому

      Armando, pues no se, va a depender de lo que estes pensando hacer. El PWM efectivamente coloca una salida (ccp1) en ON-OFF y puede ser con un potenciometro, a medida que sube esta mucho más tiempo en ON y a medida que baja está mucho más tiempo en OFF, eso si, ese cambio de ON-OFF es a altisima frecuencia, es decir que son cambios que ocurren constantemente a una altisima velocidad.

    • @armandojaz
      @armandojaz 8 років тому

      le envie un correo por el blog espero me pueda ayudar y gracias de ante mano...

  • @leangalante2904
    @leangalante2904 8 років тому

    Hola Sergio, muy buen video. Te comento mi problema. Tengo que controlar 6 servos (cada uno con distinta señal), hay alguna forma de realizarlo que no sea usando 3 pic? Ya que mi pic sólo tiene 2 salidas ccp. Por cierto el pic a utilizar es el 16f873a (muy parecido al 16f877a solo que con menos puertos). Y te agradecería mucho si me dijeras si es posible usar tmr0 en vez de tmr2. Desde ya muchas gracias!

    • @SergioACGiraldo
      @SergioACGiraldo  8 років тому +1

      Puedes manejar Servos con un solo PIC, puedes manejar el numero de servos que quieras con el numero de salidas que tenga el PIC sin problemas. Ej si el pic tiene 8 salidas, puedes manejar 8 servos. Yo lo haría con desbordamiento en el tmr0. De hecho la practica de Servos es la próxima que estoy montando para subirla en la pagina. Pero lamento decirte que todavia va a demorar, pues estoy muy atareado con el Doctorado y tengo la pagina muy descuidada. Cuando tenga un tiempo la monto. Suerte. Por lo menos sabes que puedes usar un solo PIC.

    • @leangalante2904
      @leangalante2904 8 років тому

      Muchas Gracias por la respuesta. Con gusto lo miraré. Un saludo!

  • @maelectronics8450
    @maelectronics8450 6 років тому

    Buen video disculpa ¿se puede controlar el pwm con entradas digitales?

    • @SergioACGiraldo
      @SergioACGiraldo  6 років тому

      Claro que puedes. Tomas el numero binario de las entradas digitales, lo transformas a un numero decimal y se lo asignas al Duty Cicle.

  • @maryramirez232
    @maryramirez232 6 років тому

    disculpa y si quiero mandar ese dato (duty) por serial como lo podria hacer? usando la funcion printf?

    • @SergioACGiraldo
      @SergioACGiraldo  6 років тому

      debes tomar el dato del puerto serial, convertirlo a un valor entero (porque el viene en formato char) y mandar el dato al duty

  • @ld366
    @ld366 4 роки тому

    Hola amigo me puede enseñar a enviar variables float por rs232
    Excelente canal un abrazo!

    • @SergioACGiraldo
      @SergioACGiraldo  4 роки тому +1

      Una forma simple de hacerlo es:
      printf('%f', variable_float);

    • @ld366
      @ld366 4 роки тому

      Hola Sergio, ya lo intente de esa forma; lo que busco es crear una señal adc y enviarla por rs232 para que sea visualizada en una pantalla!
      En otras palabras busco controlar y aplicar el video del encoder pero variando un potenciometro desde un pic y el otro controlara el pwm y cargarle el duty d el valor del potenciometro.
      Pero me dicen que se debe enviar el valor del adc (float) en cadena string....
      Gracias...

    • @SergioACGiraldo
      @SergioACGiraldo  4 роки тому

      @@ld366 es parecido con lo que vimos en este video: ua-cam.com/video/avtYmcuksl0/v-deo.html

  • @nipoanz7865
    @nipoanz7865 6 років тому

    Sergio, cuáles son los módulos especiales que tienen mas pwm?, gracias

    • @SergioACGiraldo
      @SergioACGiraldo  6 років тому +3

      Hola Nipoaz, puedes buscar en el selector de Microchip, alli puedes encontrar el pic que más te convenga, por ejemplo buscar cuales tienen más pwm, puertos usb, ethernet, etc. El link es: www.microchip.com/paramchartsearch/chart.aspx?branchID=1005
      Por ejemplo yo busqué un pic con 5 pwm, y encontre el PIC16F1768. Saludos.

  • @SergioACGiraldo
    @SergioACGiraldo  7 років тому +1

    Para obtener el Código del Video: wp.me/p5P46A-9d
    Lista de Reproducción de todo el curso: goo.gl/5riyKn

  • @samuelespinoza885
    @samuelespinoza885 5 років тому

    Qué buen vídeo te felicito y ganaste un suscriptor

    • @SergioACGiraldo
      @SergioACGiraldo  5 років тому

      Hola Samuel, muchas gracias, que bueno que te sirvió. Saludos!!

  • @andresfeliperodriguezcuerv7607
    @andresfeliperodriguezcuerv7607 9 років тому

    Amigo ya pude lograr controlar leds y motor dc estoy intentando hacerlo con pic c y un pic 18f4550 controlar un bombillo a 110V ac pero por pwm como se haria? si tienes algun tutorial gracias excelente video

    • @SergioACGiraldo
      @SergioACGiraldo  9 років тому

      +Andrés Felipe Rodríguez Cuervo basicamente seria el mismo ejemplo del motor. Solo que para swichear la intensidad del bombillo debes emplear algún integrado que lo permita. Por ejemplo puede ser con un relé de estado solido o con triacs. Para emplear ese pic, simplemente cambia el encabezado del programa. #include

    • @andresfeliperodriguezcuerv7607
      @andresfeliperodriguezcuerv7607 9 років тому +1

      Si pero de la misma forma se podria variar la iluminacion de la lampara es que cuando conecto el pin de l pic a la etapa de potencia a un moc y un triac empieza a parpadear la lampara en estado alto y se baja un poco estado intermitente como hago para poder variar bien esa iluminacion y no haga lo que me sucede digamos de 0% al 25% al 50% y 100% sin que haga intermitencia y vaya subiendo bien me hago enterder gracias

  • @alexandermorales8460
    @alexandermorales8460 8 років тому

    excelentisimo profe quiero implementar un programa para un porton electrico que me baje la velocidad 2 o 3 segundos antes de llegar al final de la carrera yo lo tengo hecho en asembler pero sin el pmw lo voy hacer en c a ver como me sale

    • @SergioACGiraldo
      @SergioACGiraldo  8 років тому

      Ya lo tienes hecho en asembler??. Para hacer esto, debes tener algun modulo de potencia para el motor, Pienso yo que es un motor AC, pero es monofasico o trifasico?. Recuerda que el pic solo sirve como elemento de control, este debe mandar la señal a la etapa de potencia (Puede ser un inversor de frecuencia si el motor es trifasico) para poder regular la velocidad del motor ac.

    • @alexandermorales8460
      @alexandermorales8460 8 років тому

      si claro profe eso el pic sabe cuando esta abriendo y cuando esta cerrando, con un reley doble tiro doble polo invierto la fase y el neutro ya que es monofasico. y el trian es quien me corta la fase de entrada que es la misma que le entrego al motor, el PMW es lo que me regula la velocidad mandandole los pulsos al TRIAC mejor dicho a un (moc 3011) que es quien activa al triac, lo que no se es de cuanto debe ser la frecuencia q que tengo que generar me imagino que una maxima de 60hz y una minima de 30hz para que me reduzca la velocidad del motor.

    • @alexandermorales8460
      @alexandermorales8460 8 років тому

      si quiere le envio el programa de asembler y el plano en proteus usted me dice para que vea como trabaja.

  • @osmarluna3843
    @osmarluna3843 4 роки тому

    Como lo podre hacer en lenguaje ensamblador?

  • @alexandermorales8460
    @alexandermorales8460 8 років тому

    profe una pregunta para yo controlar un motor ac esa frecuencia debe estar entre los 60 hz ? que es la frecuencia de mi pais ?? y modifico entonces el duty

    • @matoss19962012
      @matoss19962012 8 років тому

      sólo motores de cc

    • @alexandermorales8460
      @alexandermorales8460 8 років тому

      profe disculpe mi insistencia el motor ac no se puede controlar mediante el pwm controlando la fase?

    • @SergioACGiraldo
      @SergioACGiraldo  8 років тому

      No, para motores AC, no puedes hacerlo con un PWM. Para eso vas a necesitar un circuito de potencia que controle las fases del motor ac, algo como un variador de velocidad. El PWM lo podrias usar como señal de control, pero debes mandarla a tu etapa de potencia, (Por ejemplo a alguna entrada del variador de velocidad) y de esa forma modificar la velocidad del motor.

    • @alexandermorales8460
      @alexandermorales8460 8 років тому

      saludos profe claro profe yo digo es utilizar el pwm para controlar la fase por medio de un triac que maneje la suficiente corriente que demanda el motor ac entonces si puedo profe?

    • @SergioACGiraldo
      @SergioACGiraldo  8 років тому

      Hola Alexander, si utilizas un Triac, puedes hacerlo siempre y cuando tu motor de AC sea monofasico. Si es trifasico debes regular las tres fases y ahi necesitarias otro circuito de potencia o un variador de velocidad. Pero claro, con un motor monofasico, puedes hacerlo muy parecido con el cxto que vimos en este video. Éxitos en tu proyecto.

  • @alexandermorales8460
    @alexandermorales8460 8 років тому

    profe una pregunta si yo quiero que un motor q tiene 70 segundos de recorrido cuando llegue a 65 baje la velocidad un cierto porcentaje lo puedo hacer yo lo se.
    pero el tiene una interrupcion que cuando yo presiono un boton el se devuelve yo puedo guardar ese tiempo de recorrido que llevaba en una variable y no se pierde con la interrupcion? es para qie el sepa donde estaba parado y cuando se devuelva el tambien faltando 5 segundos tiene q bajar la velocidad osea en los 2 sentidos tiene que bajarla 5 segundos antes de llegar al final de carrera

    • @SergioACGiraldo
      @SergioACGiraldo  8 років тому

      Puedes hacerlo. Para eso declaras la variable de forma Global, osea despues de las instrucciones de los encabezados como por ejemplo la variable duty que creamos en este video. Esa variable esta declarada de forma global y puede ser usada por cualquier funcion o interrupcion del programa del PIC.

    • @alexandermorales8460
      @alexandermorales8460 8 років тому

      mil gracias profe ando buscando la vuelta de como implementarlo

  • @johnrivers1846
    @johnrivers1846 6 років тому

    Como lo implementarias para 2 potenciómetros? Y otro pwm?

    • @SergioACGiraldo
      @SergioACGiraldo  6 років тому

      sería muy parecido, habilitando otra entrada analógica y activando el segundo pwm del pic (setup_ccp2(ccp_pwm);)

  • @ricardomoran9062
    @ricardomoran9062 4 роки тому

    Hola Sergio
    Quede confundido un poco espero pueda despejar mi mente
    Si rp2 es de 8 bits por que en duty_cicle le ponemos a que escriba lo que el adc lee si son 10 bits??? Por que no marca error???
    Hice varias pruebas y si le pongo que envíe una señal a 255 me da prácticamente un 1 constante
    Pero si le pongo 256 me da una función cuadrada con un ms en alto y 3 ms en bajo
    No lo logró digerir

    • @SergioACGiraldo
      @SergioACGiraldo  4 роки тому +1

      Hola Ricardo, el PWM del PIC es de 10 bits, el PR2 es de 8 bits, pero este es usado para realizar un preescaler a la frecuencia del pwm. Te recomiendo entres al sitio WEB, pues allí está todo más detallado que en el video. En esta configuración es necesario adaptar bien la resolución para que te entregue adecuadamente la señal cuando le ingresas un duty cicle al sistema: wp.me/p5P46A-9d
      Si quedas con dudas puedes escribir de nuevo. Saludos.

  • @ABCDEF-lx9zm
    @ABCDEF-lx9zm 8 років тому

    solo una duda. a lo que dice en su pagina. en el ejemplo 1 donde se realizo el calculo para generar la señal de 1 Khz, en la parte donde dice "Donde si valor vale 0, tendre un ciclo de trabajo del 0%, si valor vale 1000, tendré un ciclo de trabajo de 100%, si valor vale 500, tendré un ciclo de trabajo de 50%" , se supone que lo maximo que puedo leer es 1024 y este valor lo almacenos en duty y dicho valor se lo estamos asignando a la función set_pwm1_duty(duty);, pero entonces cuando "duty" llegue a 1000 me estara mandando un pwm con ciclo de trabajo del 100% pero si pasa de 1000?? si se supone que el pot al tope . leemos 1024. que pasa ???
    saludos ing.

    • @SergioACGiraldo
      @SergioACGiraldo  8 років тому

      Efectivamente. Para generar un PWM de 1Khz como esta en el ejemplo para alcanzar el 100% del pwm debemos asignar 1000 a duty, pues como se explica en la pagina lo maximo que podemos poner depende de la resolución. Como cuando se hace un PWM de 4Khz, que lo máximo que podriamos poner en la variable duty es de 64. Ahora bien, en el ejemplo yo asigno directamente los 1024 que se leen del potenciometro pues es muy poca la diferencia y no afecta mucho. Cuando se pasa de 1000, el sigue mandando el 100% en el PWM. Ahora si quisieramos ser más precisos, deberiamos hacer una interpolación de estos valores, para cuando el micro lea 1024 el coloque en la variable duty 1000.
      Saludos.

    • @ABCDEF-lx9zm
      @ABCDEF-lx9zm 8 років тому

      eso es lo que estaba pensando porque crei que si importaba,. antes de mandarle el duty a la funcion set_pwm1(duty);,colocar un condicional if, donde establesca si duty es mayor o igual a 1000 entonces le asigne a duty el valor 1000, y despues de se if ahora si mandarle el valor duty a la funcion set_pwm1(duty) esta bien asi cierto??? ... y gracias por contestar.

    • @SergioACGiraldo
      @SergioACGiraldo  8 років тому

      Totalmente valido. te va a funcionar sin problemas. Saludos.

    • @ABCDEF-lx9zm
      @ABCDEF-lx9zm 8 років тому +1

      muchas gracias ingeniero. Termine sus tutos. ahora a realizar proyectos propios. Le doy las gracias aprendi demaciado con sus tutoriales.

    • @SergioACGiraldo
      @SergioACGiraldo  8 років тому

      Gracias, lo importante es que te sirvieron de algo las clases. Éxitos en tus proyectos. :)

  • @luisalbertocervantesescami4786
    @luisalbertocervantesescami4786 4 роки тому

    Hola Sergio, disculpa yo intenté hacer una señal pwm de 20 kHz, y todo muy bien, pero me percato de que mucho antes de que el potenciometro gire el 100% la señal PWM se hace continua, segun mi simulación el ciclo de trabajo está al 100% cuando el potenciometro a penas ha girado el 18%, ¿sabes a qué se debe?, por cierto ya utilizé los 3 preescalers y sigue igual :(, saludos y felicitaciones por tu canal

    • @SergioACGiraldo
      @SergioACGiraldo  4 роки тому

      Nuevamente Luis, todo está en el sitio WEB: wp.me/p5P46A-9d, dale un vistazo al contenido. Se debe a la resolución, por ejemplo en el sitio web si miras el ejemplo 2, donde se hace un PWM de 4KHz, allí calculamos que como máximo podíamos enviar un duty cicle de 63.
      El duty cycle es configurado entonces por la siguiente instrucción:
      set_pwm1_duty(valor);
      Donde si valor vale 0, tendre un ciclo de trabajo del 0%, si valor vale 63, tendré un ciclo de trabajo de 100%, si valor vale 32, tendré un ciclo de trabajo de 50%

  • @andreeyehamir3613
    @andreeyehamir3613 6 років тому +1

    Ing. Consulta:
    Si en una parte del programa le cargo un valor fijo (60%) al ccp1, este valor ya no será modificado en el resto del programa, y deseo cargarles valores variables al ccp2 en mi bucle principal, tendré la salida fija (ccp1) y la dinámica (ccp2) funcionando a la vez? O solo puedo usar un pwm a la vez?
    Saludos.

    • @SergioACGiraldo
      @SergioACGiraldo  6 років тому

      Hola Andree. Sin problemas, cada CCP funciona de forma independiente y los puedes usar al mismo tiempo.

  • @pedrosilvestre9556
    @pedrosilvestre9556 9 років тому +1

    excelente aportación

  • @jhonsebastianboterolemos3046
    @jhonsebastianboterolemos3046 6 років тому +2

    TE HAS GANADO TU LIKE Y SUPSCRIPCION

  • @calimanska
    @calimanska 7 років тому

    Hola excelente aportación, apenas estoy experimentando con el pic, ¿como podría poner un botón e paro e inicio?
    Saludos y muchas gracias por el aporte, Aprendo mucho de ellos.

    • @SergioACGiraldo
      @SergioACGiraldo  7 років тому

      Hola Adrian, utiliza lo visto en la entrada de antirebote, de la pagina, y para parar colocas la salida del pwm en cero y para iniciar vuelves y colocas la salida del pwm en el valor que estaba. Debes hacerlo con sentencias IF - ELSE. Saludos.

  • @ANTONIOSTAR
    @ANTONIOSTAR 6 років тому

    Bueno professor, poderia adicionar um botão para inverter sentido do motor?

    • @SergioACGiraldo
      @SergioACGiraldo  6 років тому +1

      Olá Antonio. Para inverter o motor será necessario vc colocar no circuito uma ponte H. Um exemplo dessa ponte é a vista no video de motor passo a passo. Talvez vc possa ter uma ideia assistindo aquele video. Grande abs.
      controlautomaticoeducacion.com/microcontroladores-pic/motor-paso-a-paso/

    • @ANTONIOSTAR
      @ANTONIOSTAR 6 років тому

      GRACIAS PROFESSOR

  • @sergioangellopezarteaga2008
    @sergioangellopezarteaga2008 5 років тому +1

    un módulo llamadulo jajaja, a alguien más le dio risa? buen video por cierto

  • @ezequieldiaz1102
    @ezequieldiaz1102 7 років тому

    excelente video

  • @rolandoaguilera3114
    @rolandoaguilera3114 7 років тому

    Porque el cristal de cuarzo es elegido como 4MHZ?

    • @SergioACGiraldo
      @SergioACGiraldo  7 років тому +1

      Puedes escoger el que desees, no necesariamente debe ser el de 4000MHZ, yo escogí ese fue porque es el que más uso. El cristal es solo un oscilador que le proporciona una señal de reloj estable al pic, puedes ponerle uno mayor si quieres para obtener mayor velocidad, uno de 20000MHZ por ejemplo, pero debes cambiar en el #FUSES en lugar de colocar XT debes colocar HS y obviamente hacer todos los cálculos con dicho cristal para el pwm.

    • @rolandoaguilera3114
      @rolandoaguilera3114 7 років тому +1

      Cuales son las implicaciones de usar un cristal de cuarzo mayor o menor? Alguna ventaja o desventaja? Muchas Gracias! Excelente Aporte!

  • @melaniebonifaz2507
    @melaniebonifaz2507 7 років тому

    Disculpa con tu codigo me dice q el device esta mal y que me me falta declararle bien. Tu codigo esta copiado y pegado para comprobar pero me pasa eso. Como puedo areglarlo por favor ?

    • @SergioACGiraldo
      @SergioACGiraldo  7 років тому

      mmm no se, será la versión del PIC C talvez? Que error te aparece en el Device?

    • @melaniebonifaz2507
      @melaniebonifaz2507 7 років тому

      que el device le falta () pro le pongo y despues me da error que me faltad declarar. Pero le borre y me corrio. Estoy adapatando a un l293D pro en una parte disminuye en otra aumenta y en otra vuelva a disminuir no esta controlando bien.

    • @SergioACGiraldo
      @SergioACGiraldo  7 років тому +1

      Ok, que bueno que te simuló. Tu problema talvez sea la frecuencia del pwm que quieras implementar, pues de esto va a depender la carga del Timer2. Mi recomendación es que ingreses al blog, pues allí esta un poco más explicado que en el video, porque hay cosas que fui adicionando después de haber grabado el video. Te dejo el link:
      controlautomaticoeducacion.com/15-pwm-ancho-por-modulacion-de-pulso/
      Éxitos en tu proyecto. Saludos.

    • @melaniebonifaz2507
      @melaniebonifaz2507 7 років тому

      Ahi mismo estoy pero no se si me puedes ayudar por fa. Mira estoy con un oscilador de 8MHz y quiero q vaya de 0 a 1023. Le hice tus calculos pero nada no se si me puedes ayudar .

    • @leosoto9120
      @leosoto9120 6 років тому

      Melanie Bonifaz ¿lograste resolver el problema del device ya q me pasa lo mismo q a ti ?

  • @josedavidrodriguezvaldes9185
    @josedavidrodriguezvaldes9185 5 років тому

    Más videos así por favor

  • @soleydadesousa87
    @soleydadesousa87 5 років тому

    hola puedo usar ese codigo con el pic18f4550

    • @SergioACGiraldo
      @SergioACGiraldo  5 років тому

      Claro que se puede, es solo cambiar en el encabezado la libreria del PIC

  • @lucaspajarocauzzi
    @lucaspajarocauzzi 5 років тому

    Hola! Que PIC podría usar para generar 4 salidas PWM??? Muchas gracias!

    • @SergioACGiraldo
      @SergioACGiraldo  5 років тому +1

      Lucas puedes buscar en el selector de Microchip, alli puedes encontrar el pic que más te convenga, por ejemplo buscar cuales tienen más pwm, puertos usb, ethernet, etc. DEBBES DEZPLAZARTE HACIA LA DERECHA, la pagina es muy ancha, al final a la derecha estan los modulos PWM. El link es: www.microchip.com/paramchartsearch/chart.aspx?branchID=1005

    • @lucaspajarocauzzi
      @lucaspajarocauzzi 5 років тому

      Gracias pude entrar! Quiero hacer un controlador para un motor con 4 fases que estoy diseñando.! Tenes algún otro sitio donde pueda sacar más información? Muchas gracias por tu respuesta! 😊

  • @antonioblanco3086
    @antonioblanco3086 8 років тому

    Hola Sergio como te va? he copiado tu código para usarlo con un pic 16f877A y solo con cambiar el encabezado por #include me genera el siguiente error :" Unknown keyword in #FUSES "INTRC_IO"" . he quitado el intrc_io y compila perfecto pero al momento de simular en proteus el programa se queda muerto no hace absolutamente nada. He colocado el codigo tal cual como tu lo tienes y en proteus lo he simulado con el 16f887 y efectivamente si funciona. que puedo hacer?

    • @SergioACGiraldo
      @SergioACGiraldo  8 років тому

      Antonio, lo acabé de probar y funciona bien con el 16f877A eliminando el fuse intrc_IO tal y como lo indicas. Seguramente no has colocado el MCLR (master clear) a positivo, osea debes colocar el PIN 1 a positivo (+5v) para que el programa se ejecute, si este pin esta desconectado, no te va a funcionar.

    • @antonioblanco3086
      @antonioblanco3086 8 років тому

      Amigo te agradezco muchísimo que respondieras a la brevedad. Resulta que apague el equipo y al rato cuando lo prendí probé de nuevo y funcionó perfecto, quizás fue algún error del programa que al reiniciar se quitó o quien sabe. El asunto es que (no sé por qué) el programa funciona sin conectar el pin 1 a vcc, al menos en el 16f877A. En fin muchas gracias por el vídeo vi tu canal y explicas fino, gracias!

    • @oscarcasarroja1318
      @oscarcasarroja1318 8 років тому

      Antonio Blanco lo que pasa es que el 16F877A no tiene oscilador interno, por eso te tira error, si no conectas el MCLR, es probable que no funcione bien tu micro, el MCLR debe ir a VCC con una resistencia de 10k en serie, o inhabilitar el MCLR por software

    • @antonioblanco3086
      @antonioblanco3086 8 років тому

      Oscar Casarroja Gracias por el consejo! lo tendré en cuenta

    • @franciscojavier663
      @franciscojavier663 6 років тому

      +Antonio Blanco serías tan amable de compartirme tu codigo, igualmente trato de hacer el mismo ejercicio pero con un P16f877a.
      mi correo es pachoaj@hotmail.com porfa, te lo agradecería mucho!

  • @elementalwattson
    @elementalwattson 5 років тому +1

    2:29
    width = Ancho (Band widht = Ancho de banda)
    with = con (I'm with her = Estoy con ella)

    • @SergioACGiraldo
      @SergioACGiraldo  5 років тому

      Thank you very much for your observation. You are right!!

  • @elementalwattson
    @elementalwattson 4 роки тому

    Lo hice pero no anda.. la unica diferencia es que pongo unsigned int16... que supuestamente seria lo mismo y no funciona, se apaga cada tanto el led y se prende al variar los valores. Hace intermitencias nada mas. Tambien uso la funcion map para convertir los valores recibidos de 0-512 a 0-1000.

    • @SergioACGiraldo
      @SergioACGiraldo  4 роки тому +1

      Copiaste el código del sitio Web? Link en la descripción del video. Y configuraste el PWM a 1KHz. Si pones una frecuencia mayor debes disminuir la resolución en el duty cicle, por ejemplo si el PWM es 4KHz el duty va de 0 - 63 únicamente. Todo está detallado en el sitio web.

    • @elementalwattson
      @elementalwattson 4 роки тому

      @@SergioACGiraldo Ya está! No había visto la fórmula para determinar VMax. Solucionado!! Mil gracias por este excelente y completo curso. Sos el único que lo ha dado al 100% duty cycle :D

  • @juanjoseromero287
    @juanjoseromero287 3 роки тому

    Quita la música, desconcentra

  • @Gratiman
    @Gratiman 6 років тому +1

    Es modulación por ancho de pulso no ancho por modulación de pulso, por lo demás excelente video.

  • @wilsonfabiandiazmartinez1968
    @wilsonfabiandiazmartinez1968 6 років тому

    Amigo no declaraste los puertos

    • @SergioACGiraldo
      @SergioACGiraldo  6 років тому

      Si, es verdad. En este código no use ninguna instrucción que llamara los puertos B,C,D. El modo analogo lo active con Setup_adc_ports( ALL_ANALOG );

    • @edgarpintor9168
      @edgarpintor9168 3 роки тому

      @@SergioACGiraldo si sólo quieres activar el puerto a como análogo?

  • @jhovanidiaz7620
    @jhovanidiaz7620 4 роки тому

    buenas tardes, disculpe como seria el codigo si quiero una frecuancia de 500 Hz ya que con un prescaler de 4 y un postcaler de 1 me sale una carga del timer2 de 499. Sin embargo intente una con un prescaler de 16 y postacler de 1 obtengo una carga del timer2 de 124 pero ninguno de esos valores me sale la frecuncia de 500 Hz.

    • @SergioACGiraldo
      @SergioACGiraldo  4 роки тому

      Hola Jhovani, y que frecuencia te está saliendo. Efectivamente con el prescaler de 16 debes llegar a una carga del timer2 a 124, configurándolo asi:
      setup_timer_2(T2_DIV_BY_16,124,1);
      Y tu máximo Duty Cicle será de 498, de ahí para arriba siempre se mantendrá en 1 el PWM, ese seria tu valor máximo a configurar en el PWM. O sea para conseguir una frecuencia a la mitad, 50%, tu duty cicle debe ser de 249

    • @jhovanidiaz7620
      @jhovanidiaz7620 4 роки тому

      @@SergioACGiraldo muchas gracias profe de echo ya la obtuve, pero tambien requiero ahora una de 50Hz y 100Hz pero osea tengo que colcar una crystal de 1 MHz externo pero como quedaria el codigo?

    • @SergioACGiraldo
      @SergioACGiraldo  4 роки тому

      Debes usar el Oscilador interno, igual que lo hicimos en el ejemplo del servomotor, donde configuramos el PWM a 50Hz. Dale un vistazo. controlautomaticoeducacion.com/microcontroladores-pic/servomotor-con-pic/

    • @jhovanidiaz7620
      @jhovanidiaz7620 4 роки тому

      @@SergioACGiraldo va que va muchas gracias ya me estaba reventando la cabeza :(
      Una última duda profe estuve variando el postcaler pero no entendí su función, no veía cambios en las ondas cuadradas, y que valores puede tomar esté?

    • @SergioACGiraldo
      @SergioACGiraldo  4 роки тому

      El Postcaler es un número de 1-16 que dice cuántas veces el Timer2 tiene que desbordarse para llamar a la interrupción (1 es una vez, 2es 2 veces, y así sucesivamente).