Páginas

Mostrando entradas con la etiqueta Pruebas. Mostrar todas las entradas
Mostrando entradas con la etiqueta Pruebas. Mostrar todas las entradas

domingo, 20 de mayo de 2018

2018, Mayo 20 - escultura terminada

Terminé de introducir todos los componentes en el volumen espejado que ocupa el centro o núcleo de la esfera "pelotedra I". En éste se alojan:
1 Batería LiPo de 7.4V y 2200mAh recargable
1 placa Arduino nano con el correspondiente software de control general
2 Sensores PIR de movimiento
1 Sensor Acelerómetro
1 interruptor de encendido general
1 cable mini-USB a USB standard para cambios que haya que hacer en la programación del microcontrolador

Quedan por fuera de este poliedro el cable USB, el cable de recarga de la batería y los 3 grupos de 4 Leds cada uno: rojo, verde y azul.


Al comenzar su funcionamiento se encienden al 100% de intensidad los LEDs rojos como diciendo "aquí estoy", luego si algo o alguien se mueve alrededor y es captado por los sensores PIR, titila por lapsos randómicos en color verde indicando que sabe que no está sola.
Luego, si alguien o algo la empuja o patea comienza a funcionar el acelerómetro que le indica a los Leds azules encenderse en un valor de 8 bits de profundidad de color, gracias al mapeo que realiza el software entre los valores de 9 bits que arroja el acelerómetro y la capacidad de respuesta cromática pwm para la intensidad de los Leds.


Para mejorar la luminosidad y, de alguna forma volver menos visible el poliedro interior que alberga todos los componentes electrónicos, toda la superficie del mismo está espejada con vinilo autoadhesivo. De este modo, no sólo se oculta un poco a la visual sino que además refleja gran parte de la luz que emiten los LEDs.
Este es el primer video de prueba que hice, para evaluar la respuesta al trato y el funcionamiento del software (en esta instancia aun no tenía activada la respuesta del acelerómetro y los LEDs azules).
Por pruebas que hice luego, pude comprobar que es bastante resistente al maltrato... bajó escaleras y soportó una caída de 1 metro de altura. Ya con ello es suficiente para suponer que le irá bien con los niños y las niñas con quienes tiene que interactuar en la etapa final de las performances con sus usuarios/destinatarios.

sábado, 23 de mayo de 2015

150523. Pelotedra II, la observación ayuda mucho


Después de las conclusiones apresuradas de ayer, me puse a buscar información en los links de cálculo de domos y descubrí que lo que había hecho estaba bien, sólo que había un error pequeño, una capa extra de hexágonos que debía eliminar. Algo que reavivó mi ánimo de seguir adelante y me reconfirmó que dentro del icosaedro de 3° frecuencia (3V) al unir las puntas internas de los pentágonos y los hexágonos con triángulos se genera por dentro, un icosaedro de 2° frecuencia (2V), con lo cual, antes de unir las dos mitades de Pelotedra II, deberé construir el icosaedro de 1° frecuencia y posiblemente el dodecaedro interno a todo ello… una complejidad interesante, pero que me hace pensar en que quizás ambas Pelotedras deban tener esta estructura, pues, de este modo, se genera un gran volumen de capas de amortiguación para los componentes electrónicos permitiendo a su vez la construcción de Pelotedras de 1m de diámetro… quizá la diferencia no deba darse en el tamaño sino en su composición lumínica. Veremos a dónde me lleva todo esto.
Por lo pronto algo que me atrae mucho de la construcción por triangulación de toda la estructura y esta sumatoria de capas es que me remite a la construcción de organismos biológicos, la piel humana se configura por una sumatoria de planos triangulares; y aquí algo que se logra con el empleo de los elásticos es una gran amortiguación del conjunto con lo que el corazón y cerebro de los robots quedará totalmente resguardado y posiblemente admita un mayor maltrato del pensado, algo que, es importante para obras a ser emplazadas en el espacio público.

 Domo y esfera icosaédrica de 3° Frecuencia (3V)

 
 
Pelotedra II con Pelotedra I dentro

viernes, 22 de mayo de 2015

150522. Pruebas Pelotedra II

Toca hacer y del hacer aprender de los errores; estaba convencido de que duplicando el domo 3V podría unirlos y generar una esfera, pero hoy comprobé que de la unión surge algo que no es exactamente esférico sino medio ovoide...





Este fin de semana largo, se viene la reprogramación de Pelotedra I!!! ahora toca agregar los PIR y el Emisor de Radio Frecuencia para comunicar con Pelotedra II.

miércoles, 25 de febrero de 2015

150225 - Eran los cables... también la programación!

Seguí los pasos de conexión tal como indica esta página:

Y, siguiendo los consejos de Martín Matus, fui probando los diferentes códigos de ejemplo que vienen con la librería AcceleroMMA7361 para arduino, haciendo pequeñas modificaciones y luego, cuando todo comenzó a funcionar agregué los renglones de código faltantes para que encendiera las tres luces.

Aquí va entonces el video de muestra:

Conecté el acelerómetro con cables comprados macho-hembra de 20cm, empalmándolos de a 2, para tener una mayor extención respecto del resto del circuito en arduino y poder manipular con más comodidad el sensor; que, para quien esté buscando hacer algo similar, parece que es mejor el que es giroscopio y acelerómetro 2 en 1, cuesta un poco más pero mide los ángulos en que se produce el movimiento y no sólo el shock de movimiento o aceleración del mismo.

Código que va:

#include <AcceleroMMA7361.h>

AcceleroMMA7361 accelero;
int x;
int y;
int z;

//asignacion de pines pwm para los Leds:
int rojo = 3;
int verde = 5;
int azul = 6;

void setup(){
  //adjudica el modo de los pines LED
  pinMode(rojo, OUTPUT);
  pinMode(verde, OUTPUT);
  pinMode(azul, OUTPUT);
  //establece la velocidad del puerto serial
  Serial.begin(9600);
  //declara los pines del acelerometro
  accelero.begin(13, 12, 11, 10, A0, A1, A2);
  //establece el voltaje AREF en 3.3V
  accelero.setARefVoltage(3.3);    
  //establece la sensibilidad en +/-1.5G          
  accelero.setSensitivity(HIGH);   
  //calibra el acelerometro            
  accelero.calibrate();
}

void loop(){
  //Inicializa el acelerómetro:
  x = accelero.getXAccel();
  y = accelero.getYAccel();
  z = accelero.getZAccel();

 //escribe los valores de x, y, z pero mapeados para los leds
 Serial.print("\nx: ");
  x = map(x, 0, 511, 0, 255);
  Serial.print(x);
  analogWrite(rojo, x);
  Serial.print(" \ty: ");
  y = map(y, 0, 511, 0, 255);
  analogWrite(verde, y);
  Serial.print(y);
  Serial.print(" \tz: ");
  z = map(z, 0, 511, 0, 255);
  analogWrite(azul, z);
  Serial.print(z);
  Serial.print("\tG*10^-2");
  //retardo de lectura para leer los valores de monitor y mejorar la respuesta
  lumínica 
  delay(150);       
}

Ahora viene la parte interesante!!!
Comenzaré a montar los leds en el prototipo: PELOTEDRA!


Fotógrafa: Eugenia Romero

domingo, 22 de febrero de 2015

150223 - Acelerómetro funcionando!!!

Aun hay errores, entre ellos, los cables que soldé hoy para conectar el acelerómetro:

Ante esta situación me veo obligado, para descartar errores y fallas a comprar unos cables para protoboard hembra-macho!!

De todos modos, gracias a unos mails y links que me mandó Andrés Rodriguez (mi director de tesis) modifiqué algunas cosas en la conexión del acelerómetro y en la programación de arduino:
Aunque sin el cable que conecta 3.3V out con ARef porque hasta el momento no afecta en nada perceptible a la vista.


Codigo:
/*Tesis 02_ Acelerometro y leds, lectura analogica y escritura pwm
*/


//Asignacion de pines analogicos del acelerometro

float analogPinX = 0;
float analogPinY = 1;
float analogPinZ = 2;
float valX = 0; 
float valY = 0;
float valZ = 0;

//Asignacion de pines digitales del acelerometro
boolean sleep = 7;
boolean selfTest = 2;
//pwm:
float ogDetect = 9;
float gSelect = 10;


//Asignacion de pines pwm para los leds

int Rojo = 3;
int Verde = 5;
int Azul = 6;

void setup(){
  //Leds rojos
  pinMode(Rojo, OUTPUT);
  //Leds verdes
  pinMode(Verde, OUTPUT);
  //Leds azules
  pinMode(Azul, OUTPUT);
  //Pines digitales Acelerometro:
  pinMode(sleep, INPUT);
  pinMode(selfTest, INPUT);
  pinMode(ogDetect, INPUT);
  pinMode(gSelect, INPUT);
  Serial.begin(9600);
}

void loop(){
  //Deteccion de actividad en el Acelerometro:
  if(sleep == LOW){
    digitalWrite(Rojo, LOW);
    digitalWrite(Verde, LOW);
    digitalWrite(Azul, LOW);
  }else{
  //Traduccion a luces de las lecturas axiales del Acelerometro
  valX = analogRead(analogPinX);
  analogWrite(Rojo, valX / 4);
  valY = analogRead(analogPinY);
  analogWrite(Verde, valY / 4);
  valZ = analogRead(analogPinZ);
  analogWrite(Azul, valZ / 4);
  delay(100);
}
//
}

150222 - analogRead con potenciómetros

Para descartar errores del mal funcionamiento del Acelerómetro MMA7361, hice la prueba de reemplazarlo por potenciómetros (resistencias variables) y el código funciona perfectamente.
Busqué más información sobre la conexión correcta del acelerómetro y encontré este esquema que coincide con lo que hice ayer:
No obstante en la página "ABC de los acelerómetros" aconsejan conectarlos según la hoja de datos del fabricante. Probaré entonces conectar todos los pines al arduino para seguir descartando errores.

sábado, 21 de febrero de 2015

150221 - arduino y acelerómetro, primer prueba con fallas

Hoy estuve haciendo pruebas con arduino y el acelerómetro... dadas las fallas incomprensibles para mí, mañana haré pruebas con potenciómetros para saber si es el código lo que está mal o si hay alguna falla en el acelerómetro, si falta conectar algún cable extra o qué.

Esta es la conexión que utilicé:
con un acelerómetro MMA7361:
Y el código de arduino:
/*Tesis 01_ Acelerometro y leds, lectura analogica y escritura pwm
*/


//Asignacione de pines analogicos del acelerometro
int analogPinX = 0;
int analogPinY = 1;
int analogPinZ = 2;
int valX = 0;
int valY = 0;
int valZ = 0;

//Asignacion de pines pwm para los leds
int Rojo = 3;
int Verde = 5;
int Azul = 6;

void setup(){
  //Leds rojos
  pinMode(Rojo, OUTPUT);
  //Leds verdes
  pinMode(Verde, OUTPUT);
  //Leds azules
  pinMode(Azul, OUTPUT);
  Serial.begin(9600);
}

void loop(){
  /*Lecturas del acelerometro y su traduccion en luces,
  * curva lineal inicial de prueba.
  */

  valX = analogRead(analogPinX);
  analogWrite(Rojo, valX / 4);
  valY = analogRead(analogPinY);
  analogWrite(Verde, valY / 4);
  valZ = analogRead(analogPinZ);
  analogWrite(Azul, valZ / 4);
}

Compila y carga perfectamente pero luego, muevo el sensor y no pasa nada, los leds prenden siempre al 100%, pareciera no estar funcionado el sensor o como si faltara conectar algo.

Para esta primer prueba quiero hacer una lectura lineal de los valores analógicos del sensor, simplemente para corroborar que todo funcione bien y luego complejizar el código para que la lectura siga una curva logarítmica de intensidad lumínica.