Go Down

Topic: Incompatibilidad servos y LCD? (Read 1 time) previous topic - next topic

juanvivo

Tengo conectado a un arduino duemilanove 2 servos. Uno en el pin 8 y otro en el 9. Ademas tengo conectado un LCD 2x16 que controlo con liquid crystal en las siguienetes entradas:

LiquidCrystal lcd(7, 6, 5, 4, 3, 2);

Tambien tengo puesto un ethernet shield, que tengo entendido ocupa 13,12,11 y 10.

El caso es que todo funciona correctamente si no conecto los servos. Si conecto los servos, el lcd se llena de caracteres raros, aunque el resto funciona todo bien...

Hay alguna incompatibilidad de pines o similar?? Deberia cambiar algun pin? en los ejemplos que he visto conectan los servos al pin 8 y al 9 sin problema... He probado tambien conectandolos a los pines 9 y 6, con identico resultado.

La alimentacion de los servos y del lcd la hago a traves de un ubec de 5v.


juanvivo

codigo:

Code: [Select]
// include the library code:
#include <SPI.h>         // needed for Arduino versions later than 0018
#include <Ethernet.h>
#include <EthernetUdp.h>
#include <LiquidCrystal.h>
#include <Servo.h>

Servo myservo;
Servo myservo2;
int pos = 0;

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = { 
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192, 168, 1, 177);

unsigned int localPort = 9500;      // local port to listen on

// buffers for receiving and sending data
char packetBuffer[UDP_TX_PACKET_MAX_SIZE]; //buffer to hold incoming packet,
char  ReplyBuffer[] = "acknowledged";       // a string to send back

// An EthernetUDP instance to let us send and receive packets over UDP
EthernetUDP Udp;

void setup() {
 
  Ethernet.begin(mac,ip);
  Udp.begin(localPort);
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("hello, world!");
 
    myservo.attach(9);
    myservo2.attach(8);
}

void loop() {
  // set the cursor to column 0, line 1
  // (note: line 1 is the second row, since counting begins with 0):
  lcd.setCursor(0, 1);
  // print the number of seconds since reset:
  lcd.print(millis()/1000);
 
  for(pos = 0; pos < 180; pos += 1)  // goes from 0 degrees to 180 degrees
  {                                  // in steps of 1 degree
    myservo.write(pos);
    myservo2.write(pos);    // tell servo to go to position in variable 'pos'
    delay (15);                      // waits 15ms for the servo to reach the position
  }
  for(pos = 180; pos>=1; pos-=1)     // goes from 180 degrees to 0 degrees
  {                               
    myservo.write(pos);
    myservo2.write(pos);    // tell servo to go to position in variable 'pos'
    delay (15);                     // waits 15ms for the servo to reach the position
  }

  int packetSize = Udp.parsePacket();
  if(packetSize)
  {
    Serial.println(packetBuffer);
  }



}

Sergegsx

cuanta corriente da tu fuente? como la conectas?
como conectas los servos? foto?
te recomiendo que te hagas un programa sin nada relacionado con ethernet, solo con lcd y 1 servo. hazlo funcionar y luego añade otro servo, yluego ethernet.

juanvivo

Alimento el arduino y el ubec con una lipo de 1000 mah. El arduino mediante el conector de alimentacion. El ubec es de 5 A. El positivo y la masa de los servos van a la salida del ubec. La señal de cada uno de los servos a las patillas 8 y 9. Las patillas 1 y 2 y las 15 y 16 tambien van directamente al ubec.

Os pongo la foto pero me parece que va a ser poco aclaratoria.

En principio deberia funcionar?

Sergegsx

5voltios o amperios? En cada sitio has puesto una cosa.
Si son 5v no debes conectarlo ahi ya q es demasiado poco, neceditas minimo 7v.si son 5v tienes q conectarlo al Vin.  Mira en la documentación de Arduino

juanvivo

Son correctas las dos cosas. La salida del ubec para alimentar servos y lcd es de 5v y soporta 5 amperios. Pero el arduino no esta conectado al ubec, esta conectado directamente a la lipo de 1000 mah.

Heke

En la foto no distingo...

Mejor pongas el esquematico de alimentaciones, tiene toda la pinta que hay algo mal en alimentacion, no tiene pinta de nada de pines ni configuracion.

¿el ubec con que lo alimentas o va directo a 220v?

CUIDADO !! MIS POST NO SON APTOS PARA MENORES. SI ERES MENOR DE 14 AÑOS DEBES DE LEERLOS ACOMPAÑADO DE UN ADULTO

juanvivo

lo alimento con la lipo, igual que el arduino.

Heke

#8
Apr 12, 2013, 12:58 pm Last Edit: Apr 12, 2013, 01:03 pm by Heke Reason: 1

lo alimento con la lipo, igual que el arduino.


De cuanto es la LIPO y me refiero a voltage no amperios?

El ubec supongo que es un regulador de voltage, un step down verdad?

Por eso insisto de nuevo en la pregunta:
Quote
Mejor pongas el esquematico de alimentaciones, tiene toda la pinta que hay algo mal en alimentacion

CUIDADO !! MIS POST NO SON APTOS PARA MENORES. SI ERES MENOR DE 14 AÑOS DEBES DE LEERLOS ACOMPAÑADO DE UN ADULTO

juanvivo

La lipo es 3s, de 12v.

El ubec es un regulador de voltage con filtros anti ruido. El que uso es este: http://www.hobbyking.com/hobbyking/store/__4319__TURNIGY_3A_UBEC_w_Noise_Reduction.html

Estoy fuera de casa, el domingo cuando llegue hago y cuelgo un esquema, pero vamos, hay poco error posible. Negativo de salida del regulador a los negativos de servos y lcd. POsitivos a positivos de servos y lcd. Conexion directa de la lipo 12v al arduino.

Heke

Por lo que dices, el arduino esta libre de ruido, ya que la alimentacion tiene que pasar por el regulador y sus condensadores de filtro.

El LCD no esta libre de ruido pues lo tienes conectado a los servos, el ubec ese esta muy bien que sea antiruidos pero los ruidos se los metes en la linea de salida.

Si hubieras dedicado el ubec solo para los servos, seria genial.

El lcd lo puedes alimentar de los propios 5v del arduino asi separas alimentaciones.
CUIDADO !! MIS POST NO SON APTOS PARA MENORES. SI ERES MENOR DE 14 AÑOS DEBES DE LEERLOS ACOMPAÑADO DE UN ADULTO

juanvivo

ok, probare eso cuando vuelva, alimentar de una fuente distinta servos y lcd, a ver que pasa.

Por que en principio no debe ser por temas de pines incompatibles con servos, verdad?

Go Up