Technical Manual
Manual Técnico
Brazo Robótico - Sistemas Embebidos
-----------------
- Diagrama De Flujo - Funcionamiento General Brazo Robótico
- Planos Brazo
- Componentes Electrónicos
- Componentes Mecánicos
- Conexiones
- Comandos
- Configuración Terminal
- Limites de Movimiento
1. Diagrama De Flujo - Funcionamiento General Brazo Robótico
2. Planos Brazo
El brazo cuenta con 4 eslabones contando la pinza. Las medidas estan dadas para corete en material con un grosor de 3 mm Se utilizan tornillos de 1 cm de largo para acoplar las piezas y arandelas para disminuir el rodamiento de los tornillos. .
Planos para Corte Laser /media/uploads/andriuxone/brazo_robotico_con_servos_gs995-laser_a2.pdf
3. Componentes Electrónicos
Tarjeta Para Adquisición de Datos -> STM32 Núcleo F446re - Mbed /media/uploads/andriuxone/nucleo-f030r8-973950-_datasheet.pdf
Joystick para control manual /media/uploads/andriuxone/joystick_module-datasheet.pdf
Sensor de Color TC3200 /media/uploads/andriuxone/tcs3200-e11-datasheet.pdf/media/uploads/andriuxone/motor-datasheet.pdf
4. Componentes Mecánicos
Motor SG-5010
5. Conexiones
6. Comandos
7. Configuración Terminal
8. Limites de Movimiento
9. Codigo
Movimientos A posiciones Automaticas
if(telecomando == AUTOMATIC) {
lcd.printf(" ");
lcd.printf("AUTOMATIC MOVE\n");
pc.printf("Validando Parametro: ");
pc.printf("%02x",parametro);
switch (parametro) {
case HOME:
pc.printf("\nHOME..\n");
mover_home();
NVIC_SystemReset();
break;
case MATERIAL:
pc.printf("\nMATERIAL.\n");
mover_material();
NVIC_SystemReset();
break;
case CELDA1:
pc.printf("\nCELDA1.\n");
mover_celda1();
NVIC_SystemReset();
break;
case CELDA2:
pc.printf("\nCELDA2.\n");
mover_celda2();
NVIC_SystemReset();
break;
case CELDA3:
pc.printf("\nCELDA3.\n");
mover_celda3();
NVIC_SystemReset();
break;
case CELDA4:
pc.printf("\nCELDA4.\n");
mover_celda4();
NVIC_SystemReset();
break;
default:
pc.printf("No se encontro parametro valido.\n");
break ;
}Fin Switch
Movimientos de la Pinza
}else if(telecomando == PINZA){
pc.printf("Validando Parametro: ");
pc.printf("%02x",parametro);
switch (parametro) {
case ABRIR_PINZA:
lcd.printf(" ");
lcd.printf("ABRE PINZA\n");
abrir_pinza();
break;
case CERRAR_PINZA:
lcd.printf(" ");
lcd.printf("CIERRA PINZA\n");
cerrar_pinza();
break;
LECTURA DE COLOR
void leer_color(){
float red ;
float green ;
float blue ;
float clear ;
red = scolor.ReadRed();
green = scolor.ReadGreen();
blue = scolor.ReadBlue();
clear = scolor.ReadClear();
printf("\nTIEMPO EN ALTO: red: %f green: %f blue: %f clear: %f \t" ,red,green,blue,clear);
float frecuenciaclear=(1/clear);
float porcentajeC= (frecuenciaclear*100)/(frecuenciaclear);
float frecuenciaR= (1/red);
float porcentajeR= (frecuenciaR*100)/(frecuenciaclear);
float frecuenciaG= (1/green);
float porcentajeG= (frecuenciaG*100)/(frecuenciaclear);
float frecuenciaB= (1/blue);
float porcentajeB= (frecuenciaB*100)/(frecuenciaclear);
printf("\nPORCENTAJE: p_red: %0.4f p_green: %0.4f p_blue: %0.4f \t" ,porcentajeR,porcentajeG,porcentajeB);
if (porcentajeR>porcentajeG && porcentajeR>porcentajeB){
pc.putc(ANSCOLOR);
pc.putc(RED); } else if (porcentajeG>porcentajeB && porcentajeG>porcentajeR){
pc.putc(ANSCOLOR);
pc.putc(GREEN); } else if (porcentajeB>porcentajeR && porcentajeB>porcentajeG){
pc.putc(ANSCOLOR);
pc.putc(BLUE); } else if (porcentajeC>porcentajeR && porcentajeC>porcentajeG && porcentajeC>porcentajeB){
pc.putc(ANSCOLOR);
pc.putc(CLEAR); } else{
pc.putc(ANSCOLOR);
pc.putc(NO_COLOR); } }Fin color
Please log in to post comments.