PID Control + Encoder incremental + Arduino ESP [ESPAÑOL]

Поделиться
HTML-код
  • Опубликовано: 16 сен 2024
  • #PID #encoder #arduino
    Realicé este tutorial para completar el aspecto teórico y práctico de mi otro vídeo, en el cual muestro cómo controlar posición utilizando un potenciómetro como sensor de posición para un motor DC.
    Muestro detalladamente como realizar el control PID de un motor DC utilizando un encoder incremental de dos canales, controlando el motor con un ESP8266, programado en el IDE del Arduino.
    Para obtener la planta se utilizó python y Matlab. El primero para obtener los datos y almacenarlos en un archivo csv y el segundo para procesar los datos y obtener la planta del motor.
    Con la planta obtenida ya seremos capaces de simular el control del motor en el simulink utilizando un controlador PID.
    Tiempos
    00:00:46 Por qué usar PID
    00:01:07 Teoría PID
    00:02:56 Programación del ESP8266
    00:03:22 Programación del encoder
    00:03:48 Secuencia del encoder
    00:04:46 Inconvenientes con el encoder incremental
    00:05:26 Pruebas del PID con el motor DC
    00:06:22 Recolección de datos I/O para obtener la planta
    00:06:37 IDENT de matlab
    00:07:18 Conclusión
    Código del vídeo
    github.com/Dav...
    Teoría PID. [Brian Douglas]
    / @brianbdouglas
    • PID Control - A brief ...
    Encoder Incremental [learnchannel]
    / @learnchannel-tv

Комментарии • 30

  • @DavidCastilloAlvarado
    @DavidCastilloAlvarado  5 лет назад +4

    Tiempos para cada tema.
    ## Tiempos
    00:46 Por qué usar PID
    1:07 Teoría PID
    2:56 Programación del ESP8266
    3:22 Programación del encoder
    3:48 Secuencia del encoder
    4:46 Inconvenientes con el encoder incremental
    5:26 Pruebas del PID con el motor DC
    6:22 Recolección de datos I/O para obtener la planta
    6:37 IDENT de matlab
    7:18 Conclusión

    • @sergiocantugutierrez1641
      @sergiocantugutierrez1641 4 года назад +1

      más si (hormiga == 2 && acto == 0 ) contador ++; TIENE UN ERROR CUAL ES LA LIBRERIA ES QUE NO LE HAYO SOLO ME MARCA ESTE Y CUALES SON LAS LIBRERIAS QUE USASTES PARA DESCARGARLOS PORQUE ESTAN INCOMPLETOS

  • @cap2182
    @cap2182 Год назад

    Hola,una pregunta si quiero hacer un control de posición, debo hallar la F.T de la planta con PWM como entrada y velocidad(rpm) como salida?

  • @dinamohero3368
    @dinamohero3368 Год назад

    Hola que tal David, buen video explicando, tengo una duda en como conectas el Arduino, L298N y el motor, si puedes podrías proporcionarme el diagrama de conexión por favor, te lo agradecería

  • @adrianrevolotaipe3855
    @adrianrevolotaipe3855 3 года назад

    bro tu eres de la UNI¡¡¡¡¡

  • @josei7108
    @josei7108 4 года назад +1

    amigo para sacar la func de transf en matlan ingresas dos variables in y out cual es cada una de ellas??

    • @DavidCastilloAlvarado
      @DavidCastilloAlvarado  4 года назад

      Hola Jose, las variables que se ingresan son los valores de entrada y salida del sistema. Cómo este es un ESP8266, entonces su PWM puede ir de 0 a 1024, esa sería nuestra entrada, ya que es la fuente de acción del sistema. Como salida tenemos a la cantidad de pulsos que ha dado el encoder en un tiempo determinado. Todos estos datos son recolectados en el tiempo con dT=3mSeg, con todos estos datos ya podemos estimar una planta aproximada haciendo uso del Ident de Matlab. Revisa el código github.com/DavidCastilloAlvarado/PID_encoder_incremental_arduino/blob/master/IDENT_for_Mtlab/ESP8266_sendData/ESP8266_sendData.ino

  • @gastonomarechevarria7533
    @gastonomarechevarria7533 4 года назад

    Muy bueno david su trabajo. Consulta se puede usar el l293d para conseguir el mismo resultado ?

    • @DavidCastilloAlvarado
      @DavidCastilloAlvarado  4 года назад

      Hola Gaston, gracias por el interés en el proyecto. Claro, con el l293d también se podría obtener el mismo resultado, solo es cuestión de vigilar la relación lineal entre los PWM que envía el arduino, con el voltaje de salida del l293d ya que suele ser un problema.

    • @gastonomarechevarria7533
      @gastonomarechevarria7533 4 года назад

      @@DavidCastilloAlvarado muchas gracias. Me suscribire a tu canal para seguirte. Abrazo

  • @luisfernandotorresrodrigue864
    @luisfernandotorresrodrigue864 5 лет назад

    Excelente trabajo!!!
    me ayudó mucho, solo me queda una duda sobre cuales son las conexiones?

    • @DavidCastilloAlvarado
      @DavidCastilloAlvarado  5 лет назад

      Hola Luis, disculpa la tardanza jeje. La conexión está explicada dentro del código arduino, pero como ayuda ahora lo he colocado dentro del repositorio de github. github.com/DavidCastilloAlvarado/PID_encoder_incremental_arduino

  • @harrisonmendoza3099
    @harrisonmendoza3099 3 года назад

    Buenas tardes, recomienda realizar un control por posición con un motor DC o con un motor de paso?

    • @DavidCastilloAlvarado
      @DavidCastilloAlvarado  3 года назад

      Depende de tu equipamiento, hacer un control de posición con un motor de pasos es mucho más barato incluso lo puedes hacer en lazo abierto. Sin embargo un control de posición con motor DC requiere de mucha más técnica y con el equipamiento adecuado, encoder con la resolución necesaria, reductores de velocidad y pueden ser Miles de veces más confiables y precisos que un motor a pasos, pero mucho más caro.

    • @harrisonmendoza3099
      @harrisonmendoza3099 3 года назад

      @@DavidCastilloAlvarado siiii David pero para mí caso necesito dejar el control en lazo cerrado para garantizar que si se de la posición deseada, y pues para un motor de pasos es difícil conseguir un encoder

  • @hernanleguizamonherrera118
    @hernanleguizamonherrera118 4 года назад

    buenas noches, que programa se utilza para el codigo?

  • @diegogamboa3079
    @diegogamboa3079 4 года назад

    Buenas
    Necesito una asesoría para conectar bajar pulsos a un encoder incremental de 4 canales

  • @cyberpunkmoa9994
    @cyberpunkmoa9994 5 лет назад +1

    el codigo que pones va en mathlab o arduino tengo esa duda

    • @DavidCastilloAlvarado
      @DavidCastilloAlvarado  5 лет назад

      Hola r, hay tres lenguajes de programación en este proyecto, los puedes identificar por la extensión. Los arduino son ***.ino, los matlab son ***.m y el de python es ***.py. Pasos en el vídeo. El matlab es una simulación independiente utilizando el workspace y el simulink.

  • @josuemedinaacevedo4794
    @josuemedinaacevedo4794 3 года назад

    Hola! tienes el .ZIP del ticker.h para descargarlo e incluirlo en las librerias de arduino?

    • @DavidCastilloAlvarado
      @DavidCastilloAlvarado  3 года назад

      Hola Josué, ya no lo tengo pero es una librería muy común, la podrás encontrar con facilidad.

  • @rokushoful
    @rokushoful 4 года назад +1

    donde puedo conseguir la libreria de PID_v1.h

  • @davidrodrigueznavarro1592
    @davidrodrigueznavarro1592 4 года назад

    Puedo trabajar este control con pura simulación?

    • @DavidCastilloAlvarado
      @DavidCastilloAlvarado  4 года назад

      Hola David, claro, tu puedes utilizar la simulación que tambien está en el repositorio, actualmente está en matlab con simulink. Link en la descripción.

  • @toluco211
    @toluco211 3 года назад

    El archivo de simulacion de matlab ya no esta en el github :c

  • @guidoraulvillarcarpio3679
    @guidoraulvillarcarpio3679 4 года назад

    Chch la UNI. M6?

  • @gustavoorellana9657
    @gustavoorellana9657 4 года назад

    si lo pones un potenciometro para controlar el pwm como se aria

    • @DavidCastilloAlvarado
      @DavidCastilloAlvarado  4 года назад

      Hola Gustavo, no entiendo cual es tu modelo a controlar, pero primero define aquello, estrada y salida, con ello podrás lograrlo.

    • @gustavoorellana9657
      @gustavoorellana9657 4 года назад

      @@DavidCastilloAlvarado disculpe lo que tengo que aser es controlar el motor en coder con pid usando un potenciometro para regular el pwm

    • @DavidCastilloAlvarado
      @DavidCastilloAlvarado  4 года назад +1

      @@gustavoorellana9657 Lo que entiendo es que quieres controlar la velocidad de giro del rotor, el PWM mediante una regla de tres simples se aproxima a la velocidad de giro del rotor. Tu modelo tendría de entrada el setpoint que es tu velocidad de giro deseada tu salida o variable a controlar sería la velocidad angular de giro del rotor y tu señal de control (u) sería el PWM que se aplica al driver que controla el motor. Aquí podrías controlar el giro del rotor(~PWM) con un potenciómetro para establecer el SETPOINT. Suerte, exitos=D