Está en la página 1de 3

Laboratorio 2: Temporizadores y Comunicación

Serial
Juan Pablo Pulido Daza, Andrés Gabriel Coronado García
juanp.pulidod@ecci.edu.co, andresg.coronadog@ecci.edu.co

8 de marzo de 2023

Resumen 2. Objetivos
Actualmente, el auge tecnológico permite la creación de di- Entender la configuración y funcionamiento de los mó-
ferentes proyectos e iniciativas acerca de la electrónica pro- dulos internos del microcontrolador STM32.
gramable, en este documento se habla acerca de la comuni-
Realizar un sistema de control que permita controlar la
cación serial, su uso a nivel institucional, además de su uso
posición de un servo motor respecto a la señal de entrada
para visualizar datos en tiempo real.
del sensor HC SR04.

Palabras Clave 3. Marco teórico


Nucle F411Re, Servo, Comunicación Serial, PWM
3.1. Nucleo F411RE

Abstract
Currently, the technological boom allows the creation of
different projects and initiatives about programmable elec-
tronics, in this document we talk about serial communica-
tion, its use at an institutional level, as well as its use to vi-
sualize data in real time.

Keywords
Figura 1: Tarjeta Nucleo F411Re
Nucle F411Re, Servo, Serial Communication, PWM
La tarjeta de desarrollo Nucleo fue diseñada para entregar
una forma cómoda y flexible de desarrollo para nuevos usua-
1. Introducción rios que quieran crear prototipos.
El núcleo F411Re posee varios módulos y configuraciones
que permiten crear diferentes procesos y proyectos para so- 3.2. Sensor ultrasónico HCSR04
lucionar diferentes tareas y problemáticas simples. Dichas ta-
reas y problemáticas se facilitan al usar este sistema embe-
bido, el cual es desarrolado por STMicroelectronics, en la cual
se hará uso de los módulos de temporizadores, comunicación
serial y GPIO, además de los pines PWM que permiten el co-
rrecto funcionamiento de la práctica de laboratorio requeri-
da.

Figura 2: Sensor HCSR04

1
El HC-SR04 es un sensor de distancias por ultrasonidos ca- using namespace std : : chrono ;
paz de detectar objetos y calcular la distancia a la que se en- int sensor ( void ) ; / /Creaci[U+FFFD] n de la funci[U+FFFD]
n que me controla
e l sensor ultrasonico ,
cuentra en un rango de 2 a 450 cm. El sensor funciona por ul- void servo ( f l o a t ) ; / /Creaci[U+FFFD]
n de la funci[U+FFFD]
n que me
trasonidos y contiene toda la electrónica encargada de hacer controla e l servomotor .
la medición. [1]
int main ( ) { / / Funcion p r i n c i p a l
pwm. period ( 0 . 0 2 ) ; / / E s t a b l e c e e l periodo en 20Ms que
3.3. Comunicación Serial e s e l periodo de funcionamiento del servomotor .
pwm. write ( 0 ) ; / / Envia un 0 a pwm.
La comunicación serial es un protocolo de comunicación t r i g g e r =0; / / Le asigna e l valor de 0 al t r i g g e r
entre dispositivos que se incluye de manera estándar en prác- p r i n t f ( " \n sensor \n" ) ; / / Imprime una l i n e a que dice "
sensor "
ticamente cualquier computadora. [2]
while ( 1 ) { / / i n i c i o del c i c l o i n f i n i t o
_wait_us_generic (1000000) ; / / tiempo de espera en tr e
secuencias de muestreo del ultrasonido
3.4. Periodo X=sensor ( ) ; / / e j e c u t a la funcion que gobierna mi sensor
y e l valor que e s t e da l o asigna a X
El periodo es el tiempo en que una partícula realiza una vi-
p r i n t f ( "%d cm = Distancia \n" ,X) ; / / imprime la d i s t a n c i a
bración (oscilación) completa. Se mide en segundos (s). p r i n t f ( "%l l d = Tiempo\n" , timer_read_us ( get_time ) ) ; / /
imprime e l tiempo en us que demora la onda en i r y
v o l v e r al sensor
3.5. Ciclo Útil servo (X) ; / / e j e c u t a mi funci[U+FFFD] n del servo y l e ingresa e l
valor de X
"En términos eléctricos, el ciclo de trabajo o Duty Cycle es }
la relación existente entre el tiempo en que una señal se en- }
cuentra en estado activo con el periodo de dicha señal, nor-
void servo ( f l o a t c ) { / / I n i c i a mi funcion del servo
malmente este termino es aplicado para señales cuadradas,
pwm. write ( c i c l o _ u t i l ) ; / / e s c r i b e en e l pin pwm e l % de
donde se intenta emular una señal analógica mediante la va- ciclo util .
riabilidad del estado alto y bajo de una señal digital."[3] i f ( c>=0 | | c <9) { / / s i la d i s t a n c i a del o b j e t o
detectado e s mayor que 0cm y menor o igual a
9 cm e j e c u t a . . .
c i c l o _ u t i l =0.0125; / / e s t a b l e c e mi se[U+FFFD]al de
4. Procedimiento y materiales c i c l o u t i l a 0.0125
}
Para poder realizar esta práctica se utilizó el compilador i f ( c>10 | | c <=20) { / / s i la d i s t a n c i a del
online ARM Keil Studio, en el cual a través de lenguaje c++ se o b j e t o detectado e s mayor que 10cm y menor o
realizó el código. Así mismo, se configuró una salida de comu- igual a 20 cm e j e c u t a . . .
c i c l o _ u t i l =0.025; / / e s t a b l e c e mi se[U+FFFD] al de c i c l o
nicación serial en donde se visualizarán los datos de medición u t i l a 0.025
provenientes del sensor ultrasónico HCSR04. Así mismo, para }
calcular el dato de medición en centímetros de hace uso de la i f ( c>21 | | c <=38) { / / s i la d i s t a n c i a del
siguiente fórmula o b j e t o detectado e s mayor que 21cm y menor o
igual a 38 cm e j e c u t a . . .
c i c l o _ u t i l =0.05; / / e s t a b l e c e mi se[U+FFFD] al de c i c l o
D at o d el sensor
Di st anci a (En cm) = u t i l a 0.05
58 }
i f ( c>39 ) { / / s i la d i s t a n c i a del
El número 58 es el factor de conversión en centímetros, para o b j e t o detectado e s mayor que 39cm
pulgadas se usa el número 148 ejecuta . . .
c i c l o _ u t i l =0.075; / / e s t a b l e c e mi se[U+FFFD] al de c i c l o
u t i l a 0.075
4.1. Codigo }
p r i n t f ( " \n %d l l c i c l o u t i l \n" , c i c l o _ u t i l ) ;
/ / imprime e l valor de mi c i c l o u t i l
#include "mbed. h"
}
DigitalOut t r i g g e r ( PC_10 ) ; / / E s t a b l e c e Pin PC_10 como s a l i d a
int sensor ( void ) { / / i n i c i a mi funci[U+FFFD] n del sensor
d i g i t a l ademas de a s i g n a r l e e l nombre de t r i g g e r
f l o a t d i s t a n c i a ; / / crea una v a r i a b l e f l o t a n t e llamada
D i g i t a l I n echo ( PC_12 ) ; / / E s t a b l e c e Pin PC_12 como entrada
distancia
d i g i t a l ademas de a s i g n a r l e e l nombre de echo
t r i g g e r . write ( 1 ) ; / / pone e l t r i g g e r en a l t o
PwmOut pwm(D5) ; / / E s t a b l e c e Pin D5 como s a l i d a PWM ademas
_wait_us_generic ( 2 0 ) ; / / espera 20 us
de a s i g n a r l e e l nombre de pwm
t r i g g e r . write ( 0 ) ; / / apaga e l t r i g g e r
f l o a t c i c l o _ u t i l =0; / / Variable para e s t a b l e c e r e l c i c l o u t i l
get_time . s t a r t ( ) ; / / i n i c i a e l timer como contador
.
while ( ! echo ) { } / / espera que e l echo e s t e en 0
int X=0; / / Variable para guardar la d i s t a n c i a
while ( echo ) { } / / espera que e l echo e s t e en 1
Timer get_time ; / / E s t a b l e c e un Timer y l e pone e l nombre de
get_time . stop ( ) ; / / detiene e l timer
get_time
d i s t a n c i a =timer_read_us ( get_time ) ; / / guarda e l tiempo
#define timer_read_us ( x ) ( x ) . elapsed_time ( ) . count ( ) / /
el[U+FFFD] do en la v a r i a b l e d i s t a n c i a
E s t a b l e c e la l e c u t r a del timer en us
get_time . r e s e t ( ) ; / / r e i n i c i a e l timer
Ticker t i c k e r ;

2
d i s t a n c i a = ( ( d i s t a n c i a ) /58) ; / / r e a l i z a e l c al c u l o
para transformar mi tiempo l e i d o en una
d i s t a n c i a al d i v i d i r e l tiempo en 58 nos da una
d i s t a n c i a en cm, s i dividimos en 148 sera en
In
return distancia −9; / / r e a l i z a correcci[U+FFFD] n del c a l c u l o
.
}

5. Resultados
Como resultado se logró obtener exitosamente el compor-
tamiento deseado. Sin embargo, se necesitó realizar diferen-
tes arreglos a los cálculos, debido a problemas del dispositivo
HCSR04. Dichos cambios son realizados en el código el cual
consta en la útima función de un retorno del valor de la dis-
tancia medida por el sensor, el cual es un error de 9cm de me-
dición que luego se corrige. El comportamiento del servo fue
el requerido, en donde se tuvo que hacer ciertos cambios al
ciclo útil teniendo en cuenta el rango de valores que podía to-
mar el PWM.

6. Conclusiones
Para concluir, se comprendió el uso adecuado de la tarjeta
STM32 con NucleoF411RE para realizar proyectos para PWM
y manejo de servomotores, teniendo en cuenta una compo-
nente de comunicación serial. Así mismo, se puede concluir
que, gracias a la sintaxis de programación, se pueden generar
diferentes prototipos de diferentes configuraciones por me-
dio de MBED y la forma práctica de la carga de código al sis-
tema embebido.

Referencias
[1] Eneka, “Módulo sensor de distancias hc-sr04,” 2014.

[2] T. N. de México, “Comunicaciones digitales: Protocolos


seriales (uc).”

[3] C. Veloso, “Que es el duty cycle o ciclo de trabajo,” aug


2016.

También podría gustarte