Go Down

Topic: Arduino Mega + 12 Servos + Alimentación Externa? (Read 3484 times) previous topic - next topic

titodavis91

Hola a todos, estoy haciendo un proyecto de Hexápodo en el que utilizo 12 Servomotores y como ya me avisaron necesitaria meterle alimentación externa de corriente. El caso es que no se porqué la placa "cortocircuita" o eso pienso yo, porque me ha pasado de todo:
*Una vez enchufe la placa solo a la corriente con 6V. y se enchufaba, pero no leía el sketch que habia dentro.
*Probe a conectarla primero por USB, entonces si leia el sketch, y luego enchufaba la alimentación. Seguia leyendo el sketch, y probe a desenchufar el USB, y funcionaba. ¿Quiere decir que esta es la forma de "arrancar" arduino para que trabaje con corriente externa?
*¿Como puedo saber que corriente meterle a la placa (tengo un tranformador variable desde 1.5 hasta 12V) y como tengo que hacer las conexiones? ¿Hacen falta resistencias? Gracias por vuestro interés y aportes de antemano. :)

titodavis91

por favor, solo necesito saber si le tengo que meter alguna resistencia para no quemar los servos, saber tambien si se tiene que pone en 5v o en VIN ? y si sabeis porque pasa eso os lo agradezco

chico_del_maiz

#2
Dec 09, 2010, 09:12 pm Last Edit: Dec 09, 2010, 09:25 pm by chico_del_maiz Reason: 1
Hola titodavis91, creo que el problema consiste en la tension de alimentacion, si te ves las caracteristicas del arduino, la tension de entrada en vin (o el conector de alimentacion tipo barrilete) ha de ser entre 7 a 12V, ya que el regulador necesita al menos una tension de 2 voltios entre la entrada y la salida. Tal vez por ello el arduino no consigue realizar el reset.

Summary
Microcontroller ATmega328
Operating Voltage 5V
Input Voltage (recommended) 7-12V
Input Voltage (limits) 6-20V
Digital I/O Pins 14 (of which 6 provide PWM output)
Analog Input Pins 6


Por cierto te aconsejaria que usaras un tension de alimentacion estabilizada de 5V para los servos, con un regulador externo, por que si demandas mucha corriente al regulador del arduino (500mA) lo mas posible es que se te queme.
Si quiere ser conservador coge un servo lo boloqueas para evitar el movimiento y lo mueves, de esa forma puedes medir la maxima corriente del servo (generalmente este dato te lo dan los pdf de los servos buenos), luego lo multiplicas por el numero de servos que esperas se muevan a la vez y ahi tienes tu corriente minima de la fuente, generalmente yo multiplico por un factor de seguridad de 1.2 para la corriente de la fuente.

Perdona que la explicacion sea tan rapida, ahora estoy liado si tienes alguna duda sobre esto, pregunta de nuevo.

titodavis91

Chico del Maiz, muchisimas gracias, la verdad es que me has ayudado muchisimo porque no tenia ni idea por donde seguir. Voy a probar eso. Creo que segun me dices, meto un skech en el que me marque un grado determinado...90º, y entonces lo fuerzo. Lo que tengo que poner es un tester para que me indique la subida de tensión no? y de ese valor, lo multiplico por 12 servos y me dara la que necesita, es eso no? si acaso me marca 10 voltios, y mi fuente pasa de 9 a 12, le pongo 12 y le pongo en el circuito una resistencia, he entendido bien?? Muchas gracias por contestar que estaba desesperado. Voy a toquetear. Si estoy esquivocado espero tu contestación. Gracias!

titodavis91

Vale, he hecho lo del voltaje, y la verdad es que probando con un programa básico, como el BLINK, poniendo el transformador en 7.5 Voltios, y la verdad es que la placa lee el programa, supongo que otra historia seran los servs, pero bueno. Una duda que me surge es que al probar con el tester, ¿Puede que con la alimentación extera, el negativo (hablando en el caso del BLINK) el 'negativo' sea el pin 13 y el positivo sea el VIN?

chico_del_maiz

#5
Dec 10, 2010, 05:19 pm Last Edit: Dec 10, 2010, 05:22 pm by chico_del_maiz Reason: 1
Ayer todo fue muy rapido, te explico mejor:

Tienes que medir la corriente maxima del servomotor (no la tension), para ello tienes que medir poniendo el polimetro en serie y en la escala de mA.
Si la corriente de todos los servos que vayan a funcionar a la vez es menor de 500mA:
1º puedes coger la alimentacion de la placa arduino, del pin VCC, tanto alimentando con una fuente bien regulada de 5 voltios que entre por el conector usb del arduino o bien por el propio pin VCC de la placa.
2º O bien con una fuente de alimentacion que no es necesario que este tan bien regulada de entre 7 a 12 voltios por el conector de alimentacion o bien por el propio pin Vin de la placa.

En caso de que la corriente sea mayor de 500 mA, yo usaria una fuente de 7 a 12 voltios por la entrada del conector Vin o por el pin Vin de la tarjeta arduino y a su vez con esa misma fuente conectaria un regulador (tipo 7805, lm317 o un DC-DC, etc) que alimentasen exclusivamente a los servomotores con 5Voltios.

De todos modos he leido que es para un robot, lo que significa que necesitaras baterias o celulas solares, por lo cual tal vez lo anterior no te sirva para el proyecto final y no te puedo aconsejar nada ya que no he hecho nada a baterias. Pero supongo que usaras baterias LI-PO o Ni-HM que segun su tension necesitaras dc-dc elevadores o reductores de tension para conseguir 5V por lo que no necesitaras reguladores, pero necesitaras saber exactamente el consumo de corriente de los servos y la placa arduino para calcular el valor de Ah de la bateria.

Un saludo, si necesitas algo mas pregunta.

titodavis91

Estoy inmensamente agradecido puesto que aunque en un futuro para la entrega final sea como bien dices, con placas solares o lo que sea, la duda enorme que tengo es si estos 12 motores puedo controlarlos, por lo menos conectarlos y que los pueda mover. Pues voy a ver con el tester en paralelo cuando consume y digo algo. Muchas gracias chico del Maiz. ;)

chico_del_maiz

No!! >:(!  con el tester en paralelo mides tension osea voltios, para medir corriente tienes que cortar el circuito y medir en serie, asi mides corrientes osea amperios.

Si tienes dudas de como medir, busca en san goglee un manual o tutoria de electronica.

De todos modos prueba a conseguir el datasheet del consumo y la tension de funcionamiento del servo, ahi te vienen todos los datos.

Un saludo.

titodavis91

Chico del Maiz, no creas que no lo estoy intentando. Cortando el circuito y poniendo en serie el tester, con los voltios veo que de 5.5 que me marca el tester con el servo bloqueado en 90, si lo fuerzo veo que baja hasta 4, por lo que deduzco que consumira 6.5 voltios no? El caso es que en amperios lo pongo y me marca solo un 1. por eso te doy el dato en voltios. Lo he vuelto a hacer mal no? mira copio las caracteristicas del servo:

SG5010
SG5010 weight- 38g
SG5010       weight- 38g
Dimension 40.2*20.2*43.2mm
Stall torque 5.5kg/cm(4.8V);   6.5kg/cm(6V);
Operating speed 0.2sec/60degree(4.8v);   0.16sec/60degree(6v)
Operating voltage 4.8-6V
Temperature range 0[ch8451]_ 55[ch8451]
Dead band width 10us

titodavis91

Posteo diciendo que he conseguido algo. He conectado un transformador que me traduce el voltaje a 12v. y a 1000 mA. Este me alimenta los 12 Servomotores desde la protoboar(sin pasar por el Arduino). La protoboard tenia contecados los + y GND de todos los servos en la linea de + y - de protoboard. El tranformador tambien conectados a estas lineas. Ademas, de esta linea derivo un cable del - de la proto al GND de Arduino.

EL PROBLEMA, que al parecer los servos en el momento de 'inicializarse' tienen un amplio consumo que hace que los servos hagan locuras como atrancarse.
Por prueba y error porque creí haber quemado mas de uno, fui conectandolos a la linea de alimentacion de la protoboard 1 a 1, y CONSEGUÍ QUE TODOS LOS SERVOS SE MOVIERAN A RAZON DE LO QUE MANDABA LA ARDUINO.

Esta razón no es del todo científica, se que funciona, pero la razón concreta solo la intuyo. Mi nuevo problema es que estoy diseñando una araña con 12 servos que va a tener ciertos sensonres Y ESTOS SENSORES desencadenan NUEVAS FUNCIONES DE MOVIMIENTO. Pues por cada ve que cambien esa funcion de movimiento, los servos vuelven locos otra vez y se atrancan, teniendo que desconectarlos y volverlos a conectar 1 a 1 para que realizen con exito esa nueva funcion.

Esto es una lata y un engorro. sabeis como puedo arreglarlo? Podria ser cambiando estos interruptores por Relés que mandaran una señal desde arduino para cerrar un circuito? Gracias.

Go Up