Manual U

Dependencies:   mbed

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)

MBED

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.

Sensor

Los pines de conexión están repartidos de la siguiente forma:

S0S1Escala de la frecuencia de salidaS2S3Tipo Fotodiodo
HH100%HHVerde
HL20%HLSin filtro
LH2%LHAzul
LLPower DownLLRojo

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:

Cirucuito

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 = H500 600 kHz
Full scale frequencyS0 = H, S1 = L100 120 kHz
S0 = L, S1 = H10 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.REDGREENBLUECLEAR
144205
2717205
3417205
433215
5414215
6717204
736205
8518215
9717205
10717205
  • Los resultados para azul fueron los siguientes:
NUM.REDGREENBLUECLEAR
13827147
21827147
33727157
4327158
5327147
63727148
73827157
82827147
93827147
102627157
  • Los resultados para verde fueron los siguientes:
NUM.REDGREENBLUECLEAR
1413175
21813175
32314176
42314186
52214175
62414175
72414176
81914185
9414175
101514176

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:

RANGOCOLOR
6-9Rojo
45-60Azul
72-90Verde
10-30Sin Filtro
90-120Amarillo

Y los multiplicadores de cada color para crear rangos mas altos:

COLORMULTIPLICADOR
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.

Buzzer

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.

Coolterm3

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”.

Coolterm1

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.

Coolterm2

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:

Telecomandos

10. El buzzer también responderá con una señal de frecuencia, presentándola con un tono y tiempo especifico:

ColorFrecuenciaTiempo
RojoSO1 seg.
VerdeDO3 seg.
AzulRE2 seg.
Sin filtroMIIndefinido
AmarilloFA5 seg.

11. La pantalla imprimirá continuamente la información, hasta que se oprima RESET en la tarjeta núcleo.


All wikipages