fbpx

Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

Avisos
Vaciar todo

Pingubot

131 Respuestas
19 Usuarios
0 Reactions
60 K Visitas
furri
Respuestas: 2708
Topic starter
(@furri)
Ardero
Registrado: hace 19 años

Por fin he acabado la versión Pingubot 3.0.

No tengo suficientes palabras para agradecer a Bastian su ayuda pasando el diseño a Eagle en la pingubot 2.0, con lo que integramos una placa con todo incluido, micro y mosfet en una sola PCB.

Despues de aprender a manejar el Eagle de forma acelerada he ido haciendo mis pinitos y como he hecho cambios que rompen con el esquema anterior he cambiado la versión para evitar confusiones asi que vamos por la 3. Los cambios principales son:
- Cambio de disposición de mosfet, switchs, etc.
- El conector de sensores pasa de 8 pines digitales a 4 analogicos y 4 digitales.
- Añadidas las resistencias pull-down de los mosfet MCP14E5
- Ajustarlo todo a una placa de tamaño estandar de 80x60.

Esta semana espero fabricar una placa y poner otro robot en pista, si todo va bien subo los ficheros de Eagle a la wiki.

Responder
130 respuestas
bastian
Respuestas: 384
(@bastian)
Ardero
Registrado: hace 17 años

Hola!
Por curiosidad, vais a pedir también los componentes? Lo digo pq yo necesitaría todo, incluso motores, ruedas,...
En principio el pedido es solo para las placas y cada uno consigue el resto. Es todo bastante facil de conseguir, y los componentes más sensibles (el PIC y los MCP) son samples, por lo se pueden pedir gratis directamente a Microchip.

Según mis cálculos cada placa (Kit completo) va ha salir por unos 2,5€ + los gastos de envio a cada uno. Cuando lo tenga todo listo os mandaré un MP para pediros confirmación de la cantidad y daros el número de cuenta para el ingreso. El pedido lo haré a finales de la semana que viene os avisaré con tiempo.
Guapísimas; ¿cómo conseguís luego hacer los cortes limpios/rectos?
Sinceramente, en mi caso con una sierra de metal y mucho cuidado. Luego lijas un poco el canto y arreglado. 😉

Salu2!

Responder
boops
Respuestas: 1813
(@boops)
Ardero
Registrado: hace 19 años

Buenos dias!!!

Anoche me puse a recopilar componentes para hacer el pingubot y me encuentro que resistencias de 3k3 no suelo usar, por lo tanto no tengo, me he puesto a mirar en el esquema de la wiki y no aparece! 😛

¿Está la ultima versión? ¿Hay algun manualillo de que hace cada cosa? Recuerdo que me comentasteis algo de los jumpers en CPES15 pero no caigo como es la configuración....

Saludos y gracias!

PD: ¿como va ese pinguino smd? 😛

Responder
bastian
Respuestas: 384
(@bastian)
Ardero
Registrado: hace 17 años

Hola!

Las resistencias de 3k3 son las de pull-down de los MOSFET. Están calculadas para forzar un 0 en el enable del driver. Su valor depende de la alimentación de los motores. Si le pones un valor más bajo (2k7 por ejemplo) no tendrás problemas.

Lo tengo que documentar todo en la wiki, pero de momento no he tenido mucho tiempo. La configuración de los jumpers de soldadura va así; si utilizas el MCP14E5 se hacen los siguientes puentes (marcados en amarillo)

Y si utilizas cualquier otro MCP14Ex (tambien puedes utilizar el MCP14E5 de esta forma) se hace este otro puente pero no se pone la resistencia de 3k3.
Aquí tienes el esquema de la CPU de pingubot que te dimos.

Otra cosa. En la primera tirada de pingubots que hicimos hay un error en la serigrafia del conector de los sensores. Si te fijas la numeración de las señales del conector de la CPU y del Conector de las placas de sensores no coinciden. La numeración correcta es la de la CPU es decir (7 6 13 14 15 16 5 4 + + GND). Tengo que arregñar eso para la proxima tirada y tambien quiero hacer más grandes los pad de las placas de sensores. Cuando lo tenga lo colgaré todo en la wiki.

Salu2!

Responder
fj_sanchez
Respuestas: 1083
(@fj_sanchez)
Ardero
Registrado: hace 18 años

Muy buenas,

creo que he encontrado un fallo en la placa. Uno de los drivers de MOSFET está controlado por los pines 12 y 17 del Pinguino. El pin 12 es uno de los que podemos usar como PWM y el 17 uno de los que podemos usar como entrada analógica. Según la documentación de Pinguino ( http://wiki.pinguino.cc/index.php/AnalogRead " onclick="window.open(this.href);return false;) si se configura algún pin analógico como entrada analógica, todos los pines analógicos (del 13 al 17) serán configurados como entradas analógicas.

Como verás, esto imposibilita hacer una lectura en analógico de los 4 sensores centrales sin descontrolar el driver de los motores. Lo bueno es que se trata de la entrada analógica AN4, así que se podría corregir por software habilitando manualmente las entradas de la AN0 a la AN3; otra opción es cambiar el pin17 por cualquier otro pin de entrada (como los pulsadores o los selectores DIP).

Un saludo.

Responder
bastian
Respuestas: 384
(@bastian)
Ardero
Registrado: hace 17 años

Hola!

Sinceramente, no había caido en ese problema y en las pruebas que he hecho hasta ahora no había tenido ningún problema. Seguramente por casualidad, ya que me coincidia que funcionaba. De todas formas el problema se puede solucionar muy facilmente por software. He estado haciendo pruebas mezclando la lectura analogica de los sensores y el control de la dirección de los dos motores. El programa con el que he hecho las pruebas es el siguiente:
//MISC Pingubot
#define L1 8 //LED 1
#define L2 9 //LED 2
#define P1 3 //Pulsador 1
#define P2 2 //Pulsador 2
#define S1 0 //Interruptor 1
#define S2 1 //Interruptor 2

//Motores
#define VM1 12
#define DM1 17

#define VM2 11
#define DM2 10

//Sensor linea
#define I4 4
#define I3 5
#define I2 16
#define I1 15
#define D4 7
#define D3 6
#define D2 13
#define D1 14

int Anag16;
int Run=0;

void setup()
{
pinMode(L1,OUTPUT);
pinMode(L2,OUTPUT);
pinMode(P1,INPUT);
pinMode(P2,INPUT);
pinMode(S1,INPUT);
pinMode(S2,INPUT);
pinMode(DM1,OUTPUT);
pinMode(DM2,OUTPUT);

analogWrite(VM1,0);
analogWrite(VM2,0);

//pinMode(DM1,OUTPUT); //Aqui no funciona como salida digital
}

void loop ()
{
if (Run==0)
{
pinMode(17,OUTPUT);
Run=1;
}
Anag16=analogRead(16);
if (Anag16>750)
{
digitalWrite(L1,HIGH);
digitalWrite(L2,HIGH);
}
else if (Anag16>500)
{
digitalWrite(L1,LOW);
digitalWrite(L2,HIGH);
}
else if (Anag16>250)
{
digitalWrite(L2,LOW);
digitalWrite(L1,HIGH);
}
else
{
digitalWrite(L2,LOW);
digitalWrite(L1,LOW);
}

digitalWrite(DM1,digitalRead(S1));

digitalWrite(DM2,digitalRead(S2));

if (digitalRead(P1))
{
analogWrite(VM1,500);
}
else
{
analogWrite(VM1,0);
}
if (digitalRead(P2))
{
analogWrite(VM2,500);
}
else
{
analogWrite(VM2,0);
}
}

El problema se da cuando se configura el pin 17 como salida digital dentro de la función Setup(). En ese caso el pin 17 no hace ni caso aunque cambies su valor digital... se queda en HZ funcionando como entrada analogica.
En cambio si utilizas pinMode(17,OUTPUT) dentro de la función loop(), se configura correctamente como salida y permite controlar la direccion del motor y leer las entradas analógicas normalmente. Además basta con hacerlo una sola vez.

Mi idea desde hace tiempo era hacer una libreria de configuración de la placa pingubot, para que fuera muy sencillo para el que se iniciara con esto; y este fallo quizá la haga más necesaría.

Gracias por darte cuenta del fallo y por comentarnoslo; nos podría haber dado muchos quebraderos de cabeza. De todas formas voy a ver como de dificil es intercambiar el pin 17 por uno de los digitales del conector para una próxima tirada.

Salu2!

Responder
Página 17 / 27
Compartir: