Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
You are viewing an older revision! See the latest version
Homepage
SISTEMA DE ALMACENAMIENTO¶
- Brian Alexis Cárdenas Castañeda 67574
- Valeria Alejandra Bravo Bonilla 67577
- Angela Manuela González Plazas 60534
En el siguiente informe se presentará la compilación de dos manuales; uno técnico y uno del usuario respectivamente; En el manual técnico se incluirá todo lo relacionado con las especificaciones de la tarjeta de desarrollo STM Nucleo 32F446-RE con la cual estaremos desarrollando el proyecto, indicaciones de conexión, desglose de los componentes que utilizamos más una explicación sustancial del código con el que se ha trabajado; en el manual del Usuario se explicará cómo y cuales son los pasos para poner en funcionamiento el proyecto y cumplir adecuadamente el proceso.
1.Manual Técnico¶
- Tarjeta de Desarrollo STM Nucleo-F446RE.

La tarjeta Nucleo-F446RE es una placa de desarrollo STM32, que cuenta con un microcontrolador ARM cortex M4; la cual trabaja a una velocidad de 180Mhz y un sistema SRAM de 128 KB. También se cuentan con estás demás especificaciones. USB VBUS or external source (3.3 V, 5 V, 7 - 12 V). Two push buttons: USER and RESET. 512 KB Flash.

- Diagrama de Conexiones.

- Servomotor:

El servomotor es un dispositivo que en su interior dispone de un pequeño motor con un reductor de velocidad y multiplicador de fuerza, también dispone de un circuito que controla el sistema. Para controlar un servomotor se debe aplicar un pulso de duración y frecuencia específicos. Todos los servomotores disponen de tres cables, dos para alimentación Vcc y Gnd y un tercero para aplicar el tren de pulsos de control, que hace que el circuito de control diferencial interno ponga el servo en la posición indicada, dependiendo del ancho del pulso. En el servomotor SG90 el ángulo de giro del eje es de 180º . un servo es muy importante por que es el encargado de dar movilidad al robot.
- Ángulos de giro de un servomotor:

- Modulación por Ancho de pulso (PWM).
Es una técnica utilizada para regular la velocidad de giro de los motores eléctricos de inducción o asíncronos.u Mantiene el par motor constante y no supone un desaprovechamiento de la energía eléctrica. Se utiliza tanto en corriente continua como en alterna, como su nombre lo indica, al controlar: un momento alto (encendido o alimentado) y un momento bajo (apagado o desconectado),

COOLTERM:
Es una sencilla aplicación creada por Roger Meier que permite tener una terminal para nuestros puertos serie, su menú de configuración esta muy completo, permitiendo elegir desde una lista los puertos disponibles y seleccionar su velocidad y demás parámetros; despliega los datos recibidos tanto en Ascii como en Hexadecimal.

MI CÓDIGO:
Se crean las clases para los objetos, que en este caso son los cuatro Servo-motores definiendo de una ves los pines de conexión.
PwmOut myservo1(PB_10); PwmOut myservo2(PB_4); PwmOut myservo3(PB_5); PwmOut myservo4(PB_3);
Se habilita la comunicación serial y poder enviar datos y se mencionan las variables globales.
Serial pc(USBTX, USBRX); uint8_t telecomando; uint8_t parametro; uint8_t nm;//variable de motores uint8_t ng;
Se crea una función que permite controlar el ancho del pulso para el Servo-motor. Está función convierte el valor del ciclo útil dado en us dentro del periodo en una posición en grados para el servomotor.
uint32_t degrees2usec(uint8_t grados){
// Retorno el valor en usegundos, donde
// y − y1 = m(x − x1 )
if(grados <= 180)
return int(750+grados*1900/180);// u6
return 750;
Tasa de baudios para la comunicación serial.
pc.baud(9600);
Comando de apertura para el envió de la trama desde Coolterm, expresado en Hexadecimal.
while (pc.getc()!=0XFF); //sincronizacion
Configuramos el ancho de pulso para cada uno de los servos y así sus respectivos ángulos. Para el caso tenemos solo el servo 1.
myservo1.pulsewidth_us(2000);
myservo1.period_ms(20)
Funciones para las rutinas del robot.
void home() void material() void celda1() void celda2() void celda3() void celda4()
Se crea una función para abrir y cerrar la pinza.
if (parametro==01)
{
myservo4.pulsewidth_us(degrees2usec(0));
}
else if(parametro==02)
{
myservo4.pulsewidth_us(degrees2usec(180));
Se crea otra función para indicar el caso para cada una de las rutinas, previamente definidas en las funciones anteriores. Este Switch interpreta la variable parámetro
void mover_pos()
Se crea una función que indica sí lo que se quiere controlar es una de las funciones del brazo, la pinza o cada motor por individual.
void mover_servo(uint8_t nm, uint8_t ng)
Luego se inicializá el programa principal.
int main()
{
config_uart();
config_servo();
while(1)
{
Leer_Datos();
mover_servo(telecomando, parametro);
}
}
2. Manual de Usuario¶
A continuación se describirán los pasos que el usuario debería seguir sí este quiere colocar en funcionamiento el proyecto del brazo de almacenamiento, todo ello con su respectiva imagen.
- Se debe tener conectada la tarjeta de desarrollo Núcleo STM F446RE.
- Descargar el código del software al Hardware.
- Iniciar desde el PC el programa Coolterm.
- Ingresar los comandos funcionales para que el robot inicie ha realizar las rutinas. Para saber cuales son los comando interpretables por el software se presentara a siguiente tabla.