“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


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.

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 V(\theta) entre 0V y 5V, en función del ángulo \theta. 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 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 V(\theta) 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.

int out = 0;
byte in = 0;
byte pinOut = 10;

void setup() {
  // inicializar puerto serie
  Serial.begin(9600);
  // preparar output
  pinMode(pinOut, OUTPUT);
}

void loop() {
  // leer del pin A0 como
  out = analogRead(A0);
  // escalar para obtener formato uint8
  out = map(out, 0, 1023, 0, 255);
  // enviar en base 10 en ASCII
  Serial.write(out);
  // leer del serie si hay datos
  if(Serial.available()){
    in = Serial.read();
    // escribir en el pin 10
    analogWrite(pinOut, in);
  }
  // esperar para estabilizar el conversor
  delay(20);
}

Simulink: referencia y bucle de control

Por otra parte, nuestro programa de Simulink debe recibir este dato de V(\theta) a través del puerto serie, compararlo con una referencia V_{ref} 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 K 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 \theta del eje hasta conseguir que el voltaje del potenciómetro V(\theta) (señal amarilla) coincida con la referencia que le hemos indicado. Incluso, a pesar de 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:

%% Preparar la figura
f = figure('Name','Captura');
axis([0 length(ref_out) 0 5.1])
grid on
xlabel('Medida (-)')
ylabel('Voltaje (V)')
title('Captura de voltaje en tiempo real con Arduino')
hold all

%% Tratamiento
pos_out = pos_out(:);
pid_out = pid_out(:);
x = linspace(0,length(ref_out),length(ref_out));

%% Limpiar figura y dibujar
cla
plot(x,pid_out,'Color',[0.6,0.6,0.6],'LineWidth',2)
plot(x,ref_out,x,pos_out,'LineWidth',2)
legend('Control','Referencia','Posición','Location','Best');

%% Salvar el gráfico
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í:

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!

Categoría: Cosas "útiles", Engineer-It-Yourself | Etiquetas: , , , , , , , | 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
    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!!!

    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:

    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:

    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 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:

    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!!!

  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:

    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.
    (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!