Manual U
Manual_Usuario
Sensor & Buzzer¶
El siguiente articulo presenta los manuales de usuario y técnico del sistema Sensor & Buzzer, el cual tiene como base el programa "Sensor_Buzzer", esto para dar explicación de como funciona este sistema
El manual técnico presenta una explicación detallada de como funciona la programación y como trabaja con su respectivo sensor y actuador, demostrando que hace cada linea de programación y el funcionamiento del hardware.
El manual de usuario, contiene las instrucciones para que el cliente pueda dar uso del sistema, cabe aclarar que aquí no se le dará una explicación extensa, solo lo suficiente para poder poner en marcha al sensor y actuador correctamente.
MANUAL DE TÉCNICO¶
Tarjeta Núcleo STM F411RE:
Tarjeta de desarrollo y programación para micros de la línea STM32. Cuenta con un micro STM32F4 de 64 pines, memoria Flash 512 KB y con conectores STMicroelectronics Morpho con accesos a todos los pines del micro. Su alimentación por USB VBUS o fuente externa (3.3 V, 5 V, 7 - 12 V)
Sensor TCS3200:
El sensor de color TCS3200 de la arca LC Tech es un convertidor de luz a frecuencia que combina fotodiodos de silicio reconfigurables y una corriente de frecuencia en un solo circuito integrado. La salida es una onda cuadrada (ciclo de trabajo 50%) con una frecuencia directamente proporcional a la intensidad de luz. Las entradas y salidas digitales permiten una interfaz directa con un micro-controlador u otro conjunto de circuitos lógicos.
Los pines de conexión están repartidos de la siguiente forma:
S0 | S1 | Escala de la frecuencia de salida | S2 | S3 | Tipo Fotodiodo | |
---|---|---|---|---|---|---|
H | H | 100% | H | H | Verde | |
H | L | 20% | H | L | Sin filtro | |
L | H | 2% | L | H | Azul | |
L | L | Power Down | L | L | Rojo |
Habiendo configurado el sensor de acuerdo a lo que se requiera el pin de salida mandara una señal cuadrática de un periodo de 50%, la manera de recopilar el color de cada fotoreceptor no es un valor tan evidente, además necesita de calibración que veremos en la siguiente lección. Pero saber que no hay que medir el valor de la amplitud de la señal, sino su frecuencia.
El esquema del circuito seria:
La señal de salida que obtenemos es una señal cuadrada, que será más estrecha o más ancha en función del valor de rojo, verde o azul que estamos leyendo.
Los valores que puede arrojar el pin de salida son:
S0 = H, S1 = H | 500 600 kHz | |
Full scale frequency | S0 = H, S1 = L | 100 120 kHz |
S0 = L, S1 = H | 10 12 kHz |
Los cálculos para definir los rangos en los que trabaja el sensor fueron sacados, censando un único objeto de los colores correspondientes y a una distancia especifica ya que dependiendo de estas variables el sensor cambia mucho de resultados.
- Los resultados para rojo fueron los siguientes:
NUM. | RED | GREEN | BLUE | CLEAR |
1 | 4 | 4 | 20 | 5 |
2 | 7 | 17 | 20 | 5 |
3 | 4 | 17 | 20 | 5 |
4 | 3 | 3 | 21 | 5 |
5 | 4 | 14 | 21 | 5 |
6 | 7 | 17 | 20 | 4 |
7 | 3 | 6 | 20 | 5 |
8 | 5 | 18 | 21 | 5 |
9 | 7 | 17 | 20 | 5 |
10 | 7 | 17 | 20 | 5 |
- Los resultados para azul fueron los siguientes:
NUM. | RED | GREEN | BLUE | CLEAR |
1 | 38 | 27 | 14 | 7 |
2 | 18 | 27 | 14 | 7 |
3 | 37 | 27 | 15 | 7 |
4 | 3 | 27 | 15 | 8 |
5 | 3 | 27 | 14 | 7 |
6 | 37 | 27 | 14 | 8 |
7 | 38 | 27 | 15 | 7 |
8 | 28 | 27 | 14 | 7 |
9 | 38 | 27 | 14 | 7 |
10 | 26 | 27 | 15 | 7 |
- Los resultados para verde fueron los siguientes:
NUM. | RED | GREEN | BLUE | CLEAR |
1 | 4 | 13 | 17 | 5 |
2 | 18 | 13 | 17 | 5 |
3 | 23 | 14 | 17 | 6 |
4 | 23 | 14 | 18 | 6 |
5 | 22 | 14 | 17 | 5 |
6 | 24 | 14 | 17 | 5 |
7 | 24 | 14 | 17 | 6 |
8 | 19 | 14 | 18 | 5 |
9 | 4 | 14 | 17 | 5 |
10 | 15 | 14 | 17 | 6 |
Con estos resultados se sacan promedios para crear rangos, en vista que casi todos los colores rondan de 1 a 30, estos resultados se multiplicaran por un numerador diferente para cada color y así crear rangos mas amplios.
Los rangos quedaran definidos de la siguiente manera como:
RANGO | COLOR |
6-9 | Rojo |
45-60 | Azul |
72-90 | Verde |
10-30 | Sin Filtro |
90-120 | Amarillo |
Y los multiplicadores de cada color para crear rangos mas altos:
COLOR | MULTIPLICADOR |
Sin Filtro | *1 |
Rojo | *1 |
Azul | *4 |
Verde | *6 |
Amarillo | *10 |
Buzzer:
es un pequeño transductor capaz de convertir la energía eléctrica en sonido. Para hacerlos funcionar solo basta conectar el positivo con el + y la tierra o negativo con el – de una batería o cualquier fuente de corriente directa.
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.
CÓDIGO¶
Se comienza llamando a scolor_TCS3200.h, que contiene los pines del sensor y buzzer definidos con los puertos de la tarjeta núcleo:
#include "scolor_TCS3200.h"
Se definen la telemetria que permite el arranque del programa y las frecuencias con las que trabajara el buzzer:
#define INITELE 0xFE #define DO 130 #define RE 150 #define MI 160 #define FA 180 #define SO 200
Se habilita la comunicación serial:
Serial command(USBTX, USBRX);
Se definen las variables globales:
// S0, S1, S2, S3, OUT scolor_TCS3200 (PA_8, PB_10, PB_4, PB_5, PB_3); PwmOut mybuzzer(PC_7);
Se definen las funciones del programa:
void setup_uart(); void leer_datos(); void leer_color();
Tasa de baudios para la comunicación serial:
void setup_uart(){ command.baud(115200); }
Comando de apertura para el envió de la trama desde Coolterm, expresado en Hexadecimal que ya esta definido como "FE":
void leer_datos(){ while(command.getc()!= INITELE); }
Desglosando la parte de lectura de color empezamos con definir las variables según el color que necesitamos, teniendo en cuenta que para leer el color amarillo se necesita activar los fotodiodos en conjunto de verde y azul:
void leer_color(){ long red = scolor.ReadRed(); long blue = scolor.ReadBlue(); long green = scolor.ReadGreen(); long clear = scolor.ReadClear(); long yellow= scolor.ReadBlue(); scolor.ReadGreen();
Estas lineas permiten maximizar las variables a rangos mas altos debido a que la señal de salida del sensor toma rangos pequeños, así que debemos multiplicar la salida para mas adelante darle rangos mas robustos para cancelar el margen de error:
blue*=4; green*=6; clear*=1; yellow*=10;
Se define como va a trabajar el sensor cuando la lectura arroje una frecuencia en el rango propuesto anteriormente para el color "Rojo" (Esto se debe hacer con cada color excepto con la parte de "Sin Filtro"):
if(red>=6 && red<=9){ printf ("FE01:%5d \n ",red); mybuzzer.write(0); mybuzzer.period_us(SO); mybuzzer.write(0.5); wait(1); mybuzzer.write(0); } else if (blue>=45 && blue<=60){ printf("FE02:%5d \n",blue); mybuzzer.write(0); mybuzzer.period_us(RE); mybuzzer.write(0.6); wait(2); mybuzzer.write(0); } else if (green>=72 && green<=90){ printf("FE03:%5d \n",green); mybuzzer.write(0); mybuzzer.period_us(DO); mybuzzer.write(0.4); wait(3); mybuzzer.write(0); } else if (yellow>=90 && yellow<=120){ printf("FE05:%5d \n",yellow); mybuzzer.write(0); mybuzzer.period_us(FA); mybuzzer.write(0.9); wait(5); mybuzzer.write(0); }
Para la lectura e impresión de "Sin filtro" (Que no se esta censando ningún color especifico), no se le pondrá un tiempo y continuara censado hasta que se le pongo al sensor un color de los propuestos anteriormente.
Por ultimo, para que el programa cense continuamente hasta que se cambie el programa o la telemetría se utilizara un return:
else if (clear>=10 && clear<=30){ printf("FE04:%5d \n",clear); mybuzzer.write(0); mybuzzer.period_us(MI); mybuzzer.write(0.7); } return leer_color ();
MANUAL DE USUARIO¶
Este fragmento del articulo explica los pasos a seguir al cliente para que de marcha al sistema Sensor & Buzzer, teniendo en cuenta que algunos pasos tienen una explicación mas en profundidad en el Manual técnico.
Los pasos a seguir son:
1. Conectar la tarjeta de desarrollo Núcleo STM F411RE, al puerto USB del PC.
2. Descargar el programa “Sensor_Buzzer”, a la tarjeta Núcleo STM F411RE.
3. Abrir el programa “CoolTerm” en el PC.
4. Abrir “Options” y determinar el puerto que varía según el dispositivo, además, definimos el budrate o la velocidad de la CPU que será de “115200”.
5. Luego damos click en “Connect” y luego en “Clear Data”, para inicializar el programa.
6. Luego damos “CTRL+T”, se abrirá la ventanilla que permite enviar la telemetría y damos clic en "HEX" (Hexadecimal), que indica el tipo de carácter que se va a enviar.
7. Escribimos “FE”, que es el comando que inicia el programa.
8. Dele click en “Send”, para enviar el comando hexadecimal y automáticamente el buzzer sonará con frecuencias diferentes de acuerdo al color censado o si no tiene filtro.
9. En la pantalla de CoolTerm se imprimirá un código en hexadecimal que indica el color censado o sin filtro.
La siguiente tabla indica cada comando impreso con su definición:
10. El buzzer también responderá con una señal de frecuencia, presentándola con un tono y tiempo especifico:
Color | Frecuencia | Tiempo |
Rojo | SO | 1 seg. |
Verde | DO | 3 seg. |
Azul | RE | 2 seg. |
Sin filtro | MI | Indefinido |
Amarillo | FA | 5 seg. |
11. La pantalla imprimirá continuamente la información, hasta que se oprima RESET en la tarjeta núcleo.