viernes, 23 de abril de 2010

Programador de micros


Para programar el microcontrolador utilizamos el master-prog, el cual puedes conseguir en www.mercadolibre.com a un costo de aproximadamente 450 pesos. Y este programador viene con un CD que incluye varios compiladores y lo necesario para empezar a desarrollar aplicaciones (excepto los micros).

microcontrolador


Eh aquí el esquemático del microcontrolador pic16f877 que utilizamos para ajustar la posición de los motores a pasos. Los 4 bits menos significativos se conectan a las bobinas del motor, (el cómo movemos los motores se agregó anteriormente, hay que destacar que ese código está en C, utilizando el compilador mikroC.) el potenciometro se utiliza para sensar la posición en la que se encuentra el motor, o en este caso en que dirección apunta la pistola de paint balls.

El diseño de la base de motores (Etapa 2 de mecánica)

La construcción de las bases fue interesante por el uso de engranes. Ya que se tuvo que tomar en cuenta el Pitch de cada uno de los engranes dado que si te cierras mucho se amarran y si te abres mucho entro los centros queda muy traqueteo. La relación de engranes utilizada fue de 2.5:1 que quiere decir que por cada 2.5 vueltas del motor obtendremos una en las bases motrices. Esto ayudara a aumentar el torque y reducir la velocidad del motor.

En la creación de las piezas se utilizaron dos placas de aluminio de 3/4 in. de espesor para que quedara firme la base y en si toda la estructura. La figura siguiente muestra las dos placas antes de maquinarse y como queremos acomodarlas. En esta visión previa del proyecto se acomodaron de esta manera para tener dos grados de libertad por medio de los motores antes descritos.


Después nos topamos con la necesidad de reducir la fricción por medio del uso de baleros. Estos baleros fueron seleccionados de una base de datos de Timken por medio de su centro (3/4 in.) y que se tuvieran en existencia en el distribuidor local. Primero se pensó en baleros de rodillos cuya característica principal fuese soportar cargas verticales. Para esto se encontró el Balero de rodillos de la marca Timken T77 904A1 cuya caja se muestra en la figura. También se tomo en consideración un balero que centrara el mecanismo giratorio de nuestro robot. Para cumplir con este propósito se utilizo un balero de cono, pues su característica nos brinda soporte de carga en 2 dimensiones, entonces una centraría la base y la otra soportaría su peso. El balero utilizado fue el LM11910 con su respectiva tasa LM11949. Sus cajas se muestran a continuación también.







Después de se maquinaron los centros de las placas en un torno, aunque hubiera sido mas fácil en una fresadora. Fueron dos agujeros. El primero de 3/4 in. Para pasar el perno de soporte (un tornillo) y el segundo para posicionar el motor con su respectiva caja de ajuste. En las siguientes figuras se muestra lo antes descrito.



El ensamble final con los motores se veria desde arriba de esta manera.

AVANCE VISION

Aqui están las imágenes resultantes del código anterior:







AVANCE VISION

Aqui está el código con el que detectamos el objeto en la imagen:


Primero tomamos una imagen que se considera como fondo, luego obtenemos una nueva imagen donde ya hay un nuevo objeto (en este caso la mano) lo que representa movimiento.

Pasamos las dos imagenes a tonos de grises y las restamos, de esta manera podemos aislar el objeto nuevo, luego binarizamos la imagen para dejar en blanco el objeto y por último obtenemos el centroide del mismo para apuntar a ese punto al disparar.



CODIGO:


A = imread('foto1.jpg');
B = imread('foto2.jpg');
C=rgb2gray(A);
D=rgb2gray(B);
Z=imsubtract(C,D);
I=Z>=50;
BW = I > 0;
s = regionprops(BW, I, {'Centroid','WeightedCentroid'});
s(1).Centroid;
imshow(I)
title('PORNO CON ABEJAS');
hold on
numObj = numel(s);
for k = 1 : numObj
plot(s(k).WeightedCentroid(1), s(k).WeightedCentroid(2), 'r*');
plot(s(k).Centroid(1), s(k).Centroid(2), 'bo');
end
hold off









Funcionamiento de los motores (Etapa 1de lo mecanico)


Los motores hasta ahora se ha comprobado que si funcionan por la prueba que se hizo a 12V con un arreglo Unipolar y un arreglo de Transistores TIP41. Los diagramas se muestran a continuación y un video que avala el funcionamiento del motor.




En esta primera etapa se definió que se tiene un problema de funcionamiento, ya que el motor no da el torque suficiente, pues el TIP41 genera demasiado calor. Otro factor importante es que al querer darle mayor velocidad se pierde torque por la cuestión del tiempo que pasa cada paso generando su campo magnético. Por último se observo que el Voltaje o Potencial al que estamos sometiendo el Motor esta en el umbral inferior pues son 12V de alimentación menos la perdida de 2.5V en el TIP41( el cual es tipo Darlington). Entonces el diferencial de potencial dentro de la bobina del motor es demasiado poco para un buen desempeño.

Por tales razones hemos optado por el uso de algún switch electrónico mas potente. Por lo que al especular el mercado encontramos a los IGBT, que son una función entre las tecnologías BJT y MOSFET. Son transistores de alta velocidad, alta corriente, y alto Voltaje de polarización inversa (Vce). Para su control se utilizara un driver especial para el control de los IGBTs. Este a su vez es controlado desde un micr0-controlador protegido por Opto-acopladores. El principio del programa sigue siendo el mismo que el anterior. A continuación se muestras las piezas y sus respectivos links para obtener sus datasheets.

- Driver para IGBTs de ON Semiconductor. Parte: MC33153PG

http://www.onsemi.com/PowerSolutions/product.do?id=MC33153PG

- IGBT marca International Rectifier. Parte:IRG4PC30UPBF

https://ec.irf.com/v6/en/US/adirect/ir?cmd=catSearchFrame&domSendTo=byID&domProductQueryName=IRG4PC30UPBF

- Optoacopladores de 4 Canales marca Vishay. Parte: ILQ1

http://www.vishay.com/product?docid=82582&query=ILQ1

El micro-controlador a utilizar será el mismo de las pruebas, el 16F877A. Los datos de control se realizaran por medio de coordenadas angulares en función de la variación del voltaje a través de una resistencia variable (Pot) que será la retroalimentación que dirá que se cumplí el giro deseado en el motor. Por esta razón el micro-controlador utilizado necesita tener entradas Análogas- Digitales (ADC).


jueves, 15 de abril de 2010

Cámara Eye 312

Esta es una de las cámaras que estamos pensando utilizar, la Eye 312 marca Genius.
Equipado con un 640 x 480 (VGA) sensor CMOS, y con un botón del handy snapshot situado en la punta de la Eye 312, simplemente haga clic para tomar fotos de hasta 1.3 mega píxeles de resolución al instante.Es más, hay un micrófono incorporado - lo que significa que disfrute más clara de voz y de captura de sonido. Con los dos grandes de vídeo y audio desde el conseguir Eye 312, más cerca que nunca ha sido tan fácil.

Características principales:
  • Video de YouTube para compartir archivos
  • El micrófono integrado
  • Multi-función de limitación de la Base de Diseño
  • Giratorios de 360 grados
  • Una mayor flexibilidad de visualización

viernes, 9 de abril de 2010

Programa

El programa anterior fue programado utilizando MicroC, utilizando el puerto c del micro PIC16f877.

programa de control de posicion para motores

int adc_ref;
int adc_y;
int i;
int n;

void main() {
adc_y = 512;
i = 0;
n = 6;
PORTC = 255;
TRISC = 0;
ADCON1 = 0x80; // Configure analog inputs and Vref


Delay_ms(2000);
while(1) {
adc_ref = Adc_Read(7);// Get results of AD conversion
//Adc_Read(2); // Get results of AD conversion


if(adc_ref >= adc_y){ //comparación para ver a que lado girar

if(i>6){
i=0;}

switch (i){ //secuencia de pasos para motor
case 0 : PORTC = 1; break;
case 1 : PORTC = 5; break;
case 2 : PORTC = 4; break;
case 3 : PORTC = 6; break;
case 4 : PORTC = 2; break;
case 5 : PORTC = 10; break;
case 6 : PORTC = 8; break;
default : PORTC = 255; break;


} Delay_ms(50);
i++;
}

if(adc_ref < adc_y){

if(n<0){n=6;}

switch (n){
case 0 : PORTC = 1; break;
case 1 : PORTC = 5; break;
case 2 : PORTC = 4; break;
case 3 : PORTC = 6; break;
case 4 : PORTC = 2; break;
case 5 : PORTC = 10; break;
case 6 : PORTC = 8; break;
default : PORTC = 255; break;


}
Delay_ms(50);
n--;
}
}
} //~!

domingo, 4 de abril de 2010

Control

En esta semana se empesará a trabajar en el control de posicion para los motores que guian la pistola de gotchas, se utilizará un PID, se fijara al ele del motor a pasos un potenciometro, se introducira un valor de referencia (el cual se envía desde el procesamiento de imagen).