You are on page 1of 19

6/4/2014 Arduino + Matlab/Simulink: controlador PID

We choose the Moon


Ingeniería aplicada incluso a cosas a las que
probablemente no debería aplicarse.
Acerca de
Bio
El equipo

“Engineers like to solve problems. If there are no


problems handily available, they will create their
own problems.”
~ Scott Adams

Arduino + Matlab/Simulink: controlador PID


Jorge García Tíscar
Jueves, 21 de julio de 2011

Nuestro principal proyecto con Arduino! En este caso, empleando el sistema de comunicación serie, vamos a
programar un controlador PID (un controlador que actúa proporcionalmente al valor del error, al de su
derivada, y al de su integral) en Simulink, el programa de dibujar esquemas más caro de la historia. El
objetivo es controlar la posición de un sistema muy simple (podría ser llamado “helicóptero de un grado de
libertad” por alguien extremadamente idealista y “balancín a hélice” por alguien que lo fuera menos) y
gradualmente ir complicado el sistema.

http://wechoosethemoon.es/2011/07/21/arduino-matlab-simulink-controlador-pid/ 1/19
6/4/2014 Arduino + Matlab/Simulink: controlador PID

Como se observa, se trata de un brazo articulado con un motor en un extremo, unido a una hélice que
proporciona más o menos sustentación en función del voltaje suministrado al motor. En la articulación del eje
hay un potenciómetro solidario a él, que devuelve un voltaje entre 0V y 5V, en función del ángulo . El
esquema del sistema de control es el siguiente:

De esta manera tenemos definida la variable de salida (posición del eje: voltaje transmitido por el
potenciómetro) y la variable de control (sustentación de la hélice: voltaje proporcionado al motor). Nos
falta pues un bucle de control (que programaremos en Simulink), una variable de entrada y una interfaz
física.

Interfaz física: Arduino + circuito de potencia PWM

Tal y como se explica en una entrada anterior, el Arduino


es incapaz por sí mismo de aportar el amperaje que necesita el motor, por lo que emplearemos un circuito de

http://wechoosethemoon.es/2011/07/21/arduino-matlab-simulink-controlador-pid/ 2/19
6/4/2014 Arduino + Matlab/Simulink: controlador PID

potencia consistente en un transistor MOSFET.

El microcontrolador enviará a la puerta del transistor una señal PWM, y por tanto esta misma señal PWM
pero de potencia será la que reciba el motor. La representación de este montaje será la siguente:

Esta es toda la parte física del problema: la planta que vamos a controlar, la variable de salida (ángulo del
eje), la variable de control (potencia al motor) y el montaje que hemos realizado con el Arduino. A
continuación la parte de código, tanto de Arduino como de Simulink/Matlab.

Arduino: lectura y escritura de variables físicas


En primer lugar, el código del Arduino debe ser capaz de (1) leer del potenciómetro, (2) enviarlo
como dato a través del puerto serie, (3) recibir el dato de potencia necesaria al motor y (4) escribir dicho
dato en la salida analógica como señal PWM. Hay que tener en cuenta que el conversor devuelve un valor
entre 0 y 1024, que mapeamos a 0 y 255 para poder enviarlo como un solo bit unsigned.

1 int out = 0;
2 byte in = 0;
3 byte pinOut = 10;
4
5 void setup() {
6 // inicializar puerto serie
7 Serial.begin(9600);
8 // preparar output
9 pinMode(pinOut, OUTPUT);
10 }
11
12 void loop() {
13 // leer del pin A0 como
14 out = analogRead(A0);
15 // escalar para obtener formato uint8
16 out = map(out, 0, 1023, 0, 255);
17 // enviar en base 10 en ASCII
18 Serial.write(out);
19 // leer del serie si hay datos
20 if(Serial.available()){
21 in = Serial.read();
22 // escribir en el pin 10
23 analogWrite(pinOut, in);
24 }
http://wechoosethemoon.es/2011/07/21/arduino-matlab-simulink-controlador-pid/ 3/19
6/4/2014 Arduino + Matlab/Simulink: controlador PID

25 // esperar para estabilizar el conversor


26 delay(20);
27 }

Simulink: referencia y bucle de control


Por otra parte, nuestro programa de Simulink debe recibir este dato de a través del puerto serie,
compararlo con una referencia que controlaremos nosotros con un slider en la propia interfaz gráfica de
Simulink, y, mediante un controlador PID, determinar la señal de control (potencia al motor) necesaria.
Después debe enviarla a través del puerto serie en formato uint8, unsigned integer de 8 bits, que toma
valores entre 0 y 255, ideales para la función analogWrite() de Arduino (click para ampliar):

Dentro del
bloque PID, se pueden editar los parámetros P, I y D, siendo los últimos que hemos empleado P = 0.26 , I =
0.9, D = 0.04 y una discretización de 10 ms. Otro dato a tener en cuenta es que la transmisión serie se hace
en formato uint8, pero las operaciones se hacen en formato double, de ahí los conversores. Las ganancias
son de valor 5/1024 para pasar la señal a voltios reales.

A continuación, un vídeo de todo el sistema en funcionamiento (esta es una de las primeras pruebas, con
otros parámetros del PID sin optimizar todavía):

Se puede observar cómo mediante el slider ajustamos la referencia (señal lila). El sistema, ajustando la señal
de potencia entregada al motor (señal azul) va ajustando el ángulo del eje hasta conseguir que el voltaje del
potenciómetro (señal amarilla) coincida con la referencia que le hemos indicado. Incluso, a pesar de
http://wechoosethemoon.es/2011/07/21/arduino-matlab-simulink-controlador-pid/ 4/19
6/4/2014 Arduino + Matlab/Simulink: controlador PID

estar en una primera fase de pruebas, se observa que es capaz de resistir a Salva perturbaciones.

Matlab: postproceso de los datos recogidos


Si nos fijamos en el programa de Simulink anterior, se puede observar que no sólo se presentan en el visor
las tres señales, sino que además se guardan en el espacio de trabajo de Matlab. Esto nos permite, a
posteriori, procesar los resultados del proceso de control como queramos: identificación de sistemas,
exportación a Excel… en este caso, nos contentamos con emplear la genial función externa savefigure() para
obtener un gráfico vectorial PDF:

1 %% Preparar la figura
2 f = figure('Name','Captura');
3 axis([0 length(ref_out) 0 5.1])
4 grid on
5 xlabel('Medida (-)')
6 ylabel('Voltaje (V)')
7 title('Captura de voltaje en tiempo real con Arduino')
8 hold all
9
10 %% Tratamiento
11 pos_out = pos_out(:);
12 pid_out = pid_out(:);
13 x = linspace(0,length(ref_out),length(ref_out));
14
15 %% Limpiar figura y dibujar
16 cla
17 plot(x,pid_out,'Color',[0.6,0.6,0.6],'LineWidth',2)
18 plot(x,ref_out,x,pos_out,'LineWidth',2)
19 legend('Control','Referencia','Posición','Location','Best');
20
21 %% Salvar el gráfico
22 savefigure('resultado','s',[4.5 3],'po','-dpdf')

Ejecutando este código tras haber realizado una prueba del sistema, hemos obtenido el siguiente gráfico, que
a pesar de ser originalmente un gráfico vectorial PDF, hemos rasterizado como PNG para poder
representarlo aquí:

http://wechoosethemoon.es/2011/07/21/arduino-matlab-simulink-controlador-pid/ 5/19
6/4/2014 Arduino + Matlab/Simulink: controlador PID

Se observa en este caso


que el motor requiere mucho menos voltaje (en gris) debido a que se trata de uno más potente que el inicial y
que el sistema presenta todavía una sobreoscilación (overshoot) en la señal de salida (en rojo) cuando la
señal de referencia (en verde) presenta una subida escalón, cosa que esperamos corregir en futuras
versiones. El siguiente desarrollo programado es realizar un control con dos grados de libertad en lugar de
uno… not because it’s easy, but because it’s hard!

¿Compartes? Facebook Twitter 2 Google Tumblr Pinterest

Categoría: Cosas "útiles", Engineer-It-Yourself | Etiquetas: Arduino, Gráficos, MATLAB, MOSFET,


PID, PWM, Serie, Simulink | Comentarios: 76 Comentarios »

76 Comentarios on “Arduino + Matlab/Simulink: controlador PID”

1. 1 Ingeniero dijo a las 4:45 del 17/08/2011:

Interesante, me podria enviar el codigo de simulink que utilizaron.


Gracias.

2. 2 Jorge dijo a las 4:51 del 17/08/2011:

Claro, está aquí; probablemente tengas que ajustar los parámetros del PID a tu planta en concreto!

3. 3 wilker dijo a las 6:06 del 25/08/2011:

Gracias .

Yo estaba tratando de hacer la interfaz entre Matlab/Simulink y Arduino Mega 2560 de destino y no
tuvo éxito. Creo que voy a obtener de esta manera la solución

gracias;

Wilker
http://wechoosethemoon.es/2011/07/21/arduino-matlab-simulink-controlador-pid/ 6/19
6/4/2014 Arduino + Matlab/Simulink: controlador PID

MG-Brasil

4. 4 Esteban Pioquinto dijo a las 0:34 del 19/09/2011:

Magnifico trabajo, Jorge te felicito.

voy a intentar reproducirlo y espero hacerte varias preguntas …… saludos

5. 5 Jose dijo a las 22:42 del 19/09/2011:

Me parece una idea bastante buena para reproducir en laboratorios de bajo coste o para la uned, voy
a probarlo, te recomiendo tambien la libreria de arduino que hay en matlab.
Un saludo.

6. 6 Cristian dijo a las 22:42 del 22/09/2011:

Hola! Excelente idea, yo tengo un proyecto similar pero necesito procesar 3 señales provenientes
desde el arduino en el simulink y luego a traves de mi bucle de control, generar 2 señales que se envian
al arduino. No tengo idea como hacerlo ya que sólo veo que funciona con una salida y una entrada. A
ver si me ayudan por favor!

7. 7 Jorge García Tíscar dijo a las 19:29 del 23/09/2011:

Hola Cristian! Pues nosotros ahora mismo tenemos el proyecto un poco abandonado, porque hemos
empezado el curso académico y tenemos poco tiempo libre… pero la idea que tenemos es usar algún
tipo de “protocolo” que Arduino y Simulink puedan discriminar, del estilo “S1″ “300″ “S2″ “400″, y
que al recibirlo, un switch-case o similar las entiendan como señal 1, señal 2, etc. Colgaremos
cualquier avance! Y si lo consigues, avísanos! =)

8. 8 Diego dijo a las 0:05 del 12/10/2011:

Gracias por tu aporte jorge, un abrazo desde colombia!!!

9. 9 adelrio dijo a las 23:26 del 01/11/2011:

Me funcionio bien la primera vez pero ahora se me cierra simulink y no encuentro el problema!!!!!
me podrias ayudar

10. 10 Jorge García Tíscar dijo a las 3:11 del 02/11/2011:

A mí la verdad es que no me ha pasado, que se me cierre Simulink, ¿has probado en otros


ordenadores u otras versiones de Matlab? De todas formas una opción es volver a construir de nuevo
el montaje, a mí me ha solucionado problemas al abrir el archivo en una versión diferente de Matlab
(de 32 a 64 bits por ejemplo).

PS: Un saludo desde España a todos los que se han animado a comentar! Da gusto ver lo activa que
es la comunidad hispanohablante Gracias! =)

11. 11 adelrio dijo a las 7:55 del 02/11/2011:

Gracias creo q solo queria q reiniciara la compu!!!

http://wechoosethemoon.es/2011/07/21/arduino-matlab-simulink-controlador-pid/ 7/19
6/4/2014 Arduino + Matlab/Simulink: controlador PID

tienes algun codigo sencillo para leer y escribir datos desde matlab hacia el arduino
esta muy chido tu foro!!!!!!
gracias!!!
por tus respuestas

12. 12 kusko dijo a las 10:58 del 17/11/2011:

amigo felicitaciones excelente pagina


salu2 desde Colombia

13. 13 Juan Farias dijo a las 5:48 del 24/11/2011:

hola queria saber si este proyecto, actualmente lo haz implementado con la libreria “Arduino Target”
del simulink?, pues me intereseria saber si se puede hacer algo como esto pero con esa libreria,
saludos desde Chile

14. 14 Jorge García Tíscar dijo a las 0:19 del 25/11/2011:

Hola! no, no he usado esa librería, pero es una idea interesante, avisa si lo consigues! En este
proyecto simplemente usamos el Arduino como tarjeta de adquisición/escritura de la señal,
comunicándolo con Simulink mediante puerto serie.

15. 15 Juan Farias dijo a las 22:08 del 30/11/2011:

Cuál es la función de transferencia de tu motor?


Me podrías dar tu correo para preguntarte cualquier cosa?

16. 16 Carlos dijo a las 7:46 del 01/12/2011:

hola buenas noches !!! tengo un problema descargue el programa de simulik y no puedo correrlo !! me
dice que la configuracion del serial en el bloque tiene un error !! agradeceria su ayuda porfavor !!! lo
necesito para un proyecto urgente !!!

17. 17 Jorge García Tíscar dijo a las 19:00 del 01/12/2011:

Hola! no tengo FDT para el motor, el PID se ajusta empíricamente! Y respecto al error de Carlos,
prueba a comprobar que el puerto serie definido en el bloque es el que realmente está usando el
Arduino!

18. 18 felipe dijo a las 1:29 del 04/12/2011:

hola quisiera saber de que tamaño es el potenciometro ya que creo tener problemas al utilizar uno de
50k

19. 19 Jorge García Tíscar dijo a las 3:03 del 04/12/2011:

Más que la resistencia del potenciómetro lo importante es la facilidad de giro y el recorrido: éste es un
potenciómetro de joystick (un antiguo Microsoft Sidewinder) que gira con mucha facilidad y tiene un
recorrido muy pequeño y muy lineal. Quizás estás usando un potenciómetro logarítmico! Eso sería
muy conflictivo…

20. 20 Antonio México dijo a las 15:42 del 09/12/2011:


http://wechoosethemoon.es/2011/07/21/arduino-matlab-simulink-controlador-pid/ 8/19
6/4/2014 Arduino + Matlab/Simulink: controlador PID

Hola Jorge tengo una pregunta, al bajar tu programa de Simulink, y abrirlo el bloque de PID(z) se
abre con error, quiero pensar que es por la versión de Matlab, ¿Cuál versión utilizaste? y ¿Cuál
de los bloques PID implementaste en tu archivo?…..Saludos

21. 21 Claudio Brasil dijo a las 2:17 del 15/01/2012:

Muy bueno el articulo!!


Tengo solo una pregunta, has medido la latencia q tiene todo el sistema, seguramente con matlab tienes
una mayor latencia, y quizas realizando todo desde arduino vas a tener mejores resultados.

22. 22 Jose Vasqquez dijo a las 6:36 del 20/01/2012:

Wooow Exelente proyecto lo implementare, y estare haciendote algunas preguntas! Genial

23. 23 LUIS RODRIGUEZ dijo a las 19:00 del 14/02/2012:

Saludos… muy buen apractica… espero poder reproducirla… aunque no he tenido la oportunidad de
trabajar con matlab/simulink… si tienes algún tutorial que pudieras prestar.. se te agradecería…

24. 24 jose benito guillen badillo dijo a las 17:55 del 25/02/2012:

hola Jorge García Tíscar estoi realizando un proyecto casi igual al que estas empleando aqui,trato de
posicionar un motor de cd con arduno,con ,arduino+matlab+simulin y accionarlo desde simulink y que
el motor trabaje como quiero pero lo que no entiendo es como realizar el codigo del arduino si me
pudieras explicar un poco te lo agradeseria o si me puedes mandar el codigo del arduino que
empleastes en esa practica…
este es mi correo.

25. 25 Rodrigo dijo a las 7:00 del 29/02/2012:

Hola jorge, me gustaria saber como se hace la comunicacion serie de simulink con arduino, no logro
hacer la conexion no se si podras ayudarme con esto. mi simulink es el 2008

26. 26 vladimir dijo a las 14:26 del 02/03/2012:

Hola jorge, te escribo porque quiero hacer este proyecto pero tengo una duda en la parte de potencia,
que mosfet has utilizado y que dispositivo es ese otro que aparece en el esquema que has dehajado en
esta pagina..un saludo

27. 27 Gonzalo dijo a las 21:24 del 17/03/2012:

Primero que nada, excelente tu proyecto!..


Siempre he querido comunicar matlab/simulink con alguna placa.. me podrias indicar como hacerlo??
Muchas gracias

28. 28 Universidad dijo a las 5:51 del 28/03/2012:

hola, todo esta perfecto pero como conectaste el arduino con el puerto serie para que envie y controle
la posicion del pot, solo conectast los 2 pines (tx y rx del arduino ) con los tx y rx del puerto serie de
la compu??

29. 29 vladimir dijo a las 13:04 del 02/04/2012:


http://wechoosethemoon.es/2011/07/21/arduino-matlab-simulink-controlador-pid/ 9/19
6/4/2014 Arduino + Matlab/Simulink: controlador PID

Universidad, hola, no soy jorge pero estoy haciendo este proyecto y te puedo aclarar tu pregunta, la
comunicacion serie se establece a traves del programa de arduino que ha expuesto jorge más arriba, o
sea que es via software, no es una conexión fisica…espero que te sirva mi aclaración, cualquier cosa
podemos seguir comentando..un saludo

30. 30 Osiris dijo a las 15:30 del 21/04/2012:

Yo eh logrado reproducir exitosamente el proceso por medio de la librería de arduino para simulink el
sistema funciona excelente gracias jorge. Saludos desde mexico

31. 31 Jorge García Tíscar dijo a las 15:34 del 21/04/2012:

Hola! Sería muy interesante que compartieras tu enfoque del problema Osiris! Y Vladimir tiene razón,
la conexión serie es emulada por software, físicamente está conectado por USB.

32. 32 emanuel sosa dijo a las 22:35 del 30/04/2012:

Hola que tal!!! La verdad me llamó mucho la atención tu trabajo, en mi caso tengo un motor con
encoder y sensor hall, como me recomiendas adaptarlo para que en vez de potenciómetro use el
encoder

33. 33 Emmanuel dijo a las 9:06 del 10/05/2012:

Queria preguntar que Diodo usaste y por MOSFET

34. 34 mackito dijo a las 19:33 del 21/05/2012:

hola amigos!!! muy buen sitio… voy a usar su programa para hallar los coeficientes del pid (una
especie de “autotuning”) para controlar 4 esc con motores brushless, el proyecto es un un quadcopter
controlado por arduino…. saludos de Colombia… cualquier cosita les voy comentando… de
antemano muchas Gracias….

35. 35 Jorge García Tíscar dijo a las 19:35 del 21/05/2012:

Hola! Te agradeceremos que nos mantengas informados al respecto!

36. 36 Jose Mejia dijo a las 0:41 del 23/05/2012:

Buenas tardes! Mi nombre es jose mejia y soy estudiante de ultimo semestre de ingenieria de
produccion en la ciudad de Medellin, colombia. Le escribo porque en internet encontre esta pagina
suya donde muestran un sistema de comunicacion en serie con controladores PID en el programa de
Matlab.Estoy muy interesado en saber si usted de pronto me puede colaborar en una asesoria. Yo
tengo que implementar un controlador PID en matlab para un tanque. Entonces tengo que programar
este controlador para este trabajo. Quisiera saber si usted me puede colaborar en realizar este trabajo,
osea programando eso. Espero sus pronta respuesta. Saludos y estoy atento a su respuesta.

Jose Calixto

37. 37 Landiner dijo a las 2:04 del 23/05/2012:

Ola , me a parecido interesante lo que se puede hacer con simulink, tengo la duda de como puedo leer
un sensor y graficarlo en simulink. es un acelerometro, lo puedo graficar en matlab creando la figura
http://wechoosethemoon.es/2011/07/21/arduino-matlab-simulink-controlador-pid/ 10/19
6/4/2014 Arduino + Matlab/Simulink: controlador PID

pero solo me da aceleracion, lo que quiero es integrarlo dos veces para obtener posicion, y ya me han
dicho que es con simulink , pero no logro hacer graficar nada con el scope, hay algun procedimiento
para configurar mi tarjeta arduino? solo es la señal analoga del acelerometro que se manda por AO.
les agradeceria mucho.

38. 38 Yhosy dijo a las 23:37 del 12/06/2012:

q onda soy alumno de 6 semestre de ing. y y estoy realizando su proyecto pero me tope con un
problema y espero me puedan ayudar pues no se q transistor mosfet y diodo utilizan para el circuito en
la protoboard espero su respuesta

39. 39 Electronico dijo a las 6:13 del 16/06/2012:

Jorge en el bloke serial send sale (Data type mismatch. Input port 1 of block ‘helicopsimik/serial Send
/S-Function’ expects a signal of data type ‘double’. However, it is driven by a signal of data type
‘uint8′) y le cambio en el primer conv1 a double y grafica una pequena linea amarilla si hacer conexion
fisica , no se cambia nada enel serial paramatros/serial format o se deja tal cual ala hora de pornerlo

40. 40 TonyS dijo a las 6:10 del 19/06/2012:

Hola xa todos
Primero darle las gracias por tan buenos apuntes que hacen, me sirvio mucho este y otro que hay
sobre comunicacion Arduino+Matlab, quisiera preguntar sobre que lenguaje de programacion realizan
la programacion del Arduino, he tenido unos problemas implementando una serie de codigos que
estoy realizando, y el que encontre aca no me presento ningun problema.
Muchas gracias

41. 41 vladimir dijo a las 18:10 del 26/06/2012:

chicos yo estoy teniendo un problema con el serial send y no sé por qué ocurre…es el siguiente

Error evaluating registered method ‘Outputs’ of M-S-Function ‘sserialsb’ in ‘vladmoo/Serial Send’.


An error occurred during writing.

he probado a limpiar el buffer de arduino cosa que este estuviese lleno y el serial send no pudiese
escribir..pero nada..si alguien sabe porfa que me eche un cable..saludos

42. 42 andres rivas dijo a las 21:00 del 05/07/2012:

hola amigo.. he iniciado un proyecto de control basandome en tu estructara de control en el simulink


pero el pid no me esta enviado los datos al arduino, es decir, no esta funcionando no se a q podria
deberse… si tuvo un problema similar a este por favor agredeceria su ayuda.

43. 43 Richard dijo a las 9:17 del 01/08/2012:

Primero q todo felicitaciones por tan buen proyecto. Me gustaria saber cuales son las referencias del
MOSFET y diodo zener q utlizaron en la etapa de potencia.

Agradezco su atencion a la presente.

44. 44 Fredy dijo a las 15:37 del 02/08/2012:

http://wechoosethemoon.es/2011/07/21/arduino-matlab-simulink-controlador-pid/ 11/19
6/4/2014 Arduino + Matlab/Simulink: controlador PID

Hola
Primero darle las gracias por tan buenos aportes que ustedes nos suministran, quería comunicarles que
me funciono perfecto el ejecutable de simulink, les escribo para preguntarles si existe la posibilidad de
facilitarme la programación en matlab ya que para el proyecto que estoy realizando es de vital
importancia este código.

Agradezco de antemano su pronta respuesta


Muchas gracias

45. 45 Richard dijo a las 20:53 del 05/08/2012:

Que tipo de turbina utilizaron para el proyecto. Gracias

46. 46 Cristian Gisel dijo a las 23:02 del 07/08/2012:

oyee see qiero enviar datos mas grandes qe 255 como lee en matlab ?

47. 47 Oscar dijo a las 22:55 del 15/08/2012:

Hola amigos primero que nada felicitarlos por lo que hicieron esta muy bueno en segundo lugar estoy
realizando un proyecto similar para mis clases y pues me gustaría saber que bloque utilizaron para la
generación de la referencia en el ambiente de matlab.

Saludos.

48. 48 Ivan dijo a las 9:01 del 17/08/2012:

amigo una pregunta, la comunicacion la haces con el mismo cable usb con el que conectas el arduino
con la PC?

49. 49 Ivan B dijo a las 7:39 del 19/08/2012:

buen dia amigo, oye a ti no te aprecio un problema de que necesita estar enviando datos simulink al
arduino para que se empiece a graficar en matlab?

50. 50 Worrent Dark dijo a las 5:13 del 10/10/2012:

Gracias exelente me voy a ver si puedo hacerlo funcionar para controlar un regulador buck para hacer
un MPPT para unos paneles solares

51. 51 Miki dijo a las 6:53 del 05/11/2012:

Podrias poner el código de simulink nuevamente, esta caido el enlace

52. 52 Isra dijo a las 2:58 del 08/11/2012:

Que tal, excelente trabajo! ¿Podrías subir el archivo de simulink?

53. 53 Julian dijo a las 16:41 del 09/11/2012:

Lo mismo, Jorge podrias subir el archivo de simulink??

Excelente aporte!!!
http://wechoosethemoon.es/2011/07/21/arduino-matlab-simulink-controlador-pid/ 12/19
6/4/2014 Arduino + Matlab/Simulink: controlador PID

54. 54 Jorge García Tíscar dijo a las 20:07 del 09/11/2012:

Listo, ahora está aquí, un saludo!

55. 55 Julian CHILE dijo a las 16:24 del 10/11/2012:

Como calculaste tus parametros para el PID???

56. 56 Jorge García Tíscar dijo a las 17:20 del 10/11/2012:

Probando cuidadosamente. Pero siempre puedes probar el método de Ziegler-Nichols.

57. 57 JAIME CANDELARIA SOLIS dijo a las 22:43 del 11/11/2012:

Hola, oye disculpa una pregunta, como haces para realizar la simulacion de Simulink en tiempo real??
Que parametros modificaste en la configuracion de la simulacion. Sabes que yo tambien necesito
controlar un motor mediante el puerto serial pero cuando intento hacer la simulacion me dice que el
puerto serial no se puede simular en “tiempo continuo”. Agradeceria mucho tu respuesta, gracias y
excelente proyecto!

58. 58 Tonatiuht dijo a las 23:00 del 28/11/2012:

Hola! Crees que se pueda hacer lo mismo pero con un fuzzy? Estoy intentando en hacerlo, espero
funcione

59. 59 Alejandro Suarez dijo a las 17:43 del 29/11/2012:

Hola muy bueno tu proyecto me podrias ayudar con el codigo para el simulink esque se me complica
un poco, ya que no se en donde esta il icono para el serial COM 4

60. 60 cham dijo a las 17:30 del 01/12/2012:

hi, the project is cool. may i know how do you solve the problem of data transmission delay? i’m trying
to do it in a higher sample time, but i got some delay. thanks in advance

61. 61 Darwin Ipiales dijo a las 1:31 del 04/12/2012:

hola disculpa me podrias informar que materiales usaste

62. 62 Daniel Sanchez dijo a las 4:16 del 04/12/2012:

me gustaría saber como sacar el puro pwm modulandolo desde la PC, pues trato de controlar un
mecanismo de 3GDL con un PID hecho por mi mismo, buen proyecto, gracias!

63. 63 Guillermo Sahonero Álvarez dijo a las 19:42 del 10/12/2012:

Que tal Jorge. Muy interesante el proyecto que realizaste. Tengo unas dudas sobre la estructura física,
que MOSFET usaste? Y como es que el potenciómetro puede medir el ángulo de inclinación?
Finalmente, no sé si podrías publicar una fotografía más cercana a la plataforma. De antemano,
Muchas Gracias!

64. 64 Manuel Otero dijo a las 6:07 del 06/02/2013:

http://wechoosethemoon.es/2011/07/21/arduino-matlab-simulink-controlador-pid/ 13/19
6/4/2014 Arduino + Matlab/Simulink: controlador PID

Si ya estás ocupando control digital por qué no implementas un algoritmo más adecuado para ello?
Seguro que con el logaritmo de la tangente hiperbólica te quedaría de fábula.

65. 65 Danilo dijo a las 20:27 del 21/02/2013:

Hola, usted podria muestrar el diseño de la planta y la lista de materiales?

Hi, can you show me the draw of your project and the bill of materials used?

66. 66 Marc dijo a las 19:43 del 05/05/2013:

Buen ejemplo, sobre todo ilustrativo. Estoy trabajando con arduino, recibo los datos via serial y los
represento utilizando Processing. Con Processing necesito estar variando los la forma de
representación, es algo tedioso.

Estoy intentando leer datos con el bloque que tu utilizas “serial recieve”, pero por alguna razón, al
intentar elegir el puerto (COM3) no me deja elegir ninguno, me sale la frase por defecto. Debo
configurar algo antes?

Gracias!

67. 67 Marc dijo a las 22:23 del 05/05/2013:

Hola de nuevo, he solucionado el problema del serial receiver. Ahora tengo un segundo problema.
Recibo datos Int8 correctamente del serial receiver (comprobados).

Quiero que esos datos tengan decimales, si en serial receiver selecciono “double” los datos que me da
no son correctos.

Una segunda opción es obtener int8 del serial reciever y convertirlos a double con un conversor, como
tu haces. El problema es que no se convierten a double, siguen siendo enteros.

En tu video no se aprecia si el bloque “conv2″ realiza realmente la conversión a double. La leyenda del
eje de ordenadas va de 50 en 50. Pusiste un bloque display para comprobarlo?

Agradecería tu respuesta porque estoy buscando sin cesar la solución asumiendo que a ti si te cambia
a double.

Gracias por tu tiempo,


Un cordial saludo,
Marc

68. 68 komar dijo a las 1:06 del 19/05/2013:

Hola, soy nuevo usando matlab, y me parece interesante el proyecto, quisiera tomar idea haciendo
este proyecto, puedes, decirnos k mosfet usaste?, te lo agradeceré. Y espero también ayudar a otros
de igual forma.

69. 69 Benjamín_PUC_CHILE dijo a las 6:37 del 27/05/2013:

Muchisimas gracias!
Con tu ayuda podré terminar un proyecto de péndulo invertido en el que estoy trabajando.
http://wechoosethemoon.es/2011/07/21/arduino-matlab-simulink-controlador-pid/ 14/19
6/4/2014 Arduino + Matlab/Simulink: controlador PID

(Quedará la referencia a esta página)

Saludos!

70. 70 Jorge García Tíscar dijo a las 21:23 del 27/05/2013:

Genial! Deja el enlace cuando lo tengas para que lo veamos! =)

71. 71 Juako dijo a las 21:45 del 21/01/2014:

Muchas gracias Joge, estoy omenzando un proyecto para un pendulo invertido con simulink y este
tutorial me aclaró algunas dudas, de todas formas te queria preguntar si sabes sobre conexion
Arduino-Simulink a traves del Shield de Bluetooth de arduino, si es posible realizarla, espero puedas
aclararme esa duda. Saludos

72. 72 Angel-UVMCOYOACAN dijo a las 21:20 del 18/02/2014:

Disculpa soy nuevo en esto pero me gustaría saber que arduino utilizaste y como se realiza la conexión
Simulink-Arduino gracias.

73. 73 Victor Gomez dijo a las 3:23 del 02/03/2014:

¿Como puedo hacer para corregir los Bad link que aparecen en el simulink?

74. 74 juan dijo a las 6:27 del 13/03/2014:

hola como estas? amigo como puedo graficar en matlab 3 datos del arduino, asi como esta este
gráfico con 3 colores de legend, quiero graficar un setpoint una lectura de un sensor de temperatura y
una salida de un control PID de la libreria del arduino todo funciona y lo veo por el monitor serial del
arduino con Serial.print(datos) , pero nesecito graficarlos en matlab. gracias. muy buena información
gracias

75. 75 Ricardo Vega dijo a las 5:03 del 14/03/2014:

¿Cómo desarrollaste el modelo matemático para este proyecto?

76. 76 rafa dijo a las 11:53 del 30/03/2014:

Hola Jorge tengo un problema haber si me lo puede solucionar alguien.He realizado un programa
exactamente igual que el tuyo pero con mi COM3 en vez de el COM6 que ese es el tuyo pero al
ejecutar al progrma me da fallo en el Serial Send y me pone que arregle el ‘ode45′ y nose como lo
puedo solucionar.Me podeis ayudar?

Gracias

Anímate y deja un comentario, it's free!

Puedes iniciar sesión con Twitter, Faccebook o WordPress o bien introducir un nombre y dirección de
correo (y una página, si quieres!). Sólo tienen que ser verdaderos si quieres que te podamos contestar!

http://wechoosethemoon.es/2011/07/21/arduino-matlab-simulink-controlador-pid/ 15/19
6/4/2014 Arduino + Matlab/Simulink: controlador PID

Introduce tu comentario aquí...

Mensajes y Páginas Populares

Arduino + Matlab/Simulink: controlador PID


Arduino + Matlab: adquisición de datos
Arduino + LabVIEW: instrumentos virtuales
Arduino + motor DC: circuito PWM
Teoría de grafos y redes sociales
Dropbox + VirtualBox: aumentar espacio!
Díselo con Mathematica
Melodías con Arduino: Für Elise
MATLAB: aceleración de cálculo con GPU
Mathematica y CDF: Solución de Navier

Etiquetas

Arduino CDF Cocina CUDA DAQ Datos Dropbox Estructuras Facebook Gephi GPGPU
Aeropuerto Altavoz Apocalipsis Zombie

GPU computing Gráficos LabVIEW LaT eX Linux LyX Mathematica MATLAB Miktex MOSFET

Motor Música Navier nVidia PID proxy PWM Redes sociales Sensores Serie Simulink Spotify T ex T exmaker Tutorial Ubuntu
Valencia VI VirtualBox Virtualización Wolfram

Categorías

Aeronáutica
Cosas "útiles"
Engineer-It-Yourself
Recetas
Sin categoría
Tutoriales

Publi de Google

Horror! Los tenebrosos tentáculos del capitalismo se extienden hasta el inmaculado templo de la ciencia! Pero tenemos
que mantener el dominio y adquirir café, pociones, hechizos componentes electrónicos... etc.!

http://wechoosethemoon.es/2011/07/21/arduino-matlab-simulink-controlador-pid/ 16/19
6/4/2014 Arduino + Matlab/Simulink: controlador PID

Pedagogía Infantil
admisionesareandina.com
Estudia en Fund. del
Área Andina. Modalidad
Virtual. ¡Inscríbete ya!

Calendario de publicaciones

julio 2011
LM X J V S D
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
« ago ago »

Archivos

febrero 2012
enero 2012
diciembre 2011
noviembre 2011
septiembre 2011
agosto 2011
julio 2011
agosto 2009

Otra publi de Google

Un poquito más de publi! Procuramos que se camufle para que no moleste si estás leyendo la (interesante?) publicación!
Pero si te da mucha rabia, usa Adblock! ;-)

http://wechoosethemoon.es/2011/07/21/arduino-matlab-simulink-controlador-pid/ 17/19
6/4/2014 Arduino + Matlab/Simulink: controlador PID

Gerencia de
Mercadeo
estudiaenelpoli.edu.co/Mercadeo
Posgrado presencial
en el Poli. Inscripciones
Abiertas. Ingresa ya!

Suscríbete!

Introduce tu correo electrónico para suscribirte a este blog y recibir notificaciones de nuevas entradas.

Únete a otros 12 suscriptores

Dirección de email

Suscribir

Más publi!

Desgraciadamente hay que pagar los costes de alojamiento y dominio de la página! Esperamos que no iterfieran
demasiado con el interesantísimo contenido de la izquierda! (:

Meta

Acceder
RSS de las entradas
RSS de los comentarios
WordPress.org

http://wechoosethemoon.es/2011/07/21/arduino-matlab-simulink-controlador-pid/ 18/19
6/4/2014 Arduino + Matlab/Simulink: controlador PID

Jorge García Tíscar —

http://wechoosethemoon.es/2011/07/21/arduino-matlab-simulink-controlador-pid/ 19/19

You might also like