Está en la página 1de 19

Universidad Nacional de Ingeniería

Facultad de Ingeniería Mecánica

PRIMER INFORME – MÁQUINA EXPENDEDORA DE


PRODUCTOS GRANEL
Curso: PROCESADORES DIGITALES DE SEÑALES

Profesor: Borja Borja, Mario Gaston

Sección: “B”

Alumnos: Jara Cieza, Luis Enrique 20170121H

Barazorda Rodriguez, Edgar Jesús 20172003B

Soto Conde, Nick 20172007H

Santisteban Tuñoque, Cesar Deivi 20170029D

Aliaga Yauri, José Omar 20174011B

Alfaro Barrientos, Gino Javier 20170006D

2020
ÍNDICE

1. Objetivos................................................................................................................................2

1.1. Objetivo General..............................................................................................................2

1.1. Objetivos específicos.......................................................................................................3

2. Fundamento teórico................................................................................................................3

2.1. Comunicación serial del DSP...........................................................................................3

2.1. Selector de monedas CH-926..........................................................................................9

3. Resultados............................................................................................................................11

3.1. Programa de PC del HMI...............................................................................................11

3.1. Programa de PC del HMI...............................................................................................11

3.2. Programa del DSP..........................................................................................................14

3.3. Diagrama de flujo..........................................................................................................18

3.4. Diagrama electrónico....................................................................................................18

4. Conclusiones........................................................................................................................19

5. Referencias bibliográficas....................................................................................................19
1. Objetivos

1.1. Objetivo General

 Desarrollar un programa para la pantalla HMI para máquina expendedora

de productos granel mediante la comunicación serial con el DSP.

1.1. Objetivos específicos

 Desarrollar el código de programación para la pantalla HMI.

 Desarrollar el código de programación para el DSP.

2. Fundamento teórico

2.1. Comunicación serial del DSP

Para la comunicación serial con el DSP se tiene muchos caminos, veamos algunas

características generales e importantes de un DSP TMS320x2833x de Texas

Instruments:

 Conector RS – 232 con línea de drivers.

 Controlador USB JTAG embebido.

 Interface CAN 2.0 con línea de drivers y conector.

 Chip de memoria Flash de 512 Kb.

 Chip de memoria SRAM de 256 Kb.

 Conector de emulador IEEE 1149.1 JTAG en placa base.

 Conector de expansión múltiple.

De estas características vamos a utilizar el protocolo RS – 232, pero también se

podría usar el MODBUS. La comunicación serial es utilizado para enviar datos, a

través de largas distancias, ya que las comunicaciones en paralelo exigen


demasiado cableado para ser operativas. En este caso como se comunicará una

PC y un DSP, se utilizará una comunicación full – dúplex (cada sistema envía y

recibe datos al mismo tiempo). Además, la comunicación será asíncrona; debido a

que la PC que es un dispositivo asíncrono. Por este motivo se intercalará antes y

después los datos de información de estado (según la norma RS – 232), lo cual se

mostrará en las siguientes imágenes:

Figura 1: Trama genérica de una comunicación asíncrona.

Figura 2: Transmisión asíncrona.

El bit de inicio es utilizado para saber que la transmisión ha comenzado y es a

partir de entonces cuando debe leer las señales de la línea. También, se tiene un

bit de parada, el cual indica la finalización de la transmisión. Además, se tiene el

bit de paridad para detectar errores de transmisión, pero por lo general se le

coloca sin paridad.


Para establecer, la comunicación serial entre la PC y el DSP, se utiliza los

conectores DB9; estos cumplen las siguientes configuraciones para la

transmisión:

Conector DB9 hembra Conector DB9 macho

Figura 3: Distribución de pines en un conector DB – 9.

Tabla 1: Correspondencia entre pines y señales en un conector DB – 9.

Para la transmisión el conector macho es colocado en la PC y el conector hembra

es colocado en la DSP, siguiendo la norma RS – 232. Los niveles de tensión para

un nivel lógico alto entre -3V y -15V y para un nivel lógico bajo tendrán una

tensión entre +3V y +15V, siendo los más comunes los de +12V y -12V (según

norma RS – 232). Las conexiones que se usarán entre los conectores macho y

hembra son las siguientes:


RXD TXD

TXD RXD

DTR DSR

DSR DTR

RTS CTS

CTS RTS

MASA MASA

Las configuraciones que se usarán para la comunicación serial, son las siguientes:

Tabla 2: Configuración entre la PC y DSP.

El formato que sigue la comunicación serial en el DSP, bien puede seguir una

línea (un camino) o dos líneas (dos caminos), lo cual se muestra en la siguiente

figura:

Figura 4: Formato de interfaz de comunicación serial asíncrona.


Para la recepción de señales en los modos de comunicación del DSP, se muestra

la siguiente figura:

Figura 5: Modo de señales de recepción para la comunicación serial RX.

1. El bit de bandera RXENA (SCICTL1, bit 0) pasa a alto para habilitar la

recepción.

2. Los datos llegan al pin SCIRXD, el bit de START (inicio) es detectado.

3. Los datos se transfieren desde RXSHF al registro de búfer del receptor

(SCIRXBUF); una interrupción es solicitado. El bit de bandera RXRDY

(SCIRXST, bit 6) pasa a alto para indicar que un nuevo carácter ha sido recibido.

4. El programa lee SCIRXBUF; la bandera RXRDY es automáticamente

limpiado.

5. El siguiente byte de datos llega al pin SCIRXD; el pin START (inicio) es

detectado y luego borrado.

6. El bit RXENA es traído abajo para desactivar el receptor. Los datos continúan

para ser ensamblados en RXSHF pero no es transferido al registro del búfer del

receptor.

Para la transmisión de señales en los modos de comunicación del DSP, se muestra

la siguiente figura:
Figura 6: Modo de señales de emisión para la comunicación serial TX.

1. El bit TXENA (SCICTL1, bit 1) pasa a alto, lo que permite que el transmisor

envíe datos.

2. Se escribe en SCITXBUF; por lo tanto, (1) el transmisor ya no está vacío y (2)

TXRDY baja.

3. El SCI transfiere datos al registro de desplazamiento (TXSHF). El transmisor

está listo para un segundo carácter (TXRDY pasa a alto) y solicita una

interrupción (para habilitar una interrupción, bit TX INT ENA - SCICTL2,

bit 0 - debe establecerse).

4. El programa escribe un segundo carácter en SCITXBUF después de que

TXRDY sube (elemento 3). (TXRDY vuelve a bajar después de escribir el

segundo carácter en SCITXBUF).

5. La transmisión del primer carácter está completa. Comienza la transferencia

del segundo carácter al registro de desplazamiento TXSHF.

6. El bit TXENA pasa a nivel bajo para desactivar el transmisor; el SCI termina

de transmitir el carácter actual.

7. La transmisión del segundo carácter está completa; El transmisor está vacío y

listo para un nuevo carácter.


2.1. Selector de monedas CH-926

El Selector de monedas CH-926 permite la capacidad de cobro por monedas a un

proceso. El selector puede detectar hasta 6 tipos de monedas programables. Puede ser

utilizado de forma sencilla con Arduino, Raspberry Pi, PIC o un DSP.

El funcionamiento del selector es el siguiente: cuando una moneda valida es insertada,

el sensor analiza la moneda y genera pulsos de salida con una duración configurable

entre 20 a 60 ms, la cantidad de pulsos depende del tipo de moneda ingresado. El

selector utiliza variables como el diámetro, peso, velocidad de caída para determinar

la validez de la moneda. Internamente el selector analiza las variables y mediante un

algoritmo estadístico determina la validez de la moneda. Se puede seleccionar hasta 3

modos de comprobación para hacer más o menos sensible el proceso. Integrar el

selector a tus proyectos es muy sencillo; solo necesitas una fuente de 12V y una

entrada digital con interrupción. Cuando el selector detecte una moneda valida,

enviará pulsos al microcontrolador. La forma más eficiente de detectar y contar los

pulsos enviados es utilizando Interrupciones por flanco de subida (rising edge), de esa

forma el microcontrolador no desperdicia recursos en el conteo de las monedas.

El selector de monedas CH-926 es ampliamente utilizado en máquinas expendedoras,

juegos arcade, teléfonos públicos y más.


ESPECIFICACIONES TÉCNICAS

 Modelo: CH-926

 Voltaje de alimentación: 12 V DC

 Corriente de trabajo: 50 mA

 Diámetro de la moneda: 15 mm ~ 29 mm

 Espesor de la moneda: 1.8 mm ~ 3 mm

 Hasta 6 tipos de monedas programables

 Señal de salida: De pulso

 Tasa de precisión de identificación: 99.5 %

 Humedad de trabajo: < 95 %

 Tiempo de identificación: < 0.6 seg.

 Material: Plástico

 Incluye cable de conexión

 Dimensiones caja: 143*124*70mm

 Peso: 255 gramos

Figura 7: Modo de señales de emisión para la comunicación serial TX.


3. Resultados

3.1. Programa de PC del HMI

3.1. Programa de PC del HMI

Consiste de una ventana principal donde encontraremos los diferentes productos que se
podrán ofrecer, botones donde podremos seleccionar los pesos deseados y calcular el precio
a pagar.

Botón seleccionador de
producto

Cuadro de texto para


producto seleccionado

Teclado para ingresar


peso

Botón resumen de
Cuadro de texto para compra
peso seleccionado

Figura 8: Pantalla programada 1 del HMI.

Igualmente se observa el botón Pagar, el cual nos redirige a otra ventana donde se nos muestra un
resumen de compra.
Figura 9: Pantalla programada 2 del HMI.

En cuanto al código, se compartirá a continuación los principales tramos y sentencias.

Empezando por la comunicación serial que se realizará con en DSP, mediante la función
Transmitir () se ingresa como parámetro una cadena de bytes, los cuales serán enviados al
DSP uno por uno.

Para recibir lo datos, dado el caso se acordó que solo se hará recepción de un byte, por lo
que creamos una función Recibir_pago (), la cual regresa un valor entero.

Para el funcionamiento del HMI en que se seleccionaran diferentes alimentos con sus
respectivos pesos, se crea una clase Producto donde se podrán guardar datos necesarios para
realizar la transacción.
Para el iniciar la transmisión hacia el DSP, tenemos el botón CALCULAR, que no solo realiza
el cálculo del precio sino contiene el código para convertir los datos a enviar al DSP así como
de inicializar la función de transmisión.

Por otro lado, tenemos el botón PAGAR que envía un byte de reconocimiento al DSP para
activar el envío de datos del DSP al HMI, guardar los valores de transacción en una variable
tipo Producto, y abrir una nueva ventana donde se muestra el resumen de compra.
3.2. Programa del DSP

A) Código de monitorF28335.c

#include "stdlib.h"
#include "DSP2833x_Device.h"
#include "monitorF28335.h"
const float mipi=3.1415926535897932384626433832795;
Uint16 LoopCount;
Uint16 SendChar;
Uint16 ReceivedChar;

int onoff=0;

// Producto, precio y peso

float producto=0;
float precio=0;
float peso=0;
float preciototal=0;
float dinero=0;
int pagar;

//recibo de datos en la pantalla

Uint32 estado_ope=0;
Uint32 dinero_rec=0;
void AddrCant(void);
Uint32 Direccion=0;
int16 *memoria=0;
Uint32 Cantidad=0;
Uint32 tempref=0;
int caso=0;
Uint32 j=0;
int i;
void IniciarSerial(void)
{
scia_fifo_init(); // Inicializa el FIFO del SCI
scia_init(); // Inicializa el lazo de iteración
SendChar = 0;
}
void IteraSerial(void)
{
while(SciaRegs.SCIFFRX.bit.RXFFST ==0) {
return;
}; // espera por XRDY =1
ReceivedChar = SciaRegs.SCIRXBUF.all; //se lee el byte
SendChar=ReceivedChar; //se guarda en una variable
scia_xmit(SendChar); //se retransmite como ECO para que la PC sepa
caso=ReceivedChar; // se decodifica

switch (caso) { // con el CASE


case 0:
LeerDSP(); // Si el comando es un CERO Leer DSP
break;
////////////////// Selección del producto del 1-5
case 1:
//arroz
producto=1;
precio=2.8;
break;
case 2:
//cebada
producto=2;
precio=5.8;
break;
case 3:
//avena
producto=3;
precio=2;
break;
case 4:
//quinua
producto=4;
precio=2.5;
break;
case 5:
//cafe
producto=5;
precio=12;
break;

////////////////// Selección del precio del 6-17

case 6:
//1/2
peso=0.5;

break;
case 7:
//1
peso=1;
break;
case 8:
//1.5
peso=1.5;
break;
case 9:
//2
peso=2;
break;
case 10:
//2.5
peso=2.5;
break;
case 11:
//3
peso=3;

break;
case 12:
//3.5
peso=3.5;
break;
case 13:
//4
peso=4;
break;
case 14:
//4.5
peso=4.5;
break;
case 15:
//5
peso=5;
break;
case 16:
//5.5
peso=5.5;
break;

case 17:
//5.5
pagar=1;
break;

// Dinero de recibido

case 18:
//dinero
for (i=0;i<4;i++){
while(SciaRegs.SCIFFRX.bit.RXFFST ==0) { } //esperar a XRDY =1
ReceivedChar = SciaRegs.SCIRXBUF.all; //Leer byte del buffer
scia_xmit(ReceivedChar);// Enviar ECO
dinero_rec=(estado_ope<<8)+ReceivedChar; // Dirección
}
break;
// Estado de la operación

case 19:
//estado
for (i=0;i<4;i++){
while(SciaRegs.SCIFFRX.bit.RXFFST ==0) { } //esperar a XRDY =1
ReceivedChar = SciaRegs.SCIRXBUF.all; //Leer byte del buffer
scia_xmit(ReceivedChar);// Enviar ECO
estado_ope=(estado_ope<<8)+ReceivedChar; // Dirección
}
break;
};

//// Calculo del precio total:

preciototal=peso*precio;

//dinero=FuncionqueleeDinero();
//dinero_rec=FuncionqueleeDineroUint32();

if(dinero>0){
if(dinero>=preciototal){
if(pagar==1){
estado_ope=1;
//FuncionDeoperación(producto,peso);
//sleep(1000);
//terminar operación
}
}
}
// Refresco de variables
estado_ope=0;
pagar=0;
dinero=0;
preciototal=0;
peso=0;
precio=0;
producto=0;

B) Código de lab3.c

#include "DSP2833x_Device.h"
#include "DSP2833x_Examples.h"
#include "lab3.h"
#include "monitorF28335.h"
void main(void)
{
DINT; //deshabilita interrupciones
DRTM; //deshabilita interrupciones real time mode
InitSysCtrl(); //inicializa el sistema como PLL,clocks,watcgdog
InitSciaGpio(); // inicializa los pines scia para ser usados con su función
sci
InitPieCtrl(); //inicializa el apoyo de interrupción de periféricos
IER = 0x0000; //limpia máscara de interrupciones
IFR = 0x0000; //limpia bandera de interrupciones
InitPieVectTable(); //inicializa tabla de interrupciones por defecto
EINT; //habilita interrupciones
ERTM;
IniciarSerial(); //Inicialización de los parámetros del puerto serial A
do{ //hacer loop por lo menos una vez
IteraSerial(); //Rutina de espera del puerto serial
}while(1); //Itera infinitamente
}
3.3. Diagrama de flujo

En la siguiente imagen podemos observar la lógica de operación de nuestro sistema,


en la interacción del Selector de monedas, el DSP, la pantalla HMI, los actuadores y sensores.

Figura 10: Diagrama de flujo

3.4. Diagrama electrónico

En la siguiente imagen podemos observar las conexiones eléctricas de nuestro

sistema.
Figura 7: Diagrama electrónico

4. Conclusiones

 La comunicación basada en RS – 232 es una de las más fáciles de implementar.

Además, es una de las más eficientes en el envío de información entre una DSP y una

PC; debido a su facilidad tanto en código como en hardware y para aplicaciones no

tan complejas como el proyecto tratado.

 Es necesario acoplar un sistema selector de monedas a nuestro sistema ya que ellos

nos permiten la interacción directa con los consumidores. Es por ello que el sistema

selector de monedas CH-926 es una gran opción por su bajo costo y fácil

funcionamiento.

 Se concluye que una pantalla HMI con sistema operativo de Windows Embedded es

una opción ideal para el presente proyecto por su bajo costo, compatibilidad directa

con programa de Visual Studio, y por sus posibles aplicaciones en Internet de las

cosas.

5. Referencias bibliográficas

 http://bibing.us.es/proyectos/abreproy/11199/fichero/Volumen+I%252F3+-

+Interfaz+PC-DSP.pdf

 http://www.scielo.org.co/scielo.php?script=sci_arttext&pid=S1692-

17982014000100004

 http://www.ijera.com/papers/Vol3_issue4/JY3717961800.pdf

 Guías de referencias de los modelos TMS320x2833x, 2823x Serial Communications

Interface (SCI).

También podría gustarte