Si deseas comprar algún curso, revisa el link: patreon.com/jesuscorreaperu Si deseas asesorias o adquirir un programa de algún vídeo, escribe a: jesus_cor2630@hotmail.com / jcorreaay@unitru.edu.pe
wow, pedazo de video maestro. usó conceptos de electronica, programación,control clasico y señales y sistemas,10/10 solo falto usar un método de control para hallar Kp Ki Kd
Excelente contenido !! solo faltó ver como responde el sistema frente a perturbaciones en el eje pero debido a la reducción sospecho que es bastante inmune
olá. gostei do modo explicado e da implementação passo-a-passo do projeto. Por favor siga fazendo vídeos nesse formato, acredito que muitas pessoas vão se beneficiar deles. Abraços desde Brasil !
Muy buen video, me ayudó bastante. Muchas gracias. PD. ¿Podrías compartir la bibliografía utilizada para explicar la ecuación de diferencias del PID discreto, por favor?
Fantástico video y fantástica explicación. Un suscriptor más. Sólo me falta entender las matemáticas que se usan (problema mío) por lo demás perfecto. Una cuestión: cómo sería aplicado a un movimiento lineal, es decir usar el encoder para que vaya a una posición definida? muchas gracias
Hola, Me gastaría decirte que has explicado a las mil maravillas el video y el código, ante todo gracias por ello. Una pregunta, quiero el código para un torno poder añadirle un setpoint y cuando empiece a tornear al bajar la velocidad las rpm se corrijan solas dándole mas potencia de salida al motor. Esto también lo controlaría verdad??, que parámetro es el que regula eso? el error? Un saludo desde España.
Jesus, que tal, he visto varios de tus videos utilizando Arduino para controlar motores, y quisiera sugerirte probar la placa STM32F407, ya que al igual que Arduino cuenta con una librería llamada Wajiung capaz de comunicar la placa con SimuLink, y aunque es parecido tiene características más completas que puedes encontrar interesantes.
Buen video, pero tengo un problemita e realizado todos lo pasos correspondientes en tu video y me sale un error LCD.h: No such file or directory ; tengo todas las librerias para display y no se por que me sale ese error :(
hola, muy buen video, pero yo tengo una pregunta ¿Cómo modelaste matemáticamente el motor para obtener la ecuación de primer orden y las constantes Kp Ki y Kd necesarias para sintonizar e l controlador PID?
Excelente video. Yo tengo una pregunta, yo realicé el control, sintonizando el PID con ubicación de polos, pero tengo un problema que creo que es el comportamiento normal... Lo que me pasa es que tengo un motor DC con encoder de 620 RPM y el motor rompe la inercia y empieza a girar en aproximadamente 70 rpm. El problema consiste en que cuando pongo la referencia muy cerca de los 70 rpm la señal de control aumenta demasiado (pienso yo que es porque el motor aun no rompe la inercia y se manda más señal para compensar que el motor aun no empieza a girar), ocasionando que cuando el motor se empieza a mover se provoquen unos sobrepicos demasiado elevados antes de estabilizarse. Según yo, pienso que es porque el motor aun no rompe la inercia. Pero quisiera preguntarse si por eso mismo podria ser, y así también cómo se podría arreglar eso?
Fantastico video!!! es lo que estaba buscando, aunque seguro voy a necesitar ayuda....yo necesito mover 4 o 6 motores con sus encoders de forma que hagan un movimiento a modo de onda o s colocada en horizontal, cuantos motores de este tipo puedo mover con un arduino? creo que solo 2.....hay alguna shield que permita conectar varios motores de este tipo a un arduino??? gracias...
Excelente video, sin embargo quisiera hacer una consulta: ¿No deberían hacerse las actualizaciones de cv y error luego de transferir la acción de la señal del control al actuador(pwm)? Por que de otro modo siempre serian iguales cv y c1, así como también error, error1 y error2
Hola, es buena tu observacion, sin embargo el bucle siempre define las asignaciones, recuerda que el bucle es ciclico, por lo que una vez leida una linea, no podrá leerla hasta el siguiente ciclo, por eso cv, cv1, error, error1, error2 no son iguales.
el tiempo de muestreo se basa en la misma funcion de transferencia en estado lineal y debes calcularlos en base a al polo que se mueve mas rapido dentro de la funcion. en el ejemplo del video fue solo un valor magico a modo de ejemplo. pero debes de generar una funcion que te calcule el tiempo que tarda en ejecutarce el loop o programa en si y en base ha eso obligar al programa a tomar mediciones y dar respuesta en ese tiempo multiplicado por un valor x que te de la frecuencia de muestreo. en el video el numero magico fue de 0.1 s equivale a una frecuencia de muestreo de 10hz que no es la mas real ya que seria muy lento el controlador. exelente video y explicacion mis felicitaciones.🙃🙂 The sampling time is based on the same transfer function in a linear state and you must calculate them based on the fastest moving pole within the function. in the example of the video it was only a magic value as an example. but you must generate a function that calculates the time it takes to execute the loop or program itself and based on that, force the program to take measurements and give an answer in that time multiplied by a value x that gives you the sampling frequency . In the video, the magic number was 0.1 s, equivalent to a sampling frequency of 10hz, which is not the most realistic since the controller would be very slow. excellent video and explanation my congratulations.
hola requeiro que utilizando el encoder el motor tenga la opcion de girar unicamente el numero de vueltas que le sea asigando me puedes apoyar con esto?
Hola, estoy intentando realizar el codigo utilizando un Arduino Uno, pero no me permite utilizar los 115200 Bauds, por lo que no hace una lectura correcta del encoder. Tendria que cambiar de placa o que opciones tengo para solucionar el problema?
Hola que tal, tengo una pregunta con respecto a la conexión de su encoder, el pin 3 del encoder a que va conectado o simplemente no tiene en donde conectarse, si alguien pudiera contestarme y darme una respuesta clara se lo agradecería, gracias.
Float es un tipo de datos de punto flotante en el que se pueden almacenar 32 bits (4 bytes) en la memoria. Asegúrese de que sea un número tan grande como 3.4028235+38 o tan pequeño como -3.4028235+38, para evitar la saturación por la variación de la memoria "cv" durante un largo período de tiempo, lo que seguramente ocurrirá si el error persiste, elija poner limita, o se detiene en él; y así evitar su saturación, que en ocasiones puede encontrar el programa en ejecución. Espero haber sido claro en tu duda.
Se toma en cuenta la variable que quieras controlar, por lo que se tiene que escalar correctamente como se observa en el video. En el caso del video se controla las RPM por tanto el Set Point tambiem tendria que seleccionar las RPM.
La ecuación tiene un problema, si el error es cero, cv1 siempre va a quedar con un valor y se va a quedar ahí pegado dando siempre el último valor de cv1.
No me parece un buen video porque no compartes el codigo y dificultas ademas leer el codigo en pantalla al hacerlo con el minimo de tamaño en el IDE de arduino y ademas solo usas la mitad de la pantalla, osea adrede obviamente lo haces para que tampoco se pueda copiar a mano. Es de mal gusto hacer una exposicion de esa importancia tecnica y no compartir el codigo, entiendo que quieras vender la informacion, tus cursos etc, pero no me parece etico ni correcto, ni profesional que expongas un video a medias, muchos estudiantes o personas que ven este tipo de videos no tienen los recursos para pagar por tu asesoria y los dejas por afuera con esa actitud poco solidaria, mano abajo con tu video.
La burla es el recurso del ignorante, eso no se lo cree nadie, no le causa gracia mi comentario negativo, es simplemente una respuesta mediocre , vacia, un slogan que sirve para toda ocacion, para no quedarse sin decir nada. Si le molesta la critica fundamentada en hechos tal como la que le hice siempre puede refutar mi comentario o tambien puede desactivar los comentarios como hacen muchos.@@jesuscorreaPLC
@@robertooliver6970 El ignorante es quien se queja porque no puede hacer lo que otros si pueden y porque vive amargado de no poder conseguir algo por ociosidad, por querer todo fácil. Y me sigo riendo de usted por ser tan mediocre y no necesito ocultar nada, que vea todo el mundo su mediocridad. Jaja
Buenas noches. ¿Podría hacerme una pregunta sobre esta codificación de Arduino? En el control PID intervienen 3 variables, a saber: SV, PV y MV (variable manipulada, la que resulta en la activación del lazo). En cuanto a SV y PV, fueron muy bien explicados por usted. Queda, para mí, el valor del MV. ¿Se almacenaría el valor en la variable "cv"? Si me pueden responder, gracias por su atención. Gilberto. (Espero que la traducción sea correcta). ------------------------------------------------------------------------------------------------------------------------ Boa noite. Você poderia me tirar uma dúvida com relação a essa codificação Arduíno? No controle PID estão envolvidas 3 variáveis, a saber: SV, PV e MV (variável manipulada, aquela que resulta no acionamento do loop). Quanto a SV e PV foram muito bem explicados por você. Resta, para mim, o valor da MV. Seria o valor armazenado na variável “cv”? Se puder me responder, agradeço a atenção. Gilberto. (Espero que a tradução esteja correta).