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 (4.8 a 6 [V]) 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:

- (PWM) Modulación por Ancho de pulso:
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:
indicamos los pines de conexión que tengan configuración PWM para dar señales a los servomotores.
PwmOut myservo1(PB_10); PwmOut myservo2(PB_4); PwmOut myservo3(PB_5); PwmOut myservo4(PB_3);
habilitamos la comunicación serial y poder enviar datos al CoolTerm
Serial pc(USBTX, USBRX); uint8_t telecomando; uint8_t parametro; uint8_t nm;//variable de motores uint8_t ng;
creamos una función de ejemplo de la pendiente en donde si los grados ingresados son menores o iguales a 180° se ejecute una solución matemática para una conversión de micro segundos a grados.
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;
es la tasa de datos que se pueden pasar entre el dispositivo PC y
pc.baud(9600); // sincronizacion
while (pc.getc()!=0XFF); //sincronizacion
telecomando= pc.getc();//telecomando
parametro= pc.getc();//parametro (grados y posición)
Configuramos el ancho de pulso para cada uno de los servos y así sus respectivos ángulos. en este caso tenemos solo el servo 1.
myservo1.pulsewidth_us(2000);
myservo1.period_ms(20)
Determinamos las posiciones dependiendo de qué posición se desee (en este caso es la posición HOME) y en donde ya configuramos los grados.
configuramos la función para abrir y cerrar la pinza siendo 0° para abrir y 180° para cerrar.
if (parametro==01) //abrir pinza
{
myservo4.pulsewidth_us(degrees2usec(0));
pc.printf("0");
}
else if(parametro==02)
{
myservo4.pulsewidth_us(degrees2usec(180)); //cerrar pinza
pc.printf("1");