Planta Piloto para La Obtencion de Bioetanol - R5

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 116

Instituto Tecnológico de Lázaro Cárdenas

INSTITUTO TECNOLÓGICO DE
LÁZARO CÁRDENAS

TRABAJO DE INVESTIGACION

“PLANTA PILOTO PARA LA OBTENCIÓN DE BIOETANOL.”

PRESENTA:

MEDINA RAMOS MISAEL 18560576


RAYO MORALES ARMANDO 18560370

Cd. y Puerto Lázaro Cárdenas, Mich., Febrero 2022

Av. Melchor Ocampo # 2555, Col. Cuarto Sector, C.P. 60950, Cd. Lázaro Cárdenas, Michoacán,
Teléfono (753) 53 7 19 77, 53 2 10 40, 53 7 53 91, 53 7 53 92 Dirección Ext. 101
e-mail: direccion@itlac.mx Internet: www.itlac.mx.
CONTENIDO

CONTENIDO
CAPÍTULO I. PRELIMINARES..........................................................................6
1.1. INTRODUCCION........................................................................................................6
1.2. PLANTEAMIENTO DEL PROBLEMA.....................................................................8
1.3. ANTECEDENTES........................................................................................................9
1.3.1. ESTADO DEL ARTE.............................................................................................21
1.4. OBJETIVO GENERAL DE LA INVESTIGACIÓN.................................................24
1.4.1. OBJETIVOS ESPECÍFICOS..................................................................................24
1.5. JUSTIFICACIÓN.......................................................................................................24
1.5.1. ALCANCES Y LIMITACIONES...........................................................................26
CAPÍTULO II. MARCO TEÓRICO..................................................................28
2.1. INTRODUCCION..........................................................................................................28
2.2. SISTEMA DE ADQUISICIÓN DE DATOS (SAD).....................................................29
2.2.1. ELEMENTOS DE UN SISTEMA DE ADQUISICIÓN DE DATOS....................30
2.2.2. ESQUEMAS DE ADQUISICIÓN DE DATOS......................................................42
2.2.3. SISTEMAS DE ADQUISICIÓN DE DATOS BASADOS EN PC........................44
CAPÍTULO III. METODOLOGIA.....................................................................49
3.1. DIAGRAMA A BLOQUES DEL INVERSOR PARA UPS.........................................49
3.1.1. CARGADOR DE BATERÍA..................................................................................50
3.1.2. INVERSOR.............................................................................................................51
3.1.3. SISTEMA DE ALIMENTACIÒN ININTERRUMPIDA (UPS)............................56
3.2. DIAGRAMA COMPLETO DEL INVERSOR PARA UPS..........................................59
CAPÍTULO IV.....................................................................................................60
4.1. CARGADOR DE BATERÍA.........................................................................................62
4.2. INVERSOR....................................................................................................................64
4.3. UPS.................................................................................................................................65
CAPÍTULO V......................................................................................................67
5.1. INVERSIÓN INICIAL...................................................................................................67
5.2. FINANCIAMIENTO DE LA INVERSIÓN..................................................................70
5.3. PRESUPUESTO DE INGRESOS..................................................................................70

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CONTENIDO

5.3. PRESUPUESTO DE EGRESOS....................................................................................71


5.3. ESTADO DE RESULTADOS PROYECTADO...........................................................73
CAPÍTULO VI.....................................................................................................75
6.1. CONCLUSIONES..........................................................................................................75
6.2. RECOMENDACIONES.................................................................................................76
REFERENCIAS...................................................................................................77

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO I. PRELIMINARES.

CAPÍTULO I. PRELIMINARES

1.1. INTRODUCCION.

El proyecto está orientado al estudio de los principales procesos que se llevan a cabo
en él, tales como la fermentación, que es una reacción química simple en la que el
azúcar reacciona con la levadura a determinada presión y temperatura para
convertirse en alcohol etílico y dióxido de carbono. Una vez realizada dicha
fermentación es importante separar el compuesto que se obtiene tanto como sea
posible, por lo que la planta se conformará también con un proceso de separación,
en este caso el óptimo es la destilación, por la naturaleza líquida de mezcla. Puesto
que es una planta a escala, en nuestros objetivos no se espera una cantidad
significativa del destilado sino un proceso funcional que nos permita estudiarlo.

Por lo anterior la importancia de este proyecto es principalmente en la comunidad


estudiantil, en particular, con los estudiantes de la carrera de ingeniería química,
puesto que se ponen en práctica varios de los fundamentos relevantes de las
asignaturas importantes en la carrera, que normalmente se enseñan solo de manera
teórica. Por ejemplo, conceptos de procesos de separación, reacciones químicas y
balances de materia.

Aunque la principal función de este proyecto es educativa, la utilización del etanol


puede tomar bastante importancia en nuestra comunidad. Un prototipo para la
obtención de alcohol etílico puede utilizarse para aprovechar desechos orgánicos,
como sobras de fruta y algunos otros tipos de vegetales, contribuyendo así, a un
máximo aprovechamiento de estos recursos que de otra manera solo serían
desperdiciados

Para la planta piloto se tiene pensado usar principalmente azúcar obtenida de la


caña, aunque también tiene la capacidad de usarse con frutas de todo tipo, como
manzana, mango, uva, piña, etc.

El proceso está diseñado para tener un gran control sobre las variables, la
temperatura en la sección de destilación se mide mediante un termómetro montado
en campo y se controla mediante un quemador.

La primera etapa del proceso consiste en un tanque de fermentado de acero


inoxidable con una capacidad de 20 litros, en el cual se introducirán las materias

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO I. PRELIMINARES.

primas, entre las cuales se encuentra la fruta o cualquier vegetal que contenga
azúcar, este se lava y desinfecta para evitar que contenga elementos que puedan
contaminar la mezcla, que se encuentra en un medio acuoso a temperatura
ligeramente alta. Finalmente, se le agrega la levadura y se agita.

El fermentador se cierra completamente y se deja en un lugar seco y a temperatura


ambiente, tratando de abrirlo lo menos posible y tras un tiempo determinado (de una
a dos semanas), se abre y obtiene el líquido fermentado con ayuda de un colador
fino.

La segunda etapa que conforma el proceso es la etapa de separación. Cuando se


obtiene el líquido fermentado, este se encuentra mezclado principalmente con agua,
por lo cual la graduación del etanol obtenido es bastante baja, como es una mezcla
líquido-líquido, se utiliza la operación de destilación, en esta se introduce la mezcla
en el tanque de destilación y este se calienta hasta alcanzar el equilibrio en la mezcla
que se separa en una corriente de vapor (destilado) y una de líquido que debe
contener principalmente agua, para lograr esto se lleva la mezcla hasta una
temperatura aproximada de 78 °C, en la cual se obtiene la mayor separación para
estos componentes.
La corriente de vapor se conecta a un condensador que lo pasa a una fase liquida y
se recolecta, dependiendo del grado de alcohol que se requiere, se decide si este se
redestila o si se obtiene lo buscado.

1.2. ANTECEDENTES.

La fermentación es un proceso químico a través del cual uno o varios compuestos


orgánicos son degradados a compuestos más simples en ausencia de oxígeno (en
anaerobiosis). Es llevado a cabo por muchos tipos de células para producir energía
en forma de ATP.
Hoy en día, los organismos capaces de “fermentar” moléculas en ausencia de
oxígeno son muy importantes a nivel industrial, pues son explotados para la
producción de etanol, ácido láctico y otros productos comercialmente relevantes que
sirven para hacer vino, cerveza, queso y yogurt, etc.
El conocimiento humano del fenómeno de la fermentación es tan antiguo, quizá,
como lo es la agricultura, pues desde hace miles de años que el hombre promueve la
conversión del jugo de uvas dulces aplastadas en vino efervescente o la conversión
de masas de trigo en pan.
Sin embargo, para las primeras sociedades, la transformación de estos elementos
“básicos” en alimentos fermentados era considerada una suerte de “misterio” o
evento “milagroso”, pues no se sabía qué la provocaba.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO I. PRELIMINARES.

El progreso del pensamiento científico y la invención de los primeros microscopios,


sin duda sentó un importante precedente en el campo de la microbiología y, con ello,
permitió la solución del “misterio” fermentativo.

Lavoisier, un científico francés, a fines de 1700 demostró que en el proceso de


transformación de azúcares en alcohol y dióxido de carbono (como lo que sucede
durante la producción de vino), el peso de los sustratos consumidos era igual que el
de los productos sintetizados.

Más tarde, en 1810, Gay-Lussac resumió estas afirmaciones en la siguiente reacción


química:

C6H12O6 (glucosa) → 2CO2 (dióxido de carbono) + 2C2H6O (etanol)

No obstante, durante muchos años se sostuvo que estos cambios químicos


observados durante la fermentación eran producto de las vibraciones moleculares
emitidas por materia en descomposición, es decir, por células muertas.

En palabras más sencillas: todos los investigadores estaban convencidos de que la


fermentación era un efecto secundario de la muerte de algún organismo y no un
proceso necesario para un ser vivo.
Más adelante, Louis Pasteur, en 1857, marcó el nacimiento de la química
microbiológica cuando asoció la fermentación con microorganismos como las
levaduras, a partir de lo cual el término fue relacionado con la idea de la existencia
de células vivas, con la producción de gases y de algunos compuestos orgánicos.
Posteriormente, en 1920 se descubrió que en ausencia de oxígeno algunos extractos
musculares de mamíferos catalizaban la formación de lactato a partir de glucosa, y
que muchos de los compuestos producidos durante la fermentación de granos eran
producidos también por las células musculares.
Gracias a este descubrimiento, la fermentación fue generalizada como una forma de
utilización de la glucosa y no como un proceso exclusivo de levaduras y bacterias.
Muchos estudios posteriores afinaron considerablemente los conocimientos
relacionados con el fenómeno de la fermentación, pues se dilucidaron las rutas
metabólicas y las enzimas involucradas, lo que permitió su explotación para distintos
propósitos industriales.
La destilación era ya una técnica conocida en China alrededor del año 800 a.C.
empleándose para obtener alcoholes procedentes del arroz.
También se han encontrado textos en el Antiguo Egipcio que describen la destilación
para capturar esencias de plantas y flores. Como anécdota, se cree que una tal
María le egipcia fue la inventora del conocido Baño María.
En cualquier caso se sabe que la destilación era ya conocida en la Antigua Grecia y
en la Antigua Roma.
Su perfeccionamiento se debe seguramente a los árabes. De hecho, fueron los
primeros responsables de la destilación del alcohol a principios de la Edad Media. En

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO I. PRELIMINARES.

el siglo X el filósofo Avicena realizó una descripción completa de un alambique. Al


igual que alquimia, alambique o alquitara, la palabra alcohol es de origen árabe.
En principio sólo destilaban frutas y flores para obtener perfumes, así como triturados
minerales para obtener maquillajes. Unos polvos negros que se vaporizaban y se
dejaban solidificar de nuevo eran utilizados como pintura para los ojos de las mujeres
del harén. Se trataba del Kohl, que aún sigue usándose hoy en día. Cuando el vino
comenzó a ser destilado, dada la similitud del proceso adoptó el mismo nombre, Al
Kohl.
En la Edad Media, la destilación se practica sobre todo en el interior de los
monasterios, pero los alcoholes que se obtienen son muy vastos y se usan
únicamente con finalidades terapéuticas.
El primer nombre de verdadera importancia en la historia de la destilación fue Arnau
de Vilanova, médico y teólogo catalán, profesor de la Universidad de Montpellier,
quien en el siglo XIII publicó los secretos de la destilación del vino en su libro Liber
Aqua Vitae. Probablemente fue el primero en escribir sobre el alcohol y su tratado
sobre vinos y espirituosos constituyó un manual en su época. Parece ser que de tan
entusiasmado que estaba con los poderes curativos y restauradores del líquido que
lo denominó Aque Vitae (de aquí el término francés Eau de Vie). Para él, aquel licor
constituía el elixir de la vida. Su discípulo, el filósofo y químico, Ramón Llul continuó
con sus experimentos y lo llamó Aqua Ardens, agua que arde.
Para el público en general el aqua vitae era una medicina y sabía a tal. Si se
destinaban a la bebida, se maceraban con fruta y hierbas que contribuían a disimular
el sabor. Este fue el nacimiento de los licores.
Con la ilustración llega la ciencia moderna. A finales del siglo XVIII, la destilación
evolucionó gracias a Edouard Adam, que inventó un sistema para rectificar
alcoholes, consiguiendo así eliminar malos olores. Se sentaron las bases para la
destilación moderna.
En el siglo XIX la destilación de vinos era ya una industria ampliamente extendida en
Cataluña. Poblaciones como Sitges, Vilafranca, Valls y Reus fueron la sede de los
pioneros exportadores.

1.2.1. ESTADO DEL ARTE.

Diseño de una planta piloto para la producción de etanol a partir del bagazo de
la caña de azúcar. Carolina Parsons Martínez, Emmanuel Ramith Banqueth Verbel,
2004

En la universidad EAFIT, en el departamento de ingeniería mecánica se llevó a cabo


el diseño y construcción de una planta piloto para la producción de etanol a partir del
bagazo de la caña.
El proyecto busca construir un prototipo de una planta portátil para producción de
bioetanol hidratado, a partir de caña de azúcar con partes que se encuentren en el

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO I. PRELIMINARES.

medio y con herramienta de fácil adquisición, esto con el fin de reducir los costos del
producto y hacerlo viable.

Construcción de un prototipo de una planta portátil para producción de


bioetanol hidratado. Gustavo José Jaramillo Ruiz. 2009

Este proyecto fue realizado bajo el marco de compromisos adquiridos con el grupo
de Bioetanol
para celdas de combustible del CYTED (Programa iberoamericano de ciencia y
tecnologia para el desarrollo). El objetivo principal fue realizar el diseño de una planta
piloto para la producción de etanol a partir
del bagazo de la caña de azúcar, haciendo en primer lugar, una revisión bibliografica
de las tecnologias existentes para la producción de alcohol a partir de material
lignoceluidsico, de donde se escogió la tecnologia utilizada en este proyecto;
prehidrálisis con ácido diluido, Hidrolisis con ácido concentrado, fermentación con
Zymomonas Mobilis y la recuperación y recirculación del ácido teniendo en cuenta la
calidad del producto obtenido y la rentabilidad de su producción.

1.3. PLANTEAMIENTO DEL PROBLEMA.

Necesitamos una planta piloto para poder observar y estudiar el proceso de


producción alcohólica a partir de la fermentación de frutas y sus diferentes fases.

Debido a que nunca pudimos ver el proceso completo de producción de alcohol


mediante fermentación y destilación, solo la destilación, decidimos crear esta planta
piloto para poder observar y estudiar todas las fases de este proceso desde la
fermentación a la destilación. En el laboratorio llegamos a destilar alcohol, pero
nunca vimos el proceso completo de producción, y sería interesante ver, por ejemplo,
cómo cambia el tiempo de fermentación dependiendo de la fruta o como afectan los
trazos de fruta al destilado final.

1.4. OBJETIVO GENERAL DE LA INVESTIGACIÓN.

Hacer una planta piloto de fermentado y destilado para obtener alcohol a partir de
frutas

1.4.1. OBJETIVOS ESPECÍFICOS.

Elaborar un fermentador

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO I. PRELIMINARES.

Elaborar un destilador

Poder obtener alcohol a partir de cualquier fruta con fructuosa

1.5. JUSTIFICACIÓN.

En este proyecto se aplican algunas asignaturas importantes de la carrera de


ingeniería química tales como: balances de materia y reacciones químicas  
puesto que “En muchos casos, los materiales que entran a un proceso toman parte
en una reacción química, por lo que los materiales de salida son diferentes de los de
entrada. En estos casos suele ser conveniente llevar a cabo un balance molar y no
de peso para cada componente individual” (Geankopolis, 2006, p. 14) 
pues al fermentador agregaremos materia orgánica que contenga azucares, como la
fructosa, glucosa, o sacarosa, y de esta obtendremos cierta cantidad de alcohol y
desechos orgánicos, así como dióxido de carbono y agua. 
 
También se aplican conceptos de procesos de separación, Christie John
Geankopolis (2006) afirma que “Muchos materiales de procesos químicos, así como
sustancias biológicas, se presentan como mezclas de diferentes componentes en
fase gaseosa, líquida o sólida. Para separar o extraer uno o más de los componentes
de la mezcla original, dicho componente se debe poner en contacto con otra fase.
Las dos fases se llevan a un contacto más o menos íntimo, de manera que el soluto
o los solutos puedan difundirse unos en otros. Por lo general, las dos fases son
miscibles entre sí. El par de fases puede ser gas-líquido, gas-sólido, líquido-líquido, o
líquido-sólido. Durante el contacto los componentes de la mezcla original se
redistribuyen entre ambas fases. Después de esto, las fases se separan por
cualquier método físico simple. Seleccionando las condiciones y fases apropiadas,
una fase se enriquece mientras que la otra se empobrece en uno o más
componentes.” (p. 641). Específicamente usamos estos conceptos en este proyecto
al separar el alcohol del fermentado mediante la destilación alcohólica 

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO I. PRELIMINARES.

1.5.1. ALCANCES Y LIMITACIONES.

Esta planta piloto tiene los siguientes alcances:

 Está conformado por un proceso de fermentación y uno de destilación


 Se puede usar como materia prima cualquier producto de origen vegetal que contenga
azúcar
 Cuenta con un termómetro para medir la temperatura
 Cuenta con una plancha eléctrica como medio de calor para el destilador
 Todos los tanques son de acero inoxidable
 Genera el flujo entre el condensador y el tanque de agua mediante una bomba
 Produce un destilado con una concentración de alcohol de entre 70 y 90%

Algunas limitaciones que presenta el sistema de adquisición de datos son:

 El proceso de fermentación necesita un tiempo mínimo de 2 semanas


 La incorporación de las materias primas en el fermentador se hace de forma manual
 No cuenta con un proceso de triturado de la materia prima
 El fermentador tiene una capacidad de 12 litros
 El destilador tiene una capacidad de 12 litros
 La regulación de la temperatura es manual
 El control de las válvulas de flujo es manual

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO II. MARCO TEORICO.

CAPÍTULO II. MARCO TEÓRICO

2.1. INTRODUCCION.

El mundo físico que nos rodea, es realmente analógico, y en teoría no hubiese cabida posible
de la tecnología actual, por su desarrollo alrededor de estructuras digitales; es por esto que,
para que una magnitud física en particular pueda ser controlada o modificada, requiere una
previa conversión, mediante un transductor, al correspondiente valor de tensión analógico; de
esta forma se posibilita el procesamiento de una magnitud específica, a través de un sistema
electrónico, para obtener una respuesta deseada [6, 7].

Estos sistemas electrónicos son conocidos como sistemas de adquisición de datos (DAQ), los
cuales permiten una integración de velocidad y control entre elementos centrales y periféricos,
con el objetivo de obtener una representación digital lo más fiel posible a la señal analógica
original [7].

Y precisamente, uno de estos elementos periféricos es constituido por la denominada


Instrumentación Virtual que permite entre otras cosas, flexibilidad, escalabilidad y
adaptabilidad en el manejo, visualización y análisis de señales a controlar, permitiendo
características superiores a la instrumentación tradicional [8].

Esta interacción entre el mundo físico y el virtual es posible a través del protocolo USB cuya
característica Plug & Play lo convierte en la interfaz de transmisión de datos y distribución de
energía, por excelencia [9, 10].

En este capítulo se muestra información útil para el compendio de los sistemas de adquisición
de datos, se continua con la instrumentación virtual para el desarrollo de plataformas HMI
(Interfaz Humano - Maquina), y se plasma el protocolo USB como interfaz de comunicación

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO II. MARCO TEORICO.

entre dichas arquitecturas. Se trata además, temas como los sistemas de procesamiento de
señales en los cuales se hace énfasis en los procesadores orientados a la alta velocidad.

2.2. SISTEMA DE ADQUISICIÓN DE DATOS (SAD).

En la actualidad el uso generalizado de las Tecnologías de la Información y Comunicación


(TIC), así como el avance gigantesco de la tecnología en general, han permitido un desarrollo
bastante notable en lo que a adquisición y tratamiento de datos se refiere. La variedad de
dispositivos destinados para tales fines es extensa, contemplando desde transductores hasta
sistemas completos basados en PC (Computadora Personal) [6] como podemos ver en la figura
2.1.

Figura 2.1. Sistemas de adquisición de datos basados en PC.

Los sistemas integrados mencionados, son los denominados Sistemas de Adquisición de Datos
(SAD) que poseen características de conversión de señales provenientes del entorno, en datos
digitales equivalentes factibles de manipulación. Las aplicaciones posibles que se pueden
desarrollar, a través de estos sistemas, dependerán únicamente de la función que se requiera
implementar [7].

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO II. MARCO TEORICO.

2.2.1. ELEMENTOS DE UN SISTEMA DE ADQUISICIÓN DE DATOS.

Al ser sistemas como tales, están compuestos de varios elementos con los que requieren
interactuar para cumplir con su fin ulterior. Estos elementos están agrupados por etapas que se
clasifican en [7]:

 Fuentes de señales de ingreso.


 Elementos de acondicionamiento de señales.
 Elementos de procesamiento de señales.
 Instrumentos de medición y despliegue de datos.
 Instrumentos de registro gráfico.

Fuentes de señales de ingreso.


Las fuentes de señales de ingreso son todas aquellas fuentes de índole eléctrica que pueden
ingresar a este sistema y se clasifican en dos tipos: directas e indirectas. Las primeras permiten
una medición de la señal en su forma original, mientras que las últimas requieren de un
transductor para poder convertir un fenómeno físico en su equivalente eléctrico para poder ser
leídas por dicho sistema [7]. En la figura 2.2 podemos apreciar la funcionalidad de un
transductor en el ingreso de estos S.A.D.

Figura 2.2. Diagrama de bloques de la funcionalidad de un transductor en el ingreso de un S.A.D.


.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO II. MARCO TEORICO.

Elementos de acondicionamiento de señales.


Los elementos de acondicionamiento analógico de señales tienen la función de acoplar la señal
que ingresa, a un rango aceptable para su lectura en el ADC (Convertidor Analógico – Digital)
usado [2]. Este acoplamiento se realiza a través de los siguientes procesos [6].

a. Amplificación; usada para los casos en que las señales que ingresan en el sistema sean
demasiado pequeñas como para que sus características e información útil sea
identificable por el ADC. Este proceso permite el incremento en la resolución y la
reducción en el ruido inherente de la señal en cuestión.
b. Aislamiento; en lo que respecta al transductor con el objeto de eliminar ruido, proteger
al sistema contra posibles picos de tensión/corriente y evitar lecturas erróneas
ocasionadas por lazos de tierra (diferencia de potencial en tierra).
c. Multiplexado; cuya funcionalidad se ve reflejada en una multiplicidad de mediciones a
diferentes fuentes de señales de ingreso. Estas mediciones se efectúan en una relación
de 1 a 1 entre el número de muestras tomado y el canal a medir por lo que la toma de
datos es secuencial. La velocidad efectiva de muestreo por canal es inversamente
proporcional al número de canales existentes.
d. Filtrado; cuya idea de existencia es la de limitar o eliminar en su totalidad todas
aquellas señales interferentes con la señal a manipular, con el objeto de obtener
solamente información útil para el respectivo procesamiento. Dado que puede
trabajarse con señales de índole continua y alterna, los filtros a implementar deberán
ser diseñados para que, en el ingreso del dispositivo ADC, se tenga la señal original sin
modificación de ningún tipo.
e. Linearización; usada en el ingreso de los S.A.D. para aquellos transductores cuya
respuesta no es lineal. Esta conversión tiene por objeto obtener información escalable
de la señal adquirida para poder transformarla a su símil digital y de esta forma
emplear dicha información para monitoreo y control de un proceso en particular.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO II. MARCO TEORICO.

f. Proceso de Sample & Hold; que permite garantizar la función total de un ADC a través
de un amplificador del mismo tipo, lo que permite a su vez mantener las muestras en el
estado requerido durante el tiempo propicio para su lectura y conversión [8].

Elementos de procesamiento de señales.


Los elementos de procesamiento de señales hacen referencia a los convertidores Analógico –
Digital y Digital – Analógico que se precisan como fundamentales en este tipo de sistemas. Se
detalla cada uno de ellos para su generalización en la aplicación respectiva.

 Conversión Analógica – Digital:


Como su nombre lo indica dicha conversión permite tratar señales entrantes, desde el mundo
analógico, como si fueran datos binarios, los mismos que pueden ser interpretados por una PC.
El dispositivo encargado de este proceso es el ADC (Conversor Analógico – Digital) que se
conceptúa como un dispositivo electrónico que convierte señales eléctricas, previamente
acondicionadas, en valores binarios; sus usos son diversos y se aplican en campos como las
telecomunicaciones, informática e incluso procesamiento de audio y video. Es el elemento
más importante en un sistema de adquisición de datos [2].

Existen de diferentes tipos cuya particularidad de función estará definida por la aplicación a la
que se encamina [8]. Su selección se hace dependiendo de los siguientes factores:

o Velocidad de conversión, o número máximo de conversiones en un tiempo


determinado.
o Resolución, o número de bits de dicho conversor.
o Costo.

La clasificación de estos conversores es extensa por lo que se opta por caracterizarlos en


grupos de estructuras símiles, así tenemos [8]:

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO II. MARCO TEORICO.

o De conversión directa, basados en comparar su entrada con una señal de referencia.


Estos conversores son los conocidos tipo Flash.
o Basados en métodos indirectos, cuya conversión pasa previamente por etapas
intermedias donde podemos encontrar variables temporales, lo que permite la
existencia de los conversores tipo Rampa y Doble Rampa.
o Estructuras realimentadas, cuya conversión depende exclusivamente de la entrada
de ingreso conceptuada como señal referencia. Estas estructuras dan lugar a los
conocidos conversores de Aproximaciones Sucesivas.
o Convertidores Sigma – Delta, cuya técnica de conversión es basada en el
sobremuestreo de la señal de ingreso con el objeto de brindar aplicaciones de tipo
DSP.
o Estructuras Pipeline, cuyos conversores usan estructuras en cascada para acoplar
su resolución a los rangos permitidos por un diseño limitante.

A continuación se analizan los conversores D/A y al final se plasman alternativas comerciales


para estos dispositivos.

 Conversión Digital – Analógica:


Esta conversión contempla el proceso inverso al anterior; el dispositivo usado, por excelencia,
para tal fin es el DAC (Conversor Digital – Analógico), que permite convertir una señal de
ingreso digital (código digital) en otra de tipo analógica (voltaje o corriente proporcional),
actuando básicamente como una interfaz entre el mundo de los ordenadores y el mundo real.
Su uso se extiende con aplicaciones símiles a su par inverso, el ADC, decantando
principalmente en el procesamiento del sonido [2].
Las características básicas que contemplan estos conversores son [8][9]:

o Resolución.
o Tiempo de establecimiento, que es el tiempo requerido para la conversión como tal.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO II. MARCO TEORICO.

o Precisión absoluta, entendida como el margen de error entre la salida analógica real
y la esperada.
o Estabilidad térmica
o Conversión unipolar o bipolar, entendida como la posibilidad de aceptación de
códigos unipolares o bipolares de ingreso.
o Códigos digitales de entrada, de los cuales los más aceptados son BCD,
complemento a dos, binario natural, etc.
o Salida analógica, cuya caracterización será por corriente o tensión.
o Sensibilidad ante variaciones de la fuente de alimentación.
o Margen dinámico de la señal de salida, entendido como el margen de señal que se
puede obtener en las salidas de estos conversores.

Dichos conversores se clasifican según dos criterios básicos, así tenemos [8]:
o Estructuras directas, que a su vez se clasifican en estructuras multiplicadoras con
fuentes de corriente o resistencias ponderadas y en estructuras con redes de
resistencias en escalera R-2R. Los efectos obtenidos a través de estas estructuras
son los mismos.
o Generación de impulsos (sobremuestreo) o bit-stream, esta técnica es empleada
sobre la frecuencia de salida de las muestras con el objeto de poder hacer uso de
conversores de menor precisión y, por ende, mayor resolución.

Las alternativas comerciales que se presentan para los dos tipos de conversores, A/D y D/A,
son extensas, entre las más usadas para aplicaciones de adquisición de datos se encuentran las
siguientes [8].

o DAC0800: Convertidor D/A en tecnología bipolar de índole R-2R.


o AD7528: Convertidor D/A en tecnología CMOS del tipo R-2R.
o CA3126: Convertidor A/D de doble rampa.
o ADC0801: Convertidor A/D de aproximaciones sucesivas.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO II. MARCO TEORICO.

o AD9000: Convertidor A/D flash de 6 bits.


o TLC320AD58C: Convertidor sigma-delta.

Se continúa con el análisis de la conversión en alta velocidad y sus elementos conformantes


como parte de los elementos de procesamiento de señales.

 Conversión enfocada a la alta velocidad:


Las consideraciones de diseño para la conversión a altas velocidades, son similares a las de
procesos de conversión en general. Los circuitos tipo flash o de alta velocidad se caracterizan
principalmente por forzar los límites del desempeño dinámico, decantando en aplicaciones
específicas que no poseen el rango de flexibilidad que se pudiera requerir [10].

Se hace énfasis principalmente en las técnicas de diseño de tipo monolítico e hibrido ya que
estas presentan grandes niveles de desempeño para el fin buscado. En esta sección se
presentan las arquitecturas internas de los diversos componentes de la conversión de alta
velocidad [10].

Componentes principales de un Sistema de Adquisición de Datos de Alta Velocidad:

Como se mencionó anteriormente, varias son las etapas de conversión, por lo que, en este
apartado se tratan sobre las más importantes definidas como amplificación, acondicionamiento
y conversión propiamente dicha.

En lo que respecta a la etapa de amplificación, las estructuras usadas son las siguientes:

o Amplificadores Buffer:

En la figura 2.3 podemos apreciar esquemas de Buffer para alta velocidad. Estos circuitos en
particular integran simplicidad, bajo costo, banda ancha y sencillez de aplicación. Estos

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO II. MARCO TEORICO.

arreglos son básicamente buffer de lazo abierto que tienen impedancias de 5 ohms y pueden
lograr anchos de banda de varios cientos de MHz.

Figura 2.3. Arquitectura interna de un amplificador tipo High Speed Buffer (Buffer HS). a. Buffer
Bipolar. b. Buffer FET

Dichos circuitos permiten manejar cargas altamente capacitivas sin implicar reducción alguna
del ancho de banda ofrecido.

o Amplificador Operacional:

Este tipo de amplificadores se presenta en la figura 2.4 y se caracterizan por poseer tiempos de
establecimiento por debajo de los 100ns con una tolerancia de 0.01% y anchos de banda en
lazo abierto por encima de los 100 MHz. Esta optimización decanta en perdida de ganancia en
lazo abierto, pero permite una estabilidad sobre la temperatura y linealidad mediante una
correcta adecuación de señal.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO II. MARCO TEORICO.

Se debe tener en cuenta que los amplificadores High Speed o de alta velocidad deben ser
diseñados con una resistencia interna mínima de 50 ohms ya que los cables empleados en
estos sistemas serán usados para interconectar señales de alta frecuencia [10].

Figura 2.4. Arquitectura interna de un amplificador Operacional tipo FET.

En lo que respecta a la etapa de acondicionamiento, se hace alusión a los comparadores debido


a que estos permiten el acoplamiento entre una señal de ingreso y el ingreso del convertidor
para evitar un funcionamiento erróneo del último. La estructura a usar será:

o Comparador:

En los sistemas de procesamiento de señales, este dispositivo es muy usado ya que


prácticamente traduce una comparación a señal digital para el resto del sistema. Son dos las
implementaciones que se pueden realizar para dichos comparadores, la primera será el uso de

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO II. MARCO TEORICO.

un amplificador de alta ganancia que posee una estructura en cascada para lograr un ancho de
banda de ganancia alta. En la figura 2.5 se ve la implementación de este tipo de comparador.

Figura 2.5. Arquitectura interna de un comparador de alta ganancia tipo High Speed.

La segunda implementación que es por aproximación tipo latch, se muestra en la figura 2.6 y
permite una gran ganancia a través de la puesta en marcha de la filosofía de estados
regenerativos, o estados realimentados, mediante la señal de habilitación latch.

Debido a que el comparador se mantiene en el estado latch (estado de memoria), resulta


imposible que se den oscilaciones en el mismo, lo que asegura su fiabilidad.

Los conversores A/D más rápidos del mercado hacen uso de comparadores tipo latch para
cada nivel de cuantización ya que implementan una moderada simplicidad capaz de permitir la
cantidad necesaria de integración de los demás dispositivos involucrados [10].

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO II. MARCO TEORICO.

Figura 2.6. Arquitectura interna de un comparador por Aproximación tipo Latch.

La etapa de conversión se efectúa a través de las siguientes estructuras:

o Conversores D/A:

El esquema de la figura 2.7 muestra la arquitectura interna típica de los conversores de alta
velocidad. Estos se caracterizan por ser compatibles con los elementos TTL. Dichos esquemas
permiten alcanzar resoluciones de 12 bits con un tiempo de establecimiento de 26ns con
tolerancia de 0.01% y puede operar en condiciones ambiente en un rango de entre -55º C y

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO II. MARCO TEORICO.

125º C. Además, son logrados a través de procesos monolíticos que aseguran la


compatibilidad con dispositivos de capa delgada [10].

Figura 2.7. Arquitectura interna de un conversor D/A de alta velocidad con corrientes equilibradas.

o Conversores A/D:

Para estos conversores, se tendrán características de alta velocidad o características High


Speed a través de tres arquitecturas que serán de compendio general trascendente a las demás
posibles. Estas son: Flash, Aproximaciones Sucesivas y Sub-Ranging.

Las primeras arquitecturas son características para las aplicaciones de alta velocidad, tienen
una estructura monolítica que les permite alcanzar velocidades mayores a 500MHz y tiempos
de conversión mayores a las 200MHz apegados al uso de dispositivos bipolares [10].

Las siguientes se caracterizan por su alto grado de desempeño mostrado en conjunto con su
compatibilidad hibrida y monolítica a través de tecnologías Bipolar, CMOS y BiMOS.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO II. MARCO TEORICO.

Las últimas mencionadas son también conocidas como de doble paso, pueden lograr una alta
resolución en comparación a los anteriores. Integran las características más relevantes de las
anteriores. El diagrama de bloques de la figura 1.8 muestra sus etapas embebidas.

Figura 2.8. Diagrama de bloques de un conversor de doble paso.

Como complemento a los elementos de procesamiento de señales tratados en este apartado


también se hace alusión a los procesadores destinados a la alta velocidad, los cuales son
analizados ampliamente en el siguiente ítem de este capítulo. Siendo esto lo referente a los
elementos de procesamiento de señales se continúa con la caracterización de las demás etapas
de un Sistema de Adquisición de Datos.

Instrumentos de medición y despliegue de datos.


Los instrumentos de medición y despliegue de datos, como su nombre lo indica, permiten la
verificación del proceso de adquisición a través de una fuente visible, sea numérica o sea
gráfica, permitiendo a los usuarios tener una base de comprobación del proceso en cuestión
[6].

Instrumentos de registro gráfico.


Los instrumentos de registro gráfico, a diferencia de los anteriores, permiten verificar la
evolución de este proceso a través de una interfaz gráfica que permita a los usuarios,
desplazarse sobre las escalas de visualización para mejorar la calidad de dicha evolución
gráfica [6].

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO II. MARCO TEORICO.

Una vez analizados los componentes de un Sistema de Adquisición de Datos, se continúa con
la caracterización de los diferentes esquemas que pueden presentarse en la adquisición de
datos como tal.

2.2.2. ESQUEMAS DE ADQUISICIÓN DE DATOS.

Los esquemas que podemos encontrar en un sistema de este tipo dependen de la característica
en la etapa de control que posean pudiendo ser de tres tipos [6].

 Esquemas de control analógico con monitoreo.


 Esquemas de control digital directo.
 Esquemas de control distribuido.

Esquemas de control analógico con monitoreo.


Cuyos procesos implícitos son de índole analógica. Se caracterizan por ser útiles para
aplicaciones de bajo costo, implementación sencilla y gran ancho de banda. El control es
generalmente de tipo on/off con tolerancias a errores bajas [6]. En la figura 2.9 podemos
observar una implementación de estos esquemas.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO II. MARCO TEORICO.

Figura 2.9. Sistema analógico de monitoreo para sólidos.

Esquemas de control digital directo.


Cuyos procesos implícitos requieren una previa conversión entre ámbitos analógicos/digitales
para poder actuar. Se caracterizan por estar encaminados a aplicaciones digitales, con costos
elevados de implementación. Estos permiten la posibilidad de registrar los eventos ocurridos
para un posterior análisis de los mismos [6]. En la figura 2.10 se observa una implementación
de este tipo.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO II. MARCO TEORICO.

Figura 2.10. Sistema digital de monitoreo para líquidos.

Dentro de estos esquemas se encuentran los sistemas de adquisición de datos basados en PC


que se caracterizan como útiles para los fines buscados.

Dichos sistemas, a su vez, se pueden clasificar en dos tipos que son:

o Sistemas de adquisición de datos local. Se denomina local porque el sistema en


cuestión reside dentro de la computadora o, en su defecto, se ubica a distancias
bastante cortas (10m) [3].
o Sistemas de adquisición de datos remoto. Se denomina remoto porque, a diferencia
de los anteriores, la computadora y el sistema de adquisición y acondicionamiento
de señales están ubicados a distancias superiores a los 20m uno del otro [3].

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO II. MARCO TEORICO.

Esquemas de control distribuido.


Son destinados para procesos altamente complejos, por lo que precisan de varios módulos de
trabajo para cumplir su fin ulterior. Presentan además características de confiablidad robustez
y rendimiento que no pueden ser alcanzadas por procesos símiles [6].

Debido a que los esquemas de control digital directo son los que se encuentran en auge en la
actualidad, por las innumerables aplicaciones que son factibles a través de ellos, se amplía su
caracterización a través de los sistemas basados en PC, cuyo funcionamiento se encuentra
basado en dicho esquema.

2.2.3. SISTEMAS DE ADQUISICIÓN DE DATOS BASADOS EN PC.

Los sistemas basados en PC, como se indicó anteriormente, precisan de una interacción entre
hardware y software para cumplir sus fines ulteriores, cuyos resultados se plasman en datos
disponibles para su correspondiente análisis. Esta interacción se presenta como factible a
través de una interfaz por protocolo USB y una interfaz gráfica a través de instrumentación
virtual. Se analizan las características de cada uno de ellos.

Protocolo USB.
El protocolo USB contempla una interfaz plug & play entre una PC y dispositivos periféricos.
Una característica importante de este protocolo es que permite a los dispositivos trabajar a
velocidades mayores, con característica High Speed, esto es, aproximadamente, de 120 a 200
veces más rápido que un dispositivo de puerto paralelo y de 800 a 1600 veces más rápido que
un dispositivo de puerto serial [5].

Los nuevos avances en lo referente a estos modelos han hecho posible la existencia comercial
del USB 3.0 que puede alcanzar velocidades de hasta 4.8 Gbps y contempla aplicaciones
enfocadas a HDTV.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO II. MARCO TEORICO.

La interfaz implementada a través de este protocolo debe caracterizarse por una marcada
simplicidad por lo que varios son los métodos que se implementa para tal fin. En la parte de
hardware, específicamente en la comunicación ADC – Microprocesador, cuando se presenta el
caso de módulos independientes, los esquemas más importantes son:

o Esquemas de datos recientes, donde el ADC trabaja continuamente. Al final de cada


conversión este actualiza un buffer de salida y luego comienza automáticamente una
nueva conversión. El microprocesador simplemente lee este buffer siempre que
requiere el dato más reciente. El método es adecuado pata aplicaciones que necesitan
actualizar datos solamente de manera ocasional [7].
o Esquemas Iniciar y esperar, donde el microprocesador inicia la conversión cada vez
que necesita nuevos datos, con la comprobación implícita del éxito en la conversión.
Cuando este detecta un fin de conversión, simplemente lee la salida del convertidor
para comenzar un nuevo ciclo de proceso [7].
o Esquemas por interrupción de microprocesador, donde el ADC provoca una
interrupción cada vez que completa una tarea de conversión, la cual es atendida por el
microprocesador a través de una rutina destinada para tales fines. Generalmente, en
estos esquemas, se hace uso de un controlador de interrupciones para afinar las
operaciones del microprocesador [7].

Para la interfaz en la parte de software en donde se transfiere en exclusivo la información entre


hardware – software se tienen los siguientes métodos de transferencia:
o Transferencias con mapeo de memoria, en donde el ADC es trabajado únicamente
como una dirección de memoria [7].
o Transferencias mapeadas entrada/salida (I/O), estas, al igual que las anteriores
consideran al ADC como una dirección de memoria pero además implementan
modularidad al separar las direcciones I/O con el fin de mejorar el diseño del sistema
[7].

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO II. MARCO TEORICO.

o Acceso directo de memoria (DMA), el cual se hace a través de un controlador DMA


para acceder a memoria directamente sin pasar por ningún proceso previo de control,
con lo cual incrementa la velocidad de transferencia de la información útil para los
fines buscados. Este método es útil para aplicaciones de alta velocidad [7].

Instrumentación virtual.
El termino instrumentación se refiere a la medición de variables tanto físicas como virtuales,
mediante dispositivos diseñados para tal fin, con el propósito de ejercer alguna acción sobre
dichas variables que generalmente son señales [11].

La instrumentación virtual tiene su origen como alternativa y ahorro de hardware, al


implementar el reemplazo de equipos físicos por software, manteniendo la misma
funcionalidad y características originales.

Esta virtualización representa una gran ventaja en lo que se refiere a repetitividad de procesos,
ya que un mismo hardware permite, mediante interconexión de redes, un uso general para un
mayor número de dispositivos de censado, que si lo estuviéramos haciendo mediante la
instrumentación convencional.

Dicha instrumentación virtual decanta en dos corrientes de censado mostrado al usuario final,
estas son:

o Elementos indicadores: O elementos de salida; estos permiten al usuario final verificar


procesos, así tenemos: LED, graficas, etc.
o Elementos de control: O elementos de entrada; estos permiten al usuario final la
asignación de variables de manipulación para ajuste de procesos en el sistema, así
tenemos: pulsadores, interruptores, etc.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO II. MARCO TEORICO.

Los elementos conformantes de un sistema de instrumentación virtual pueden ser infinitos,


solamente limitados por su practicidad de uso. Para construir dichos instrumentos virtuales, es
necesario, en principio, tres sistemas componentes: una computadora personal o procesador,
una tarjeta DAQ diseñada con acondicionamiento de señales y el software que va a ser usado
[12, 13]. Un esquema de estos sistemas se muestra en la figura 2.11.

Figura 2.11. Diagrama de bloques de un sistema basado en Instrumentación virtual.

El software a usar en estos sistemas, para contemplar aplicaciones con instrumentación virtual,
debe cumplir con las siguientes consideraciones [13]:

o Brindar compatibilidad con el Hardware de Adquisición y Acondicionamiento.


o Brindar funcionalidad de manipulación expresada en drivers para manejar un
determinado Hardware.
o Estar desarrollado bajo un sistema operativo de altas prestaciones.
o Brindar potencialidad y flexibilidad.

Los instrumentos virtuales, que forman una parte esencial de un sistema basado en PC, para
ser comparables con la realidad, deben cumplir con tres funciones específicas como son:
análisis, adquisición, y presentación de datos, solo así se asegura el brindar un dispositivo de
instrumentación completo [12, 13].

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO II. MARCO TEORICO.

Las características influyentes en el diseño de los componentes de un sistema de


instrumentación virtual son ruido y exactitud en las mediciones, por lo que su compendio
global nos ayudara a determinar, en la parte de pruebas, la magnitud de su influencia en la
señal a procesar.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO III. METODOLOGIA.

CAPÍTULO III. METODOLOGÍA.

3.1. SISTEMA DIGITAL PARA LA ADQUISICION DE DATOS


ANALOGICOS Y DIGITALES (DAQDyna).

El sistema digital para la adquisición de datos analógicos y digitales se presenta en el


diagrama a bloques en la Figura 3.1. Como se puede observar el DAQDyna, está construido
alrededor de un microcontrolador de 8 bits, el sistema cuenta con dos puertos digitales de 8
bits y un puerto digital extra de 6 bits de niveles TTL configurables de manera independiente
como entradas o salidas, tiene 8 canales analógicos de entrada con una resolución de 10 bits a
5 Volts, cuenta además con un puerto de comunicación serial USART dedicado a controlar
servomotores Dynamixel, el puerto digital D tiene una función que permite generar 8 señales
de modulación de pulso PWM para controlar servomotores y finalmente el enlace con la
computadora se realiza mediante el puerto USB Plug & Play en modo CDC.

Figura 3.1. Diagrama a bloques del DAQDyna.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO III. METODOLOGIA.

3.1.1. EL MICROCONTROLADOR DE 8 BITS.

Esta etapa es la encargada de controlar el sistema DAQDyna mediante el microcontrolador


PIC18F45K50 de la compañía Microchip el cual es un microcontroladores de 8 bits, con
cuarenta pines y prestaciones medias/altas. Entre sus características más sobresalientes
destacan [14]:

 Puerto USB compatible con V2.0, velocidad máxima sin cristal de 12 Mbps, buffer
RAM de acceso de 1 kByte.
 Estructura de oscilador flexible con multiplicadores de reloj PLL de x3 y x4, dos
modos de reloj externo de hasta 48 MHz (12 MIPS), oscilador interno de 31 kHz a 16
MHz.
 Hasta 33 terminales de E/S como puertos digitales, con corriente de 25 mA.
 Tres Interrupciones externas programables.
 Módulo de puerto serie síncrono maestro, compatible con comunicación SPI a tres
cables e I2C modo maestro esclavo.
 Modulo convertidor analógico a digital de 10 bits con 25 canales de entrada.
 Módulo USART mejorado, que soporta RS-485, RS-232 y LIN / J2602 y detección
automática de baudios.
 Tecnología flash CMOS de alta velocidad y bajo consumo.
 Arquitectura optimizada del compilador C para códigos reentrantes.
 Amplio rango de voltaje de funcionamiento de 2.3 V a 5.5 V.
 Memoria flash de programa de 10,000 ciclos de borrado / escritura, retención de datos
mínima de 20 años.
 Niveles de prioridad para interrupciones.
 Auto programable bajo control de software.
 Multiplicador de hardware de ciclo único 8 x 8.
 Temporizador de vigilancia extendido (WDT): Periodo programable de 4 ms a 131 s.
 Programación en serie en circuito de suministro único (ICSP) a través de dos pines.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO III. METODOLOGIA.

En la figura 3.2., se pueden observar la arquitectura externa del PIC18F45K50. Este


dispositivo tiene cuatros puntos de alimentación y cuenta con 40 terminales en su montaje
tipo DIP. Tiene una memoria de programa tipo FLASH de 32 Kbyte, 2 Kbyte de memoria
SRAM para datos volátiles y 256 bytes de memoria para datos tipo EEPROM [14].

Figura 3.2. Arquitectura externa del PIC18F45K50.

Esta etapa se implementó usando la tarjeta de desarrollo modelo X-TRAINER P8 LITE de la


compañía Microside Technology [15].

X-TRAINER P8 LITE (Figura 3.3.) es una versión ligera del emblemático X-TRAINER P8,
un módulo de desarrollo para proyectos electrónicos basados en microcontroladores PIC de 40
terminales a 8 bits, su nuevo y compacto diseño permite la programación, depuración e
implementación de códigos. Conserva la característica de tener un conector SIL de 40 pines
clasificado por puertos que facilita la integración en un Protoboard, sin importar el
microcontrolador PIC que se coloque en el zócalo siempre se conservará la misma distribución

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO III. METODOLOGIA.

de los pines. Dispone de dos push button (RESET y BOOT), un LED para uso de propósito
general, un conector micro USB para comunicación por el puerto USB del PIC y un conector
ICSP para el uso de programadores externos [15].

Figura 3.3. Tarjeta de desarrollo X-TRAINER P8 LITE.

Especificaciones técnicas:
 Fuente de alimentación: 5 V.
 Conector de alimentación externa: 7-12 VDC.
 Compatible con 104 microcontroladores Microchip PIC® de 40 pines a 8 bits.
 Conector SIL macho de 40 pines serigrafiado para acceso a puertos digitales,
analógicos y periféricos.
 Conector micro USB tipo-B para programación y alimentación.
 Puerto de programación ICSP.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO III. METODOLOGIA.

A continuación se muestra la tabla de la descripción de la tarjeta X-TRAINER P8 LITE.

Tabla 3.1. Descripción de la tarjeta X-TRAINER P8 LITE.

La elección de esta tarjeta se debe a su bajo costo de adquisición (su costo ronda los $200
pesos mexicanos), la posibilidad de permitir insertarse en un Protoboard (figura 3.4.) gracias a

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO III. METODOLOGIA.

su peineta de más de 30 terminales tipo headers que nos permiten acceder a las funciones
incorporadas de sus terminales y nos facilita el poder realizar prácticas de laboratorio, además
los extremos de esta peineta tiene dos puntos para alimentar pequeñas cargas, ya que nos
permite tomar alimentación de +5V y GND.

Figura 3.4. La tarjeta X-TRAINER P8 LITE montada en un Protoboard.

La descarga del programa desarrollado para el sistema DAQDyna se realizó mediante el


puerto de programación ICSP incorporado en la tarjeta X-TRAINER P8 y el programador
PICkit3 de la compañía Microchip. Se configuro el microcontrolador con frecuencia de reloj
de 48 MHz utilizando su oscilador interno, esta es la máxima frecuencia posible que permite la
CPU del microcontrolador PIC18F45K50. El código del programa del Microcontrolador
PIC18F45K50 se encuentra en el Anexo A.

3.1.2. EL PUERTO USB.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO III. METODOLOGIA.

El sistema DAQDyna se enlaza con la computadora mediante el puerto USB, el


microcontrolador PIC18F45K50 cuenta con un puerto USB V2.0 el cual es configurado en
forma CDC (Communications Device Class) donde podremos emular un puerto tipo COM
serial desde el puerto USB de nuestra computadora.

El bus de comunicación USB (Universal Serial Bus) es un bus serie con una estructura de
árbol que permite la conexión de diversos dispositivos en cadena permitiendo la transferencia
síncrona y asíncrona entre estos [17].

Al momento de conectar un dispositivo USB, nuestro computador pregunta sobre su velocidad


de funcionamiento y el controlador (driver) que debe cargarse para realizar una configuración
adecuada.

La comunicación USB es un bus punto a punto, que comienza en el HOST y cuyo destino es
el HUB. El HOST es el dispositivo maestro que inicia la comunicación y el HUB es el
dispositivo que contiene uno o más conectores o conexiones hacia otros dispositivos USB.
Cada conector es un puerto USB.

Además, cada dispositivo USB tiene una jerarquía de descriptores que informan al host sobre
cómo se constituye el dispositivo y sus características de funcionamiento, tales como: la clase,
el número de serie del producto, la identificación del fabricante, el tipo de dispositivo, etc.

El cable USB posee internamente un par trenzado (D+ y D-) además de la tierra y la
alimentación (+5V). USB es muy popular debido a su compatibilidad con diversas
plataformas y sistemas operativos, además de su bajo costo de implementación y su facilidad
de uso. Hay dos tipos de puertos y conectores de cables USB: A, B y C. En la actualidad se ha
ampliado el alcance de conectores utilizados para dispositivos USB, pero la mayoría de
productos USB todavía utilizan los conectores con interfaces A y B (figura 3.5.).

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO III. METODOLOGIA.

Figura 3.5. Esquema de los conectores tipo de conectores USB.

Clases de comunicación USB.

Básicamente, hay tres tipos de clases más utilizadas: Human Interface Device (HID), Mass
Storage Device (MSC), Communications Device Class(CDC).
Nuestro enfoque de estudio estará en la Clase de Dispositivo de Comunicaciones (CDC). Los
dispositivos de este tipo de clase implementan un mecanismo de comunicación de propósito
general que se puede utilizar para la comunicación entre la mayoría de los dispositivos.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO III. METODOLOGIA.

Normalmente, los dispositivos clasificados como USB-CDC son: módems, dispositivos de


red, comunicación inalámbrica, interfaces de hardware dedicadas, etc [16].

Pueden existir diferentes configuraciones en un sistema USB, y son los dispositivos


conectados a este sistema los encargados de suministrar esta información a través de los
descriptores los cuales poseen campos que permiten al sistema clasificar al dispositivo y
asignarle un driver.

La primera información relevante corresponde al fabricante del dispositivo USB y el producto.


Estas dos informaciones se dan a través de dos números conocidos como VIP (USB vendor
ID) y PID (Product ID).

El VID es un número de 16 bits asignado por el fabricante del hardware a conectar. En nuestro
caso podemos utilizar el número 04D8h que identifica a Microchip. O para este ejemplo, usar
el número propio del CCS C 2405h que viene por defecto en el compilador.

El PID es un número de 16 bits que identifica al dispositivo en concreto a conectar. En nuestro


caso utilizamos el número 000Bh que identifica a la familia de los PIC18 de microchip.

PIC USB en CCS C.

La comunicación USB con PIC es bastante compleja y su programación requiere entender


adecuadamente este protocolo, debido a esto tanto Microchip como otros compiladores tales
como el CCS proporcionan librerías (llamadas “Stacks” o pila de software) para facilitar la
programación de los microcontroladores. Para la comunicación USB-CDC (Communications
Device Class), se utiliza la libreria usb_cdc.h y algunas de las funciones disponibles de esta
librería son [16]:

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO III. METODOLOGIA.

 usb_cdc_kbhit(): retorna TRUE si hay uno o más caracteres esperando en el buffer de


recepción.

 usb_cdc_getc(): Obtiene el carácter recibido en el Buffer de recepción.


 usb_cdc_putc(char c): Coloca el carácter que recibe como parámetro en el buffer de
transmisión para ser enviado.

 usb_cdc_putc_fast (char c) – Similar a usb_cdc_putc (), excepto si el búfer de


transmisión está lleno, se saltará el char.

 USB_CDC_ISR () se puede definir si desea que una rutina específica cuando haya
datos entrantes por el USB CDC (puerto virtual virtual). Esta es una rutina de
“interrupción serial” la cual posee algunas limitaciones.

 usb_init(): Inicializa el hardware USB, esperando hasta que el periférico USB esté


conectado al bus (Lo que NO significa que haya sido enumerado por el PC). Habilita y
utiliza la interrupción USB.

 usb_enummerated(): Devuelve TRUE si el dispositivo ha sido enumerado por el PC.


En este caso el dispositivo entra en modo de operación normal y puede enviar y recibir
paquetes de datos.

 usb_init_cs(): Inicializa el protocolo USB y debe usarse cuando se utiliza una fuente


externa para alimentar el microcontrolador. Esta función requiere el uso del pin
USB_CON_SENSE, el cual puede definirse al comienzo del programa y ser asignado a
cualquier entrada digital del PIC, en este caso a modo de ejemplo, aunque no es
necesario lo vamos a colocar en el PIN RB2.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO III. METODOLOGIA.

 usb_task(): se usa para verificar el estado lógico del pin USB_CON_SENSE y debe
llamarse como máximo cada 1 ms cuando se usa una fuente externa. Si se alimenta el
PIC a través del propio USB NO es necesario llamar esta función cada 1 ms.

La librería posee más funciones, y se recomienda ver la cabecera del archivo usb_cdc.h para


conocer el restante de funciones. Es importante también ver los ejemplos disponibles por el
compilador CCS C, los cuales puedes encontrar en la carpeta de instalación del software
dentro de la carpeta “examples”. Se recomienda darle un vistazo al
ejemplo ex_usb_serial2.c y también al ejemplo ex_usb_serial3.c

Para iniciar la comunicación USB se usa la función: usb_cdc_init() y usb_init() en el main().


Es importante también estar llamando periódicamente la función usb_task() para que la
comunicación USB se mantenga por lo que nuestro programa tendrá que tener un bucle
infinito principal donde deberemos incluir la llamada a esta función.

Limitaciones de interrupción.
El manejo del USB es complejo, y a menudo requiere varias transmisiones de paquetes para
lograr la transferencia de un bloque de datos. La mayor parte de este procesamiento se realiza
en el USB ISR. Debido a esto, no se puede llamar la función usb_cdc_putc() dentro de
otro ISR, el USB ISR o cuando los ISR están deshabilitados. Para solucionar este problema, se
recomienda usar usb_cdc_putc_fast() y la opción USB_CDC_DELAYED_FLUSH.

Esto no garantiza una comunicación perfecta, porque si usas usb_cdc_putc_fast() para


desbordar el búfer TX, los datos se perderán. Tampoco se puede llamar
a usb_cdc_getc() dentro de otro ISR, el USB ISR, USB_CDC_ISR() o cuando las
interrupciones están desactivadas a menos que la función usb_cdc_kbhit() devuelva un
verdadero.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO III. METODOLOGIA.

La tarjeta X-TRAINER P8 LITE, cuenta con un conector micro USB tipo-B hembra para
programación, alimentación de +5 V (figura 3.6.) y al adquirir la tarjeta trae el cable de
conexión micro USB tipo-B macho & USB tipo-A de 1.20 mts de largo.

Para elegir el puerto USB de la tarjeta y quede habilitado eléctricamente se debe seleccionar
su conexión mediante un interruptor que conecta USB < o > GPIO, en este caso elegimos la
opción USB por su puesto.

Figura 3.6. Conector Micro USB Tipo-B de la X-TRAINER P8 LITE.

La configuración que se realizó con la programación del microcontrolador PIC18F45K50 para


el sistema DAQDyna, permite que la comunicación USB-CDC se pueda realizar a la velocidad
que el usuario decida, recomendamos siempre que sea posible utilizar la máxima velocidad
que permitan los controladores de la computadora para evitar cuellos de botella en la
transferencia de los comandos de configuración y control del sistema DAQDyna.

3.1.3. LOS PUERTOS DIGITALES DE ENTRADAS/SALIDAS.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO III. METODOLOGIA.

El sistema DAQDyna cuenta con tres puertos digitales de propósito general que son el puerto
B [B0 – B7] con 8 bits, el puerto D [D0 – D7] con 8 bits y el puerto E [E0 – E5] con 6 bits.
Los puertos B, D y E tienen la capacidad de ser configuradas cada una de sus terminales como
entradas o salidas de manera independiente, pero solo los puertos B y D se pueden configurar
para trabajar como buces de datos de 8 bits de entrada o salida.

Un modelo simplificado de una terminal digital de E / S de propósito general, se muestra en la


figura 3.7. Como se puede visualizar los puertos digitales cuentan con dos circuitos separados
para la función de entrada y salida digital, de manera que se pueden configurar como entradas
o salidas ya que cuentan con un buffer TTL. Cuando es configurado como entradas el puerto
queda en alta impedancia, mientras que cuando es configurado como salidas puedes escribir en
el puerto y leer el estado lógico de la salida sin interferir con los niveles de salida, ya que
cuenta el registro PORT para leer los niveles lógicos y el registro LAT que contiene el estado
lógico de las salidas y funciona como un registro tipo latch. Es posible colocar resistencia de
pull-up o de pull-down en los puertos de E/S sin problema [14].

Figura 3.7. Modelo genérico de las terminales de los puertos digitales.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO III. METODOLOGIA.

El microcontrolador PIC18F45K50 cuenta con resistencia de pull-up interna para lo que sería
el puerto digital B únicamente, estas resistencias pull-up se pueden activar o desactivar en

conjunto para todo el puerto digital B y tiene un valor de 30 kΩ cada una.

Decidimos utilizar estas pull-ups internas cuando el puerto digital B sea configurado como
entradas digitales, de manera que el usuario podrá habilitar o deshabilitar esta opción. Por lo
tanto cuando se habilitan las resistencias de pull-up las entradas digitales del puerto B, estas se
leerán con un estado lógico de 1 cuando estén en el aire.

Las terminales de los puertos digitales de propósito general B, D y E del sistema DAQDyna se
muestran en la figura 3.8., recordemos que se utiliza la tarjeta X-TRAINER P8 LITE. En este caso
concuerda perfectamente la nomenclatura de la tarjeta con la asignación de nombres de los puertos
digitales B y D.

El puerto digital B del sistema DAQDyna está conformado por las terminales marcadas como PORTB
[0 - 7] en la tarjeta X-TRAINER P8 LITE.
El puerto digital D del sistema DAQDyna está conformado por las terminales marcadas como PORTD
[0 - 7] en la tarjeta X-TRAINER P8 LITE.
El puerto digital E del sistema DAQDyna esta distribuidos en la tarjeta X-TRAINER P8 LITE:
E0  PORTC [0] E1  PORTC [1] E2  PORTC [2]
E3  PORTA [7] E4  PORTA [6] E5  PORTA [4]

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO III. METODOLOGIA.

Figura 3.8. Los puertos digitales B, D y E en la X-TRAINER P8 LITE.


3.1.3.1. CODIGOS PARA EL PUERTO DIGITAL B.

Al realizarse la programación del microntrolador PIC18F45K50 para establecer el protocolo


de comunicación y los códigos de configuración y control de los puertos digitales B, D y E
mediante el puerto USB-CDC, se establecieron los códigos que se tiene que mandar para
logara la manipulación de los puertos digitales estos son:

Códigos para la Configuración del Puerto Digital B.

Códigos para configurar de manera independiente el puerto digital B como entradas o


configurar todo el puerto digital B como entradas con resistencias pull-up o sin pull-up
internas.

Z+Y+0  Configura el pin B0 como entrada digital.


Z+Y+1  Configura el pin B1 como entrada digital.
Z+Y+2  Configura el pin B2 como entrada digital.
Z+Y+3  Configura el pin B3 como entrada digital.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO III. METODOLOGIA.

Z+Y+4  Configura el pin B4 como entrada digital.


Z+Y+5  Configura el pin B5 como entrada digital.
Z+Y+6  Configura el pin B6 como entrada digital.
Z+Y+7  Configura el pin B7 como entrada digital.
Z+Y+A  Configura todo el PORTB como entrada digital sin pull-up.
Z+Y+B  Configura todo el PORTB como entrada digital con pull-up.

Códigos para configurar de manera independiente el puerto digital B como salidas o


configurar todo el puerto como salidas digitales.

Z+X+0  Configura el pin B0 como salida digital.


Z+X+1  Configura el pin B1 como salida digital.
Z+X+2  Configura el pin B2 como salida digital.
Z+X+3  Configura el pin B3 como salida digital.
Z+X+4  Configura el pin B4 como salida digital.
Z+X+5  Configura el pin B5 como salida digital.
Z+X+6  Configura el pin B6 como salida digital.
Z+X+7  Configura el pin B7 como salida digital.
Z+X+A  Configura todo el PORTB como salida digital sin pullup.
Z+X+B  Configura todo el PORTB como salida digital con pullup.

Códigos para escribir en el Puerto Digital B.

Códigos para escribir o sacar un cero lógico por cada terminal del puerto digital B.

Z+W+0  Saca un 0 lógico por el pin digital B0.


Z+W+1  Saca un 0 lógico por el pin digital B1.
Z+W+2  Saca un 0 lógico por el pin digital B2.
Z+W+3  Saca un 0 lógico por el pin digital B3.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO III. METODOLOGIA.

Z+W+4  Saca un 0 lógico por el pin digital B4.


Z+W+5  Saca un 0 lógico por el pin digital B5.
Z+W+6  Saca un 0 lógico por el pin digital B6.
Z+W+7  Saca un 0 lógico por el pin digital B7.

Códigos para escribir o sacar uno lógico por cada terminal del puerto digital B.

Z+V+0  Saca un 1 lógico por el pin digital B0.


Z+V+1  Saca un 1 lógico por el pin digital B1.
Z+V+2  Saca un 1 lógico por el pin digital B2.
Z+V+3  Saca un 1 lógico por el pin digital B3.
Z+V+4  Saca un 1 lógico por el pin digital B4.
Z+V+5  Saca un 1 lógico por el pin digital B5.
Z+V+6  Saca un 1 lógico por el pin digital B6.
Z+V+7  Saca un 1 lógico por el pin digital B7.

Código para escribir o sacar por todo las terminales del puerto digital B.

Z+U+Data  Saca por todo el PORTB en contenido de Data (variable tipo


int8).

Códigos para leer los estados lógicos en el Puerto Digital B.

Z+T+0  Lee el estado lógico del pin B0.


Z+T+1  Lee el estado lógico del pin B1.
Z+T+2  Lee el estado lógico del pin B2.
Z+T+3  Lee el estado lógico del pin B3.
Z+T+4  Lee el estado lógico del pin B4.
Z+T+5  Lee el estado lógico del pin B5.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO III. METODOLOGIA.

Z+T+6  Lee el estado lógico del pin B6.


Z+T+7  Lee el estado lógico del pin B7.
Z+T+A  Lee todos los estados lógicos del PORTB.

Al realizar la función de lectura de estados lógicos del puerto digital B, el sistema DAQDyna
retorna la siguiente información hacia la PC mediante el puerto USB-CDC.

Z+T+PIN+ESTADO  PIN puede ser del ‘0’ al ‘7’ incluyendo la letra ‘A’ y ESTADO es el
carácter ‘0’ cuando el estado lógico es cero en la terminal que se lee o
‘1’ cuando el estado lógico es uno en la terminal que se lee, o
ESTADO es una variable de 8 bits que contiene la información de los
estados lógicos de todas las terminales del puerto digital B para la
opción PIN = ‘A’.

3.1.3.2. CODIGOS PARA EL PUERTO DIGITAL D.

Códigos para la Configuración del Puerto Digital D.

Códigos para configurar de manera independiente el puerto digital D como entradas o


configurar todo el puerto digital D como entradas.

Z+S+0  Configura el pin D0 como entrada digital.


Z+S+1  Configura el pin D1 como entrada digital.
Z+S+2  Configura el pin D2 como entrada digital.
Z+S+3  Configura el pin D3 como entrada digital.
Z+S+4  Configura el pin D4 como entrada digital.
Z+S+5  Configura el pin D5 como entrada digital.
Z+S+6  Configura el pin D6 como entrada digital.
Z+S+7  Configura el pin D7 como entrada digital.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO III. METODOLOGIA.

Z+S+A  Configura todo el PORTD como entrada digital.

Códigos para configurar de manera independiente el puerto digital D como salidas o


configurar todo el puerto como salidas digitales.

Z+R+0  Configura el pin D0 como salida digital.


Z+R+1  Configura el pin D1 como salida digital.
Z+R+2  Configura el pin D2 como salida digital.
Z+R+3  Configura el pin D3 como salida digital.
Z+R+4  Configura el pin D4 como salida digital.
Z+R+5  Configura el pin D5 como salida digital.
Z+R+6  Configura el pin D6 como salida digital.
Z+R+7  Configura el pin D7 como salida digital.
Z+R+A  Configura todo el PORTD como salida digital.
Códigos para escribir en el Puerto Digital D.

Códigos para escribir o sacar un cero lógico por cada terminal del puerto digital D.

Z+Q+0  Saca un 0 lógico por el pin digital D0.


Z+Q+1  Saca un 0 lógico por el pin digital D1.
Z+Q+2  Saca un 0 lógico por el pin digital D2.
Z+Q+3  Saca un 0 lógico por el pin digital D3.
Z+Q+4  Saca un 0 lógico por el pin digital D4.
Z+Q+5  Saca un 0 lógico por el pin digital D5.
Z+Q+6  Saca un 0 lógico por el pin digital D6.
Z+Q+7  Saca un 0 lógico por el pin digital D7.

Códigos para escribir o sacar uno lógico por cada terminal del puerto digital D.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO III. METODOLOGIA.

Z+P+0  Saca un 1 lógico por el pin digital D0.


Z+P+1  Saca un 1 lógico por el pin digital D1.
Z+P+2  Saca un 1 lógico por el pin digital D2.
Z+P+3  Saca un 1 lógico por el pin digital D3.
Z+P+4  Saca un 1 lógico por el pin digital D4.
Z+P+5  Saca un 1 lógico por el pin digital D5.
Z+P+6  Saca un 1 lógico por el pin digital D6.
Z+P+7  Saca un 1 lógico por el pin digital D7.

Código para escribir o sacar por todo las terminales del puerto digital D.

Z+O+Data  Saca por todo el PORTD en contenido de Data (variable tipo


int8).

Códigos para leer los estados lógicos en el Puerto Digital D.

Z+N+0  Lee el estado lógico del pin D0.


Z+N+1  Lee el estado lógico del pin D1.
Z+N+2  Lee el estado lógico del pin D2.
Z+N+3  Lee el estado lógico del pin D3.
Z+N+4  Lee el estado lógico del pin D4.
Z+N+5  Lee el estado lógico del pin D5.
Z+N+6  Lee el estado lógico del pin D6.
Z+N+7  Lee el estado lógico del pin D7.
Z+N+A  Lee todos los estados lógicos del PORTD.

Al realizar la función de lectura de estados lógicos del puerto digital D, el sistema DAQDyna
retorna la siguiente información hacia la PC mediante el puerto USB-CDC.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO III. METODOLOGIA.

Z+N+PIN+ESTADO  PIN puede ser de ‘0’ al ‘7’ incluyendo la letra ‘A’ y ESTADO es el
carácter ‘0’ cuando el estado lógico es cero en la terminal que se lee o
‘1’ cuando el estado lógico es uno en la terminal que se lee, o
ESTADO es una variable de 8 bits que contiene la información de los
estados lógicos de todas las terminales del puerto digital D para la
opción PIN = ‘A’.

3.1.3.3. CODIGOS PARA EL PUERTO DIGITAL E.

Códigos para la Configuración del Puerto Digital E.

Códigos para configurar de manera independiente el puerto digital E como entradas.

Z+M+0  Configura el pin E0 como entrada digital.


Z+M+1  Configura el pin E1 como entrada digital.
Z+M+2  Configura el pin E2 como entrada digital.
Z+M+3  Configura el pin E3 como entrada digital.
Z+M+4  Configura el pin E4 como entrada digital.
Z+M+5  Configura el pin E5 como entrada digital.

Códigos para configurar de manera independiente el puerto digital E como salidas.

Z+L+0  Configura el pin E0 como salida digital.


Z+L+1  Configura el pin E1 como salida digital.
Z+L+2  Configura el pin E2 como salida digital.
Z+L+3  Configura el pin E3 como salida digital.
Z+L+4  Configura el pin E4 como salida digital.
Z+L+5  Configura el pin E5 como salida digital.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO III. METODOLOGIA.

Códigos para escribir en el Puerto Digital E.

Códigos para escribir o sacar un cero lógico por cada terminal del puerto digital E.

Z+K+0  Saca un 0 lógico por el pin digital E0.


Z+K+1  Saca un 0 lógico por el pin digital E1.
Z+K+2  Saca un 0 lógico por el pin digital E2.
Z+K+3  Saca un 0 lógico por el pin digital E3.
Z+K+4  Saca un 0 lógico por el pin digital E4.
Z+K+5  Saca un 0 lógico por el pin digital E5.

Códigos para escribir o sacar uno lógico por cada terminal del puerto digital E.

Z+J+0  Saca un 1 lógico por el pin digital E0.


Z+J+1  Saca un 1 lógico por el pin digital E1.
Z+J+2  Saca un 1 lógico por el pin digital E2.
Z+J+3  Saca un 1 lógico por el pin digital E3.
Z+J+4  Saca un 1 lógico por el pin digital E4.
Z+J+5  Saca un 1 lógico por el pin digital E5.

Códigos para leer los estados lógicos en el Puerto Digital D.

Z+I+0  Lee el estado lógico del pin E0.


Z+I+1  Lee el estado lógico del pin E1.
Z+I+2  Lee el estado lógico del pin E2.
Z+I+3  Lee el estado lógico del pin E3.
Z+I+4  Lee el estado lógico del pin E4.
Z+I+5  Lee el estado lógico del pin E5.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO III. METODOLOGIA.

Al realizar la función de lectura de estados lógicos del puerto digital E, el sistema DAQDyna
retorna la siguiente información hacia la PC mediante el puerto USB-CDC.

Z+I+PIN+ESTADO  PIN puede ser de ‘0’ al ‘5’ y ESTADO es el carácter ‘0’ cuando el
estado lógico es cero en la terminal que se lee o ‘1’ cuando el estado
lógico es uno en la terminal que se lee.

3.1.4. LOS PUERTOS ANALOGICOS DE ENTRADAS.

El microcontrolador PIC18F45K50 contiene un convertidor analógico/digital de


aproximaciones sucesivas con 10 bits de resolución, que convierte señales analógicas del
orden de los 0 a 5 Volts en códigos binarios, además este convertidor A/D cuenta con un
circuito de muestreo y retención configurable conectado en la entrada de este. Los voltajes de
referencia positivo y negativo del convertidor A/D pueden ser configurados con el voltaje de
alimentación (0 – 5 V) o realizar la conexión de estos en las terminales A3  +Vref y A2  -
Vref del convertidor A/D.

El sistema DAQDyna cuenta con 8 canales analógicos de entrada de 10 bits conocido como
Puerto analógico A (AN0 – AN7), estos se encuentran distribuidos en las terminales de la
tarjeta X-TRAINER P8 LITE como se indica y se puede observar en la figura 3.9.

Puerto A0  PORTA [0] Puerto A4  PORTA [5]


Puerto A1  PORTA [1] Puerto A5  PE [0]
Puerto A2  PORTA [2] Puerto A6  PE [1]
Puerto A3  PORTA [3] Puerto A7  PE [2]

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO III. METODOLOGIA.

Figura 3.9. El puerto analógico A en la X-TRAINER P8 LITE.

3.1.4.1. CODIGOS PARA EL PUERTO ANALOGICO DE ENTRADA A.

Al realizarse la programación del microntrolador PIC18F45K50 para establecer el protocolo


de comunicación y los códigos de configuración y control del puerto analógico A mediante el
puerto USB-CDC, se establecieron los códigos que se tiene que mandar para logara la
manipulación de los puertos analógicos de entrada, estos son:

Códigos para configurar los voltajes de referencia del convertidor A/D.

Z+Z+A  Configura el voltaje de referencia del ADC con +Vref = VCC y


-Vref = GND.
Z+Z+B  Configura el voltaje de referencia del ADC con +Vref = A3 y
-Vref = GND.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO III. METODOLOGIA.

Z+Z+C  Configura el voltaje de referencia del ADC con +Vref = VCC y


-Vref = A2.
Z+Z+D  Configura el voltaje de referencia del ADC con +Vref = A3 y
-Vref = A2.

Códigos para realizar una conversión en los puertos analógicos del convertidor A/D.

Z+Z+0  Realiza conversión con el canal analógico A0.


Z+Z+1  Realiza conversión con el canal analógico A1
Z+Z+2  Realiza conversión con el canal analógico A2.
Z+Z+3  Realiza conversión con el canal analógico A3.
Z+Z+4  Realiza conversión con el canal analógico A4.
Z+Z+5  Realiza conversión con el canal analógico A5.
Z+Z+6  Realiza conversión con el canal analógico A6.
Z+Z+7  Realiza conversión con el canal analógico A7.

Al realizar una conversión con convertidor A/D el sistema DAQDyna retorna la siguiente
información hacia la PC mediante el puerto USB-CDC.

Z+Z+CANAL+ADH+ADL  CANAL es un carácter entre el ‘0’ y ‘7’ que nos indica que
canal realizo la conversión y los datos ADH y ADL son variables
de 8 bits que contienen la conversión binaria del valor analógico
(ADH  contiene solo la parte alta y ADL contiene la parte baja
de los 10 bits de resolución).

ADH  0 0 0 0 0 0 Bit-9 Bit-8

ADL  Bit-7 Bit-6 Bit-5 Bit-2 Bit-3 Bit-2 Bit-1 Bit-0

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO III. METODOLOGIA.

3.1.5. LA FUNCION PWM DEL PUERTO DIGITAL D.

El puerto digital D del sistema DAQDyna tiene una función especial para controlar 8
servomotores (servos) comerciales controlados por modulación de ancho de pulso (PWM).

Los servos son un tipo especial de motor de c.c. que se caracterizan por su capacidad para
posicionarse de forma inmediata en cualquier posición dentro de su intervalo de operación
(figura 3.10.). Para ello, el servomotor espera un tren de pulsos que se corresponde con el
movimiento a realizar. Están generalmente formados por un amplificador, un motor, un
sistema reductor formado por ruedas dentadas y un circuito de realimentación, todo en una
misma caja de pequeñas dimensiones. El resultado es un servo de posición con un margen de
operación de 180° aproximadamente. Un servo normal se usa para controlar un movimiento
angular de entre 0 y 180 grados. Un servo normal no es mecánicamente capaz de retornar a su
lugar, si hay un mayor peso que el sugerido por las especificaciones del fabricante.

Figura 3.10. Servomotores comerciales controlados por señal PWM.

En la figura 3.11., se muestra la composición interna de un servomotor. Se puede observar el


motor, la circuitería de control, un juego de piñones, y la caja. También se pueden ver los 3
cables de conexión externa:

 uno (rojo) es para alimentación, Vcc (~ +5volts);


 otro (negro) para conexión a tierra (GND);

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO III. METODOLOGIA.

 el último (blanco o amarillo) es la línea de control por la que se le envía la señal


codificada para comunicar el ángulo en el que se debe posicionar.

Figura 3.11. Composición interna de un servomotor.

La modulación por anchura de pulso, PWM (Pulse Width Modulation), es una de los sistemas
más empleados para el control de servos. Este sistema consiste en generar una onda cuadrada
en la que se varía el tiempo que el pulso está a nivel alto, manteniendo el mismo período
(normalmente), con el objetivo de modificar la posición del servo según se desee.

Para la generación de una onda PWM en un microcontrolador, lo más habitual es usar


un timer y un comparador (interrupciones asociadas), de modo que el microcontrolador quede
libre para realizar otras tareas, y la generación de la señal sea automática y más efectiva
(figura 3.12.). El mecanismo consiste en programar el timer con el ancho del pulso (el período
de la señal) y al comparador con el valor de duración del pulso a nivel alto. Cuando se produce
una interrupción de overflow del timer, la subrutina de interrupción debe poner la señal PWM
a nivel alto y cuando se produzca la interrupción del comparador, ésta debe poner la señal
PWM a nivel bajo.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO III. METODOLOGIA.

Figura 3.12. Señales de control PWM típicas para servos.

Como se puede observar en las figura 3.12., las señal PWM debe tener un periodo de 20 ms
(50Hz) y el ciclo de trabajo se controlara desde 0.5 ms (0° en la posición del servo) a 2.5 ms
(180° en la posición del servo).
3.1.5.1. CODIGOS PARA LA FUNCION PWM DEL PUERTO DIGITAL D.

Al realizarse la programación del microntrolador PIC18F45K50 para establecer el protocolo


de comunicación y los códigos de configuración y control del puerto digital D como
controlador de servomotores con señal PWM de salida mediante el puerto USB-CDC, se
establecieron los códigos que se tiene que mandar para logara la manipulación de las señales
PWM, estos son:

Códigos para activar o desactivar la función PWM en el puerto digital D.

Z+R+B  Activa las 8 salidas PWM del puerto digital D.


Z+S+A  Desactiva las salidas PWM del puerto digital D.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO III. METODOLOGIA.

Códigos modificar o ajustar el ciclo de trabajo de las señales PWM del puerto digital D.

Z+G+0+DutH+DutL  Modifica el ciclo de Trabajo del canal PWM0 del pin D0.
Z+G+1+DutH+DutL  Modifica el ciclo de Trabajo del canal PWM1 del pin D1.
Z+G+2+DutH+DutL  Modifica el ciclo de Trabajo del canal PWM2 del pin D2.
Z+G+3+DutH+DutL  Modifica el ciclo de Trabajo del canal PWM3 del pin D3.
Z+G+4+DutH+DutL  Modifica el ciclo de Trabajo del canal PWM4 del pin D4.
Z+G+5+DutH+DutL  Modifica el ciclo de Trabajo del canal PWM5 del pin D5.
Z+G+6+DutH+DutL  Modifica el ciclo de Trabajo del canal PWM6 del pin D6.
Z+G+7+DutH+DutL  Modifica el ciclo de Trabajo del canal PWM7 del pin D7.

Las señales PWM tiene un periodo de 24 ms en cada terminal del puerto digital D y el ciclo de
trabajo se puede modificar en un rango de 0.5 ms a 2.5 ms mandando con las variables DutH y
DutL una cifra numérica entre 0 y 24000 respectivamente, donde DutH es la parte alta y DutL
es la parte baja del ciclo de trabajo.

Ciclo de trabajo = DutH + DutL.


3.1.6. EL PUERTO DE COMUNICACIONES USART.

El sistema DAQDyna cuenta con un puerto de comunicaciones USART TTL habilitado en


modalidad full-duplex a una velocidad de 1 Mbps, para controlar los servomotores Dynamixel
de las series AX-12 y similares (figura 3.13.).

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO III. METODOLOGIA.

Figura 3.13. Servomotor Dynamixel AX-12A.

Dynamixel es una línea de actuadores en red de alto rendimiento para aplicaciones robóticas.
Fabricados por la industria coreana Robotis. Cada motor está totalmente integrado con
funcionalidad de realimentación y programación. La línea Dynamixel contiene motores que se
pueden controlar con la interfaz de red TTL o la interfaz de red RS-485.

Los motores Dynamixel aprovechan una estructura todo en uno para ofrecer una inmensa
versatilidad en aplicaciones robóticas. La retroalimentación de posición y el control son
estándar en todos los motores, y el control de torque directo está disponible en varios modelos
específicos. Múltiples motores pueden conectarse en red en forma de cadena, y cada motor
tiene un valor de ID modificable para controlar fácilmente motores específicos en la red.

Los actuadores Dynamixel son actuadores inteligentes y modulares que incorporan un


reductor de engranajes, un motor de DC de precisión y un circuito de control con
funcionalidad de red, todo en un solo paquete. A pesar de su tamaño compacto, pueden
producir alto par y están hechos con materiales de alta calidad para proporcionar la fuerza
necesaria y la resistencia estructural para soportar grandes fuerzas externas. También tienen la
capacidad de detectar y actuar sobre las condiciones internas, tales como cambios en la

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO III. METODOLOGIA.

temperatura interna o tensión de alimentación. Estos actuadores tienen muchas ventajas sobre
productos similares como son:

i. Precisión y velocidad: La posición y velocidad pueden ser ajustados con una


resolución de 1024 pasos en la seria AX y de 4096 en la serie MX.
ii. Retroalimentación: Están disponibles la retroalimentación para posición angular,
velocidad angular y torque de carga.
iii. Cumplimiento de conducción: El grado de cumplimiento se puede ajustar y especificar
en la posición de control.
iv. Retroalimentación: Posee retroalimentación para posición angular, velocidad angular y
torque de carga.
v. Sistema de alarma: El actuador robótico Dynamixel puede alertar al usuario cuando los
parámetros se desvían de los rangos definidos (temperatura interna, torque, voltaje, etc)
y puede también.
vi. Comunicación: El cableado es fácil con conexión en cadena, y admite velocidades de
comunicación de hasta 1 Mbps.
vii. Control distribuido: La posición, la velocidad, el cumplimiento y el par se pueden
ajustar con un único paquete de comandos, lo que permite al procesador principal
controlar muchas unidades Dynamixel incluso con muy pocos recursos.
viii. Plástico de ingeniería: El cuerpo principal de la unidad está hecho con plástico de alta
calidad de ingeniería que le permite manejar altas cargas de par.
ix. Soporte de eje: Se utiliza un soporte en el eje final para asegurar la no degradación de
la eficiencia con altas cargas externas.
x. LED de estado: El LED puede indicar el estado de error al usuario.
xi. Frame: Algunos modelos Incluyen un marco de bisagra y un marco de montaje lateral.

Dynamixel AX-12A
En la Tabla 3.1 se muestran las principales especificaciones del actuador Dynamixel AX-12A.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO III. METODOLOGIA.

Tabla 3.1. Especificaciones del actuador Dynamixel AX-12A


Peso (g) 54.6
Dimensiones 32mm x 50mm x 40mm
Relación de reducción de engranajes 1/254
Voltaje de alimentación 9 ~12V
Máximo par de sujeción 15.3 Kg ∙cm (12 V)
Resolución 0.29° x 1024
Ángulo de operación 300° ó Giro sin fin
Corriente máxima 1.5ª
Temperatura de operación -5°C ~ +70°C
Señal de comando Paquete digital
Tipo de protocolo Comunicación serial asíncrona Half dúplex
Protocolo TTL
Velocidad de comunicación 7843bps ~ 1Mbps
ID 254 ID (0 ~ 253)
Retroalimentación Posición, temperatura, carga, voltaje de entrada,
etc.
Material Plástico de ingeniería

La asignación de pines del actuador Dynamixel es como se muestra a continuación en la


Figura 3.14. Los dos conectores en el Dynamixel son conectados pin a pin, así el AX-12 puede
ser operado con un solo cable conectado. Cabe destacar que se utiliza la misma configuración
para toda la línea de actuadores Dynamixel.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO III. METODOLOGIA.

Figura 3.14. Asignación de pines en el servo Dynamixel.

Múltiples servomotores pueden ser conectados en paralelo como se muestra en la Figura 3.15.

Figura 3.15. Conexión de múltiples servos Dynamixel.

Para controlar los actuadores DYNAMIXEL, el controlador principal necesita convertir sus
señales UART al tipo semi-dúplex. El diagrama de circuito recomendado para esto se muestra
a continuación en la figura 3.16.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO III. METODOLOGIA.

Figura 3.16. Circuito de comunicación TTL para DYNAMIXEL.

Como se puede observar se necesitan tres terminales, la terminal de recepción de datos RX, la
terminal de transmisiones datos TX y la terminal de control.

La tarjeta X-TRAINER P8 LITE tiene las terminales RX y TX del módulo de comunicación EUSART
en los pines PORTC [7] y PORTC [6] respectivamente y la terminal que usaremos como de control es
la terminal digital del puerto E0 (figura 3.17.):

RX  PORTC [7] Recepción.


TX  PORTC [6] Transmisión.
E0  PORTC [0] Control.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO III. METODOLOGIA.

Figura 3.17. El puerto de comunicación C en la X-TRAINER P8 LITE.

Si se desea controlar servomotores Dynamixel es necesario armar un diagrama eléctrico como


el de la figura 3.16., conectando las terminales RX, TX y E0 del puerto de comunicaciones del
sistema DAQDyna, recomendamos utilizar cualquiera de los dos circuitos mostrados en la
figura 3.18., estos ya fueron comprobados y funcionan muy bien.

Figura 3.18. Circuitos de comunicación TTL recomendados para DYNAMIXEL.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO III. METODOLOGIA.

3.1.6.1. CODIGOS PARA EL PUERTO C DE COMUNICACIONES.

Al realizarse la programación del microntrolador PIC18F45K50 para establecer el protocolo


de comunicación y los códigos de configuración y control del puerto C de comunicaciones
para controlar actuadores de Dynamixel mediante el puerto USB-CDC, se establecieron los
códigos que se tiene que mandar para logara la manipulación de los servomotores Dynamixel,
estos son:

Códigos para controlar los servomotores Dynamixel, con el puerto C.

Z+H+1  Dynamixel_init(),
Esta función inicializa el puerto de comunicaciones USART y la
terminal de control para realizar los servomotores Dynamixel.

Z+H+2  Dynamixel_action(),
Esta función ejecuta las funciones guardadas en la memoria el
servomotor Dynamixel.

Z+H+3+ID  Dynamixel_readPosition(ID),
Esta función lee la posición en la que se encuentra el eje del servomotor
Dynamixel y retorna tal información. ID es el número de identificación
del servomotor.

Z+H+4+ID+newID  Dynamixel_setID(ID,newID),
Esta función cambia el ID del servomotor. newID es el nuevo
número de identificación que se asignara al servomotor.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO III. METODOLOGIA.

Z+H+5+ID+Status  Dynamixel_torqueStatus (ID,Status),


Esta función activa o desactiva el torque en el servomotor. Status
es ‘0’ para descativar el torque y ‘1’ para activar el torque.

Z+H+6+ID+Status  Dynamixel_setEndless(ID,Status),
Esta función activa o desactiva la rotación continua del rotor del
servomotor. Status es ‘0’ para desactivar el giro continuo y ‘1’
para activar el el giro continuo.

Z+H+7+ID+Side+speH+speL  Dynamixel_turn(ID,Side,Speed),
Esta función configura el giro hacia la derecha o
la izquierda y la velocidad del servomotor cuando
se configura la rotación continua. Side con ‘0’
realiza el giro hacia la izquierda y con ‘1’ el giro
hacia la derecha. speH y speL con forman un
numero de 10 bits para ajustar la velocidad de 0 a
1023 (0 a 114 rpm).

Z+H+8+ID+posH+posL+speH+speL Dynamixel_moveSpeed(ID,Position,Speed)
Esta función mueve el servomotor a la posición
indicada y a la velocidad que se desee. posH y
posL forman un numero de 10 bits de 0 a 1023 (0°
a 360°) para indicarle la posición. speH y speL
con forman un numero de 10 bits para ajustar la
velocidad de 0 a 1023 (0 a 114 rpm).

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO III. METODOLOGIA.

Z+H+9+ID+posH+posL+speH+speLDynamixel_moveSpeedRW(ID,position,Speed)
Esta función guarda en la memoria del servomotor
la orden de que se mueva a la posición y a la
velocidad que se desee. posH y posL forman un
numero de 10 bits de 0 a 1023 (0° a 360°) para
indicarle la posición. speH y speL con forman un
numero de 10 bits para ajustar la velocidad de 0 a
1023 (0 a 114 rpm).

Al realizar una petición de leer la posición del servomotor con la función


Dynamixel_readPosition(ID) el sistema DAQDyna retorna la siguiente información hacia la
PC mediante el puerto USB-CDC.

Z+H+ID+POSH+POSL  ID es el número de identificación del servomotor que está


respondiendo, mientras POSH y POSL forman un numero de 10 bits
que es la posición del servomotor (0 a 1023  0° a 360°).

La librería que se diseñó para controlar los actuadores Dynamixel se encuentra en el anexo B.

3.1.7. ESQUEMA COMPLETO DEL SISTEMA DAQDyna.

Un esquema completo del sistema DAQDyna se muestra en la figura 3.19., recordemos que
las terminales marcadas con la letra A son los canales analógicos de entrada, las macadas con
B son el puerto digital B, las marcadas con D son el puerto digital D y también son las salidas
de PWM, las marcadas con E son el puerto digital E, las terminales RX y TX son el puerto C
de comunicaciones y en los extremos de la tarjeta tenemos 5V y GND.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO III. METODOLOGIA.

Figura 3.19. Esquema completo del sistema DAQDyna.

Se recomienda retirar los jumperes marcados como BOOT y LED para que las terminal A2 y
A1 respectivamente queden libres como canales analógico de entrada.

El interruptor marcado como USB < > GPIO se debe colocar seleccionando el modo USB del
microcontrolador PIC18F45K50.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO IV. RESULTADOS

CAPÍTULO IV. RESULTADOS

4.1. PRUEBAS DEL SISTEMA DAQDyna.

Para comprobar el funcionamiento del sistema DAQDyna, se realizaron varias interfaces


graficas de usuario en RAD STUDIO XE7 y se desarrolló una librería que permiten probar los
puertos digitales de propósito general, los canales analógicos de entrada, las señales PWM
para controlar servomotores y la comunicación USART para los actuadores Dynamixel. La
librería del sistema DAQDyna para RAD STUDIO EX7 se encuentra en el Anexo C.

4.1.1. CONEXIÓN DEL SISTEMA DAQDyna A LA COMPUTADORA.

Para comenzar las pruebas del sistema DAQDyna, lo primero que se debe realizar es la
conexión de la tarjeta a la computadora. La primera vez que se conecta la tarjeta a la
computadora, esta le configura un controlador (Driver) y le asigna un puerto de
comunicaciones tipo COM.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO IV. RESULTADOS

Figura 4.1. El Administrador de dispositivos – Puertos (COM y LPT).


Podemos ver que puerto le asigno con el Administrador de dispositivos de la computadora en
el rubro de Puertos (COM y LPT), en la figura 4.1, se pude observar que instalo el controlador
CCS USB to UART y la asigno del puerto COM9.

La asignación del puerto COM9, se puede modificar para elegir otro puerto COM, esto se
realiza dando clic con botón derecho del mouse sobre la asignación actual CCS USB to UART
(COM9), lo que desplegara un menú emergente y elegiremos la opción Propiedades (Figura
4.2).

Figura 4.2. Menú emergente del puerto CCS USB to UART (COM9).

Al elegir la opcion Propiedades, nos abre una ventana de Propiedades CCS USB to UART
(COM9), donde elegiremos la pestaña de Configuración de Puertos, donde daremos clic en
Opciones avanzadas (Figura 4.3.), para abrir una nueva ventana de dialogo donde nos
permitirá elegir el tamaños del buffer de transmisión y recepción, y el número del puerto COM
que deseemos (Figura 4.4.).

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO IV. RESULTADOS

Figura 4.3. Cuadro de dialogo de Propiedades del puerto COM.

Podremos cambiar el puerto COM asignado por defaul, por el que consideremos pertinenete
de los 256 puertos disponibles, teniendo en cuenta no usar los puertos que marque que estan
en uso actualmente.

Figura 4.4. Cuadro de dialogo de Configuración avanzada del COM.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO IV. RESULTADOS

Siempre que se conecte la tarjeta del sistema DAQDyna en el mismo puerto USB de la misma
computadora le sera asignado el mismo puerto, en cambio si conectamos la tarjeta en otro
puerto USB de la computadora nos asignara un puerto COM direrente por default, asignacion
que podremos cambiar si lo deseamos.

Al conectar la tarjeta X-TRAINER P8 LITE al puerto USB, tambien se enciende un led verde en
el emblema XIDE, indicandonos la alimentacion de +5 V (Figura 4.5.).

Figura 4.5. DAQDyna conectada el USB de la computadora indicando alimentación.

El voltaje medido en las terminales de 5V y GND en los header de la peineta de la tarjeta nos
indicaron 5.07 V de CD medido con un multimetro FLUKE 179 TRUE RMS MULTIMETER.

Como se puede apreciar en la figura 4.5., la terjeta del sistema DAQDyna se monto en un
protoboard sin ningun incombeniente y se realizaron las conecciones para que el voltaje de
alimentacion de 5 V y GND esten en contacto con las lineas que se utilizan para alimentacion
en el protoboard. De manera que tenemos la alimentacion de +5 V y GND en el protoboar,
lista para realizar practicas de laboratorio.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO IV. RESULTADOS

Si necesitaramos incrementar la corriente de alimentacion del voltaje de 5V para nuestras


practicas de labarotario, la tarjeta DAQDyna cuenta con una entrada de voltaje de
alimentacion de 7-12 V con un conector JACK embra DC 5.0 mm x 2.1 mm, este voltaje pasa
por un circuito de regulacion de +5V con 500 mA que se ampalma con el voltaje del puerto
USB con un diodo para evitar que un corto circuito dañe al puerto USB. El voltaje de entrada
del JACK embra se puede obtener tambien desde la peineta en un jeadder marcado con VIN,
que se encuentra trambien conectado al protoboard y podemos alimentar cargas con ese
voltaje tambien.

4.1.2. COMPROBACION DEL FUNCIONAMIENTOS DE LOS PUERTOS


DIGITALES.

Para la comprobacion del funcionamineto de los puertos digitales se realizo una interfaz
grafica de usuario en RAD STUDIO XE7 en lenjuage C, la interfaz grafica controla el
encendidio y apagado de los puertos digitales de la tarjeta DAQDyna, el circuito que se tiene
que armar es muy sencillo consiste en 8 diodos emisores de luz conectodos en el puerto D
como se muestra en la figura 4.6.

Figura 4.6. Diagrama de conexión de 8 diodos led en el puerto D de la DAQDyna.

La interfaz grafica de usuario para probar el puerto digital D (Figura 4.7.), tiene cinco botones
y un grafico que representa los 8 diodos led conectados al puerto digital D. El boton Open nos
sirve para abrir o cerrar las comunicaciones, ademas podemos selecconar la velocidad de

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO IV. RESULTADOS

transferencia de datos con la tarjeta DAQDyna, los botones de Secuencia 1, Secuencia 2 y


Secuencia 3 nos sirven para seleccionar la secuencia de luces que se ejecuta en el puerto
digital D y el boton Secuencia OFF apaga las secuencias. Los ocho circulos marcados con los
letras D0 al D7 representan los diodos led conectados al puerto digital D y cambian de un
color rojo traslucido (led apagado) a un color rojo intenso (led encendido) de acuardo a la
secuencia elejida.

Figura 4.7. Interfaz gráfica de usuario para probar el puerto digital D.

En la figura 4.8 se muestra la tarjeta DAQDyna conectada a la computadora y trabajando con


la interfaz grafica a una velocidad de 256 kbps. Se puede apresiar algunos led encendidos
debido a que esta corriendo una de las secuencias de la interfas grafica de ususario que genera
tres secuencia de luces por el puerto digital D.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO IV. RESULTADOS

Figura 4.8. DAQDyna trabajando con la interfaz gráfica que controla el puerto D.
El voltaje que entrega en las terminales del puerto digital D cuando los diodos led encienden
es de 4.95V y el voltaje que entregan las terminales del puerto digital D cuando los diodos led
están apagados es de 0.02V. Todas las lecturas de estos voltajes se realizaron con un
multímetro FLUKE 179 TRUE RMS.

4.1.3. COMPROBACION DEL FUNCIONAMIENTOS DE LOS PUERTOS


ANALOGICO DE ENTRADA.

Para la comprobacion del funcionamiento de los puertos analogicos de entrada se realizo una
interfaz grafica de usuario en RAD STUDIO XE7 en lenguaje C, la interfaz grafica muestra el
voltaje del canal analogico cero (A0) numericamente con dos flotantes de presisicon y grafica
en tiempo real el voltaje del canal analogico uno (A1) mostrando tambien su voltaje
numericamente con dos flotantes de presicion. El circuito que se tiene que armar consta de

dos potenciometros de 20 kΩ conectados e los canales A0 y A1 como se puede ver en la


Figura 4.9.

Figura 4.9. Diagrama de conexión de dos potenciómetros a los canales A0 y A1 de la DAQDyna.

La tarjeta DAQDyna cuenta con terminales para alimentacion de pequeñas cargas


proporcionando el voltaje de 5V y GND necesarios para el circuito. La corriente maxima que

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO IV. RESULTADOS

puede entregar en sus terminales de alimentacion es de 500 mA cuando la tarjeta es


alimentada mediante el puerto USB.

La interfaz grafica de usuario (Figura 4.10.) tiene un boton de Open que nos sirve para enlasar
o desenlasar la tarjeta DAQDyna con la computadora y seleccionar la velocidad de
transferencia de informacion. Ademas cuanta con un indicador de conexión color verde que se
ilumina cuando la conexión de la terjeta y la computadora es exitosa.

Figura 4.10. Interfaz gráfica de usuario para probar los canales analógicos A0 y A1.

La velocidad del muestreo de los canales analogicos se ajusto en la interfaz graficas a 10 ms,
de manera que se miden 100 valores por segundo. La lectura del voltaje del canal analogico
A0 se muestra cada 10 leturas, de manera que se actualiza su indicacion 10 veces por segundo,
mientras que las lecturas del voltaje del canal analogico A1 se realizan cada 10 ms.

Al medir el voltaje de alimentacion de la tarjeta DAQDyna con un multimetro FLUKE 179


TRUE RMS nos midio 5.07V. Recordemos que la resolucion de los canales analogicos es de
10 bits por lo tanto con voltajes de 0 a 5 V tiene una sensivilidad de 4.9 mV. En la figura 4.11,

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO IV. RESULTADOS

se puede ver la terjeta DAQDyna conectada a la computadora, funcionando con la interfas


grafica para probar los puertos analogico de entrada.

Figura 4.11. DAQDyna trabajando con la interfaz gráfica que controla las entradas analógicas.

4.1.4. PRUEBAS ELECTRICAS A LA TARJETA DAQDyna.

La tarjeta DAQDyna esta basada en un microcontrolador de la compañía Microchip con


matricula PIC18F45K50 del manual del fabricante se obtubieron las siguientes
especificaciones electricas correspondiente a la configuracion de la tarjeta DAQDyna:

Temperatura de trabajo -40 °C a 125 °C


Temperatura de almacenamiento -65 °C a 150 °C
Disipacion de potencia total 1W
Maxima corriente consumida 125 mA
Maxima corriente en las terminales de salida 25 mA
Voltaje de operación minimo 2.7 V
Voltaje de operación maximo 5.5 V
Voltaje minimo para retencion de datos en RAM 1.5 V
Voltaje minimo para producir un RESET 2.2 V

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO IV. RESULTADOS

En la figura 4.12, se muestra la grafica de comportamiento de voltaje – frecuencia, como se


puede apreciar el microcontrolador trabaja normalmente a su maxima frecuencia que son 48
Mhz con el voltaje de alimentacion en 2.7V, si el voltaje de alimentacion cae a 2.3V la
frecuencia de trabajo tambien caera a 16 Mhz.

Figura 4.12. Grafica del Voltaje-Frecuencia de la tarjeta DAQDyna.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO IV. RESULTADOS

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO V. ANÁLISIS FINANCIERO

CAPÍTULO V. ANÁLISIS FINANCIERO

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


CAPÍTULO VI. CONCLUSIONES Y
RECOMENDACIONES

CAPÍTULO VI. CONCLUSIONES Y


RECOMENDACIONES

6.1. CONCLUSIONES.

6.2. RECOMENDACIONES.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


REFERENCIAS

REFERENCIAS
[1] Borjas Fernández, Luis Hernando; Espinel Fernández (2007), Francisco José,
“Desarrollo de un sistema de medición digital autónomo de variables meteorológicas
para el parque natural Paramillo”.

[2] Peñuela Franceschi, Martha Elena (2007). “Diseño de un Prototipo de Sistema de


Adquisición y Transmisión de Datos para la Medición de Parámetros Relacionados
con la Calidad del Aire.”.

[3] Guzmán Márquez, Adrián Ignacio (2009). “Diseño e implementación de sistema de


monitoreo en base a Labview para uso académico en laboratorios de energía”.

[4] Andrés Felipe López Orozco, Juan Miguel Aricapa Quiceno (2015). “Implementación
de un sistema de adquisición de datos para el análisis cinemático en un mecanismo
plano”.

[5] Moreno O., Juan (2012). “Desarrollo de un Sistema de Adquisición de Datos para
variables de temperatura y humedad para el Laboratorio de Suelos, Aguas y Plantas
de la UNET”.

[6] “Data Acquisition Fundamentals”; National Instruments; Mayo de 2006.

[7] RAMOS LÓPEZ, José; “Conversión de Señales”; Instrumentación Electrónica;

Universidad de El Salvador; 2009.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


REFERENCIAS

[8] RUIZ MERINO, Ramón; “Sistemas de adquisición de datos: Convertidores

D/A y A/D”; Universidad Politécnica de Cartagena, Colombia; Octubre de 2009.

[9] REMIRO DOMÍNGUEZ, Fernando; “Circuitos de adquisición de datos”; IES

Juan de la Cierva, Madrid; Octubre de 2001.

[10] KOEN, Mike; “High Speed Data Conversion”; Burr Brown, Application

Bulletin; Junio de 1991.

[11] Tracnova S.A.; “La Instrumentación Virtual”; National Instrumentos Corp;

Octubre de 2003.

[12] MENDIBURU DÍAZ, Henry Antonio; “Instrumentación virtual industrial”;

Julio de 2006.

[13] VELÁZQUEZ, Iván; “Instrumentación Virtual”; Universidad de la Frontera,

Chile.

[14] Microchip Technology Inc., “Manual de usuario del PIC18F45K50”.

[15] Microside Technology, “X-TRINER P8 LITE”.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


REFERENCIAS

[16] Andres Canovas Lopez, “C Compiler for Microchip PICMicro MCUs”.

[17] Sergio Andres Castaño Giraldo, “Comunicación USB – CDC con PIC + CCS

C.”

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


ANEXOS

A. PROGRAMA DEL PARA EL SISTEMA DAQDyna.

/*
Programa para la adquisicion de datos analogico y digitales
, controlar actuadores dinamixel con el puerto
USB de una computadora utilizando el puerto USB_CDC y
el modulo de comunicacion serial EUSART.

Realizo: M.C. Julio Cesar Gallo Sánchez.


*/

/*Configuración del PIC18F45k50*/

#include <18f45k50.h>
#fuses NOWDT
#device adc=10
#use delay(internal=48MHz)

#include "Dynamixel.h"
#include "usb_cdc.h"

#define BUFFLEN 16
#define TMPO 5

unsigned long W[8] = {58335,58335,58335,58335,58335,58335,58335,58335};


char i = 0, s = 1;

void main() {

char tm = TMPO,side;
char buffer[BUFFLEN],rxda,cd=0,fun=0,dfun,did,canp;
int buffid = 0, buffou=0;
long dpos,dspe;
unsigned long adc,pwm;

set_tris_a(0xff);
set_tris_b(0xff);
set_tris_c(0xff);
set_tris_d(0xff);
set_tris_e(0xff);
setup_adc_ports(sAN0 | sAN1 | sAN2 | sAN3 | sAN4 | sAN5 | sAN6 | sAN7);
setup_adc(ADC_CLOCK_DIV_8 | ADC_TAD_MUL_2);

enable_interrupts(INT_TIMER1);
enable_interrupts(INT_TIMER2);
enable_interrupts(GLOBAL);

usb_cdc_init();

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


ANEXOS

usb_init();
while(!usb_cdc_connected());

usb_task();
while(!usb_enumerated());

for(;;){
usb_task();

if(!usb_cdc_kbhit())
goto otra;

tm = TMPO;

do{
if(!usb_cdc_kbhit()){
delay_us(40);
tm--;
if(tm == 0)
break;
}
else{
buffer[buffid] = usb_cdc_getc();
buffid++;
}
}while(buffid < BUFFLEN);

otra: if(buffid >= BUFFLEN)


buffid = 0;

while(buffid != buffou){

rxda = buffer[buffou];
buffou++;
if(buffou >= BUFFLEN)
buffou = 0;

switch(cd){
case 0: if(rxda == 'Z')
cd = 1;
else
cd = 0;
break;

case 1: if(rxda >= 'G' && rxda <= 'Z'){


fun = rxda;
cd = 2;
}
else
cd = 0;
break;

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


ANEXOS

case 2: switch(fun){
case 'Z':
if(rxda >= '0' && rxda <= '7'){
set_adc_channel(rxda & 0x0F);
delay_us(5);
adc = read_adc();
printf(usb_cdc_putc,"ZZ%c%c%c", rxda, adc >> 8, adc);
}
else if(rxda == 'A')
setup_adc_ports(VSS_VDD);
else if(rxda == 'B')
setup_adc_ports(VSS_VREF);
else if(rxda == 'C')
setup_adc_ports(VREF_VDD);
else if(rxda == 'D')
setup_adc_ports(VREF_VREF);

cd = 0; break;

case 'Y': switch(rxda){


case '0': output_float(PIN_B0); break;
case '1': output_float(PIN_B1); break;
case '2': output_float(PIN_B2); break;
case '3': output_float(PIN_B3); break;
case '4': output_float(PIN_B4); break;
case '5': output_float(PIN_B5); break;
case '6': output_float(PIN_B6); break;
case '7': output_float(PIN_B7); break;
case 'B': set_tris_b(0xFF); port_b_pullups(false); break;
case 'A': set_tris_b(0xFF); port_b_pullups(true);
}
cd = 0; break;
case 'X': switch(rxda){
case '0': output_drive(PIN_B0); break;
case '1': output_drive(PIN_B1); break;
case '2': output_drive(PIN_B2); break;
case '3': output_drive(PIN_B3); break;
case '4': output_drive(PIN_B4); break;
case '5': output_drive(PIN_B5); break;
case '6': output_drive(PIN_B6); break;
case '7': output_drive(PIN_B7); break;
case 'A': set_tris_b(0x00);
}
cd = 0; break;

case 'W': switch(rxda){


case '0': output_low(PIN_B0); break;
case '1': output_low(PIN_B1); break;
case '2': output_low(PIN_B2); break;
case '3': output_low(PIN_B3); break;
case '4': output_low(PIN_B4); break;

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


ANEXOS

case '5': output_low(PIN_B5); break;


case '6': output_low(PIN_B6); break;
case '7': output_low(PIN_B7);
}
cd = 0; break;

case 'V': switch(rxda){


case '0': output_high(PIN_B0); break;
case '1': output_high(PIN_B1); break;
case '2': output_high(PIN_B2); break;
case '3': output_high(PIN_B3); break;
case '4': output_high(PIN_B4); break;
case '5': output_high(PIN_B5); break;
case '6': output_high(PIN_B6); break;
case '7': output_high(PIN_B7);
}
cd = 0; break;

case 'U': output_b(rxda); cd = 0; break;

case 'T': printf(usb_cdc_putc,"ZT%c",rxda);


switch(rxda){
case '0': if(input(PIN_B0))
usb_cdc_putc('1');
else
usb_cdc_putc('0');
break;
case '1': if(input(PIN_B1))
usb_cdc_putc('1');
else
usb_cdc_putc('0');
break;
case '2': if(input(PIN_B2))
usb_cdc_putc('1');
else
usb_cdc_putc('0');
break;
case '3': if(input(PIN_B3))
usb_cdc_putc('1');
else
usb_cdc_putc('0');
break;
case '4': if(input(PIN_B4))
usb_cdc_putc('1');
else
usb_cdc_putc('0');
break;
case '5': if(input(PIN_B5))
usb_cdc_putc('1');
else
usb_cdc_putc('0');
break;

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


ANEXOS

case '6': if(input(PIN_B6))


usb_cdc_putc('1');
else
usb_cdc_putc('0');
break;
case '7': if(input(PIN_B7))
usb_cdc_putc('1');
else
usb_cdc_putc('0');
break;
case 'A': usb_cdc_putc(input_b());
}
cd = 0; break;

case 'S': switch(rxda){


case '0': output_float(PIN_D0); break;
case '1': output_float(PIN_D1); break;
case '2': output_float(PIN_D2); break;
case '3': output_float(PIN_D3); break;
case '4': output_float(PIN_D4); break;
case '5': output_float(PIN_D5); break;
case '6': output_float(PIN_D6); break;
case '7': output_float(PIN_D7); break;
case 'A': setup_timer_2(T2_DISABLED,140,16);
set_tris_d(0xFF);
}
cd = 0; break;
case 'R': switch(rxda){
case '0': output_drive(PIN_D0); break;
case '1': output_drive(PIN_D1); break;
case '2': output_drive(PIN_D2); break;
case '3': output_drive(PIN_D3); break;
case '4': output_drive(PIN_D4); break;
case '5': output_drive(PIN_D5); break;
case '6': output_drive(PIN_D6); break;
case '7': output_drive(PIN_D7); break;
case 'A': set_tris_d(0x00); break;
case 'B': set_tris_d(0x00); output_d(0x00);
setup_timer_2(T2_DIV_BY_16,140,16);
s = 1; i = 0;
}
cd = 0; break;

case 'Q': switch(rxda){


case '0': output_low(PIN_D0); break;
case '1': output_low(PIN_D1); break;
case '2': output_low(PIN_D2); break;
case '3': output_low(PIN_D3); break;
case '4': output_low(PIN_D4); break;
case '5': output_low(PIN_D5); break;
case '6': output_low(PIN_D6); break;

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


ANEXOS

case '7': output_low(PIN_D7);


}
cd = 0; break;

case 'P': switch(rxda){


case '0': output_high(PIN_D0); break;
case '1': output_high(PIN_D1); break;
case '2': output_high(PIN_D2); break;
case '3': output_high(PIN_D3); break;
case '4': output_high(PIN_D4); break;
case '5': output_high(PIN_D5); break;
case '6': output_high(PIN_D6); break;
case '7': output_high(PIN_D7);
}
cd = 0; break;

case 'O': output_d(rxda); cd = 0; break;

case 'N': printf(usb_cdc_putc,"ZN%c",rxda);


switch(rxda){
case '0': if(input(PIN_D0))
usb_cdc_putc('1');
else
usb_cdc_putc('0');
break;
case '1': if(input(PIN_D1))
usb_cdc_putc('1');
else
usb_cdc_putc('0');
break;
case '2': if(input(PIN_D2))
usb_cdc_putc('1');
else
usb_cdc_putc('0');
break;
case '3': if(input(PIN_D3))
usb_cdc_putc('1');
else
usb_cdc_putc('0');
break;
case '4': if(input(PIN_D4))
usb_cdc_putc('1');
else
usb_cdc_putc('0');
break;
case '5': if(input(PIN_D5))
usb_cdc_putc('1');
else
usb_cdc_putc('0');
break;
case '6': if(input(PIN_D6))
usb_cdc_putc('1');

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


ANEXOS

else
usb_cdc_putc('0');
break;
case '7': if(input(PIN_D7))
usb_cdc_putc('1');
else
usb_cdc_putc('0');
break;
case 'A': usb_cdc_putc(input_d());
}
cd = 0; break;

case 'M':switch(rxda){
case '0': output_float(PIN_C0); break;
case '1': output_float(PIN_C1); break;
case '2': output_float(PIN_C2); break;
case '3': output_float(PIN_A7); break;
case '4': output_float(PIN_A6); break;
case '5': output_float(PIN_A4);
}
cd = 0; break;

case 'L': switch(rxda){


case '0': output_drive(PIN_C0); break;
case '1': output_drive(PIN_C1); break;
case '2': output_drive(PIN_C2); break;
case '3': output_drive(PIN_A7); break;
case '4': output_drive(PIN_A6); break;
case '5': output_drive(PIN_A4);
}
cd = 0; break;

case 'K': switch(rxda){


case '0': output_low(PIN_C0); break;
case '1': output_low(PIN_C1); break;
case '2': output_low(PIN_C2); break;
case '3': output_low(PIN_A7); break;
case '4': output_low(PIN_A6); break;
case '5': output_low(PIN_A4);
}
cd = 0; break;

case 'J': switch(rxda){


case '0': output_high(PIN_C0); break;
case '1': output_high(PIN_C1); break;
case '2': output_high(PIN_C2); break;
case '3': output_high(PIN_A7); break;
case '4': output_high(PIN_A6); break;
case '5': output_high(PIN_A4);
}
cd = 0; break;

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


ANEXOS

case 'I': printf(usb_cdc_putc,"ZI%c",rxda);


switch(rxda){
case '0': if(input(PIN_C0))
usb_cdc_putc('1');
else
usb_cdc_putc('0');
break;
case '1': if(input(PIN_C1))
usb_cdc_putc('1');
else
usb_cdc_putc('0');
break;
case '2': if(input(PIN_C2))
usb_cdc_putc('1');
else
usb_cdc_putc('0');
break;
case '3': if(input(PIN_A7))
usb_cdc_putc('1');
else
usb_cdc_putc('0');
break;
case '4': if(input(PIN_A6))
usb_cdc_putc('1');
else
usb_cdc_putc('0');
break;
case '5': if(input(PIN_A4))
usb_cdc_putc('1');
else
usb_cdc_putc('0');
}
cd = 0; break;

case 'H': if(rxda >= '3' && rxda <= '9'){


dfun = rxda;
cd = 3;
}
else if(rxda == '1'){
Dynamixel_init();
cd = 0;
}
else if(rxda == '2'){
Dynamixel_action();
cd = 0;
}
else
cd = 0;
break;

case 'G': if(rxda >= '0' && rxda <= '7'){

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


ANEXOS

canp = rxda - 0x30;


cd = 3;
}
else
cd = 0;
break;
}
break;

case 3: switch(fun){
case 'H': switch(dfun){
case '3': dpos = Dynamixel_readPosition(rxda);
printf(usb_cdc_putc,"ZH%c%c%c", rxda, dpos>>8, dpos);
cd = 0; break;
case '4':
case '5':
case '6':
case '7':
case '8':
case '9': did = rxda; cd = 4;
} break;

case 'G': pwm = rxda * 256; cd = 4;


}
break;

case 4: switch(fun){
case 'H': switch(dfun){
case '4': Dynamixel_setID(did, rxda); cd = 0; break;
case '5': if(rxda == '0')
Dynamixel_torqueStatus(did, OFF);
else
Dynamixel_torqueStatus(did, ON);
cd = 0; break;
case '6': if(rxda == '0')
Dynamixel_setEndless(did, OFF);
else
Dynamixel_setEndless(did, ON);
cd = 0; break;
case '7': side = rxda; cd = 5; break;
case '8':
case '9': dpos = rxda * 256; cd = 5;
} break;

case 'G': if (pwm + rxda <= 24000)


W[canp] = 59535 - (pwm + rxda);
cd = 0;
}
break;

case 5: switch(dfun){
case '7': dspe = rxda*256; cd = 6; break;

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


ANEXOS

case '8':
case '9': dpos += rxda; cd = 6;
}
break;

case 6: switch(dfun){
case '7': dspe += rxda;
if(side == '0')
Dynamixel_turn(did, LEFT, dspe);
else
Dynamixel_turn(did, RIGTH, dspe);
cd = 0; break;
case '8':
case '9': dspe = rxda*256; cd = 7;
}
break;

case 7: switch(dfun){
case '8': dspe += rxda; Dynamixel_moveSpeed(did, dpos, dspe);
break;
case '9': dspe += rxda; Dynamixel_moveSpeedRW(did, dpos, dspe);
}
cd = 0;
break;
}
}
}
}

#int_timer1
void ciclo (void){
output_d(0x00);
setup_timer_1(T1_DISABLED);
}

#int_timer2
void periodo (void){
output_d(s);
setup_timer_1(T1_INTERNAL | T1_DIV_BY_1);
set_timer1(W[i]);
i++;
if(i >= 8)
i = 0;
s = 0x01 << i;
}

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


ANEXOS

B. LIBRERIA PARA LOS SERVOMOTORES DYNAMIXEL.


/*
Dynamixel.h - Libreria para comunicar Actuador Dinamixel Ax-12 mediante
comunicacion Half Duplex USART a 1 Mbps, utilizando el PIC18F4550 con la
comunicacion Full Duplex y un circuito de control de flujo.

Se necesita una terminal de control y se puede configurar escribiendo antes de declara la librerias:
#define ControlData PIN_C1 // puedes elegir el pin que desees.

Los terminales de comunicacion TX (RC6) y RX (RC7) son las del Hardware.

Realizo: Julio Cesar Gallos Sanchez

Recuarda para comprender mejor el funcionmiento de esta libreria, lee el manual del Dynamixel AX-12.

Esta libreria contiene las siguentes funciones:


Dynamixel_begin(baudRate); // Inicializa la comunicación serial y elige la velocidad del PIC.
// baudRate 1000000 baud
Dynamixel_setID(ID, newID); // Cambia el ID del servomotor.
// ID – número de identificación del servomotor
// newID – nuevo ID del servomotor
// Regresa: -1 si no hubo respuesta del servomotor
// # el error encontrado en servomotor llamado
Dynamixel_moveSpeed(ID, Position, Speed);
// Mueve el servomotor a la posición indicada a la velocidad
indicada.
// ID – número de identificación del servomotor
// Position – posición del servo de 0 a 1023 (0 a 300 grados)
// Speed – velocidad a la que se moverá el servo 0 a 1023(0 a 114
rpm)
// Regresa: -1 si no hubo respuesta del servomotor
// # el error encontrado en servomotor llamado
Dynamixel_moveSpeedRW(ID, Position, Speed);
// Guarda la instrucción que mueve el servomotor a la posición indicada a la velocidad indicada.
// ID – número de identificación del servomotor
// Position – posición del servo de 0 a 1023 (0 a 300 grados)
// Speed – velocidad a la que se moverá el servo 0 a 1023
// Regresa: -1 si no hubo respuesta del servomotor
// # el error encontrado en servomotor llamado
Dynamixel_action(); // Ejecuta la instrucción guardada en el servomotor.
// Regresa: -1 si no hubo respuesta del servomotor
// # el error encontrado en servomotor llamado
Dynamixel_torqueStatus(ID, Status); // Activa o desactiva el torque en el servomotor.
// ID – número de identificación del servomotor
// Status – enciende o apaga el toque (ON o OFF)
// Regresa: -1 si no hubo respuesta del servomotor
// # el error encontrado en servomotor llamado
long var = Dynamixel_readPosition(ID); // Lee la posición en la que se encuentra el servomotor.
// ID – número de identificación del servomotor
// Regresa: -1 si no hubo respuesta del servomotor

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


ANEXOS

// -# el error encontrado en servomotor llamado


// # Posición del servomotor
*/
#use rs232(baud=1000000, parity=N, xmit=PIN_C6, rcv=PIN_C7, bits=8)

//// AQUI PUEDES CONFIGURAR EL PIN DE CONTROL ////


#define ControlData PIN_C0

//// AREA DE EEPROM /////


#define AX_MODEL_NUMBER_L 0
#define AX_MODEL_NUMBER_H 1
#define AX_VERSION 2
#define AX_ID 3
#define AX_BAUD_RATE 4
#define AX_RETURN_DELAY_TIME 5
#define AX_CW_ANGLE_LIMIT_L 6
#define AX_CW_ANGLE_LIMIT_H 7
#define AX_CCW_ANGLE_LIMIT_L 8
#define AX_CCW_ANGLE_LIMIT_H 9
#define AX_SYSTEM_DATA2 10
#define AX_LIMIT_TEMPERATURE 11
#define AX_DOWN_LIMIT_VOLTAGE 12
#define AX_UP_LIMIT_VOLTAGE 13
#define AX_MAX_TORQUE_L 14
#define AX_MAX_TORQUE_H 15
#define AX_RETURN_LEVEL 16
#define AX_ALARM_LED 17
#define AX_ALARM_SHUTDOWN 18
#define AX_OPERATING_MODE 19
#define AX_DOWN_CALIBRATION_L 20
#define AX_DOWN_CALIBRATION_H 21
#define AX_UP_CALIBRATION_L 22
#define AX_UP_CALIBRATION_H 23

//// AREA DE RAM ////


#define AX_TORQUE_ENABLE 24
#define AX_LED 25
#define AX_CW_COMPLIANCE_MARGIN 26
#define AX_CCW_COMPLIANCE_MARGIN 27
#define AX_CW_COMPLIANCE_SLOPE 28
#define AX_CCW_COMPLIANCE_SLOPE 29
#define AX_GOAL_POSITION_L 30
#define AX_GOAL_POSITION_H 31
#define AX_GOAL_SPEED_L 32
#define AX_GOAL_SPEED_H 33
#define AX_TORQUE_LIMIT_L 34
#define AX_TORQUE_LIMIT_H 35
#define AX_PRESENT_POSITION_L 36
#define AX_PRESENT_POSITION_H 37
#define AX_PRESENT_SPEED_L 38
#define AX_PRESENT_SPEED_H 39
#define AX_PRESENT_LOAD_L 40

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


ANEXOS

#define AX_PRESENT_LOAD_H 41
#define AX_PRESENT_VOLTAGE 42
#define AX_PRESENT_TEMPERATURE 43
#define AX_REGISTERED_INSTRUCTION 44
#define AX_PAUSE_TIME 45
#define AX_MOVING 46
#define AX_LOCK 47
#define AX_PUNCH_L 48
#define AX_PUNCH_H 49

//// ESTADOS RETORNADOS ////


#define AX_RETURN_NONE 0
#define AX_RETURN_READ 1
#define AX_RETURN_ALL 2

//// SET DE FUNCIONES ////


#define AX_PING 1
#define AX_READ_DATA 2
#define AX_WRITE_DATA 3
#define AX_REG_WRITE 4
#define AX_ACTION 5
#define AX_RESET 6
#define AX_SYNC_WRITE 131

//// ESPECIALES ////


#define OFF 0
#define ON 1
#define LEFT 0
#define RIGTH 1
#define AX_BYTE_READ 1
#define AX_BYTE_READ_POS 2
#define AX_RESET_LENGTH 2
#define AX_ACTION_LENGTH 2
#define AX_ID_LENGTH 4
#define AX_LR_LENGTH 4
#define AX_SRL_LENGTH 4
#define AX_RDT_LENGTH 4
#define AX_LEDALARM_LENGTH 4
#define AX_SALARM_LENGTH 4
#define AX_TL_LENGTH 4
#define AX_VL_LENGTH 6
#define AX_CM_LENGTH 6
#define AX_CS_LENGTH 5
#define AX_CCW_CW_LENGTH 8
#define AX_BD_LENGTH 4
#define AX_TEM_LENGTH 4
#define AX_MOVING_LENGTH 4
#define AX_RWS_LENGTH 4
#define AX_VOLT_LENGTH 4
#define AX_LED_LENGTH 4
#define AX_TORQUE_LENGTH 4
#define AX_POS_LENGTH 4

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


ANEXOS

#define AX_GOAL_LENGTH 5
#define AX_MT_LENGTH 5
#define AX_PUNCH_LENGTH 5
#define AX_SPEED_LENGTH 5
#define AX_GOAL_SP_LENGTH 7
#define AX_ACTION_CHECKSUM 250
#define BROADCAST_ID 254
#define AX_START 255
#define AX_CCW_AL_L 255
#define AX_CCW_AL_H 3
#define TIME_OUT 10
#define TX_DELAY_TIME 200
#define Tx_MODE 1
#define Rx_MODE 0
#define LOCK 1

char Checksum;
char Time_Counter;
char Incoming_Byte;
char Position_High_Byte;
char Position_Low_Byte;
#define RXBUF 16
char rec[RXBUF], rxdi=0, rxdo=0;
long Position_Long_Byte;
int Error_Byte;

long read_error(void);
long read(void);
long peek(void);
char available(void);
void ini_Dyna(char ID);
void fin_Dyna(void);

void Dynamixel_init(void);
long Dynamixel_setID(char ID, char newID);
long Dynamixel_moveSpeed(char ID, long Position, long Speed);
long Dynamixel_moveSpeedRW(char ID, long Position, long Speed);
void Dynamixel_action(void);
long Dynamixel_torqueStatus(char ID, short Status);
long Dynamixel_readPosition(char ID);
long Dynamixel_setEndless(char ID, short Status);
long Dynamixel_turn(char ID, short SIDE, long Speed);

//// Funciones Privadas //////////////////////////////////////////////////////////////

long read_error(void){
Time_Counter = 0;
while((available() < 5) && (Time_Counter < TIME_OUT)){ // Espera por datos
Time_Counter++;
delay_us(50);
}

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


ANEXOS

while(available() > 0){


Incoming_Byte = read();
if((Incoming_Byte == 255) && (peek() == 255)){
read(); // Start Bytes
read(); // Ax-12 ID
read(); // Length
Error_Byte = read(); // Error
//rxdi = 0; rxdo = 0;
return (Error_Byte);
}
}
return (-1);
// No Responde el Servo
}

long read(void){
if(rxdo == rxdi)
return (-1);
else{
rxdo++;
if(rxdo >= RXBUF){
rxdo = 0;
return (rec[RXBUF-1]);
}
else
return (rec[rxdo-1]);
}
}

long peek(void){
if(rxdo == rxdi)
return (-1);
else
return (rec[rxdo]);
}

char available(void){
if(rxdi >= rxdo)
return (rxdi-rxdo);
else
return (RXBUF+rxdi-rxdo);
}

void ini_Dyna(char ID){


output_bit(ControlData,Tx_MODE);
putc(AX_START);
putc(AX_START);
putc(ID);
}

void fin_Dyna(void){
putc(Checksum);

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


ANEXOS

delay_us(TX_DELAY_TIME);
output_bit(ControlData,Rx_MODE);
}

#int_rda // Interrupcion de recepcion de la comunicacion RS232.


void RDA_isr(void){
rec[rxdi] = getc();
rxdi++;
if(rxdi >= RXBUF)
rxdi = 0;
}
//// Funciones Publicas ////

void Dynamixel_init(void){
output_drive(ControlData);
output_low(ControlData);
set_uart_speed(1000000);
rxdi = 0; rxdo = 0;
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);
delay_ms(100);
}

long Dynamixel_setID(char ID, char newID){


Checksum = ~(ID + AX_ID_LENGTH + AX_WRITE_DATA + AX_ID + newID);

ini_Dyna(ID);
putc(AX_ID_LENGTH);
putc(AX_WRITE_DATA);
putc(AX_ID);
putc(newID);
fin_Dyna();

return (read_error());
}

long Dynamixel_moveSpeed(char ID, long Position, long Speed){


char Position_H, Position_L, Speed_H, Speed_L;
Position_H = Position >> 8;
Position_L = Position; // 16 bits - 2 x 8 bits variables
Speed_H = Speed >> 8;
Speed_L = Speed; // 16 bits - 2 x 8 bits variables
Checksum = ~(ID + AX_GOAL_SP_LENGTH + AX_WRITE_DATA + AX_GOAL_POSITION_L +
Position_L + Position_H + Speed_L + Speed_H);

ini_Dyna(ID);
putc(AX_GOAL_SP_LENGTH);
putc(AX_WRITE_DATA);
putc(AX_GOAL_POSITION_L);
putc(Position_L);
putc(Position_H);
putc(Speed_L);

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


ANEXOS

putc(Speed_H);
fin_Dyna();

return (read_error());
}

long Dynamixel_moveSpeedRW(char ID, long Position, long Speed){


char Position_H,Position_L,Speed_H,Speed_L;
Position_H = Position >> 8;
Position_L = Position; // 16 bits - 2 x 8 bits variables
Speed_H = Speed >> 8;
Speed_L = Speed; // 16 bits - 2 x 8 bits variables
Checksum = ~(ID + AX_GOAL_SP_LENGTH + AX_REG_WRITE + AX_GOAL_POSITION_L +
Position_L + Position_H + Speed_L + Speed_H);

ini_Dyna(ID);
putc(AX_GOAL_SP_LENGTH);
putc(AX_REG_WRITE);
putc(AX_GOAL_POSITION_L);
putc(Position_L);
putc(Position_H);
putc(Speed_L);
putc(Speed_H);
fin_Dyna();

return (read_error());
}

void Dynamixel_action(void){
ini_Dyna(BROADCAST_ID);
putc(AX_ACTION_LENGTH);
putc(AX_ACTION);
Checksum = AX_ACTION_CHECKSUM;
fin_Dyna();
}

long Dynamixel_torqueStatus(char ID, short Status){


Checksum = ~(ID + AX_TORQUE_LENGTH + AX_WRITE_DATA + AX_TORQUE_ENABLE + Status);

ini_Dyna(ID);
putc(AX_TORQUE_LENGTH);
putc(AX_WRITE_DATA);
putc(AX_TORQUE_ENABLE);
putc(Status);
fin_Dyna();

return (read_error());
}

long Dynamixel_readPosition(char ID){


Checksum = ~(ID + AX_POS_LENGTH + AX_READ_DATA + AX_PRESENT_POSITION_L +
AX_BYTE_READ_POS);

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


ANEXOS

ini_Dyna(ID);
putc(AX_POS_LENGTH);
putc(AX_READ_DATA);
putc(AX_PRESENT_POSITION_L);
putc(AX_BYTE_READ_POS);
fin_Dyna();

Position_Long_Byte = -1;
Time_Counter = 0;
while((available() < 7) && (Time_Counter < TIME_OUT)){
Time_Counter++;
delay_us(50);
}

while(available() > 0){


Incoming_Byte = read();
if ((Incoming_Byte == 255) && (peek() == 255)){
read(); // Start Bytes
read(); // Ax-12 ID
read(); // Length
Error_Byte = read(); // Error
if(Error_Byte != 0){
//rxdi = 0; rxdo = 0;
return (Error_Byte * (-1));
}

Position_Low_Byte = read(); // Position Bytes


Position_High_Byte = read();
Position_Long_Byte = Position_High_Byte;
Position_Long_Byte = Position_Long_Byte << 8;
Position_Long_Byte += Position_Low_Byte;
return (Position_Long_Byte);
}
}
return (Position_Long_Byte);
}

long Dynamixel_setEndless(char ID, short Status){


if(Status){
char AX_CCW_AL_LT = 0; // Cambio los Límites CCW Ángulo de rotación completa.
Checksum = ~(ID + AX_GOAL_LENGTH + AX_WRITE_DATA +
AX_CCW_ANGLE_LIMIT_L);

ini_Dyna(ID);
putc(AX_GOAL_LENGTH);
putc(AX_WRITE_DATA);
putc(AX_CCW_ANGLE_LIMIT_L);
putc(AX_CCW_AL_LT);
putc(AX_CCW_AL_LT);
fin_Dyna();

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


ANEXOS

return (read_error());
}
else{
Dynamixel_turn(ID,0,0);
Checksum = ~(ID + AX_GOAL_LENGTH + AX_WRITE_DATA +
AX_CCW_ANGLE_LIMIT_L + AX_CCW_AL_L + AX_CCW_AL_H);

ini_Dyna(ID);
putc(AX_GOAL_LENGTH);
putc(AX_WRITE_DATA);
putc(AX_CCW_ANGLE_LIMIT_L);
putc(AX_CCW_AL_L);
putc(AX_CCW_AL_H);
fin_Dyna();

return (read_error());
}
}

long Dynamixel_turn(char ID, short SIDE, long Speed){


char Speed_H,Speed_L;
Speed_L = Speed; // 16 bits - 2 x 8 bits variables

if(SIDE == 0) // Gira hacia la izquierda


Speed_H = Speed >> 8;
else
Speed_H = (Speed >> 8) + 4; // Gira hacia la derecha

Checksum = ~(ID + AX_SPEED_LENGTH + AX_WRITE_DATA + AX_GOAL_SPEED_L +


Speed_L + Speed_H);

ini_Dyna(ID);
putc(AX_SPEED_LENGTH);
putc(AX_WRITE_DATA);
putc(AX_GOAL_SPEED_L);
putc(Speed_L);
putc(Speed_H);
fin_Dyna();

return (read_error());
}

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


ANEXOS

C. LIBRERIA PARA CONTROLAR EL ISISTEMA DAQDyna DESDE


RAD STUDIO XE7 EN C++.

/* Libreria para configurar y controlar la tarjeta de


Adquisicion de datos DAQDyna en Borland C++ builder XE7.

*** Esta libreria debe ser colocada debajo de la sentencia: TForm1 *Form1;

<< Funciones contenidas en esta libreria. >>

SetDigB(opcion, pin);  Configura los pines digitales (B0 al B7) como entrada o salida.
En la variable pin se coloca un caracter entre el '0' y '7' o 'A'(todos pull-up)
o B (todos con pull-up), para elegir el pin digital que queremos configurar,
la variable opcion nos sirve para configurar como entrada 'I', salida 'O'.

ReaDigB(pin);  Lee los estados de los pines digitales (B0 al B7).


La variable pin nos sirve para elegir el pin que queremos leer por lo tanto
esta variable puede ser desde '0' hasta el '7' o 'A' para leer todos.

WriDigB(pin, estado);  Escribe un 0 o 1 en los bits digitales (B0 al B7).


La variable pin nos sirve para elegir el pin digital al que queremos modificar
su estado digital, por lo tanto pin puede ser entre '0' y '7' o 'A' (todos).
La variable estado elige el estado al que llevaremos el pin elegido, esta
variable puede ser el caractrer '0' para el estado bajo y '1' para el estado
alto o un dato de 8 bits para la opcion 'A'.

SetDigD(opcion, pin);  Configura los pines digitales (D0 al D7) como entrada o salida.
En la variable pin se coloca un caracter entre el '0' y el '7' o la 'A'(todos)
para elegir el pin digital que queremos configurar, la variable opcion nos
sirve para configurar como entrada 'I', salida 'O' o todos para la opcion 'A'.
Para activar las salidas PWM coloque en opcion O y en pin B.
Para desactivar las salidas PWM coloque en opcion I y en pin A.

ReaDigD(pin);  Lee los estados de los pines digitales (D0 al D7).


La variable pin nos sirve para elegir el pin que queremos leer, por lo tanto
esta variable puede ser desde '0' hasta el '7' o 'A' para leer todos.

WriDigD(pin, estado);  Escribe un 0 o 1 en los bits digitales (D0 al D7).


La variable pin nos sirve para elegir el pin digital al que queremos modificas
su estado digital por lo tanto pin puede ser entre '0' y '7' o 'A' (todos).
La variable estado elige el estado al que llevaremos el pin elegido, esta
variable puede ser el caractrer '0' para el estado bajo y '1' para el estado
alto o un dato de 8 bits para la opcion 'A'.

SetDigE(opcion, pin);  Configura los pines digitales (E0 al E3) como entrada o salida.
En la variable pin se coloca un caracter entre el '0' y el '3' para elegir

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


ANEXOS

el pin digital que queremos configurar, la variable opcion nos sirve para
configurar como entrada 'I' o salida 'O' el pin elegido.

ReaDigE(pin);  Lee los estados de los pines digitales (E0 al E5).


La variable pin nos sirve para elegir el pin que queremos leer por lo tanto
esta variable puede ser del '0' al '5'.

WriDigE(pin, estado);  Escribe un 0 o 1 en los bits digitales (E0 al E5).


La variable pin nos sirve para elegir el pin digital al que queremos modificas
su estado digital por lo tanto pin puede ser entre '0' y '3'. La variable
estado elige el estado al que llevaremos el pin elegido, esta variable solo
puede ser el caractrer '0' para el estado bajo y '1' para el estado alto.

ReaAna(canal);  Realiza una convercion con el canal analogico selecionado.


La variable canal puede ser '0' para elegir el canal A0, '1' para el canal A1,
'2' para el canal A2, '3' para el canal A3 y asi hasta el canal A7.

DynaAct(opc, id, pos, vel); Comanda funciones para los actuadores dynamixel AX-12 o Ax-18.
La variable opc elige entre las funciones del dynamixel y puede ser desde 1 - 9.
La variable id es el ID del Dynamixel.
La variable pos es para seleccionar la posicion del actuador entre otras cosas.
La variable vel es para seleccionar la velocidad del actuador.

DynaAct('1',0,0,0)  Dynamixel_init();
DynaAct('2',0,0,0)  Dynamixel_action();
DynaAct('3',ID,0,0)  long var = Dynamixel_readPosition(ID);
DynaAct('4',ID,NEWID,0) Dynamixel_setID(ID, newID);
DynaAct('5',ID,STATUS,0)  Dynamixel_torqueStatus(ID, Status);
DynaAct('6',ID,STATUS,0)  Dynamixel_setEndless(ID,Status);
DynaAct('7',ID,SIDE,VELOCIDAD)  Dynamixel_turn(ID,Side,Speed);
DynaAct('8',ID,POSICION,VELOCIDAD)  Dynamixel_moveSpeed(ID, Position, Speed);
DynaAct('9',ID,POSICION,VELOCIDAD) Dynamixel_moveSpeedRW(ID, Position,
Speed);

DutyPwm(canal, duty);  Modifica el ciclo de trabajo de los PWM0 - PWM7 para servomotores.
La variable canal nos sirve para selecionar el canal y pede ser '0' a '7'.
La variable duty es donde se coloca el ciclo de trabajo puede ser desde 0 a 24000.

RecibeAQDyna(Count);  Lee la informacion que manda la tarjeta DAQDyna y


que llega por el puerto USB y la deposita en variables.

DigB[8] Contiene las informacion de los estados logicos


de los bits digitales B0 al B7. El 0 logico es
el caracter '0' y el 1 logico es el caracter '1'.

DigBB Contiene los estados logicos de todo el puerto B,


cuando se usa la funcion ReaDigB('A');

DigD[8] Contiene las informacion de los estados logicos


de los bits digitales D0 al D7. El 0 logico es
el caracter '0' y el 1 logico es el caracter '1'.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


ANEXOS

DigDB Contiene los estados logicos de todo el puerto D,


cuando se usa la funcion ReaDigD('A');

DigE[6] Contiene las informacion de los estados logicos


de los bits digitales E0 al E3. El 0 logico es
el caracter '0' y el 1 logico es el caracter '1'.

Ana[8] Contiene las lecturas de los canales A0 al A7.


La variable Ana es de 16 bits.

IdDyna Contiene el Id del Dynamixel al que se le pidio su posicion.

PosDyna Continen la posicion del Dynamixel.

Realizo: M.C. Julio Cesar Gallo Sanchez

*/
// Define como USB a la Forma principal y el comPort utilizados.
// Si el nombre de la Form1 y el Comport no son estos, haga las correccion.

#define USB Form1->ComPort1

// Declaracion de variables necesarias para esta libreria.

char datos[8], cad, op, op1, op2, op3;


char DigB[8]={"00000000"}, DigD[8]={"00000000"}, DigE[6]={"000000"};
unsigned char DigBB, DigDB;
unsigned int Ana[8]={0,0,0,0,0,0,0,0}, Adc, PosDyna;
char IdDyna;

// Declaracion de la funciones generadas.


void __fastcall SetDigB(char OPC, char PIN);
void __fastcall ReaDigB(char PIN);
void __fastcall WriDigB(char PIN, char EST);
void __fastcall SetDigD(char OPC, char PIN);
void __fastcall ReaDigD(char PIN);
void __fastcall WriDigD(char PIN, char EST);
void __fastcall SetDigE(char OPC, char PIN);
void __fastcall ReaDigE(char PIN);
void __fastcall WriDigE(char PIN, char EST);
void __fastcall ReaAna(char CAN);
void __fastcall DynaAct(char OPC, char ID, int POS, int VEL);
void __fastcall DutyPwm(char CAN, int DUTY);
void __fastcall RecibeAQDyna(int Count);

////// Aqui inician los cuerpos de las funciones. ///////

// Funcion para configurar los bit digitales del puerto B.


// OPC es una variable de 8 bits y puede ser 'I' (Entradas), 'O' (Salidas)
// Y PIN son los caracteres del '0' al '7' o 'A' o 'B' para configurar todo.

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


ANEXOS

void __fastcall SetDigB(char OPC, char PIN){


if(USB->Connected == true){
if((OPC == 'I' || OPC == 'O') && (PIN >= '0' && PIN <= '7' || PIN == 'A' || PIN == 'B')){
datos[0] = 'Z';
if(OPC == 'I')
datos[1] = 'Y';
else if(OPC == 'O')
datos[1] = 'X';
datos[2] = PIN;
USB->Write(datos,3);
}
}
}

// Funcion para leer los estados de los bits digitales del puerto B.
// PIN son los caracteres del '0' al '7' o A para leer todos.
void __fastcall ReaDigB(char PIN){
if(USB->Connected == true){
if(PIN >= '0' && PIN <= '7' || PIN == 'A'){
datos[0] = 'Z';
datos[1] = 'T';
datos[2] = PIN;
USB->Write(datos,3);
}
}
}

// Funcion para escribir un 0 o 1 en el bit selecionado del puerto B.


// PIN son los caracteres del '0' al '7' o 'A' para elegir todos y
// EST es '0' , '1' o una variable de 8 bits para el caso 'A'.
void __fastcall WriDigB(char PIN, char EST){
if(USB->Connected == true){
if((PIN >= '0' && PIN <= '7') && (EST >= '0' && EST <= '1')){
datos[0] = 'Z';
if(EST == '0'){
datos[1] = 'W';
datos[2] = PIN;
}
else if(EST == '1'){
datos[1] = 'V';
datos[2] = PIN;
}
USB->Write(datos,3);
}
else if(PIN == 'A'){
datos[0] = 'Z';
datos[1] = 'U';
datos[2] = EST;
USB->Write(datos,3);
}
}
}

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


ANEXOS

// Funcion para configurar los bit digitales del puerto D.


// OPC es una variable de 8 bits y puede ser 'I' (Entradas), 'O' (Salidas)
// Y PIN son los caracteres del '0' al '7' o 'A' para configurar todo.
// Para la OPC salida tambien existe el PIN = 'B' que activa las salidas PWM0 - PWM7.
void __fastcall SetDigD(char OPC, char PIN){
if(USB->Connected == true){
if((OPC == 'I' || OPC == 'O') && (PIN >= '0' && PIN <= '7' || PIN == 'A' || PIN == 'B')){
datos[0] = 'Z';
if(OPC == 'I')
datos[1] = 'S';
else if(OPC == 'O')
datos[1] = 'R';
datos[2] = PIN;
USB->Write(datos,3);
}
}
}

// Funcion para leer los estados de los bits digitales del puerto D.
// PIN son los caracteres del '0' al '7' o A para leer todos.
void __fastcall ReaDigD(char PIN){
if(USB->Connected == true){
if(PIN >= '0' && PIN <= '7' || PIN == 'A'){
datos[0] = 'Z';
datos[1] = 'N';
datos[2] = PIN;
USB->Write(datos,3);
}
}
}

// Funcion para escribir un 0 o 1 en el bit selecionado del puerto D.


// PIN son los caracteres del '0' al '7' o 'A' para elegir todos y
// EST es '0' , '1' o una variable de 8 bits para el caso 'A'.
void __fastcall WriDigD(char PIN, char EST){
if(USB->Connected == true){
if((PIN >= '0' && PIN <= '7') && (EST >= '0' && EST <= '1')){
datos[0] = 'Z';
if(EST == '0'){
datos[1] = 'Q';
datos[2] = PIN;
}
else if(EST == '1'){
datos[1] = 'P';
datos[2] = PIN;
}
USB->Write(datos,3);
}
else if(PIN == 'A'){
datos[0] = 'Z';

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


ANEXOS

datos[1] = 'O';
datos[2] = EST;
USB->Write(datos,3);
}
}
}

// Funcion para configurar los bit digitales del puerto E.


// OPC es una variable de 8 bits y puede ser 'I' (Entradas), 'O' (Salidas)
// Y PIN son los caracteres del '0' al '3'.
void __fastcall SetDigE(char OPC, char PIN){
if(USB->Connected == true){
if((OPC == 'I' || OPC == 'O') && (PIN >= '0' && PIN <= '5')){
datos[0] = 'Z';
if(OPC == 'I')
datos[1] = 'M';
else if(OPC == 'O')
datos[1] = 'L';
datos[2] = PIN;
USB->Write(datos,3);
}
}
}

// Funcion para leer los estados de los bits digitales del puerto E.
// PIN son los caracteres del '0' al '3'.
void __fastcall ReaDigE(char PIN){
if(USB->Connected == true){
if(PIN >= '0' && PIN <= '5'){
datos[0] = 'Z';
datos[1] = 'I';
datos[2] = PIN;
USB->Write(datos,3);
}
}
}

// Funcion para escribir un 0 o 1 en el bit selecionado del puerto E.


// PIN son los caracteres del '0' al '3' y EST es '0' o '1'.
void __fastcall WriDigE(char PIN, char EST){
if(USB->Connected == true){
if((PIN >= '0' && PIN <= '5') && (EST >= '0' && EST <= '1')){
datos[0] = 'Z';
if(EST == '0'){
datos[1] = 'K';
datos[2] = PIN;
}
else if(EST == '1'){
datos[1] = 'J';
datos[2] = PIN;
}

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


ANEXOS

USB->Write(datos,3);
}
}
}

// Funcion para realizar converciones con los canales analogicos.


// CAN puede ser del '0' al '7' para elegir el canal que realiza la conversion.
// con CAN = 'A' se eligen Voltajes de referencia en 0 y 5 Volts.
// con CAN = 'B' se eligen voltajes de referencia en las terminales A2(-VREF)
// y A3 (+VREF). Los +-VREF pueden ser maximo +-10 Volt.
void __fastcall ReaAna(char CAN){
if(USB->Connected == true){
if((CAN >= '0' && CAN <= '7') || (CAN >= 'A' && CAN <= 'D')){
datos[0] = 'Z';
datos[1] = 'Z';
datos[2] = CAN;
USB->Write(datos,3);
}
}
}

// Funcion controlar actuadores dinamixel AX-12.


// 1 -> Dynamixel_begin();
// 2 -> Dynamixel_action();
// 3+ID -> long var = Dynamixel_readPosition(ID);
// 4+ID+NewID -> Dynamixel_setID(ID, newID);
// 5+ID+STATUS -> Dynamixel_torqueStatus(ID, Status);
// 6+ID+STATUS -> Dynamixel_setEndless(ID,Status);
// 7+ID+SIDE+VEL -> Dynamixel_turn(ID,Side,Speed);
// 8+ID+POS+VEL-> Dynamixel_moveSpeed(ID, Position, Speed);
// 9+ID+POS+VEL-> Dynamixel_moveSpeedRW(ID, Position, Speed);
void __fastcall DynaAct(char OPC, char ID, int POS, int VEL){
if(USB->Connected == true){
if(OPC >= '1' && OPC <= '9'){
datos[0] = 'Z';
datos[1] = 'H';
datos[2] = OPC;
datos[3] = ID;
datos[4] = POS >> 8;
datos[5] = POS;
datos[6] = VEL >> 8;
datos[7] = VEL;

switch(OPC){
case '1':
case '2': USB->Write(datos,3); break;
case '3': USB->Write(datos,4); break;
case '4':
case '5':
case '6': datos[4] = POS;
USB->Write(datos,5); break;

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


ANEXOS

case '7': datos[4] = POS;


datos[5] = VEL >> 8;
datos[6] = VEL;
USB->Write(datos,7); break;
case '8':
case '9': USB->Write(datos,8);
}
}
}
}

// Funcion para modificar el ciclo de trabajo de los PWM0 - PWM7.


// CAN es puede ser '0' a '7' y DUTY es un numero entre 0 - 24000.
void __fastcall DutyPwm(char CAN, int DUTY){
if(USB->Connected == true){
if(CAN >= '0' && CAN <= '7' && DUTY <= 24000){
datos[0] = 'Z';
datos[1] = 'G';
datos[2] = CAN;
datos[3] = DUTY >> 8;
datos[4] = DUTY;
USB->Write(datos,5);
}
}
}

// Esta Funcion trabaja junto con el evento OnRxChar de FComPort y nos sirve
// para capturar los datos que recibe el puerto serial USB de la PC y nos
// manda la tarjeta ADQ2016.
// Count es una variable que contiene los elementos recibidos en
// el buffer del puerto serial.
void __fastcall RecibeAQDyna(int Count){
if(USB->Connected == true){
char unsigned dat[1], con;

for(con = 1; con <= Count; con++){

USB->Read(dat,1);

switch(cad){
case 0: if(dat[0] == 'Z')
cad = 1;
else
cad = 0;
break;

case 1: if(dat[0] == 'Z' || dat[0] == 'T' || dat[0] == 'N' || dat[0] == 'I' || dat[0] == 'H'){
op = dat[0];
cad = 2;
}

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


ANEXOS

else
cad = 0;
break;

case 2: switch(op){
case 'Z': if(dat[0] >= '0' && dat[0] <= '7'){
op1 = dat[0];
cad = 3;
}
else
cad = 0;
break;

case 'T': if( dat[0] >= '0' && dat[0] <= '7' || dat[0] == 'A'){
op1 = dat[0];
cad = 3;
}
else
cad = 0;
break;

case 'N': if(dat[0] >= '0' && dat[0] <= '7' || dat[0] == 'A'){
op1 = dat[0];
cad = 3;
}
else
cad = 0;
break;

case 'I': if( dat[0] >= '0' && dat[0] <= '5'){
op1 = dat[0];
cad = 3;
}
else
cad = 0;
break;

case 'H': IdDyna = dat[0];


cad = 3;
}
break;

case 3: switch(op){
case 'Z': Adc = dat[0];
cad = 4;
break;

case 'T': if((op1 >= '0' && op1 <= '7') && (dat[0] >= '0' && dat[0] <= '1'))
DigB[op1 - 48] = dat[0];
else if(op1 == 'A')
DigBB = dat[0];
cad = 0;

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL


ANEXOS

break;

case 'N': if((op1 >= '0' && op1 <= '7') && (dat[0] >= '0' && dat[0] <= '1'))
DigD[op1 - 48] = dat[0];
else if(op1 == 'A')
DigDB = dat[0];
cad = 0;
break;

case 'I': if(dat[0] >= '0' && dat[0] <= '1' )


DigE[op1 - 48] = dat[0];
cad = 0;
break;

case 'H': PosDyna = dat[0] * 256;


cad = 4;
}
break;

case 4: switch(op){
case 'Z': Ana[op1 - 48] = (Adc * 256) + dat[0];
break;

case 'H': PosDyna += dat[0];


}
cad = 0;
break;
}
}
}
}

PLANTA PILOTO PARA LA PRODUCCIÓN DE ALCOHOL

También podría gustarte