Robot Zero. Velocista para principiantes.

 

Si has visto algún concurso de robótica y quieres participar, o estás interesado en construir un robot seguidor de línea quizás este proyecto pueda ayudarte. Construcción detallada de un robot velocista básico, fácil de hacer y de bajo coste, para iniciarse en esta prueba. Aunque ya está todo dicho en el proyecto Robot Zero, vuelvo a hacer un pequeño resumen aquí con la versión final. 

Uno de los proyectos que tenemos en común varias personas en el C.I.r.E. es el desarrollo de robots velocistas, por lo que llevamos ya meses hablando sobre el tema y discutiendo ideas. Intentando sintetizar parte de las ideas subo aquí mi versión final con la que cierro el proyecto de robot velocista de iniciación, a no ser que me haya equivocado en algún pin del pcb o similar dejo aquí el mundo de los velocistas. 

No soy experto en el tema y sólo he ido a un par de concursos, a falta de información disponible espero que a alguien que quiera ir a un concurso y sepa aún menos que yo del tema le pueda ayudar. Eso sí no garantizo el funcionamiento de nada, sólo pongo lo que a mi me ha funcionado, por lo que si alguien lo monta que lo haga según su criterio. 

Una opción es comprar el velocista entero directamente, en internet se pueden encontrar algunos robots velocistas para comprar. No lo recomiendo ya que pierde toda la gracia el asunto, nos dan todo hecho y la mayor parte del programa, por lo que lo único que hay que hacer es darle al botón. Y supongo que en los concursos no admitirán su participación, ya que el mérito del que lo lleva es mínimo y por tanto poco digno de ser premiado. 

Lo primero a la hora de montar un robot es elegir los componentes y es donde toda persona que quiere hacer su primer robot encuentra la primera dificultad, qué motor elegir, qué sensores, etc.. Lo mejor que he encontrado son los componentes de Pololu, por un precio muy razonable encontramos todos los componentes necesarios para construir un robot que no lo haga mal en los concursos, no vamos a ganar pero lo mismo podemos pasar la primera clasificatoria, lo que sería un resultado satisfactorio para muchos principiantes. 

Mi elección de componentes es la siguiente: 

Podemos elegir dos motores para el proyecto, si tu objetivo es hacer un primer robot y te conformas con que funciones recomiendo la opción B, si tu objetivo es intentar ir lo más rápido posible recomiendo la opción A. El problema de la opción A es que son motores que consumen mucha intensidad y existe la posibilidad de quemar el DC-DC, es muy poco probable quemarlo, pero la posibilidad está ahí, para mi gusto son los mejores motores que podemos comprar por ese precio. Con la rueda seleccionada y la opción B se pueden alcanzar velocidades sobre 2 m/s, mientras que con la opción A podremos alacanzar los 4 m/s. 

En total por unos $122.66 tenemos todos los componentes necesarios para el velocista, a lo que habría que sumarle unos $10-15 aproximadamente en componentes para unirlo todo. Pongamos el proyecto completo sobre unos €100-110 al cambio en material. Los componentes se encuentran en dos tiendas y los gastos de envio de cada una están entre $10 y $15 por correo normal y suelen tardar 7-12 días, he realizado pedidos muchas veces y siempre llegan y no suelen caer en aduanas. 

Aún así si queremos comprarlo todo en un sólo pedido en http://www.robotshop.com/eu econtramos todos los componentes, aunque sale más caro ya que como toda tienda te hacen el cambio $1 = €1, por lo que la mayoría de las veces sale mejor comprar directamente en $$. 

Para unir todos los componentes tenemos dos opciones: usar un pcb que a la vez sirva de base del robot para conectarlo todo, o usar un pcb/placa de topos que poner en una base que fabriquemos. Pongo foto de las dos opciones: 

 

La mejor opción de ambas para nuestros objetivos es la de construir un base sobre la que poner el pcb, ya que nos va a permitir tener un robot versátil al que le podemos poner distintas bases con diferente longitud y anchura, lo que nos permitirá probar y experimentar con diferentes configuraciones y adaptarnos a los circuitos que nos den en los concursos. Por ejemplo en un circuito con curvas con un radio grande y rectas largas nos puede interesar llevar una base más larga y ancha, mientras que si nos dan un circuito con muchas curvas pequeñas y poca recta puede ser mejor opción una base pequeña. Además las dimensiones del robot dependen de las inercias y la fuerza de rozamiento del robot que nos adhiere al suelo, por lo que muchas veces la única forma de encontrar las dimensiones óptimas es probando distitnas bases. 

Si montamos todo el robot en un pcb pues no podremos cambiar sus dimensiones, los robots que venden hechos vienen montados en un pcb ya que es más fácil integrar todo y supongo que más barato de fabricar, el ahorro de peso es mínimo ya que la base en plástico pesa más o menos igual que el pcb. Por lo que para un primer robot con el que aprender y experimentar la mejor es tener bases intercambiables. 

La idea final es tener algo como ésto, un robot que montar sobre distintas bases. 

 

Por lo que lo primero podría ser empezar a construir la base, para ello nos hacemos una plantilla a mano o con el pc que pegamos sobre un trozo de PVC expandido o forex de 3mm, con un punzón marcamos los agujeros de los motores ( han de ir en la plantilla ya que deben quedar bien alineados) y con una cuchilla cortamos y marcamos en el PVC la plantilla, pasando luego a recortarla y hacer el resto de taladros, el PVC expandido de 3 mm se puede cortar y trabajar a mano. 

Adjunto un par de plantillas de bases de ejemplo (las dimensiones de los robots en los concursos máximas son de 30 cm de largo y 20 cm de ancho) y una foto del proceso para realizar la base. 

Base 1

Base 2. 

Las dimensiones de la base para mi gusto no son las ideales, pero son las que he probado. 

 

La otra parte que necesitamos para unir los componentes es realizar un pcb o utilizar una placa de topos como explicó Guillermo en la entrada anterior. Además esta placa nos servirá para pegar con cinta de doble cara la batería elegida, de tal forma que quede por debajo del robot, lo que proporciona un centro de gravedad lo más bajo posible. 

La placa de la electrónica se puede ver aquí (click para mayor detalle): 

 

Las características con los componentes montados serían las siguientes: 

  • 8 entradas digitales de senores ó 6 analógicas en los sensores centrales (no he querido desoldar el potenciometro del ADC para poner los 8).
  • Pin para encender y apagar los sensores y así ajustar el nivel de luz que emiten.
  • Dos diodos leds.
  • Un pulsador para dar la salida, calibrar unos sensores RC, etc..
  • Dos interruptores para seleccionar distintas estrategias en el concurso, fundamental para cambiar la velocidad contra un oponente, o arriesgar más si hemos perdido la primera ronda.
  • Un dc-dc que nos proporciona una tensión de referencia fija para la velocidad de los motores, por lo que facilita el algoritmo de control.
  • Un conector con salida de 5V y pines TX y RX de la USART del microcontrolador, para conectar un módulo de comunicaciones si queremos mandar datos del robot al PC.
  • Duración de la batería: 28 minutos (ciclo de trabajo 160/255, Vmed = 215 cm/s en circuito de prueba).

Si usamos los motores de alta intensidad el DC-DC lo podemos quemar si no ponemos el condensador electrolítico que está a la altura del regulador, o si lo ponemos de un valor pequeño. Aunque es el condensador del montaje típico de cualquier regulador disipativo está proporcionando el pico de intensidad necesaria a los motores cuando su f.c.e.m. es baja. 

Lo llevo con un valor de 22 uF y es suficiente para que los motores vayan a velocidad altas. Hice la prueba de quitar el condensador para ver si el dc-dc cortaba ante una intensidad mayor de la que puede dar (no sé que integrado lleva) y se acaba quemando, ya que los motores HP pueden tener picos de hasta 1.6 A por motor y el DC-DC sólo admite 2 A de entrada. Poniendo este condensador (una vez visto se podría poner más cerca del dc-dc o duplicar) no deberiamos tener problemas de quemar el dc-dc para una buena velocidad del robot. Con los motores de baja intensidad no hay problema ya que sólo consumen 0.36A como máximo a 6V. 

Para conectar la placa de control y el dc-dc ponemos una tira de pines hembra, donde los insertaremos, de esta forma podemos sacar la placa para utilizarla en otros proyectos y el dc-dc para ajustar la tensión de salida a distintos valores según los motores a utilizar. Si usamos los motores de alta intensidad lo pondremos sobre 5.5-6.5 V y si usamos los de baja podemos ponerlo a 9V para sacar más par y velocidad de ellos. 

Los conectores de la batería, tira de pines que se ven en la imagen, botones y demás también lo podemos comprar en Pololu (cuanto mayor el pedido mayor la posibilidad de aduana), aunque en cualquier tienda física de electrónica se pueden encontrar los componentes a un precio razonable. 

El esquema para unir toda la parte de la electrónica (click en la imagen para más detalle), si todos los pines están bien asignados (no me haya confundido en alguno ya que no lo he repasado) así se quedaría. 

C1 y C2 son los condensadores electrolíticos de 22 microFaradios, R1 R2 y R4 470 Ohmios, R10 R7 y R8 330 Ohmios, R3 R5 y R6 15K, un regulador disipativo de 5V mirando su caída, si sacamos del dc-dc 9V podríamos poner un 7805, pero sacando sólo 6V pues mejor poner uno con un caída de tensión menor como un LF50ABP, L4941BV, es decir cualquier ldo. Los componentes SMD 1206. 

Los componentes montados en el pcb y el fotolito


 

 

Montamos el pcb y lo ponemos en la base del robot, para conectar los motores se pueden poner un par de conectores o soldar los cables directamente. Lo siguiente es pegar la batería con cinta de doble cara al pcb y hacer un agujero para pasar el cable. 

 

 

Colocamos la rueda loca, podemos usar unos tornillos para fijarla o pegarla directamente aunque ésto signifique tener que usar una por base. Por último colocamos la placa de sensores haciendo los correspondientes agujeros para pasar los tornillos, y hacemos el cables para unir los sensores con la placa de electrónica. 

Respecto a la placa de sensores que compramos hay que cambiar o quitar unas resistencias, ya que los llevamos muy pegados al suelo y vienen pensados para una mayor distancia. 

 

En la imagen superior se puede ver como se ha soldado una resistencia de 100 Ohmios (101) y desoldado dos resistencias, esas dos resistencias en paralelo vienen para limitar la corriente de los diodos, podemos quitar una o quitar las dos y soldar una donde aparece en la iamgen de mayor valor. Aunque no he probado muchos valores una resistencia de unos 82 ohmios podría funcionar bien, depende, ya que algunas placas de Pololu nos la dan con resistencias de 43 Ohmios y otras con resistencias de 66 Ohmios en los diodos. Otra cosa que hemos podido comprobar es que estos sensores son terribles para hacer lecturas en analógico, ya que su orientación (inclinación) afecta enormemente a la lectura, por lo que si el robot vibra u oscila, o la pista no es totalmente lisa podemos encontrar problemas, pero bueno esto se ve bien cuando desarrollemos la parte de la telemtría en el C.I.r.E., que supongo que será lo siguiente. 

Por lo que todo montado queda una cosa así: 

 

 

 

Esta sería la parte de la base y ahora falta la parte de la programación, adjunto un programa sencillo para estos robots que sigue la línea sin oscilar a una velocidad constante. Al programa no se le ha dedicado tiempo, es el primero que hicé y ha ido pasando de robot a robot porque parecía que funcionaba, por lo que puede tener fallos por algún lado. La idea es muy sencilla, medir la distancia de la línea al centro de los sensores, medir la velocidad con la que se aleja o se acerca la línea al centro de los sensores, multiplicar estas medias por unas constantes que utilizamos para ajustar la respuesta del robot, sumarlas y convertir la cantidad obtenida en una diferencia de velocidad entre los motores, lo que provoca el giro. 

Programa

Pongo un par de videos en los que se puede ver el funcionamiento del programa, el segundo de ellos a cámara lenta (a partir del segundo 30). El robot va montado en la base más larga y la tensión de salida del dc-dc es 6.4 V. 

  

Cámara lenta (segundo 30). 

  

El robot hace una velocidad media de 210 cm/s en los videos. Creo que en el último concurso hace un par de meses el robot ganador iba a una velocidad media de 260 cm/s, aunque no se puede comparar porque las velocidades dependen de cada pista considero que con esta velocidad podemos pasar la ronda clasificatoria y llegar a las carreras robot contra robot. No vamos a ganar ya que podemos encontrarnos robots en el que sólo uno de sus motores vale más que todo nuestro robot junto, y además están muy probados y desarrollados ya que sus creadores llevan mucho tiempo yendo a todos los concursos que pueden. 

Esta es mi idea de un robot en el que se ha intentado hacer y explicar lo básico: selección de componentes, hardware y programa sencillo para seguir la línea, más información sobre el desarrollo aquí

Aún queda hacer toda la parte de programación que es lo complejo y donde se mejoran tiempos y se obtienen resultados. Las ideas a aplicar y estrategias son muchas,  no me voy a poner con ello ya que no tengo intención de pasarme por ningún concurso, en la situación actual no merece la pena y hay otros proyectos a los que dedicar tiempo en el C.I.r.E. que queremos ir haciendo. 

A la gente que llegue a este mundo por primera vez sólo recomendarle que comparta sus avances, es la única forma de aprender y hacer que este hobby sea accesible y cada vez los concursos vayan a más. Intentar ser competitivo en la situación actual es totalmente absurdo, no hay gente suficiente para ello, de nada vale ganar un concurso del que pasado unos meses nadie se acuerda. En fin no empiezo que no paro XD, puede que algún día nos dejemos de una comunidad de Bobótica y tengamos una de Robótica, pero para ello hay que hacer algo más que coleccionar recortes de prensa. 

Espero que este intento de hacer y explicar un robot básico sea de utilidad para alguien, que unas cuantas versiones de prueba y prototipos me ha llevado.. 

 

Visitas :131038

Both comments and pings are currently closed.

39 Responses to “Robot Zero. Velocista para principiantes.”

  1. Oscar says:

    Sólo con lo que te has gastado en robots para probar cuál era mejor y la documentación que has generado ya para mi eres una referencia a seguir en el mundo de la robótica nacional e internacional.

    B-R-A-V-O

  2. Raúl says:

    Gracias, no sabes realmente las sensaciones que causa leer un artículo único para los apasionados de la robótica. Estoy convencido de que los lectores no se van a quedar prendados sólo con la idea de un robot modular de bajo coste que supera la barrera de 2 m/s.

    Ve pensando en cómo transportarlos.

  3. _Silent says:

    Pelotas ¬¬

    Enhorabuena jota, un grandísimo curro que por fin dio sus frutos.

  4. Guillermo says:

    Está genial, tiene mucho mérito exponer de forma tan clara y precisa como construir un robot que hasta hace nada hubiera sido de los más punteros.

    Además junto con el software, el sistema de considerar por un lado los componentes y por otro el chasis ofrece la posibilidad de que quien utilice este diseño para iniciarse pueda experimentar con nuevas configuraciones y ver hasta donde se puede llegar con este hardware.

  5. Jorge says:

    Gracias por los comentarios, si alguien más quiere un pcb que me lo diga.

  6. pelayator says:

    Gracias a tí por la generosidad!
    No imagino el esfuerzo que te ha llevado todo esto.
    Es agradable conocer a gente que comparte conocimientos y tan predispuesta a echar una mano para que los que empezamos con este sano vicio de la robótica demos nuestros primeros pasos. Lo dicho macho, eres una referencia.
    Pelayo

  7. […] participar, puedes pensar en hacer algo como el Robot Zero que hemos hecho en el C.I.r.E.: enlace, no lo hemos llevado a ningún concurso pero podría pasar la primera clasificatoria si no sube […]

  8. andi says:

    Hey first of all this is the fastest and easiest line follower so thank you very much.But can you tell me what modifications should be done so that robot will be able to follow white line on black surface? Thanks in advance.

    • Jorge says:

      Hello, thx for the comment.

      Use the == operator instead of != to read the sensors.

      Change the next lines:

      in the function obtener_errorp(void):

      if(((PINC & 0x04) == 0) && ((PINC & 0x08) == 0))
      {
      errorp=0;
      return(0);
      }

      if((PIND & 0x10) == 0) //I3 PD4 -7
      {
      errorp = errorp – 0x07;
      contador_sensor++;
      }

      if((PINC & 0x01) == 0) //I2 PC0 -5
      {
      errorp = errorp – 0x05;
      contador_sensor++;
      }

      if((PINC & 0x02) == 0) //I1 PC1 -3
      {
      errorp = errorp – 0x03;
      contador_sensor++;
      }

      if((PINC & 0x04) == 0) //I0 PC2 -1
      {
      errorp = errorp – 0x01;
      contador_sensor++;
      }

      if((PINC & 0x08) == 0) //D0 PC3 +1
      {
      errorp = errorp + 0x01;
      contador_sensor++;
      }

      if((PINC & 0x10) == 0) //D1 PC4 +3
      {
      errorp = errorp + 0x03;
      contador_sensor++;
      }

      if((PINC & 0x20) == 0) //D2 PC5 +5
      {
      errorp = errorp + 0x05;
      contador_sensor++;
      }

      if((PIND & 0x80) == 0) //D3 PD7 +7
      {
      errorp = errorp + 0x07;
      contador_sensor++;
      }

      in the function Obtener _errord(void):

      if(((PINC & 0x04) == 0) && ((PINC & 0x08) == 0))
      error=0;

      else if((PINC & 0x08) == 0) //D0 PC3 +1
      error = 1;

      else if((PINC & 0x04) == 0) //I0 PC2 -1
      error = -1;

      else if((PINC & 0x10) == 0) //D1 PC4 +3
      error = 3;

      else if((PINC & 0x02) == 0) //I1 PC1 -3
      error = -3;

      else if((PINC & 0x20) == 0) //D2 PC5 +5
      error = 5;

      else if((PINC & 0x01) == 0) //I2 PC0 -5
      error = -5;

      else if((PIND & 0x80) == 0) //D3 PD7 +7
      error = 7;

      else if((PIND & 0x10) == 0) //I3 PD4 -7
      error = -7;

  9. Jorge says:

    posible error en el código, en obtener_errord()

    //Cálculo de la velocidad media del error.
    if (error == error_old)
    {
    tic = tic + 1;
    if(tic > 30000)
    tic = 30000;
    if(tic > tic_old)
    errord = (errord_old*tic_old)/tic; //faltaba multiplicar *tic_old

    Parece que funciona mejor con el error…

  10. Israel says:

    Hola,

    Yo compré el mismo regulador que mencionas de Pololu y al probarlo hoy me lo he cargado…

    Lo he probado con una fuente de 3.3v y se ve que he sobrepasado el rango de salida porque al girar el potenciómetro ya solo me saca por la salida lo mismo que en la entrada…

    El caso es que volver a pedirlo a Pololu me sale por una pasta y encima se me echa el tiempo encima… ¿conoces alguna alternativa barata o alguna tienda en Madrid donde pudiera conseguirlo?

    Muchas gracias por la ayuda.

    • JM says:

      Hola, qué has hecho para cargartelo?

      La única forma de romperlo es haciendo un cortocircuito en su salida o pidiendo más corriente de la que pueda dar, en el robot zero se pone un condensador para que aguante los picos de los motores.

      Si no tenías carga, es decir el regulador no alimentaba nada estará bien.

      Para ajustar la salida debes hacerlo conectando una resistencia entre su salida y tierra de 1 K creo recordar, lo especifica en la página, si no la pones te puede pasar lo que dices.

      En Madrid la única tienda que he visto que tienen componentes de pololu es Jugetrónica/Robotrónica:

      http://www.robotronica.com/nueva_web/informacion/contactar.php

      Contacta con ellos a ver si tienen el regulador o te lo pueden traer, ya que tienen bastantes cosas de Pololu.

      Si no tienen o no te lo pueden traer en un tiempo razonable, dilo y miramos si tenemos alguno de reserva sin abrir.

      Es casi seguro que yo tenga alguno por casa nuevo sin usar, si te pasas algún viernes por la tarde que quedemos para los robots por el Medialab Prado, te lo damos al precio de la página de Pololu.

      Saludos.

      • JM says:

        Resistencia entre salida y tierra que lo había puesto mal.

        Setting the output voltage

        The output voltage can be adjusted using a meter and a light load (e.g. a 1k resistor). Turning the potentiometer clockwise increases the output voltage. The output voltage can be affected by a screwdriver touching the potentiometer, so the output measurement should be done with nothing touching the potentiometer. The potentiometer has no physical end stops, which means that the wiper can be turned 360 degrees and into an invalid region in which the output voltage is set to approximately 2.5 V (for both the 2.5 V to 9.5 V and 4 V to 25 V versions). The input voltage should not exceed the output voltage, so we recommend setting the output voltage with the input voltage set to around 2.5 V.

        Once the input exceeds the output set point, the output voltage will rise with the input voltage since the input is connected to the output through an inductor and a diode.

      • Israel says:

        Hola JM,

        Pues básicamente hice el imbécil y me puse a probarlo tomando suposiciones en lugar de leerme la web…

        Conecté la entrada (3.3v), GND y puse un multímetro en la salida para regularla, sin la resistencia entre salida y tierra.

        Giré un poquito el potenciómetro y la salida subió a 4v y algo, giré un poquito más y adiós regulador…

        Supongo que alcanzaría una zona “fuera de rango” donde supuestamente la tensión de salida es 2,5v y, al ser menor que la de entrada, pues me cargué de la forma más tonta el circuito.

        Anoche escribí a Juguetrónica por si acaso tenían el regulador, a ver si hay suerte…

        Sino os agradecería muchísimo si pudiérais venderme uno de los vuestros, pues mi mayor problema ahora es el tiempo (quería tener las placas listas para este fin de semana, pero ahora no sé si seguir adelante con ellas o buscar otro componente lo cual me obligaría a parar el diseño hasta saber su forma física).

        Saludos

        • Israel says:

          Pues me acaban de responder de Juguetrónica y no lo tienen en stock, según me dicen si se lo encargo tardarían como un mes… así que lo descarto.

          • JM says:

            Hola, intenta volver a probarlo con la resistencia de carga, es muy posible que no esté roto y esté bien. Recuerdo haberlo metido tb en esa zona y no le paso nada.

            Si no te funciona, el viernes por la tarde solemos quedar en el Medialab Prado donde ponemos una pista de velocistas, yo tengo uno nuevo sin usar.

  11. Israel says:

    Hola de nuevo.

    JM, lo de la resistencia de carga (así como usar una tensión de entrada de menos de 2,5 voltios) lo probé anoche después de cargármelo (me leí demasiado tarde la descripción de la web de Pololu…) sin cambio aparente :(

    Si vas el viernes a Medialab me harías un gran favor si me lo pudieras llevar para así terminar la placa de control el fin de semana. Tan solo dime el precio para llevar el dinero y sobre qué hora estarás.

    Por cierto, ¿la entrada es libre, hay que mostrar algo? No sé exactamente qué es Medialab…

    ¿Podrías darme un email o algo para ponerme en contacto contigo, por favor?

    Muchas gracias por toda la ayuda :)

    • JM says:

      El viernes te lo llevo, el precio el de la página de Pololu, pongamos 9 € al cambio.

      A no ser que hayas entrado en la zona de 2.5V alimentando desde 5V, doblando la entrada como especifican, no se debería romper, no esperaba que fuesen tan sensibles.

      A Pelayo le paso algo similar con un regulador, no sé que hizo que se lo cargo y le dejo de funcionar, y unas horas después o al día siguiente le funcionaba otra vez, así que no sé, yo haría un último intento.

      El Medialab es un sitio del Ayuntamiento de Madrid para todo el que quiera ir, la entrada es totalmente libre, no hay que enseñar nada. Los viernes por la tarde está dedicado a grupos que hacen cosas de electrónica, programación, y otras muchas cosas. Por lo que hay soldadores, multimetros, ordenadores, espacio, etc.. El sitio ideal para hacer cosas de estas.

      Mi correo es , en el foro solemos establecer las reuniones, solemos estar entre las 18:30-20:30, cualquier cosa mandame un correo o abre un hilo en el foro.

      Saludos.

  12. Israel says:

    Hola de nuevo,

    Aunque mañana nos veamos, aprovecho para preguntar unas cosillas no sea que se me olvide…

    Me he fijado en las fotos que entre los bornes de los motores tienes soldado un condensador cerámico. ¿Qué valor has usado?

    Por otro lado, comentas que para evitar quemar el DC-DC usando los motores HP hay que poner un condensador electrolítico de 22 uF cerca de éste, pero no lo veo ni en las fotos ni en el fotolito de la placa… ¿Podrías indicarme donde ponerlo exactamente? ¿Entre GND y Vout del regulador?

    Muchas gracias

  13. Israel says:

    Mirando la foto ampliada parece que los condensadores de los bornes de los motores no son cerámicos sino de tántalo, ¿no?

  14. JM says:

    Hola,

    Los condensadores no son necesarios que los pongas, son condensadores cerámicos de 100 nF que se ponen para quitar ruído, en la mayoría de los robots los llevamos sin condensadores y no hay problemas de ruídos. En los últimos robots que he hecho no me he molestado en ponerlos, si una vez montado el robot tienes problemas de reseteo del micro si habrá que mirar de ponerlos, esos e incluso otros entre cada borne del motor y la carcasa.

    El condensador para el dc-dc es el electrólitico de más abajo del todo (se ha quedado un poco lejos de donde debería estar en le pcb). Va entre la salida del dc-dc y tierra. Pon un valor de unos 47 uF, incluso puede ser mejor llevarlo más grande, depende del peso del robot y de los picos de tensión que veas.

    Mañana ves como tenemos hechos los robots, también hay otros hechos de manera distinta que funcionan bien.

    Saludos.

  15. Israel says:

    Mmm, sigo sin verlo… Te refieres a los marcados en el diseño como C1 y C2?

    • JM says:

      Si, los dos condensadores electrolíticos que están a la izquierda del regulador disipativo, sería el c2 del esquemático, que va a la entrada del regulador disipativo (salida del dc-dc) y a tierra.

      Lo ideal es que el condensador estuviese más cerca de la baby orangutan, o añadir otro además de ese cerca de la placa del microcontrolador que es donde está el puente en H.

      Puedes situarlo cerca de la alimentación del puente en H (la de los motores) que vayas a usar.

  16. Hola a todos.
    Desde la Asociación de Microbótica de la UVa seguimos vuestro trabajo con atención.

    Estaremos encantaros de conoceros en ROBOLID si os animáis a venir a participar, el próximo 8 de abril.

    http://www.robolid.net

    Un saludo!

    • JM says:

      Hola, gracias por el aviso, la fecha nos pilla muy mal a la mayoría al ser entre semana, pero si alguno puede a lo mejor se acerca.

      Un saludo y que vaya bien el concurso.

  17. Juan Carlos says:

    Quiero ser el primero en felicitaros por vuestra participacion en Cosmobot… Simplemente Espectacular….

    Felicidades

    • JM says:

      Gracias, la verdad es que nos ha salido un concurso mucho mejor de lo que podíamos imaginar.

      Saludos.

  18. Alejandro says:

    Muy interesante el proyecto, se puede aplicar el programa a un pic18F452, en caso q se pueda, que modificaciones tendria que realizar?…Muchas gracias, exelente info!!!

    • JM says:

      Hola, el programa se puede aplicar a un pic18f452, simplemente tendrías que adaptarlo a éste (configurar el hardware del pic según lo requerido). La idea es la misma lo programes en un AVR o en un PIC, por lo general todo lo que puedas hacer con uno lo vas a poder hacer con el otro.

      Lo que has de comprobar al leer en digital es que los pines que uses del PIC como entradas de los sensores sean ST (schmitt trigger), ya que vas a leer en digital, en AVR todos los pines llevan un ST, en el PIC algunos no lo llevan pero también se puede poner un ST externo.

      Para cualquier duda sobre cómo programar un pic, pasate por aquí: http://www.todopic.com.ar/foros/index.php

      S2

  19. paco says:

    Lo primero agradecerte el aporte.
    Tengo un velocista que hice hace dos años para un concurso (por llamarlo de alguna forma) de un curso de verano de robótica, tiene 12 sensores en vez de los 8 de la placa de pololu. Si quisiera adaptar tu código a ese robot tendría que añadir algo así??
    if((PINC & 0xXX) != 0) //I6 PCX -11
    {
    errorp = errorp – 0x11;
    if((PINC & 0xXX) != 0) //I5 PCX -9
    {
    errorp = errorp – 0x09;
    if((PINC & 0xXX) != 0) //D6 PCX +11
    {
    errorp = errorp – 0x09;
    if((PINC & 0xXX) != 0) //D5 PCX +9
    {
    errorp = errorp + 0x11;

    Cambiar todos los error=+/-9 por +/-13.
    Saludos.

    • JM says:

      Hola,

      así es, tienes que añadir cada sensor en pasos de dos en la función que calcula el error proporcional y en la función que calcula la derivada del error, siguiendo el orden de los sensores de cada una de las fucniones.

      Luego tendrás que ajustar las constantes mediante prueba y error para tu robot.

      Saludos.

  20. lainus says:

    hello a tod@s, acabo de bajar esta pagina y algunos de sus enlaces, y a poner en practica se dijo.

  21. Fabian Alfonso says:

    Hola, muchísimas gracias por compartir todo tu tiempo y trabajo desinteresadamente, me has ayudado muchísimo a comprender mejor el control PD, y proximamente deseo construirme mi propio sigue lineas velocista, espero que en el futuro tus proyectos sigan igual de buenos y completos e incluso mejores, gracias y buena suerte!

  22. miguel says:

    dis culpa por a aca no ay componentes de esos pero arme un robot paresido al zero solo que con pic18f4550 y un puente h l293 me gustaria adaptarle el sistema pid sera k me puedas ayudar los sensores estan conectados al analogico 0 al 4 y el puente h al b7,b6,b5 y b2,b1,b0 porfabor espero su ayuda eneybol b7 y b2

    • JM says:

      Aquí tienes el desarrollo completo del robot explicado: http://www.jmnlab.com/robotzero/robotzerov.html paso a paso

      Para preguntar dudas sobre pics tienes los foros de todo pic: http://www.todopic.com.ar/foros/

      Cuando pides ayuda lo mejor es preguntar una cuestión, una duda concreta, si no difícil que te puedan dar una respuesta. Pregunta en ese foro que son expertos en pic, aunque no dberías tener ningún problema en adaptar el código de AVR a PIC en C, aunque eso es algo que deber hacer tú (si quieres).

      Saludos.

  23. EMRE KARCI says:

    hi Show him how to compile the program which

  24. Jorge says:

    http://www.jmnlab.com/robotzero/rzvd4.html

    Para cualquier duda sobre los AVR: http://www.avrfreaks.net, en sus foros podrás preguntar.

    Y por favor, deja de usar el traductor de google para preguntar, ya que se entiende muy mal (he borrado tus comentarios que no hay por donde leerlos).

  25. EMRE KARCI says:

    Build started 24.12.2011 at 19:33:43
    mmcu=atmega328p -Wall -gdwarf-2 -O2 -fsigned-char -MD -MP -MT BlinkLED.o -MF dep/BlinkLED.o.d -c ../BlinkLED.c
    /usr/bin/sh: -Wall: command not found
    make: [BlinkLED.o] Error 127 (ignored)
    mmcu=atmega328p BlinkLED.o -o BlinkLED.elf
    /usr/bin/sh: BlinkLED.o: command not found
    make: [BlinkLED.elf] Error 127 (ignored)
    avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature BlinkLED.elf BlinkLED.hex
    avr-objcopy: ‘BlinkLED.elf’: No such file
    make: *** [BlinkLED.hex] Error 1
    Build failed with 1 errors and 0 warnings…

Subscribe to RSS Feed Follow me on Twitter!