Club Volkswagen EOS España

Comunidad de vw eos en españa
Fecha actual Vie, Feb 22, 2019 11:25 am

Todos los horarios son UTC + 1 hora




Nuevo tema Responder al tema  [ 9 mensajes ] 
Autor Mensaje
 Asunto: (EN CONSTRUCCION) BRICO: display con marcha engranada
NotaPublicado: Mié, Ene 16, 2019 9:58 am 
Desconectado
Usuario Avanzado
Usuario Avanzado
Avatar de Usuario

Registrado: Vie, Mar 16, 2018 8:55 am
Mensajes: 377
Ciudad: sant feliu de codines
Coche: eos tfsi
PRESENTACION

primero decir que esta es la parte que le sigue al brico: viewtopic.php?f=1&t=2968
si tenemos ese brico hecho, recordaremos que quedaron dos salidas pendientes, una que iba al cambio de marchas y otra que iba al display, pues aqui conectaremos ambas cosas y cambiaremos el firm del arduino.


DISPLAY

basicamente ponemos un descodificador "bcd a 7 salidas" para ahorrarnos algun cable (aunque modificando un poco podriamos ponerlo directamente)

Por Favor Registrate, para ver el link

el descodificador se llama cd4511b y su web es: Por Favor Registrate, para ver el link (solo nos interesa la pagina 1, abajo a la izquierda hay el esquema de conexion)

a la derecha del esquema va el display
lectura obligatoria: Por Favor Registrate, para ver el link
respecto a la izquierda del esquema, si no recuerdo mal:
entrada 1 > a
entrada 2 > b
entrada 3 > c
d no se conecta
vs > 5v
el resto de entradas no recuerdo, luego lo miro

la entrada 4 era la señal de un microfono pero esto al final no lo utilizaremos (pero soy un vago y por no hacer el dibujo de nuevo...)

las entradas 5 y 6 son 5v y masa (pero esos 5v vienen del arduino)
Por Favor Registrate, para ver el link

Por Favor Registrate, para ver el link

Por Favor Registrate, para ver el link

Por Favor Registrate, para ver el link



SENSOR MARCHA

pondremos dos sensores laser vl6180x en paralelo, uno detectará las marchas pares y el otro detectará las marchas impares.
la unica forma de conectar un sensor laser es con un protocolo LLC, no se que es eso pero poco nos importará... seguimos...
el problema es que al ser dos sensores identicos se comunican por el mismo canal y eso nos perjudica mucho.
solucion:
pondremos un sensor conectado a un miniarduino (esclavo) y el otro sensor al arduino principal(maestro), luego conectaremos un par de salidas del esclavo al maestro

Por Favor Registrate, para ver el link

Por Favor Registrate, para ver el link

como podreis ver, se necesita hacer una placa impresa

Por Favor Registrate, para ver el link

pero es facil, luego os cuento como se hace

bueno, decir que las fotos anteriores fue un proyecto erroneo, ya que la distancia entre sensores tiene que ser de 4 cm y el miniarduino lo he cambiado por un arduino UNO pero como todo esto esta en construccion no hay fotos aun (hice el de la foto, no funcionó por distancias, repeti con otra placa impresa pero no fue bien por tener el miniarduino integrado y era dificil programarlo (pero aqui ya conduje y iba medio bien), actualmente estoy con la tercera placa impresa, que no aloja arduino alguno y es mucho mas liviana.
aqui pongo foto, pero sin acabar, ya que he pedido sensores nuevos)

(falta foto)

CAMBIO DE MARCHAS

aqui hay que hacer una pequeña modificacion a la palanca para que el sensor lea bien:
hay que poner una placa para que la palanca parezca cuadrada en vez de redonda

Por Favor Registrate, para ver el link

el plastico gris lo recorté dejando solo el borde, ya que me interferia, pero al final lo he quitado todo

PLACA IMPRESA

Por Favor Registrate, para ver el link
pero simplificado seria:
dibujas en papel el circuito, asi tienes claro lo que quieres hacer.
recortas la placa.
luego lo vuelves a dibujar con rotulador permanente en la placa, pero en espejo.
resigues bien el rotulador, que quede muy bien, y al loro con la grasa de las manos.

Por Favor Registrate, para ver el link

cojes una cubeta de plastico, le pones liquido de ese y pones la placa.
vas removiendo sin abandonarla, hasta que veas que se ha comido todo el cobre.
lo lavas todo.

Por Favor Registrate, para ver el link


dremel en mano y broca renacuaja, haces los agujeros
es facil !!!

FIRMWARE MAESTRO (es provisional)

/* maestro */
#include <Wire.h>
#include <VL6180X.h>
VL6180X sensor;
int pujemSostreAutomatic = A0;
int baixemCapotaAutomatic = A1;
int pujemCapotaAutomatic = A2;
int baixemSostreAutomatic = A3;
int baixemSostre = 2;
int pujemSostre = 3;
int baixemCapota = 4;
int pujemCapota = 5;
int esclavoa=8;
int esclavob=9;
int b=11;
int a=12;
int c=13;
void mantenint ();
void obrint_sostre ();
void baixant_sostre ();
void tancant_capota ();
void obrint_capota ();
void setup()
{
Serial.begin(9600);
Wire.begin();
sensor.init();
sensor.configureDefault();
sensor.setTimeout(500);
pinMode (esclavoa, INPUT);
pinMode (esclavob, INPUT);
pinMode (pujemSostreAutomatic, OUTPUT);
pinMode (baixemCapotaAutomatic, OUTPUT);
pinMode (pujemCapotaAutomatic, OUTPUT);
pinMode (baixemSostreAutomatic, OUTPUT);
digitalWrite (pujemSostreAutomatic, HIGH);
digitalWrite (baixemCapotaAutomatic, HIGH);
digitalWrite (pujemCapotaAutomatic, HIGH);
digitalWrite (baixemSostreAutomatic, HIGH);
digitalWrite (esclavoa, HIGH);
digitalWrite (esclavob, HIGH);
pinMode (a, OUTPUT);
pinMode (b, OUTPUT);
pinMode (c, OUTPUT);
}

void loop()
{
Serial.print(sensor.readRangeSingleMillimeters());
if (((sensor.readRangeSingleMillimeters())>=47) && ((sensor.readRangeSingleMillimeters())<=67) && (digitalRead(esclavob)==LOW) && (digitalRead(esclavoa)==LOW))
{
Serial.print(" 1");
delay (200);
while (((sensor.readRangeSingleMillimeters())>=47) && ((sensor.readRangeSingleMillimeters())<=67) && (digitalRead(esclavob)==LOW) && (digitalRead(esclavoa)==LOW))
{
digitalWrite (a, LOW);
digitalWrite (b, LOW);
digitalWrite (c, HIGH);
delay (100);
mantenint ();
}
}
if ((digitalRead(esclavoa)==LOW) && (digitalRead(esclavob)==HIGH))
{
Serial.print(" 2");
delay (200);
while ((digitalRead(esclavoa)==LOW) && (digitalRead(esclavob)==HIGH))
{
digitalWrite (a, LOW);
digitalWrite (b, HIGH);
digitalWrite (c, LOW);
delay (100);
mantenint ();
}
}
if (((sensor.readRangeSingleMillimeters())>=42) && ((sensor.readRangeSingleMillimeters())<=46) && (digitalRead(esclavoa)==LOW) && (digitalRead(esclavob)==LOW))
{
Serial.print(" 3");
delay (200);
while (((sensor.readRangeSingleMillimeters())>=42) && ((sensor.readRangeSingleMillimeters())<=46) && (digitalRead(esclavoa)==LOW) && (digitalRead(esclavob)==LOW))
{
digitalWrite (a, LOW);
digitalWrite (b, HIGH);
digitalWrite (c, HIGH);
delay (100);
mantenint ();
}
}
if ((digitalRead(esclavoa)==HIGH) && (digitalRead(esclavob)==LOW))
{
Serial.print(" 4");
delay (200);
while ((digitalRead(esclavoa)==HIGH) && (digitalRead(esclavob)==LOW))
{
digitalWrite (a, HIGH);
digitalWrite (b, LOW);
digitalWrite (c, LOW);
delay (100);
mantenint ();
}
}
if (((sensor.readRangeSingleMillimeters())>=20) && ((sensor.readRangeSingleMillimeters())<=42) && (digitalRead(esclavoa)==LOW) && (digitalRead(esclavob)==LOW))
{
Serial.print(" 5");
delay (200);
while (((sensor.readRangeSingleMillimeters())>=20) && ((sensor.readRangeSingleMillimeters())<=42) && (digitalRead(esclavoa)==LOW) && (digitalRead(esclavob)==LOW))
{
digitalWrite (a, HIGH);
digitalWrite (b, LOW);
digitalWrite (c, HIGH);
delay (100);
mantenint ();
}
}
if ((digitalRead(esclavoa)==HIGH) && (digitalRead(esclavob)==HIGH))
{
Serial.print(" 6");
delay (200);
while ((digitalRead(esclavoa)==HIGH) && (digitalRead(esclavob)==HIGH))
{
digitalWrite (a, HIGH);
digitalWrite (b, HIGH);
digitalWrite (c, LOW);
delay (100);
mantenint ();
}
}
Serial.println();
if ((((sensor.readRangeSingleMillimeters())<70)&&(!((digitalRead(esclavoa)==LOW)&&(digitalRead(esclavob)==LOW))))||(((sensor.readRangeSingleMillimeters())>70)&&(digitalRead(esclavoa)==LOW)&&(digitalRead(esclavob)==LOW)))
{
Serial.print(" 0");
delay (200);
while ((((sensor.readRangeSingleMillimeters())<70)&&(!((digitalRead(esclavoa)==LOW)&&(digitalRead(esclavob)==LOW))))||(((sensor.readRangeSingleMillimeters())>70)&&(digitalRead(esclavoa)==LOW)&&(digitalRead(esclavob)==LOW)))
{
delay (500);
digitalWrite (a, LOW);
digitalWrite (b, LOW);
digitalWrite (c, LOW);
delay (100);
mantenint ();
}
}
}
void mantenint ()
{
if (digitalRead (pujemSostre) == HIGH)
{
obrint_sostre ();
}
if (digitalRead (baixemSostre) == HIGH)
{
baixant_sostre ();
}
if (digitalRead (baixemCapota) == HIGH)
{
tancant_capota ();
}
if (digitalRead (pujemCapota) == HIGH)
{
obrint_capota ();
}
}
void obrint_sostre ()
{
digitalWrite (pujemSostreAutomatic, LOW);
delay (200);
if (digitalRead (pujemSostre) == HIGH)
{
digitalWrite (pujemSostreAutomatic, HIGH);
delay (3000);
digitalWrite (pujemSostreAutomatic, LOW);
delay (50);
digitalWrite (pujemSostreAutomatic, HIGH);
delay (1000);
}
digitalWrite (pujemSostreAutomatic, HIGH);
}
void baixant_sostre ()
{
digitalWrite (baixemSostreAutomatic, LOW);
delay (300);
if (digitalRead (baixemSostre) == HIGH)
{
digitalWrite (baixemSostreAutomatic, HIGH);
for (int d=0; d<80; d++)
{
delay (100);
if (digitalRead (pujemSostre) == HIGH)
{
d=80;
digitalWrite (pujemSostreAutomatic, LOW);
delay (100);
digitalWrite (pujemSostreAutomatic, HIGH);
delay (2000);
}
}
digitalWrite (baixemSostreAutomatic, LOW);
delay (2000);
digitalWrite (baixemSostreAutomatic, HIGH);
delay (1000);
}
digitalWrite (baixemSostreAutomatic, HIGH);
}
void tancant_capota ()
{
delay (300);
if (digitalRead (baixemCapota) == HIGH)
{
digitalWrite (baixemCapotaAutomatic, LOW);
delay (2200);
digitalWrite (baixemCapotaAutomatic, HIGH);
delay (1000);
for (int e=0; e<250; e++)
{
delay (100);
if ((digitalRead (baixemCapota) == HIGH) || (digitalRead (pujemCapota) == HIGH)||(digitalRead (baixemSostre) == HIGH)||(digitalRead (pujemSostre) == HIGH))
{
e=250;
digitalWrite (pujemCapotaAutomatic, LOW);
delay (100);
digitalWrite (pujemCapotaAutomatic, HIGH);
}
}
}
}
void obrint_capota ()
{
delay (300);
if (digitalRead (pujemCapota) == HIGH)
{
digitalWrite (pujemCapotaAutomatic, LOW);
delay (2200);
digitalWrite (pujemCapotaAutomatic, HIGH);
delay (1000);
for (int f=0; f<250; f++)
{
delay (100);
if ((digitalRead (baixemCapota) == HIGH) || (digitalRead (pujemCapota) == HIGH)||(digitalRead (baixemSostre) == HIGH)||(digitalRead (pujemSostre) == HIGH))
{
f=250;
digitalWrite (baixemCapotaAutomatic, LOW);
delay (100);
digitalWrite (pujemCapotaAutomatic, HIGH);
delay (500);
}
}
}
}



FIRMWARE ESCLAVO

/* esclavo */
#include <Wire.h>
#include <VL6180X.h>
VL6180X sensor;
int a=8;
int b=9;
void setup()
{
pinMode (a, OUTPUT);
pinMode (b, OUTPUT);
Serial.begin(9600);
Wire.begin();
sensor.init();
sensor.configureDefault();
sensor.setTimeout(200);
}
void loop()
{
Serial.print(sensor.readRangeSingleMillimeters());
while (((sensor.readRangeSingleMillimeters())>=39) && ((sensor.readRangeSingleMillimeters())<=46))
{
Serial.println();
Serial.print("6");
digitalWrite (a, HIGH);
digitalWrite (b, HIGH);
}
while (((sensor.readRangeSingleMillimeters())>=47) && ((sensor.readRangeSingleMillimeters())<=52))
{
Serial.println();
Serial.print("4");
digitalWrite (a, HIGH);
digitalWrite (b, LOW);
}
while (((sensor.readRangeSingleMillimeters())>=53) && ((sensor.readRangeSingleMillimeters())<=70))
{
Serial.println();
Serial.print("2");
digitalWrite (a, LOW);
digitalWrite (b, HIGH);
}
while (((sensor.readRangeSingleMillimeters())>=71) || ((sensor.readRangeSingleMillimeters())<=38))
{
digitalWrite (a, LOW);
digitalWrite (b, LOW);
}
Serial.println();
}


Última edición por albergirona el Dom, Ene 20, 2019 8:08 pm, editado 4 veces en total

Arriba
 Perfil  
 
 Asunto: Re: (EN CONSTRUCCION) BRICO: display con marcha engranada
NotaPublicado: Mié, Ene 16, 2019 11:31 am 
Desconectado
Usuario Experto
Usuario Experto

Registrado: Jue, Ene 29, 2015 7:06 pm
Mensajes: 920
Ciudad: valladolid
Coche: eos
Muy buena currada!!

Enviado desde mi Mi A1 mediante Tapatalk


Arriba
 Perfil  
 
 Asunto: Re: (EN CONSTRUCCION) BRICO: display con marcha engranada
NotaPublicado: Mié, Ene 16, 2019 11:44 am 
Desconectado
Usuario Avanzado
Usuario Avanzado
Avatar de Usuario

Registrado: Vie, Mar 16, 2018 8:55 am
Mensajes: 377
Ciudad: sant feliu de codines
Coche: eos tfsi
guiller00 escribió:
Muy buena currada!!...

de ahi el retraso:
tuve que aprender a hacer placas impresas, en realidad es muy facil.
la primera placa me daba fallos por estar los sensores a 3 cm, luego la modifique pero fue un fiasco.
hice una segunda placa a 4 cm y fue bien, funcionó, hice unas curvas y bien, pero si conoces el arduino mini, para programar se hace con un adaptador, y al estar en la placa se me movian los sensores, asi que decidi quitar el arduino esclavo de la placa.
ahi estoy ahora, pero como los sensores ya los he puesto y quitado 3 veces, he decidido comprar unos nuevos, asi que me tomo unos dias de descanso hasta que lleguen (y aprovecho para lo del ssd, las nieblas y publicar el brico)
con la primera placa perdi mucho tiempo porque no pense en hacer una nueva hasta que habia perdido muchas horas, pero al cambiarla progresé muchisimo

si algo no se entiende preguntarlo porque soy muy malo explicando y me gusta que quede claro


Arriba
 Perfil  
 
 Asunto: Re: (EN CONSTRUCCION) BRICO: display con marcha engranada
NotaPublicado: Mié, Ene 16, 2019 2:32 pm 
Desconectado
Usuario Avanzado
Usuario Avanzado

Registrado: Mar, Dic 27, 2016 10:09 pm
Mensajes: 107
Ciudad: Madrid
Coche: Eos 2.0 TFSI
Albert, pedazo de currada!
En su dia estudie electronica y también hice placas de circuito impreso, como bien dices no es difícil, lo único, te recomiendo que las pistas no tengan ángulos de 90º ya que pueden dar más errores, no recuerdo exactamente la explicación técnica, pero se hacían con ángulos de 45º.
Si necesitas ayuda con la electrónica me dices, lo practico poco pero lo recuerdo bien.

Saludos


Arriba
 Perfil  
 
 Asunto: Re: (EN CONSTRUCCION) BRICO: display con marcha engranada
NotaPublicado: Mié, Ene 16, 2019 2:49 pm 
Desconectado
Usuario Experto
Usuario Experto

Registrado: Jue, Ene 29, 2015 7:06 pm
Mensajes: 920
Ciudad: valladolid
Coche: eos
Para alta intensidad igual los ángulos pueden afectar, pero para esas señales no creo que influya lo más mínimo.
Si usas el Arduino nano lleva el programador integrado, no necesitas el ftdi a mayores para meterle el programa.
Y es del mismo tamaño que el mini, no creo que el programa q estás utilizando use ni el 50 % de la capacidad de un mini o un nano, y mucho menos consumo.

Enviado desde mi Mi A1 mediante Tapatalk


Arriba
 Perfil  
 
 Asunto: Re: (EN CONSTRUCCION) BRICO: display con marcha engranada
NotaPublicado: Mié, Ene 16, 2019 8:29 pm 
Desconectado
Usuario Avanzado
Usuario Avanzado
Avatar de Usuario

Registrado: Vie, Mar 16, 2018 8:55 am
Mensajes: 377
Ciudad: sant feliu de codines
Coche: eos tfsi
guiller00 escribió:
Para alta intensidad igual los ángulos pueden afectar, pero para esas señales no creo que influya lo más mínimo.
Si usas el Arduino nano lleva el programador integrado, no necesitas el ftdi a mayores para meterle el programa.
Y es del mismo tamaño que el mini, no creo que el programa q estás utilizando use ni el 50 % de la capacidad de un mini o un nano, y mucho menos consumo.

Enviado desde mi Mi A1 mediante Tapatalk

el problema esta al cargar soft, que si esta en la placa de los sensores estos los mueves, el tamaño en definitiva, es lo de menos.


Arriba
 Perfil  
 
 Asunto: Re: (EN CONSTRUCCION) BRICO: display con marcha engranada
NotaPublicado: Mié, Ene 16, 2019 8:30 pm 
Desconectado
Usuario Avanzado
Usuario Avanzado
Avatar de Usuario

Registrado: Vie, Mar 16, 2018 8:55 am
Mensajes: 377
Ciudad: sant feliu de codines
Coche: eos tfsi
Hispanien escribió:
...
Si necesitas ayuda con la electrónica me dices, lo practico poco pero lo recuerdo bien...


lo tendre en cuenta, si si, lo tendre en cuenta, gracias


Arriba
 Perfil  
 
 Asunto: Re: (EN CONSTRUCCION) BRICO: display con marcha engranada
NotaPublicado: Mié, Ene 16, 2019 10:13 pm 
Desconectado
Administrador del Sitio
Administrador del Sitio
Avatar de Usuario

Registrado: Vie, Dic 03, 2010 7:46 pm
Mensajes: 5455
Ubicación: A Coruña
Ciudad: A Coruña
Coche: Eos 2.0 FSI
Me quito el sombrero, menudos bricos que te marcas! En estas cosas de programación, Raspberry y demás soy un cero a la izquierda, así que la ayuda que puedo ofrecerte es aplaudir, jajaja!

Enviado desde mi Mi A1 mediante Tapatalk

_________________
Nosotros somos seres racionales, de los que toman las raciones en los bares.

Hasta siempre Dlfmad!

Problemas con el registro? registro.club.vw.eos (arroba) gmail.com


Arriba
 Perfil  
 
 Asunto: Re: (EN CONSTRUCCION) BRICO: display con marcha engranada
NotaPublicado: Dom, Ene 20, 2019 8:13 pm 
Desconectado
Usuario Avanzado
Usuario Avanzado
Avatar de Usuario

Registrado: Vie, Mar 16, 2018 8:55 am
Mensajes: 377
Ciudad: sant feliu de codines
Coche: eos tfsi
acabo de colgar el software, y como se que suena a chino aconsejo a quien se lo quiera repasar (guille) que lo haga primero con el esclavo para ver los conceptos importantes.
luego ya, el maestro, esta mezclado con todo lo relacionado con la ventana de arrriba y el cabrio (si repasasteis el software del brico anterior vereis que es lo mismo pero con cosas añadidas)


Arriba
 Perfil  
 
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 9 mensajes ] 

Todos los horarios son UTC + 1 hora


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados


No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro
No puede enviar adjuntos en este Foro

Saltar a:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traducción al español por Huan Manwë para phpbb-es.com