Ir al contenido principal

Placa de control para seis servos basada en Atmega328 (Arduino)

A la hora de diseñar un robot que utilice varios motores servo, nos encontramos con un problema: hay que alimentarlos y son bastante glotones. Un robot articulado normalmente necesitará al menos cuatro servos, lo cual es un problema ya que, dependiendo del tipo de servos, un Arduino podría no ser capaz de proporcionar la intensidad de corriente necesaria para manejarlos. Hay que alimentarlos aparte, lo que también es engorroso, ya que hay que andar distribuyendo cables de alimentación para cada motor. Hay varias soluciones comerciales, pero como es más divertido hacérselo uno mismo, os presento una placa basada en Atmega328 con seis conectores alimentados para servos.

Placa control servos

Sin más preámbulo, os muestro el esquema y comentamos sobre él.

Esquemático placa de control

El circuito se ha diseñado para trabajar con 9V, y un 7805, junto con el condensador electrolítico C4, se encarga de regular la tensión a 5V. La salida de 5V se distribuye a las patillas 7 y 20 del Atmega328, pero también a los seis conectores de tres pines para los servos (J1 a J6). El bloque del cristal de cuarzo y los dos condensadores cerámicos de 22pF generan la señal de reloj externa de 16 MHz para el microcontrolador (se puede usar el reloj interno y ahorrarnos el cristal de cuarzo y los condensadores, pero el reloj interno es más lento). El resto de pines se ha conectado a una cabecera para poder usarlos según nuestras necesidades. El diseño de la placa de circuito impreso de una sola cara es el siguiente.

Circuito impreso para servos

Se han dispuestos los conectores de Reset, TX y RX juntos y en una zona separada y accesible para facilitar la programación de microcontrolador sin necesidad de sacarlo del zócalo y poder grabar el firmware directamente en la placa. Este es el aspecto de la placa hecha con métodos caseros.

PCB placa control servos terminada

La programación del Atmega328, como ya se ha dicho, se realiza a través de los tres pines Reset, TX y RX, tal y como ya vimos en un artículo anterior. Lo más conveniente es alimentar al Arduino desde la placa de control. Es decir, alimentamos la placa de control de servos y conectamos un cable desde el pin de +5V de nuestra placa a la del Arduino, y lo mismo para la tierra (GND).

El siguiente vídeo muestra un servo conectado al uno de los conectores de tres pines de la placa (pin 9) y controlado mediante un potenciómetro conectado a una de las entradas analógicas del Atmega328.

Comentarios

Entradas populares de este blog

Creando firmas de virus para ClamAV

ClamAv es un antivirus opensource y multiplataforma creado por Tomasz Kojm muy utilizado en los servidores de correo Linux. Este antivirus es desarrollado por la comunidad, y su utilidad práctica depende de que su base de datos de firmas sea lo suficientemente grande y actualizado. Para ello es necesario que voluntarios contribuyan activamente aportando firmas. El presente artículo pretende describir de manera sencilla cómo crear firmas de virus para ClamAV y contribuir con ellas a la comunidad.

Ingeniería inversa de un parche de Microsoft Windows

A estas alturas ya hemos asumido que la seguridad total en Internet es, cuanto menos, un mito. Ningún software está libre de vulnerabilidades, y por mucha auditoría, test de intrusión o pruebas de fuzzing que nos empeñemos en hacer, ninguna metodología puede demostrar sin lugar a dudas que un software es 100% seguro. Ante este panorama, hay dos tendencias mayoritarias a la hora de hacer públicas las vulnerabilidades. Por un lado, están los que piensan que cuando se descubre un fallo ha de hacerse público de forma inmediata. En este escenario, la publicación de una vulnerabilidad es el pistoletazo de salida para una carrera entre el desarrollador para sacar el parche y los "malos" para lograr explotarla. Esta política es conocida como full disclosure . Por otro lado, tenemos a los siguen una política responsible disclosure , que abogan por mantener la vulnerabilidad en secreto hasta la salida del parche por parte del desarrollador. Sin entrar en cuestiones filosóficas que no...

Manejo de grafos con NetworkX en Python

El aprendizaje computacional es un área de investigación que en los últimos años ha tenido un auge importante, sobre todo gracias al aprendizaje profundo (Deep Learning). Pero no todo son redes neuronales. Paralelamente a estas técnicas, más bien basadas en el aprendizaje de patrones, también hay un auge de otras técnicas, digamos, más basadas en el aprendizaje simbólico. Si echamos la vista algunos años atrás, podemos considerar que quizá, la promesa de la web semántica como gran base de conocimiento ha fracasado, pero no es tan así. Ha ido transmutándose y evolucionando hacia bases de conocimiento basadas en ontologías a partir de las cuales es posible obtener nuevo conocimiento. Es lo que llamamos razonamiento automático y empresas como Google ya lo utilizan para ofrecerte información adicional sobre tus búsquedas. Ellos lo llaman Grafos de Conocimiento o Knowledge Graphs . Gracias a estos grafos de conocimiento, Google puede ofrecerte información adicional sobre tu búsqueda, ad...