VertiBOT

Abstract

VertiBOT is an educational project to investigate and understand sensor fusion using kalman and complementary filter algorithm and PID control in an unstable system.

VertiBOT is an inverted pendulum platform that remains balanced by means of two tiny motors, located in the bottom of the structure. The battery is attached in the top of the main body, while the electronics board is located near the rotation axis.
The feedback signal is provided by an IMU 6Dof composed by an accelerometer and a gyro. One ATmega 328 microcontroller execute the main loop every 10 milliseconds. A wireless communication over bluetooth is used to tune and check the signal response in a Graphical User Interface software.

Breve Introducción. Análisis del problema

VertiBOT es un proyecto personal-educativo que llevo a cabo con el fín de poder tener una experiencia práctica en el uso y manipulación de filtros Kalman, complementary filter y ajustes de controladores PID.

Esta plataforma, es un “péndulo invertido”, es decir, un péndulo cuyo centro de masas está por encima de su eje de rotación o pivotamiento. Un sistema de estas características es inherentemente inestable y debe ser equilibrado constantemente de manera externa para permanecer en una posición de equilibrio (inestable). Esto se consigue mediante la aplicación de un par de torsión en su eje de pivotamiento (sistema con un solo grado de libertad) como parte de una retroalimentación medida por el sistema. El par neto generado en el péndulo equilibra así la perturbación inicial. El ejemplo clásico para entender los principios físicos de este problema es  intentar mantener un palo de escoba, dado la vuelta, en equilibrio sujeto en su otro extremo por nuestro dedo. El péndulo invertido es uno de los problemas clásicos en la dinámica y se hacen numerosas referencias a él, en los libros que tratan sobre la teoría de control, dando numerosas estratégias para abordarlo.[1]

La ecuaciones del movimiento de un péndulo invertido simple, sin considerar ningún tipo de fricción o restricciones al movimiento, y suponiendo al cuerpo como una varilla rígida ideal, con la masa concentrada en  su extremo y con su eje de rotación fijo en el espacio, es muy similar a la de un péndulo clásico.

ecuVertibot

Donde Ö es la aceleración angular del péndulo, g es la aceleración de la gravedad, l es la longitud del péndulo, y Θ  es el ángulo medido desde la posición de equilibrio. Es fácil comprobar que el péndulo se acelera más rápido cuanto más lejos esté de la posición de equilibrio y que dicha aceleración es inversamente proporcional a la longitud del péndulo. De aquí deducimos una importante especificación constructiva: los péndulos altos caen más lentamente que los bajos.

Esta ecuación, aunque muy útil en una primera aproximación, no nos da suficiente información para intentar modelizar la dinámica de control de nuestro péndulo. Para un desarrollo más completo del problema es necesario acudir a una modelización Lagrangiana del problema. El desarrollo de estas ecuaciones puede ser encontrado en cualquier libro o publicación sobre sistemas de control moderno, bajo el título “péndulo invertido montado sobre un carro“.[2]

Funcionamiento.

Los actuadores de VertiBOT son dos motores de corriente continua gobernados por un driver de potencia. Estos motores son los encargados de generar el par necesario sobre las ruedas para mantener la estructura en un desplazamiento ángular próximo 0º, siendo esta, nuestra señal de consigna o referencia (Θref=90º).

Si se desea mantener un equilibrio inestable es muy importante conocer, con una buena exactitud y rápido, la inclinación real de la estructura (señal de realimentación). La diferencia entre la señal de referencia y la señal de realimentación será el error cometido: magnitud indispensable para poder actuar en consecuencia y “corregir” dicha perturbación.

Los cambios en las magnitudes físicas son medidos por el dúo: giróscopo+acelerómetro. Un giróscopo nos proporciona una buena medida de la velocidad angular Ö.Integrando en tel tiempo dicha medida, podremos obtener el valor del ángulo pivotado. Sin embargo, en esta operación integraremos el ruido propio del sistema, acumulando en pocas iteraciones una gran deriva. El acelerómetro nos mide aceleraciones, tanto estáticas como dinámicas. Para poder separar ambas componentes nos vemos obligados acudir a un filtro paso bajo (nos devuelve la componete estática: la gravedad) y a un filtro paso alto (aceleraciones dinámicas). Una vez separadas, una simple operación trigonométrica nos calculará la inclinación [3]. Sin embargo, el paso por un filtro de este tipo (un promedio de valores) nos introduce un importante retraso en la respuesta, haciendo inestable el sistema. Así pues, tenemos un giróscopo con una deriva creciente en el tiempo y un acelerómetro lento y ruidoso como entradas a nuestro sistema. La solución pasa por “fusionar” (filtrar) ambas lecturas. Aquí se abre ya un interesante campo de estudio y experimentación sobre las diferentes  estrategias escogidas para tal efecto: single sensor method, filtro kalman, complementary filter… [4]

Una vez que conocemos la señal de error, necesitamos definir un controlador que actúe sobre los actuadores de tal manera, que al cabo de unas pocas iteraciones se haya minimizado dicho error. Una rápida incursión en la teoría de control nos sirve para encontrar una diversidad de controladores muy sofisticados. En esta primera aproximación, se ha escogido pra su estudio un conocido controlador PID.

Un controlador PID básico dispone de una entrada y una salida (SISO). La entrada será nuestra señal de error generada en el párrafo anterior mientas que la salida sera el número de rpm al que deben girar los motores para compensar la perturbación. La nueva situación es realimentada por el conjunto de sensores.

La salida del controlador PID se genera mediante la suma de 3 componentes: una respuesta proporcional al error, una acción integral que tiende a cancelar el error en estado estacionario y una acción derivativa, que anticipa la respuesta de nuestro sistema. Para un estudio detallado ver [5].

La sintonización o cálculo de unas constantes adecuadas Kp,Ki y Kd puede ser acometido por diferentes métodos heurísticos, en los que en una serie de aproximaciones sucesivas se debería tender a una solución estable para el sistema. Esta ha sido una tarea difícil y tediosa, y con la que aún no estoy completamente satisfecho. Para facilitar el proceso he añadido tres potenciómetros, con los que poder variar los valores de las constantes en tiempo real de la operación.

Hardware

VertiBOT es un printbot, es decir, su estructura ha sido construida utilizando una impresora 3D. Como siempre, podéis encontrar los archivos de las piezas en Thingiverse.

La estructura esta dividida en dos mitades que se unen mediante tornillos. Este sistema permite adoptar diferentes alturas y comprobar como varia la respuesta del sistema. La batería se encuentra situada en la parte superior del cuerpo principal. La pieza inferior contiene los anclajes de los motores (Pololu Micrometal 50:1) y sirve de apoyo para la placa principal de electrónica, que se debe instalar con los sensores lo más próximo posible al eje de rotación del péndulo.

La electrónica está compuesta por:

  • Microcontrolador ATmega 328 16MHz (Arduino nano).
  • IMU 6Dof: acelerómetro y giróscopo. ADXL345/ ITG3200 Comunicación por I2C
  • Driver de potencia para los motores Pololu Qik2sv1.Comunicación serie.
  • Modem bluetooth para la comunicación inalámbrica en tiempo real.
  • Potenciómetros para la sintonización del PID
  • Pulsadores para tareas diversas: cambio de algoritmo, calibrado, offsets..
  • Regulador de tensión (MCP1700) y  un convertidor lógico.

BalancingRobot_schem

Software

Para poder tener una visualización gráfica de las diferentes señales y respuestas de esta plataforma se ha dispuesto una interfaz gráfica que, gracias a la comunicación inalámbrica, nos permite visualizar en tiempo real, tanto los actuales valores del las constates del controlador, las lecturas de los sensores, la señal de referencia y la salida del sistema. Este aplicación esta basada y hereda el trabajo de Brett Beauregard [6]

Soft

Video. Conclusiones finales y perspectiva futura.

A continuación dejo un pequeño video demostrativo de la plataforma VertiBOT intentando mantenerse en equilibrio. Los motores actuales no son lo suficientemente rápidos para mantener la estructura estable tras una perturbación demasiado grande, sin embrago, si parece que es capaz de mantenerse próximo a su punto de equilibrio en para pequeñas oscilaciones. Se han usado 2 ternas diferentes de valores PID: una conservativa, cuando nos encontramos cerca del punto de referencia, y otra muy agresiva cuando nos encontramos lejos del punto de balanceo. Cuando se apoya o sostiene el robot en horizontal, se entiende que ya todo esta perdido y se deja de actuar sobre los motores. Esta solución es muy cómoda para manipularlo durante las pruebas.

En estos momentos se está trabajando en una versión 2.0 aparte de incorporar unos motores más rápido cuenta con encoders de movimiento en las ruedas. De esta manera podemos complementar la señal de feedback dada por los sensores de una manera mucho más precisa.

Código en Git: https://github.com/astromaf/VertiBOT

3D parts in Thigiverse: http://www.thingiverse.com/thing:83091

(*) This entry, not pretend be a tutorial: it is only a project review.You can make this projects using any other items. Feel free to try with new components, different codes or algorithms.

Possible “Bill of Material” :

  • Microcontroller ATmega 328 16MHz (Arduino nano or similar) (x1).
  • IMU 6Dof: accelerometer y gyroscope.ADXL345/ ITG3200 (or any  other IMU)  (x1).
  • Motor Driver Pololu Qik2sv1 (or similar) (x1).
  • Bluetooth modem for wireless communication. Optional.(x1).
  • Potentiometer for PID tuning parameters. Optional. (x3)
  • Buttons for different tasks: algorithm change, calibration offsets .. .Optional. (x3)
  • Voltage regulator (MCP1700) (or similar) (x1).
  • Logic level converter (x1).
  • Pololu MicroMetal Motors (50:1) (or similar) (x2).
  • Pololu Wheels 90x10mm (or similar). (x1)
  • Main body (3D parts or wood frame or pcb board…)

References:

  1.  Wikipedia “Inverted Pendulum”: http://en.wikipedia.org/wiki/Inverted_pendulum
  2.  K. Ogata. Ingeniería de Control Moderna. 3 edition. 1997
  3.  C. J.Fisher. Using and accelerometer for inclination sensing. Analog Device. AN-1057
  4.  Shane Colton. A Simple solution for Balance Filter. MIT. June 2007
  5.  J.A. Shaw. PID Algorithm & Tuning Methods. Rochester,NY.
  6.  Brett Beauregard. Introducing the OSPid. http://goo.gl/QKANE
  7.  Patrick Olsson.X-firm System Projects. http://www.x-firm.com/

  1. Chemos

    Nunca dejas de sorprenderme amigo!! Gran explicación y gran proyecto.

    Un abrazo!

  2. Me encanta frutos, quiero hacerlo con los chicos de robotica, la fisica que tiene detrás me fascina. eres un fiera.

    Un abrazo fuerte y animo. Sigue así.

  3. Antenilla

    El proyecto, es un señor proyecto un trabajo de envergadura tanto en lo teórico como en la puesta en practica y en su magnifica exposición.
    Felicidades

  4. Ciao Miguel, sono Giorgio ho studiato il codice di arduino per il tuo Vertibot ma non capisco niente.

    io non sono un programmatore.

    Io ho questi componenti:

    https://www.sparkfun.com/products/10121

    http://www.robotstore.it/product/430/Dual-DC-Motor-Shield-per-Arduino.html

    http://www.pololu.com/catalog/product/1443

    Vorrei fare il codice con i potenziometri come hai fatto tu, come faccio??

    Mi puoi aiutare???

  5. Pingback: Clean and minimal self-balancing robot

  6. Pingback: Clean and minimal self-balancing robot | Froppa.com

  7. Pingback: Clean and minimal self-balancing robot - RaspberryPiBoards

  8. Pingback: rndm(mod) » Clean and minimal self-balancing robot

  9. Pingback: Clean and minimal self-balancing robot | Blog of MPRosa

  10. Pingback: Clean and minimal self-balancing robot | Daily IT News on IT BlogIT Blog

  11. Carlos Werberich

    Amazing project!

  12. Jimmy Pop

    Felicidades por el proyecto, los resultados pintan verdaderamente bien. Me gustaría hacerte una sugerencia de algo que estaría bien probar: qué tal sustituir el motor con el reductor por una caja reductora hecha con impresora 3d y un motor DC estándar fácil de encontrar (alguno de los que hay en los lectores de CD, por ejemplo). El propósito sería simplemente hacerlo menos dependiente de ese proveedor.

  13. Martin

    Excelente explicación básica de la teoría! Algún día tengo que intentar algo así. Me pregunto si sería más sensible (o con respuesta más rápida) si el IMU estuviera ubicado arriba, con la batería?

  14. Muy ameno. Felicidades

  15. Pingback: Clean and minimal self-balancing robot | Make, Electronics projects, electronic Circuits, DIY projects, Microcontroller Projects - makeelectronic.com

  16. Pingback: Clean and minimal self-balancing robot | Skyless Drives

  17. Gee

    Hi. Could you please let me know exact link for motors and wheels?

  18. Pingback: Clean and minimal self-balancing robot | 电子迷

  19. Pingback: Monociclo Autobilanciato con Arduino: VertiBOT | DiomaBros

  20. Pingback: Vertibot: un pequeño robot que se autobalancea | unocero.com

  21. Pingback: VertiBOT | Drone Magazine

  22. Gee

    Total BOM (Bill Of Material) will be good for others.

    • Hi Gee!
      This entry, not pretend be a tutorial: it is only a project review.You can make this projects using any other items. Feel free to try with new components, different codes or algorithms.

      Possible “Bill of Material” :

      – Microcontroller ATmega 328 16MHz (Arduino nano or similar) (x1).
      – IMU 6Dof: accelerometer y gyroscope.ADXL345/ ITG3200 (or any other IMU) (x1).
      – Motor Driver Pololu Qik2sv1 (or similar) (x1).
      – Bluetooth modem for wireless communication. Optional.(x1).
      – Potentiometer for PID tuning parameters. Optional. (x3)
      – Buttons for different tasks: algorithm change, calibration offsets .. .Optional. (x3)
      – Voltage regulator (MCP1700) (or similar) (x1).
      – Logic level converter (x1).
      – Pololu MicroMetal Motors (50:1) (or similar) (x2).
      – Pololu Wheels 90x10mm (or similar). (x1)
      – Main body (3D parts or wood frame or pcb board…)

  23. Pingback: IT青年舍 » Clean and minimal self-balancing robot

  24. What are you using for a power source? It appears there is a board attached to the battery pack as well, what is that board?

    • Hi Pierre!

      You can use any kind of battery.
      This prototype use a 2s 0.8A lipo battery. The circuit attached is a UBEC converter: takes 7.4V from battery pack and converts it to a consistant and clean 5 or 6 volts (selectable). It’s really common in RC airplanes.

      • Thanks for the quick reply!

        I’m looking through the code on Github now and planning to build one of these this week. Can you share a bit more information about what file(s) need to be programmed? Is it just a matter of opening up PID_Visualator.pde in the Arduino IDE, compiling it and uploading it to an Arduino?

  25. Thank you for documenting your project, the references, and bill of materials for what you’ve used. My control systems classes unfortunately were all theoretical. I really need to apply learned knowledge if I wish to retain it. Your project is an excellent baseline to start with, thank you for all the great ideas!

  26. Pingback: Cool DIYs - Blanboom's Blog

  27. Pingback: Actualidad a tu alcance | Arquitectura del Computador

  28. Thanks for a great project!

    Can you please tell us what are the values of the potentiometers, capacitors and resistors that you used?

    Thanks!

  29. Pingback: Clean and minimal self-balancing robot | LiveBots UK

  30. Dani

    Hola,

    me encanta tu proyecto. Tanto que te lo he copiado en buena parte. He construido mi propio minisegway, pero no consigo que se mantenga en pie. Éstos son algunos de los materiales que he usado:

    – Arduino nano
    – IMU 9DoF Razor (lleva su propio procesador y proporciona directamente yaw pitch roll)
    – Pololu motors 50:1 Alta potencia (con ruedas similares a las tuyas)
    – DRV8833 pololu dual motor driver

    Pero no puedo mantenerlo de pie, tengo la sensación que la “zona muerta” de los motores es muy grande, por lo que para poca inclinación los motores hacen ruido pero no se mueven, y cuando se inclina más, se mueven de golpe y muy rápido, haciendo caer el segway.
    Pero tus motores también son de 50:1, por lo que me gustaría que me comentases si sabrías que es lo que falla en mi segway.
    El algoritmo de pid he estado horas intentando calibrarlo, pero no he podido (por lo que supongo que el problema está en algo diferente).

    Gracias!!

    • Hola Dani,

      No es fácil ajustarlo: centro de masas, punto de equilibrio, PID… (y aún estando ajustado a la larga de termina desestabilizando)
      No comprendo lo de la “zona muerta”. ¿Te refieres al backlash? Estos motores tienen un poquito, pero no demasiado.

      Sin ver fotos/videos/código me es imposible orientarte mejor.

      ¡Perseverancia y Ánimo!

      • Dani

        Hola,

        he hecho un par de fotos y algun vídeo para ver si puedes ayudarme a encontrar mi problema. Lo de zona muerta me refiero a que mis motores (aún siendo los mismos que los tuyos), no se mueven cuando el controlador les hace moverse de forma lenta (y hacen ruido, como se oye en el video). Los motores solo se mueven cuando la velocidad que se les pide pasa un umbral de velocidad mínima, y esa velocidad mínima es tan alta que sacude el segway y cae.

        Dos fotos para que veas como está hecho el segway:
        https://www.dropbox.com/sc/6qms956bmlzdirl/O5vIJmAtQ4
        https://www.dropbox.com/sc/7v3gxfpw6agd9bs/vejacIUp_5

        El segway con controlador P (con una Kp menor a la necesaria para que puede llegar a oscilar):
        https://www.dropbox.com/sc/muoaepqtqemjr2e/EP0kuRfhSy

        El segway con controlador P (aumentando la Kp ya es capaz de hacer alguna oscilación, pero cae)
        https://www.dropbox.com/sc/s6pdr6rftmubw1e/ooRi_v-A70

        El segway con controlador PD (la mejor combinación Kp y Kd que puedo encontrar)
        https://www.dropbox.com/sc/qjt9mllz1h0yli2/8G83hG3Zca

        Como ves, responde muy bruscamente. Pensaba que necesitaría unos motores con más reducción, pero al usar tu los mismos no debería ser así.

        Te adjunto también mi código por si le quieres echar un vistazo. La IMU proporciona cada unos 20ms aprox. un nuevo ángulo pitch, que leo a través del serial.
        https://www.dropbox.com/s/mby27wy0oqo3gx9/mini_segway.ino

        He intentado comentar el código para hacerlo entendible, pero si hay algo que me quieras preguntar te lo respondo!

        Muchas gracias!

      • Ok! Lo “encolo” y en cuanto tenga un hueco este finde lo reviso!

      • En un vistazo rápido a las fotos, me fijo que tienes las pilas (pesan bastante) abajo de la estructura. En un péndulo invertido cuanto más alto esté el centro de masas “más tiempo de respuesta” tienes, y se controla mejor. Intenta mantener un lápiz vertical con un dedo y luego inténtalo con la escoba ¿ves la diferencia? Yo sin dudarlo colocaría las pilas en la parte de arriba de la estructura.
        Por otro lado, estás seguro que los motores están girando en el sentido correcto. En el video no lo aprecio bien. Recuerda que las ruedas deben girar hacia el lado que se está cayendo el robot.

        Lo que si es seguro es que tienes mal escalado el control de los motores. No he utilizado ese driver pero comprueba que lo estás manejando bien. Esos motores pueden y deben ir más lentos.

        También tienes que encontrar la inclinación exacta para la que tú balancing está en equilibrio. Esto depende la distribución de masas del aparato, en mi caso estaba en 86º.
        ¿Qué es la cajita blanca a la derecha Nano?¿Un bluetooth?

        Pero creo que estás cerca. En los videos se ve “potencial”. Hay que trabajar un poco más, pero vas por el buen camino.

        Pon en el suelo una toalla o alfombra: ralentiza los movimientos y será más fácil que de controlar.https://madebyfrutos.wordpress.com/wp-admin/edit-comments.php?p=985&approved=1#comments-form

  31. Dani

    Disculpa por abrir un nuevo comentario, pero no me aparece la opción de responder en tu respuesta.
    Antes que nada, agradecerte que te hayas mirado mi proyecto. A ver si conseguimos que acabe funcionando.

    Lo de las pilas la verdad es que siempre había pensado que cuanto más abajo esté el centro de masas, más estable es. Y supongo que realmente eso es así, pero no había pensado que un centro de masas elevado hace que el sistema se mueva más lento. Las pilas estan complicadas de mover, pero siempre se puede añadir peso extra encima. Lo tendré en cuenta ;)

    Los motores sí que giran en el sentido correcto, si no ya podría ir plegando xD

    La posición exacta de equilibrio ya la encontré también aproximadamente, eran unos 88º.

    Lo que me preocupa más de todo lo que me has comentado es lo del driver. Ciertamente usando los mismos motores lo más probable es que, o mi driver no sea apto para esos motores, o que no lo esté usando bien. Mi driver concretamente es este, y lo primero que veo es que es bastante más barato que el tuyo, y quizás de peor calidad.
    http://www.pololu.com/catalog/product/2130

    He investigado como usarlo, pero creo que ya lo uso correctamente. Te copio la parte del código donde muevo uno de los motores a ver que te parece:

    void motorA(int signal){

    if(signal>255) signal=255;
    if(signal=0){
    analogWrite(pinMA1,signal);
    digitalWrite(pinMA2,LOW);
    }else if(signal<0){
    signal=-signal;
    analogWrite(pinMA2,signal);
    digitalWrite(pinMA1,LOW);
    }
    }

    Como ves, simplemente obtengo la velocidad escalada de 0 a 255, y pongo uno de los transistores del H-bridge en LOW y el otro con su valor de PWM.

    Entonces la pregunta es, que tiene tu driver que no tenga el mío? En términos de amperaje es parecido, que es para mí lo más importante…

    Tengo también un driver L298, que lo compré por ebay hace tiempo, aunque según la tienda de pololu está desfasado, no sé si servirá:
    http://www.pololu.com/catalog/product/924

    Por cierto tu usas un regulador de tensión. Yo alimento directamente de las pilas NiMH el driver y el arduino. Puede esto perjudicarme?

    Se me olvidaba, la cajita blanca que me comentas es el receptor de un Nunchuk inalámbrico. Una vez estabilize el segway lo controlaré a través del nunchuk. Hay una librería de nunchuk para arduino y es muy fácil de usar. Usa comunicación I2C (pines A4 y A5).

    Saludos

  32. Pingback: Cool DIYs

  33. AJOSERVI

    Hola, es excelente tu proyecto, desde hace tiempo he querido desarrollar uno así. Te hago una pregunta y es sobre la viabilidad de implementarlo con un pic de microchip ya que tengo muchos elementos adquiridos de este tipo. gracias

  34. krish

    can i have dis whole discussion in english…………

  35. Pingback: 尝试做一个自平衡机器人 | 九成的博客

  36. Alessandro

    hola, ¿me das el enlace del controlador de Potencia. Y también el enlace del módem bluetooth?

    ¡muchas gracias

  37. Ozzie

    Hi Frutos,
    Excellent project! I have a question, in your code, I dont see you are using Kalman or complimentary filtering (unless I missed it). I see you just use PID to control the motor but not the “kalmanCalculate” routine. Are you fusioning the Accel and gyro at some point in your code? If not, why you decided not to use filters? – Thank you

  38. Hola
    Me parece excelente tu proyecto, estoy haciendo el mismo, pero encontré un poco caros el sensor y el driver.
    Sin duda quiero comprarme los mismos.
    Tengo muchas consultas.
    – Por ejemplo no entiendo por qué tienes las baterías arriba? Si por lógica el centro de masa debería estar abajo, de esta manera ahorramos electrónica y ayudamos con mecánica…

    – El bluetooth veo que es opcional y veo q tú lo usas para recibir información en tiempo real. Me puedes decir cómo hacerlo? Que programa uso?

    – Veo que usas el Pololu Qik2sv1 que usa el driver TB6612FNG (mucho más fácil y barato de conseguir) desde el arduino envías señal pwm desde dos pines al tx y rx del Qik2sv1 esta misma señal me funcionara con el TB6612FNG y usar dos pines más para la dirección?

    – Y si me recomiendas si o si usar el Qik2sv1 me podrías decir por qué de la manera mas técnica posible?

    – Que batería me recomiendas? Veo que aparte de la batería tienes algo más arriba… no logro ver de qué se trata.

    – Usare el arduino uno. Ando corto de presupuesto. No debería tener problemas?

    – Me puedes decir de manera más técnica para que sirven los botones, dices que es para cambiar el algoritmo y la calibración. puedes ser más específico?

    Disculpa tanta pregunta es que tengo muchas ganas de hacer el proyecto pero no quiero gastar tanto dinero, y volver a comprar partes o comprar cosas al extranjero cuando las puedo comprar en mi país…
    Espero tu respuesta Gracias.

  39. Pingback: Steady Devices with PID

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 43 seguidores

A %d blogueros les gusta esto: