Ups GT000511
Ups GT000511
Ups GT000511
SEDE GUAYAQUIL
FACULTAD DE INGENIERAS
TEMA:
AUTORES:
TUTOR:
ING. RICARDO CAJO
I
II
DECLARATORIA DE RESPONSABILIDAD
-----------------------------------------
-----------------------------------------
DEDICATORIA
III
NDICE GENERAL
Cartula.........................................................................................................................I
Declaratoria de responsabilidad...............................................................................II
Dedicatoria..................................................................................................................III
ndice general..........................................................................................................IV
ndice grficos...........................................................................................................XII
ndice de tablas......................................................................................................XVIII
ndice de anexo...................................................................................................XIX
Abstract.................................................................................................................XX
Introduccin.........................................................................................................XXI
CAPTULO I. EL PROBLEMA
1.1 Planteamiento del problema..................................................................................22
1.2 Objetivos...........................................................................................................22
1.2.1 Objetivos general...............................................................................................22
1.2.2 Objetivos especficos.....................................................................................22
1.3 Justificacin..........................................................................................................23
1.4 Marco metodolgico.............................................................................................24
CAPTULO
III.
ELEMENTOS
DE
CONSTRUCCON DEL DISENO MECNICO
CONTROL
3.1 Servomotor........................................................................................................47
3.1.1 Estructura interna...............................................................................................49
3.1.1.1 Motor de corriente contnua............................................................................49
4.2.2.16 For.............................................................................................................92
4.2.2.17 While.............................................................................................................93
4.2.2.18 Pinmode (pin, mode).....................................................................................95
4.2.2.19 Digitalread (pin)............................................................................................96
4.2.2.20 Digitalwrite (pin, value)................................................................................96
4.2.2.21 Analogread (pin).......................................................................................97
4.2.2.22 Analogwrite (pin, value)...............................................................................97
4.2.2.23 Delay (MS)................................................................................................99
4.2.2.24 Serial.begin (rate)........................................................................................100
4.2.2.25 Serial.println (data).....................................................................................100
4.2.2.26 Serial.println (data, data type).....................................................................101
4.2.2.27 Serial.print (data, data type)........................................................................102
4.2.2.28 Serial.avaible ( )..........................................................................................104
4.2.2.29 Serial.read ( )..............................................................................................105
4.4 Configuracin de una placa Arduino en un DAQ utilizando Labview...........106
4.4 Envi de una seal analgica desde de un potencimetro hacia Labview.112
4.4.1 Componentes utilizados...................................................................................112
4.4.2 Objetivo............................................................................................................113
4.4.3 Pantalla Programacin de Arduino/potencimetro.........................................114
4.4.4 Pantalla Labview: Panel Frontal......................................................................115
4.4.5 Pantalla Labview: Diagrama de Bloques........................................................ 115
4.5 Interaccin y comunicacin entre Arduino y el servomotor..............................116
4.5.1 Componentes utilizados...................................................................................116
4.5.2 Objetivo............................................................................................................116
4.5.3 Pantalla programacin de Arduino-Servomotor..............................................118
4.6 Interaccin y comunicacin entre Arduino y el sensor MTS 360..................118
4.6.1 Componentes utilizados...................................................................................118
4.6.2 Objetivo............................................................................................................119
4.6.3 Pantalla programacin de Arduino-Sensor......................................................120
4.7 Explicacin general del funcionamiento del sistema de posicin horizontal.120
4.7.1Inicio del sistema..............................................................................................121
4.8 Diagrama de flujo.....................................................................................................122
4.9 Estructura de la programacin Arduino sistema de posicin horizontal..123
4.9.1 Creacin de variables e invocacin de libreras..............................................123
4.9.2 Inicio de la funcin Void Setup ()................................................................... 124
4.9.3 Inicio y explicacin de la estructura de programacin....................................125
4.9.4 Diagrama esquemtico de conexin................................................................137
4.10
CRONOGRAMA......................................................................................................176
PRESUPUESTO...................................................................................................177
CONCLUSIONES...................................................................................................178
RECOMENDACIONES...........................................................................................179
BIBLIOGRAFA......................................................................................................180
XI
NDICE DE TABLAS
NDICE DE GRFICOS
3.8 Encoders...............................................................................................................59
3.9 Sensor de posicin rotativo MTS360................................................................60
3.10 Dimensiones del sensor MTS360.......................................................................61
3.11 Caractersticas del sensor MTS360.....................................................................61
3.12 Configuracin de pines sensor MTS360............................................................62
3.13 Medidas de la mesa de soporte..........................................................................63
3.14 Mesa de soporte.................................................................................................64
3.15 Brazo 1...........................................................................................................64
3.16 Brazo 2..............................................................................................................65
3.17 Eje transversal................................................................................................66
3.18 Alern 1..........................................................................................................66
3.19 Alern 2..............................................................................................................67
3.20 Base de soporte para tarjeta del sensor...............................................................67
3.21 Parte frontal micro base.....................................................................................68
3.22 Tarjeta electrnica del sensor..............................................................................68
3.23 Acoplamiento tarjeta del sensor.........................................................................69
3.24 Servo, tarjeta del sensor y eje transversal......................................................69
4.1 Programacin grfica de Labview.......................................................................71
4.2 Programacin grafica de Labview........................................................................72
4.3 Logo software Arduino........................................................................................74
4.4 Barra de herramientas del entorno Arduino.........................................................74
4.5 Estructura de programacin (void setup, void loop).......................................77
4.6 Inicializando con la funcin void setup...........................................................78
XIV
NDICE DE ANEXOS
Anexo 1
Cdigo de programacin..........................................................................................181
Anexo 2
Diccionario de datos.............................................................................................190
Anexo 3
Diagrama esquemtico Arduino uno...................................................................192
Anexo 4
Datasheet Atmega 328p............................................................................................193
Anexo 5
Especificaciones tcnicas servomotor..................................................................194
XIX
ABSTRACT
DIRECTOR
AO
ALUMNO/S
CARLOS
HIPLITO TAPIA
AYALA
2013
DE TESIS
HECTOR
TEMA TESIS
EVALUACIN DE LA
ING.
PLATAFORMA ARDUINO E
RICARDO
IMPLEMENTACIN DE UN
CAJO
SISTEMA DE CONTROL DE
MAURICIO
POSICIN HORIZONTAL
MANZANO
YUPA
INTRODUCCIN
En el desarrollo de la tecnologa de los microcontroladores tenemos una gran
variedad de tipos y modelos para cada uno de los problemas e innovaciones de las
industrias y empresas en forma general, sin embargo muchas soluciones resultan
muy costosas para nuestro medio, por lo que es necesario buscar otras alternativas y
herramientas tecnolgicas. Al realizar la implementacin de tesis utilizaremos la
tarjeta Arduino uno que consta de un microcontrolador Atmega 328 y este a la vez
est diseado con entradas analgicas, entradas y salidas digitales, entradas y salidas
PWM y con una fuente de poder de 5 y 3.3 v dc.
El Sistema de posicin horizontal est basado principalmente en un alern que va
rotar dependiendo del ngulo que se ordene. Va estar enlazada mecnicamente con
el eje transversal donde estar ubicado el servomotor.
El diseo consta de las siguientes etapas:
Tarjeta Arduino (controlador digital)
Servomotor (fuerza)
Alern (mecnico)
Sensor (adquisicin de datos)
El sistema inicia cuando se ejecuta el software de Arduino, donde contiene la
programacin y tareas que se deben de cumplir cuando se ingrese los datos en la
interfaz del usuario y a la vez se energizan los dispositivos electrnicos que
intervienen en el sistema. Iniciado el Sistema, el sensor tomar la posicin inicial 0,
paralelo a la superficie, adems el usuario elegir el cuadrante donde se desee que el
alern se incline formando el ngulo respectivo al eje de las x. EL usuario ingresar
un nmero en grados, el Arduino enviar una seal de activacin al servomotor, y
este, a su vez comparar el dato ingresado por el usuario versus la seal tomada del
sensor en tiempo real. Cuando los dos datos sean iguales, el servomotor se detendr.
capturar la
posicin
del
sensor
en
un
indicador grfico.
CAPTULO I
EL PROBLEMA
1.2 OBJETIVOS
1.2.1 Objetivo General
Disear e implementar un sistema de control de posicin horizontal utilizando la
plataforma Arduino.
1.3 JUSTIFICACIN
El avance de la Electrnica basado en los Sistemas de Control Autnomos, ha hecho
que a diario se vayan desarrollando tarjetas e interfaces electrnicas que cumplan con
las necesidades y requerimientos tecnolgicos para las grandes industrias que tienen
Sistemas que son controlados y operados por personas.
Electrnica digital
Programacin en C/C++/java
Microcontroladores
Control automtico
CAPTULO II
MARCO TERICO
2.1 ARDUINO
Arduino es una plataforma de hardware de cdigo abierto, basada en una sencilla
placa de circuito impreso que contiene un microcontrolador de la marca ATMEL
que cuenta con entradas y salidas, analgicas y digitales, en un entorno de desarrollo
que est basado en el lenguaje de programacin processing. El dispositivo conecta el
mundo fsico con el mundo virtual, o el mundo analgico con el digital controlando,
sensores, alarmas, sistemas de luces, motores, sistemas comunicaciones y actuadores
fsicos.
Factible: Las placas Arduino son ms accesibles y factibles comparadas con otras
plataformas de microcontroladores.
Software ampliable y de cdigo abierto: El software Arduino est publicado bajo una
licencia libre y preparada para ser ampliado por programadores y desarrolladores
experimentados. El lenguaje puede ampliarse a travs de libreras de C++ y
modificarlo a travs del lenguaje de programacin AVR C en el que est diseado.
Las placas han ido evolucionando como su software, al inicio las primeras
placas utilizaban un chip FTDI FT232RL para comunicarse por puerto USB al
computador y un procesador para ser programado, luego se utiliz un
microcontrolador especial para cumplir esta funcin como en el caso de Arduino
uno, que tenan un micro para ser programado y otro para la comunicacin, en la
actualidad se usa un nico microcontrolador que se compromete en llevar a cabo
la comunicacin y sobre el que tambin se descargan las instrucciones a ejecutar.
5. Puertos de entradas anlogas: lugar donde se conectan las salidas de los sensores
anlogos. Estos pines solo funcionan como entradas recibiendo voltajes entre cero y
cinco voltios directos.
montaje superficial, en este caso las nicas ventajas son la reduccin del peso y ganar
un poco de espacio.
10.
11.
configuracin como entrada o salida debe ser incluida en el programa. Cuando se usa
la terminal serial es conveniente no utilizar los pines cero (Rx) y uno (Tx).
Los pines 3, 5 y 6 estn precedidos por el smbolo ~, lo que indica que permiten su
uso como salidas controladas por ancho de pulso PWM.
12.
permiten control por ancho de pulso; la salida 13 es un poco diferente pues tiene
conectada una resistencia en serie, lo que permite conectar un led directamente entre
ella y tierra. Finalmente hay una salida a tierra GND y un pin AREF que permite ser
empleado como referencia para las entradas anlogas.
13.
14.
15.
2.3 ATMEL
Las tarjetas Arduino son placas que contienen un microcontrolador de la marca
Atmel denominada AVR 8-Bit RISC, esta lnea de microcontroladores est formada
por varios grupos, entre los cuales se encuentra Atmega. La diferencia entre
miembros de una misma familia, radica en que para cada una de ellas puede variar el
nmero y tipo de perifricos que incluyen la cantidad de memoria de programa y de
datos.
La caracterstica que tienen en comn las familias pertenecientes a la lnea AVR 8Bit RISC es que estn basadas en la arquitectura AVR, mostrada en la figura 2.4.
Los AVR son una familia de microcontroladores RISC en sus siglas significa
(Reduced Instruction Set Computer) su diseo est basado en la arquitectura Harvard
que se refiere a que la unidad central de proceso tiene por separado la memoria de
programa y la memoria de datos. Los comienzos de la arquitectura AVR fu pensada
por los estudiantes Alf Egil Bogen y Vegard Wollan en el Norwegian Institute of
Technology, y posteriormente refinada y desarrollada en ATMEL en 1995.
El Ncleo del AVR cuenta con 32 registros en forma general, todos estos registros
son conectados directamente a la unidad lgico-aritmtica proporcionando que dos
registros puedan ser localizados en una sola instruccin (en un ciclo de reloj), y que
el resultado de la operacin sea almacenado en uno de estos registros, lo que permite
una mejor eficiencia y un mejor rendimiento al comparar con
microprocesadores convencionales. El ncleo AVR cuenta con memoria
otros
de
programa tipo flash, lo que implica que no se necesita una memoria externa para
incluyen un ncleo AVR, la memoria de datos est constituida por una memoria
EEPROM y una memoria RAM (SRAM).
Los procesadores AVR cuentan con algunos modos de operacin, como el modo
Sleep y Powerdown, para ahorrar energa cuando el procesador no est trabajando,
adems los procesadores AVR en su estructura realizan interrupciones internas y
externas. Contiene un reset por software (wacthdog timer) con oscilador
independiente, el cual es utilizado para su recuperacin cuando suceda un problema
de software, o tambin puede ser utilizado en algunas otras aplicaciones.
Los microcontroladores AVR tienen dos etapas (cargar y ejecutar), que les permite
ejecutar la mayora en un ciclo de reloj, lo que los hace relativamente rpidos entre
los microcontroladores de 8 bit.
Modelos microcontroladores
Arduino
uC
Arduino Due
AT91SAM3X8E
Arduino Leonardo
Atmega 32U4
Arduino uno
Atmega 328
Arduino Duemilanove
Atmega 328
Atmega 328
Atmega 328
Atmega 2560
Arduino Mega
Atmega 1280
Atmega 2560
Mega Pro 5V
Atmega 2560
Arduino Mini 05
Atmega 328
Atmega 32U4
Atmega 32U4
Atmega 328
MainBoard
Se conoce que ATMEL fabrica los microcontroladores de la familia AVR, por lo que
el microcontrolador es un chip que contiene memoria flash reprogramable. Las
principales caractersticas de microcontroladores ATMEL son sus 28 pines y su
estructura interna cuentan con 16k bytes de In-flash, sistema programable con lectura
y escritura, 512 bytes de EEPROM, 1k bytes de SRAM, 23 lneas para propsito
general I/O, 32 registros para propsito de trabajo general, temporizador y
contadores.
7 canales diferenciales
Voltajes de funcionamiento
Niveles de velocidad
0 8 MHZ ( ATMEGA 328L)
0 16 MHZ ( ATMEGA 328L)
Las placas Arduino responden a las diferentes extensiones que se han venido
realizando de las primeras placas de acuerdo con las demandas especficas de los
usuarios y las investigaciones ya que son de tecnologa abierta. La funcin de una u
otra placa depender del tamao del proyecto a realizar. Las placas Arduino ms
comunes utilizadas en el campo de la tecnologa son (figura 2.8)
MHZ
oscilador, una
5V
Voltaje
5V
Entrada 7-12V
(recomendado)
Pines Digital I / O
14 (de los
PWM)
Pines de entrada analgica
Corriente DC
40 mA
Corriente continua
3.3V 50 mA
16 KB (ATmega168) o 32 KB (ATmega328)
Memoria flash
SRAM
1 KB (ATmega168) o 2 KB (ATmega328)
512
bytes
EEPROM
(ATmega328)
16 MHz
(ATmega168)
KB
Voltaje de operacin
5V
Digital pines I / O
Corriente DC
40 mA
Corriente continua
Corriente DC
5V 1000 mA
Memoria Flash
SRAM
2KB
EEPROM
1KB
16 MHz
BT modulo
2.1 WT1li-A-AI4
2.7 a 5.5 V
Voltaje de entrada
2.7 a 5.5 V
Digital pines E / S
Corriente DC
40 mA
Memoria Flash
SRAM
1KB
EEPROM
512 bytes
8 MHz.
7 a 12 V
6-20 V
Digital pines E / S
16
Corriente DC
40 mA
Corriente CC
3.3 v 50 mA
Memoria Flash
SRAM
8KB
EEPROM
4KB
16 MHz.
3.3 V
Voltaje de Entrada
3.35 - 12 V
Digital pines E / S
Corriente DC
40 mA
Memoria Flash
SRAM
2KB
EEPROM
1KB
8 MHz.
CAPITULO III
3.1 SERVOMOTOR
El servomotor es un dispositivo electrnico y mecnico en el cual est conformado
por un motor de corriente continua, una caja reductora (engranajes) y un circuito
de control que tiene la capacidad de ubicarse en cualquier posicin dentro de su
rango de operacin y mantenerse estable en dicha ubicacin. En las actividades
diarias se utilizan los servos para posicionar superficies de control como el
movimiento de palancas, pequeos ascensores, robots y timones. Los servomotores
son pequeos, tiene internamente una circuitera de control y son sumamente
poderosos en su torque para su tamao.
Un servo estndar como el HS-311 de HITEC tiene 42 onzas por pulgadas o 3 kg por
cm de torque, que es bastante fuerte para su tamao como el que se est utilizando en
nuestro proyecto.
3.1.1.4 Terminales
Los servomotores tienen 3 terminales:
3.1.2 Funcionamiento
La forma del funcionamiento del servo depende del circuito de control y el
potencimetro (una resistencia variable) en la cual est conectada al eje central del
servo motor. Este potencimetro autoriza a la circuitera de control supervisar el
ngulo actual del servo. Si el eje est en el ngulo correcto el motor gira en la
direccin adecuada hasta llegar al ngulo designado. Un servo normal se utiliza para
controlar un movimiento angular de entre 0 y 180 grados, no es mecnicamente
capaz de retroceder a su lugar si hay un mayor torque que el sugerido por las
especificaciones del fabricante.
Como se observa en la figura, la duracin del pulso indica o dictamina el ngulo del
eje y los tiempos reales dependen del fabricante del motor.
Como podemos observar para un servomotor estndar la duracin del pulso alto para
alcanzar un ngulo de posicin estar dado por siguiente la frmula:
t = 0,3 + /100
Dnde: t est dada en milisegundo y en grados.
3.1.3 Control
Frecuentemente los pulsos en el tiempo off pueden interferir con el sincronismo
interno del servo pero esto no significa que sea critico puede estar alrededor de los 20
ms y podra escucharse un sonido de zumbido o alguna vibracin en el eje. Si el
espacio de pulso es mayor que 50 ms (depende el fabricante), entonces el servo
podra estar en modo SLEEP entre los pulsos. Entrara a funcionar en pasos
pequeos y el rendimiento no sera el ptimo.
3.2 SENSOR
Un sensor es un dispositivo elctrico y/o mecnico capacitado para detectar acciones
o estmulos (magnitudes fsicas o qumicas) en valores medibles para las magnitudes
elctricas. Las fases de transformacin se las realiza en tres pasos:
Repetitividad: La lectura tiene que ser medida con una precisin dada.
Tiempo de subida; tr: Es el tiempo que tarda la salida del sensor hasta alcanzar su
valor final. => velocidad del sensor, es decir, lo rpido que responde ante una
entrada.
Tiempo de pico; tp: El tiempo que tarda la salida den sensor en alcanzar el pico
mximo de su sobre oscilacin.
Tiempo de establecimiento; ts: El tiempo que tarda la salida del sensor en entrar en
la banda del 5% alrededor del valor final y ya no vuelve a salir de ella.
3.2.3.1 Potencimetros
El potencimetro angular es un transductor de tipo absoluto y con salida analgico,
est diseado bsicamente con una resistencia de hilo bobinado y compartido a lo
largo de un soporte en forma de arco. El movimiento del eje arrastra el cursor
induciendo cambios de resistencia entre l y los extremos. Al alimentar los extremos
con una tensin constante vo aparece en la toma de medida una tensin proporcional
al ngulo girado a partir del origen. Dinmicamente el potencimetro es un elemento
El eje que se quiere medir va acoplado al disco, a medida que el eje gira se van
generando pulsos en el receptor cada vez que la luz atraviese las marcas, llevando
una cuenta de estos pulsos es posible conocer la posicin del eje.
El MTS360 se basa con tecnologa patentada de efecto Hall, la cual proporciona por
primera vez la medicin de ngulo/posicin sin contacto y con eje pasante, utilizando
caractersticas SMD estndar.
Esta nueva tecnologa ofrece medicin de ngulos de hasta 360 sin banda muerta
y con linealidades a partir de 0.5%. Est preparado para trabajar a temperaturas de -
40C hasta +150C y puede operar a velocidades de hasta 300 rpm. La seal de salida
es posible seleccionarla entre analgica, PWM de 12 bits SPI de 14 bits e incluye
una segunda salida asignada a un interruptor programable.
Bajo estas especificaciones del sensor, se escogi con las siguientes caractersticas:
MTS-360-1A-W-360-0000-E
3.3 DISEO
Y CONSTRUCCON DE LA ESTRUCTURA
MECNICA
A continuacin detallamos cada paso de la construccin de nuestro diseo mecnico.
En nuestro diseo, se dise una mesa capaz de soportar y fijar cada uno de los
elementos de la implementacin con las medidas correspondientes:
Base = 1.50 mts
Altura= 1.35 mts
Ancho= 1 m
El brazo 1 tiene una altura con respecto a la mesa de 45 cm y tiene un ruliman para el
movimiento del eje.
El brazo 2 tiene las mismas caractersticas del brazo 1 con altura respecto a la mesa
de 19 cm de altura.
Estos 2 brazos sostienen al eje transversal con los que se encuentran perpendiculares
al mismo.
Las caractersticas de El eje transversal son:
Masa = 1,18 kg
Dimetro = 2,4 cm
Longitud = 1,6 m
Alern 1 = 19,5 cm
Alern 2 = 36,5 cm
Adicional a los brazos, eje transversal y alerones incluimos dos micros-bases que
sostienen al servomotor y a la tarjeta electrnica del sensor SMD.
CAPTULO IV
4.1 LABVIEW
Labview es un software de programacin grfica para aplicaciones que impliquen
adquisicin, control, anlisis y presentacin de datos. Labview emplea la
programacin grfica o lenguaje G para crear programas basados en diagramas de
bloques. Labview es compatible con herramientas e instrumentos similares a los
sistemas de desarrollo comerciales que utilizan el lenguaje C o BASIC y puede
trabajar con programas, aplicaciones de otras reas como por ejemplo la plataforma
Arduino. Labview tiene extensas libreras de funciones y subrutinas. Adems de las
funciones bsicas de todo lenguaje de programacin, Labview incluye libreras
especficas para la adquisicin de datos, control de instrumentacin VXI, GPIB y
comunicacin serie, anlisis presentacin y guardado de datos.
strings, un arreglo matricial y los indicadores pueden ser como tablas, graficas en 2D
o 3D, browser todo pudindolos visualizar.
Java
Processing
Pure Data
Adobe Director
Python
Ruby
C#
InstantReality (X3D)
Mathematica
Matlab
Perl
VBScript
Gambas
Verify/Compile
Stop
New
Open
Save
Serial Monitor
Muestra datos serie enviados desde la placa Arduino (placa serie o USB).
Tab Menu
Permite gestionar las rutinas con ms de un archivo (cada uno de los cuales aparece
en su propia pestaa). Estos pueden ser:
Archivos de cdigo de Arduino (sin extensin).
Archivos de C (extensin .c).
Archivos de C++ (extensin .cpp).
Archivos de cabecera (extensin .h)
4.2.2.1 Setup ( )
La funcin setup () se invoca una sola vez cuando el programa empieza. Se utiliza
para inicializar los modos de trabajo de los pines, o el puerto serie. Debe ser incluido
en un programa aunque no haya declaracin que ejecutar.
4.2.2.2 Loop ( )
La funcin loop () hace precisamente lo que sugiere su nombre, se ejecuta de
forma cclica, lo que posibilita que el programa este respondiendo continuamente
ante los eventos que se produzcan en la tarjeta.
4.2.2.3 Funciones
Una funcin es un bloque de cdigo que tiene un nombre y un conjunto de lneas de
programacin que son ejecutados cuando se llama a la funcin. Son funciones setup
() y loop () de las que ya se ha hablado. Las funciones de usuario pueden ser escritas
para realizar tareas repetitivas y para reducir el tamao de un programa. Las
funciones se declaran asociadas a un tipo de valor type. Este valor ser el que
devolver la funcin, por ejemplo 'int' se utilizar cuando la funcin devuelva un
dato numrico de tipo entero. Si la funcin no devuelve ningn valor entonces se
colocar delante la palabra void, que significa funcin vaca. Despus de
declarar el tipo de dato que devuelve la funcin se debe escribir el nombre de la
funcin y entre parntesis se escribirn, si es necesario, los parmetros que se deben
pasar a la funcin para que se ejecute.
int entradaVariable = 0;
4.2.2.5 Variables
Una variable es una manera de nombrar y almacenar un valor numrico para su uso
posterior por el programa. Como su nombre indica, las variables son nmeros que se
pueden variar continuamente en contra de lo que ocurre con las constantes cuyo valor
nunca cambia. Una variable debe ser declarada y, opcionalmente, asignarle un valor.
El siguiente cdigo de ejemplo declara una variable llamada variableEntrada y luego
le asigna el valor obtenido en la entrada analgica del PIN2:
Como ejemplo ilustrativo ver tres operaciones tiles con variables: El siguiente
cdigo prueba si la variable entradaVariable es inferior a 100, si es cierto se asigna
el valor 100 a entradaVariable y, a continuacin, establece un retardo (delay)
utilizando como valor entradaVariable que ahora ser como mnimo de valor 100:
Una variable global es aquella que puede ser vista y utilizada por cualquier funcin
de un programa. Esta variable se declara al comienzo del programa, antes de setup ().
Una variable local es aquella que se define dentro de una funcin o como parte de un
bucle. Slo es visible y slo puede utilizarse dentro de la funcin en la que se
declar.
Por lo tanto, es posible tener dos o ms variables del mismo nombre en diferentes
partes del mismo programa que pueden contener valores diferentes. La garanta de
que slo una funcin tiene acceso a sus variables dentro del programa simplifica y
reduce el potencial de errores de programacin.
El siguiente ejemplo (figura 3.11) muestra cmo declarar a unos tipos diferentes de
variables y la visibilidad de cada variable:
4.2.2.7.2 Int
Enteros son un tipo de datos primarios que almacenan valores numricos de 16 bits
sin decimales comprendidos en el rango 32,767 a -32,768.
4.2.2.7.3 Long
El formato de variable numrica de tipo extendido long se refiere a nmeros
enteros (tipo 32 bits) sin decimales que se encuentran dentro del rango -2147483648
a 2147483647.
4.2.2.7.4 Float
El formato de dato del tipo punto flotante float se aplica a los nmeros con
decimales. Los nmeros de punto flotante tienen una mayor resolucin que los de 32
bits con un rango comprendido 3.4028235E +38 a +38-3.4028235E.
Float una Variable = 3.14; // declara 'unaVariable' como tipo flotante.
Nota: Los nmeros de punto flotante no son exactos, y pueden producir resultados
extraos en las comparaciones. Los clculos matemticos de punto flotante son
tambin mucho ms lentos que los del tipo de nmeros enteros, por lo que debe
evitarse su uso si es posible
4.2.2.8 Arrays
Un array es un conjunto de valores a los que se accede con un nmero ndice.
Cualquier valor puede ser recogido haciendo uso del nombre de la matriz y el
nmero del ndice.
El primer valor de la matriz es el que est indicado con el ndice 0, es decir el primer
valor del conjunto es el de la posicin 0. Un array tiene que ser declarado y
opcionalmente asignados valores a cada posicin antes de ser utilizado.
Del mismo modo es posible declarar una matriz indicando el tipo de datos y el
tamao y posteriormente, asignar valores a una posicin especifica:
Las matrices se utilizan a menudo para lneas de programacin de tipo bucle, en los
que la variable de incremento del contador del bucle se utiliza como ndice o puntero
del array. El siguiente ejemplo usa una matriz para el parpadeo de un led.
Utilizando un bucle tipo for, el contador comienza en cero 0 y escribe el valor que
figura en la posicin de ndice 0 en la serie que hemos escrito dentro del
arrayparpadeo [], en este caso 180, que se enva a la salida analgica tipo PWM
configurada en el PIN10, se hace una pausa de 200 ms y a continuacin se pasa al
siguiente valor que asigna el ndice i.
4.2.2.9 Aritmtica
Los operadores aritmticos que se incluyen en el entorno de programacin son suma,
resta, multiplicacin y divisin. Estos devuelven la suma, diferencia, producto, o
cociente (respectivamente) de dos operando
Y= Y + 3;
X= X 7;
J= J * 6;
R= R / 5;
La operaciones se efecta teniendo en cuenta el tipo de datos que est definido para
los operandos (int, dbl, float, etc...), por lo que, por ejemplo, 9 y 4 como enteros
int, 9 / 4 devuelve de resultado 2 en lugar de 2,25 ya que el 9 y 4 se valores de tipo
entero int (enteros) y no se reconocen los decimales con este tipo de datos.
Elegir el tamao de las variables de tal manera que sea lo suficientemente grande
como para que los resultados sean lo precisos que usted desea. Para las operaciones
que requieran decimales utilice variables tipo float, pero sea consciente de que las
Nota: Utilizar el operador (int) myFloat para convertir un tipo de variable a otro
sobre la marcha. Por ejemplo, i = (int) 3,6 establecer i igual a 3.
o incrementar X en - 1
o multiplicar X por Y
Nota: Por ejemplo, x * = 3 hace que x se convierta en el triple del antiguo valor x y
por lo tanto x es reasignada al nuevo valor.
X = = Y // X es igual a Y
X < Y // X es menor que Y
X > Y // X es mayor que Y
4.2.2.13 Constantes
El lenguaje de programacin de Arduino tiene unos valores predeterminados, que
son llamados constantes. Se utilizan para hacer los programas ms fciles de leer.
Las constantes se clasifican en grupos.
Estas son constantes booleanas que definen los niveles HIGH (alto) y LOW (bajo)
cuando estos se refieren al estado de las salidas digitales. FALSE se asocia con 0
(cero), mientras que TRUE se asocia con 1, pero TRUE tambin puede ser cualquier
otra cosa excepto cero. Por lo tanto, en sentido booleano, -1, 2 y -200 son todos
tambin se definen como TRUE.
En el ejemplo anterior se compara una variable con un valor, el cual puede ser una
variable o constante. Si la comparacin, o la condicin entre parntesis se cumple (es
cierta), las declaraciones dentro de los corchetes se ejecutan. Si no es as, el
programa salta sobre ellas y sigue.
Nota: Tener en cuenta el uso especial del smbolo '=', poner dentro de if (x = 10),
podra parecer que es vlido pero sin embargo no lo es ya que esa expresin asigna el
valor 10 a la variable x, por eso dentro de la estructura if se utilizara X==10 que en
este caso lo que hace el programa es comprobar si el valor de x es 10... Ambas cosas
son distintas por lo tanto dentro de las estructuras if, cuando se pregunte por un valor
se debe poner el signo doble de igual = =
Else puede ir precedido de otra condicin de manera que se pueden establecer varias
estructuras condicionales de tipo unas dentro de las otras (anidamiento) de forma que
sean mutuamente excluyentes pudindose ejecutar a la vez. Es incluso posible tener
un nmero ilimitado de estos condicionales. Recordar sin embargo qu slo un
conjunto de declaraciones se llevar a cabo dependiendo de la condicin probada:
{
InstruccionesC; // ejecuta las operaciones C
}
4.2.2.16 For
La declaracin For se usa para repetir un bloque de sentencias encerradas entre llaves
un nmero determinado de veces. Cada vez que se ejecutan las instrucciones del
bucle se vuelve a testear la condicin. La declaracin For tiene tres partes separadas
por (;) vemos el ejemplo de su sintaxis:
4.2.2.17 While
Un bucle del tipo while es un bucle de ejecucin continua mientras se cumpla la
El siguiente ejemplo asigna el valor ledo lee Sensor () a la variable 'x', espera 50
Milisegundos y luego contina mientras que el valor de la 'x' sea inferior a 100:
Los terminales de Arduino, por defecto, estn configurados como entradas, por lo
tanto no es necesario definirlos en el caso de que vayan a trabajar como entradas. Los
pines configurados como entrada quedan, bajo el punto de vista elctrico, como
entradas en estado de alta impedancia.
Estos pines tienen a nivel interno una resistencia de 20 K a las que se puede
acceder mediante software. Estas resistencias acceden de la siguiente manera:
Los pines configurado como OUTPUT (salida) se dice que estn en un estado de baja
impedancia estado y pueden proporcionar 40 mA (miliamperios) de corriente a otros
dispositivos y circuitos. Esta corriente es suficiente para alimentar un diodo LED (no
olvidar poner una resistencia en serie), pero no es lo suficiente grande como para
alimentar cargas de mayor consumo como rels, solenoides, o motores.
Un cortocircuito en las patillas Arduino provocar una corriente elevada que puede
daar o destruir el chip Atmega. A menudo es una buena idea conectar en la
OUTPUT (salida) una resistencia externa de 470 o de 1000
Valor = digitalread (Pin); // hace que valor sea igual al estado ledo en pin.
Nota: Los pines analgicos (0-5) a diferencia de los pines digitales, no necesitan ser
declarados como INPUT u OUPUT ya que son siempre INPUTs.
Debido a que esta es una funcin de hardware, en el pin de salida analgica (PWN)
se generar una onda constante despus de ejecutada la instruccin analogWrite hasta
que se llegue a ejecutar otra instruccin analogWrite (o una llamada a
digitalReadodigitalWrite en el mismo pin).
Nota: Las salidas analgicas a diferencia de las digitales, no necesitan ser declaradas
como INPUT u OUTPUT.
Figura 4.18: Lee un valor analgico y convierte en una salida del tipo PWM
Void setup ()
{
Serial.begin (9600); // abre el puerto serie
// Configurando la velocidad en 9600 bps
}
Nota: Cuando se utiliza la comunicacin serie los pines digital 0 (RX) y 1 (TX) no
puede utilizarse al mismo tiempo.
100
El siguiente ejemplo toma de una lectura analgica pin0 y enva estos datos al
Ordenador cada 1 segundo.
100
101
102
Serial.print (b, BYTE) vuelca o enva el valor de b como un byte seguido de "CR"
y "LF".
Serial.println (str) vuelca o enva la cadena de caracteres como una cadena ASCII
seguido de "CR" y "LF".
Ejemplos:
Serial.print (b)
int b = 79;
Serial.print (b, BIN); // prints the string "1001111".
Serial.print (str)
Vuelca o enva la cadena de caracteres como una cadena ASCII. Equivale a
printString ().
Serial.print ("Hello World!"); // enva "Hello World!
4.2.2.28 Serial.avaible ( )
intSerial.available ()
Obtiene un nmero entero con el nmero de bytes (caracteres) disponibles para leer o
capturar desde el puerto serie. Equivale a la funcin serial.available ().
Devuelve Un entero con el nmero de bytes disponibles para leer desde el buffer
serie, o 0 si no hay ninguno. Si hay algn dato disponible, SerialAvailable () ser
mayor que 0. El buffer serie puede almacenar como mximo 64 bytes.
4.2.2.29 Serial.read ( )
IntSerial.Read () Lee o captura un byte (un caractr) desde el puerto serie. Equivale a
la funcin serialRead ().
Devuelve: El siguiente byte (carcter) desde el puerto serie, o -1 si no hay ninguno.
Descargar la versin de evaluacin del siguiente enlace, aunque para hacerlo primero
se tendr que registrar.
http://www.ni.com/trylabview/
Una vez instalado Labview, proceder a instalar el pack de drivers de VISA, que se
debe descargarlo desde la siguiente pgina. Se ha instalado la versin 5.1.1, pero
funciona con la versin 5.0.3 y ya han sacado la 5.1.2.
Una vez instalado todo esto, ejecutar el gestor de VI (VIPM) y buscar "Arduino".
Solo se tiene que seleccionar el paquete de la lista e instalarlo. Los paquetes de
componentes del LIFA se pueden descargar e instalar manualmente, pero esta forma
es mucho ms fcil. Cuando termine, se habr completado la parte de instalacin del
Labview, nos queda la parte del Arduino.
Hacer clic con el botn derecho sobre el dispositivo desconocido y elegir la opcin
"Actualizar software de controlador". En la siguiente ventana elegir la opcin
"Buscar software de controlador en el equipo". Ahora se pedir que se indique en que
carpeta estn los drivers de Arduino. Se tendr que seleccionar la carpeta "drivers"
que hay dentro del directorio de Arduino.
Y aceptamos la instalacin del driver, tras lo cual, nuestro Arduino estar reconocido
en el sistema como un puerto serie. El nmero de puerto serie lo necesitaremos en los
siguientes pasos.
Figura 4.27: Instalacin Arduino con el sketch que comunica la placa con Labview.
Fuente: Los Autores
Ahora elegir el puerto serie (COM) que utiliza el sistema para comunicarse con la
placa de Arduino. En este caso es el COM14, pero el sistema puede haber asignado
cualquier otro. Lo puede averiguar en el Administrador de dispositivos. El puerto se
selecciona en la opcin "Serial Port" del men Tools.
Eso es todo. Con esto ya tenemos lista la placa de Arduino para comunicarse con
Labview y tenemos montones de VI que nos van a permitir hacer fcilmente
aplicaciones para controlar procesos usando Arduino como tarjeta de adquisicin de
datos.
4.4
ENVI
DE
DE
UN
4.4.2 Objetivo
El objetivo de esta fase de prueba es conocer el entorno de programacin de Arduino
y como es la interaccin entre Arduino y Labview
4.5.2 Objetivo
El objetivo de esta prueba es conocer ms el entorno de programacin de Arduino y
como es la interaccin entre Arduino y los compones de hardware a utilizar en la
presente tesis.
Descripcin:
Cuando el sistema se energice, el Servomotor, se mover siempre cuando se vari la
seal enviada a travs del potencimetro. Cabe sealar que el Servomotor cubre un
ngulo mximo de 180.
4.6.2 Objetivo
El objetivo de esta fase prueba es conocer ms el entorno de la programacin de
Arduino con y su interaccin con los diferentes hardware (Sensor MTS360)
Partiendo de este punto se puede hablar de las variables que cumplen una funcin
especfica y las operaciones matemticas que estas deben de realizan (revisar
diccionario de Datos). El usuario elegir el eje: positivo o negativo
El usuario deber ingresar un numero entre 0 a 90. Con el switch ON/OFF, el sistema
iniciara y el eje transversal se mover y formar un ngulo con el alern.
int sensor0=0, sensor180=0; // variable para determinar funcin lineal del sensor
int pin2=2, pin3=3, pin4=4, pin7=7, pin8=8, pin10=10, pin11=11,
pin12=12;
// Eje + , - Labview
posfinal=0,error=0,entrada=0,sensor=0,sensor_artificio=0,posicion=0,error2=0,
sensor_artificio2=0;
int cont=0, suma=0, sumato=0, cont2=0, cont3=0, cont4=0;
Este es el inicio de la programacin, En esta etapa se crea las diferentes variables que
se vayan a utilizar en el transcurso de la programacin y adems la invocacin de las
libreras como se puede ver:
#include <Servo.h> -- Invocacin de librera para manejo del Servomotor.
Servo myservo;
Y el resto de variable son de tipo de entero para guardar nmeros enteros o decimales
o valores binarios (1,0).
// filtro sensor
//filtro sensor
void loop()
{
servo=myservo.read();
eje=digitalRead(pin5);
// retardo
Serial.println(myservo.read()); //
delay(100);
Total = Total - Lectura[i];
//filtro sensor
Lectura[i]=analogRead(A1);
Total = Total + Lectura[i];
i=i+1;
//filtro sensor
if (i>=1)
//filtro sensor
//filtro sensor
i=0;
Promedio = Total/1;
//filtro sensor
//filtro sensor
//filtro sensor
// Imprime mensaje
delay(100);
entra2=digitalRead(pin2);
Labview (8 bits)
entra3=digitalRead(pin3);
entra4=digitalRead(pin4);
entra7=digitalRead(pin7);
entra8=digitalRead(pin8);
entra10=digitalRead(pin10);
entra11=digitalRead(pin11);
entra12=digitalRead(pin12); ////lectura de un bits ms significativo enviado desde
Labview (8 bits)
// Conversin de un numero Binario a Decimal
if (entra2==1)
{
suma1=1;
sumatotal= suma1+suma2+suma3+suma4+suma5+suma6+suma7+suma8;
}
else
{
suma1=0;
sumatotal= suma1+suma2+suma3+suma4+suma5+suma6+suma7+suma8;
}
if (entra3==1)
suma2=2;
sumatotal= suma1+suma2+suma3+suma4+suma5+suma6+suma7+suma8;
}
else
{
suma2=0;
sumatotal= suma1+suma2+suma3+suma4+suma5+suma6+suma7+suma8;
}
if (entra4==1)
{
suma3=4;
sumatotal= suma1+suma2+suma3+suma4+suma5+suma6+suma7+suma8;
}
else
{
suma3=0;
sumatotal= suma1+suma2+suma3+suma4+suma5+suma6+suma7+suma8;
}
if (entra7==1)
{
suma4=8;
sumatotal= suma1+suma2+suma3+suma4+suma5+suma6+suma7+suma8;
}
else
{
suma4=0;
sumatotal= suma1+suma2+suma3+suma4+suma5+suma6+suma7+suma8;
}
if (entra8==1)
{
suma5=16;
sumatotal= suma1+suma2+suma3+suma4+suma5+suma6+suma7+suma8;
}
else
{
suma5=0;
sumatotal= suma1+suma2+suma3+suma4+suma5+suma6+suma7+suma8;
}
if (entra10==1)
{
suma6=32;
sumatotal= suma1+suma2+suma3+suma4+suma5+suma6+suma7+suma8;
}
else
{
suma6=0;
sumatotal= suma1+suma2+suma3+suma4+suma5+suma6+suma7+suma8;
}
if (entra11==1)
{
suma7=64;
sumatotal= suma1+suma2+suma3+suma4+suma5+suma6+suma7+suma8;
}
else
{
suma7=0;
sumatotal= suma1+suma2+suma3+suma4+suma5+suma6+suma7+suma8;
}
if (entra12==1)
{
suma8=128;
sumatotal= suma1+suma2+suma3+suma4+suma5+suma6+suma7+suma8;
}
else
129
{
suma8=0;
sumatotal= suma1+suma2+suma3+suma4+suma5+suma6+suma7+suma8;
} // Fin de la Conversin de Binario a Decimal
130
Las variables pin2, pin3, pin4, pin7, pin8, pin10, pin11, pin12 guardan el nmero del
pin del Arduino controlador. Las variables entra2, entra3, entra4, entra7, entra10,
entra11, entra12 almacenan el nmero binario (1 o 0) enviado desde el Arduino
DAQ.
if (error > 0)
{
if (posicin<=entrada)
{
for (posicin=sensor_artificio;posicin<=entrada; posicin+=1)
{
myservo.write(posicon+90+0);
ingresado
delay(100);
Serial.println("POSICON");
delay(10);
Serial.println(posicon+90);
delay(10);
}
}
}
las
if (error < 0)
{
if (posicin>=entrada)
{
delay(100);
for (posicin=sensor_artificio;posicion>=entrada; posicin-=1)
{
myservo.write(posicion+90-5); // posiciona al servo dependiendo del valor
ingresado
delay(100);
Serial.println("POSICIN");
delay(10);
Serial.println(posicion+90-5);
delay(10);
else if (switch1==0)
{
//Serial.println("VALOR CONT2");
suma=0;
myservo.write(90);
delay(10);
delay(100);
Lo mismo se puede decir cuando el usuario elija el eje negativo, se aplica la misma
lgica. A continuacin las siguientes pantallas de programacin.
eje X
sumato=90-suma;
entrada=sumato;
error=entrada-sensor_artificio
error2=abs(error);
Serial.println("ERROR");
delay(100);
Serial.println(error2);
delay(100);
if(error>0)
{
if(posicin<=entrada)
{
con respecto al
{
myservo.write(90-posicion-3); // posiciona al servo dependiendo del valor ingresado
delay(100);
Serial.println("POSICION");
delay(10);
Serial.println(90-posicion-3);
delay(10);
Serial.println("ERROR");
Serial.println(error2);
}
}
}
if (error < 0)
{
if(posicin>=entrada)
{
for (posicin=sensor_artificio;posicin>=entrada; posicin-=1)
{
myservo.write(90-posicin+6); // posiciona al servo dependiendo del valor ingresado
delay(100);
Serial.println("POSICIN ");
delay(10);
Serial.println(90-posicin+6);
delay(10);
Serial.println("ERROR")
//delay(100);
Serial.println(error2);
//delay(100);
}
}
}
}
else if (switch1==0)
{
cont2=0;
suma=0;
myservo.write(90+5);
delay(100);
}
}
}
se
puede
descargar
desde
la
pgina
del
fabricante:
https://decibel.ni.com/content/groups/labview-interface-for-arduino.
Cumpliendo estos requerimientos se podr decir que se estar listo para realizar la
comunicacin entre Labview y Arduino. Cabe indicar que la plataforma Labview
est siendo utilizada como un visor de datos y no como un controlador, ya que como
en nuestro proyecto est enfocado ms en el estudio e implementacin de la
herramienta Arduino. La tarjeta Arduino en este caso ser la controladora en el cual
Seleccin de
Inicio de Sistema
Envi de un
nmero de 7
Bits hacia el Arduino
Validacin de un
nmero no mayor a 90
En este proyecto en los pines 12 y 13 se conectarn los LED que represente los ejes
en nuestro proyecto:
Led eje + pin 12
Led eje - pin 13
4.10.6 Envi de una seal digital a travs del Labview hacia Arduino
DAQ/switch ON/OFF
Agregar un bloque VI Set Digital Pin Mode y configurar lo siguiente:
Numero de pin 6
Entrada o salida digital OutPut
Finalmente quedar:
Led ON/OFF pin 6
146
Los nombres de los LED representan las salidas digitales del index array
Ahora declararemos las salidas digitales en nuestro Arduino DAQ con su respectivo
nmero de Pines. Nos quedara de la siguiente manera:
Contando con las salidas digitales proceder a conectar a los bloques Digital Write Pin
y la conexin final quedar de la siguiente manera:
Voltaje del
sensor
2,99 V
1,27 V
Posicin del
sensor
0
180
Tabla 4.1: Relacin entre voltaje del sensor y posicin del sensor
Fuente: Los Autores
voltaje
2,99
1,27
Posicin sensor
0
180
Y = mx + b m = 0,00955
CAPTULO V
5.2 TORQUE
En el instante que se le aplica fuerza a un objeto rgido, ste tiende a realizar un
movimiento giratorio en torno a su eje de rotacin. Esta propiedad de la fuerza de
hacer girar a un objeto se le conoce como torque. El torque se define como el
producto vectorial de una fuerza tangencial F que acta sobre un cuerpo, y la un
posicin r respecto al origen de rotacin de cuerpo rgido.
Tambin es posible relacionar el torque con el trabajo mecnico efectuado por una
fuerza aplicada sobre un objeto durante cierto desplazamiento. Se define como la
integral del producto escalar del vector fuerza por el vector desplazamiento.
Por otro lado, la potencia (en watts) se puede definir como la rapidez con el que se
realiza el trabajo, como se aprecia en la ecuacin.
Donde corresponde al ngulo entre vector fuerza y vector posicin. Por lo tanto
para obtener un torque mximo el sen ()=1, con esto la ecuacin se convierte en
Ahora en la ecuacin anterior se puede sustituir la fuerza por la relacin del torque
mximo, para obtener:
m.ar
= m.r2
Como el eje transversal es de forma cilndrica y maciza tiene una masa 0,83 kg e
incluir las masas de los alerones es de alern 1 = 0.06 kg y alern 2 = 0.02 kg para
calcular la inercia del cuerpo del total.
Masa total = 0,91 kg
La frmula de la inercia es I = MR2
I = (0.91 kg) (1,2 cm)2
I = 0,6552
Al aplicar la frmula el torque o par de fuerza que se necesita para mover el eje es
de:
= 2,77 kg.cm
En los hogares:
- Mejorando la calidad de vida. Podramos citar desde una lavadora hasta un control
inteligente de edificios (domtica).
- Para los avances cientficos: Un claro ejemplo lo constituyen las misiones
espaciales.
- Para los avances tecnolgicos: por ejemplo en automocin es de todos conocidos
los Limpiaparabrisas inteligentes, etc.
Como se puede observar las aplicaciones son innumerables. De esta manera surge
toda una teora, la regulacin automtica, dedicada al estudio de los sistemas
automticos de control.
La interaccin entre los bloques se representa por medio de flechas que indican el
sentido de flujo de la informacin
Sistemas de bucle o lazo cerrado: son aquellos en los que la accin de control
depende en cierto modo, de la salida.
del sistema (o una de sus entradas), de manera que la accin de control se establezca
como una funcin de ambas.
Por lo tanto podemos definir tambin los sistemas de control en lazo cerrado como
aquellos sistemas en los que existe una realimentacin de la seal de salida, de
manera que sta ejerce un efecto sobre la accin de control.
El controlador est formado por todos los elementos de control y a la planta tambin
se le llama proceso.
El error, o diferencia entre los valores de la entrada y de la salida, acta sobre los
elementos de control en el sentido de reducirse a cero y llevar la salida a su valor
correcto. Se intenta que el sistema siga siempre a la seal de consigna.
El diagrama de bloques anterior se puede sustituir por el siguiente:
Donde
km = k2 / (Ra b0 + k2 k3)
Tm = Ra J/ (Ra b0 + k2 k3)
De la cual se puede llevar a cabo el despeje que relacione el torque con el voltaje de
armadura del servomotor.
fuerza
CRONOGRAMA
PRESUPUESTO
DESCRIPCION
CANTIDAD
VALOR
$ 900
TARJETAS ARDUINO
$ 80
SERVOMOTOR
$120
$240
MULTMETRO
$50
DISCO DURO
$100
COMPONENTES ELECTRNICO
VARIOS
CONTRUCCON MESA DE SOPORTE Y
$450
EJE TRANSVERSAL
RECURSOS DE OFICINA
$150
TOTAL
$2090
CONCLUSIONES Y RECOMENDACIONES
CONCLUSIONES:
pruebas
de
RECOMENDACIONES:
voltaje
Para la conexin del sensor MTS 360 se recomienda leer las instrucciones ya
que funciona bajo la tecnologa patentada del efecto hall.
BIBLIOGRAFA
DIRECCIONES ELECTRNICAS
http://www.arduino.cc/es/
http://arduino.cc/es/Main/Software
http://www.monografias.com/trabajos60/servo-motores/servo-motores.shtml
http://www.servodatabase.com/servo/hitec/hs-311
http://www.piher.net
http:// directindustry.es
http://www.ni.com/labview/esa/
http://sine.ni.com/nips/cds/view/p/lang/es/nid/209835
http://www.hobbytronics.co.uk/arduino-tutorial2-servos
http://trollmaker.com/article3/arduino-and-hc-sr04-ultrasonic-sensor
http://fisicajm.es.tl/libros-de-fisica-mecanica.htm
http://www.sapiensman.com/control_automatico/control_automatico6.htm
http://www.atmel.com/Images/8161s
ANEXO 1
CDIGO DE PROGRAMACON
#include <Servo.h> //invocacin de librera para Servomotor
Servo myservo;
int sensor0=0, sensor180=0; // variable para determinar funcin lnea del sensor
int pin2=2, pin3=3, pin4=4, pin7=7, pin8=8, pin10=10, pin11=11, pin12=12;
// Creacin de variables de tipo entero
int entra2=0, entra3=0, entra4=0, entra7=0, entra8=0, entra10=0, entra11=0,
entra12=0;
int sumatotal=0;
int suma1=0, suma2=0, suma3=0, suma4=0, suma5=0, suma6=0, suma7=0,
suma8=0;
int Valsensor, i=0, Total=0, Promedio=0; //filtro sensor
int Lectura[1]; // filtro sensor
int servo; //posicin de inicio del servo
int pin5=5; // entrada del binario desde Labview EJE
int pin6=6; // entrada del binario desde Labview SWITCH
int eje ;
// eje + , - Labview
posfinal=0,error=0,entrada=0,sensor=0,sensor_artificio=0,posicion=0,error2=0,
sensor_artificio2=0;
int cont=0, suma=0, sumato=0, cont2=0, cont3=0, cont4=0;
void setup()
{
myservo.attach(9); // indica que la entrada PWM del pin 9, es del SERVO
Serial.begin(9600); // abrir la comunicacin del puerto serie
for (i=0; i<1; i++) //filtro sensor
Lectura[i]=0;
//filtro sensor
i=0;
//filtro sensor
}
void loop()
{
servo=myservo.read();
variable servo
eje=digitalRead(pin5); // La entrada digital del
seleccin del eje + o switch1=digitalRead(pin6); //la entrada digital del pin 6 se guarda en la variable
switch1- Inicio del Sistema ON / OF
Serial.println("Sensor Sin Filtro");
delay(100);
Serial.println(analogRead(A1));
delay(1000);
if (switch1==0)
{
myservo.write(90); // Posicionamos al servo en 90
delay(100);
}
Total = Total - Lectura[i];
//filtro sensor
Lectura[i]=analogRead(A1);
//filtro sensor
if (i>=1)
//filtro sensor
//filtro sensor
i=0;
//filtro sensor
Promedio = Total/1;
//filtro sensor
Valsensor = map (Promedio, 236, 578, 0,180); // la funcin map es una ecuacin
lineal que toma el mximo y mnimo
// del sensor y lo presenta entre 0 a 180.
}
Serial.println("Sensor Valor Real con Filtro");
delay(100);
// Imprime mensaje
entra2=digitalRead(pin2);
enviado desde
Labview (8 bits)
entra3=digitalRead(pin3);
entra4=digitalRead(pin4);
entra7=digitalRead(pin7);
entra8=digitalRead(pin8);
entra10=digitalRead(pin10);
entra11=digitalRead(pin11);
entra12=digitalRead(pin12); ////lectura de un bits ms significativo enviado desde
Labview (8 bits)
// Conversin de un numero Binario a Decimal
if (entra2==1)
{
suma1=1;
sumatotal= suma1+suma2+suma3+suma4+suma5+suma6+suma7+suma8;
}
Else
{
suma1=0;
sumatotal= suma1+suma2+suma3+suma4+suma5+suma6+suma7+suma8;
}
if (entra3==1)
{
suma2=2;
sumatotal= suma1+suma2+suma3+suma4+suma5+suma6+suma7+suma8;
}
else
{
suma2=0;
sumatotal= suma1+suma2+suma3+suma4+suma5+suma6+suma7+suma8;
}
if (entra4==1)
{
suma3=4;
183
sumatotal= suma1+suma2+suma3+suma4+suma5+suma6+suma7+suma8;
}
else
{
suma3=0;
sumatotal= suma1+suma2+suma3+suma4+suma5+suma6+suma7+suma8;
}
if (entra7==1)
{
suma4=8;
sumatotal= suma1+suma2+suma3+suma4+suma5+suma6+suma7+suma8;
}
Else
{
suma4=0;
sumatotal= suma1+suma2+suma3+suma4+suma5+suma6+suma7+suma8;
}
if (entra8==1)
{
suma5=16;
sumatotal= suma1+suma2+suma3+suma4+suma5+suma6+suma7+suma8;
}
else
{
suma5=0;
sumatotal= suma1+suma2+suma3+suma4+suma5+suma6+suma7+suma8;
}
if (entra10==1)
{
suma6=32;
sumatotal= suma1+suma2+suma3+suma4+suma5+suma6+suma7+suma8;
}
else
{
184
suma6=0;
sumatotal= suma1+suma2+suma3+suma4+suma5+suma6+suma7+suma8;
}
if (entra11==1)
{
suma7=64;
sumatotal= suma1+suma2+suma3+suma4+suma5+suma6+suma7+suma8;
}
Else
{
suma7=0;
sumatotal= suma1+suma2+suma3+suma4+suma5+suma6+suma7+suma8;
}
if (entra12==1)
{
suma8=128;
sumatotal= suma1+suma2+suma3+suma4+suma5+suma6+suma7+suma8;
}
Else
{
suma8=0;
sumatotal= suma1+suma2+suma3+suma4+suma5+suma6+suma7+suma8;
} // Fin de la Conversin de Binario a Decimal
if (eje ==1) // Pregunta posicin del Eje + (Labview)
{
if (switch1==1) // Pregunta posicin del ON/OFF (Labview)
{
sensor=Valsensor;
sensor_artificio=90-sensor;
Serial.println("Sensor con Artificio");
delay(100);
Serial.println(sensor_artificio);
delay(100);
posicin=sensor_artificio;
185
suma = 0;
suma = sumatotal + 90;
sumato=suma -90;
entrada=sumato;
error=entrada-sensor_artificio;
error2=abs(error);
Serial.println("ERROR");
delay(100);
Serial.println(error2);
delay(100);
if (error > 0)
{
if (posicin<=entrada)
{
for (posicin=sensor_artificio; posicin<=entrada; posicin+=1)
{
myservo.write(posicion+90+0); // posiciona al servo dependiendo del valor
ingresado
delay(100);
Serial.println("POSICIN");
delay(10);
Serial.println(posicin+90);
delay(10);
Serial.println("ERROR");
Serial.println(error2);
}
}
}
if (error < 0)
{
if (posicin>=entrada)
{
delay(100);
for (posicin=sensor_artificio; posicin>=entrada; posicin-=1)
186
{
myservo.write(posicion+90-5);
ingresado
delay(100);
Serial.println("POSICIN");
delay(10);
Serial.println(posicion+90-5);
delay(10);
Serial.println("ERROR");
Serial.println(error2);
}
}
}
}
else if (switch1==0)
{
suma=0;
myservo.write(90);
delay(10);
delay(100);
int pos=0;
if (pos>=90)
{
for(pos = sensor_artificio; pos<=90; pos += 1)
{
myservo.write(pos);
delay(100);
}
}
}
}
187
if (switch1==1)
{
suma=0;
sensor=Valsensor;
sensor_artificio=sensor-90;
sensor_artificio2=abs(sensor_artificio);
posicin=sensor_artificio;
suma=0;
suma=90-sumatotal;
respecto al
eje X
sumato=90-suma;
entrada=sumato;
error=entrada-sensor_artificio;
error2=abs(error);
Serial.println("ERROR");
delay(100);
Serial.println(error2);
delay(100);
if(error>0)
{
if(posicin<=entrada)
{
for (posicin=sensor_artificio; posicin<=entrada; posicin+=1)
{
myservo.write(90-posicion-3);
ingresado
delay(100);
Serial.println("POSICIN");
delay(10);
Serial.println(90-posicion-3);
delay(10);
Serial.println("ERROR");
Serial.println(error2);
188
189
}
}
if (error < 0)
{
if(posicin>=entrada)
{
for (posicin=sensor_artificio; posicin>=entrada; posicin-=1)
{
myservo.write(90-posicion+6); // posiciona al servo dependiendo del valor ingresado
delay(100);
Serial.println("POSICIN ");
delay(10);
Serial.println(90-posicin+6);
delay(10);
Serial.println("ERROR");
Serial.println(error2)
}
}
}
else if (switch1==0)
{
cont2=0;
suma=0;
myservo.write(90+5);
delay(100);
}
}
}
ANEXO 2
DICCIONARIO DE DATOS
Variables:
ValSensor Valor Real del Sensor (0 5 V), el cual cuando se conecta a las
entradas analgica del Arduino (A0A5), este lo convierte a un nmero de 10 bits.
Dicha funcionalidad es propia de la Tarjeta Arduino. Y la relacin es la siguiente:
Voltaje real
3,09 V
1,33 V
Numero de 10
bits
236
578
de la
variable sensor.
ANEXO 3
ANEXO 4
ANEXO 5
ESPECIFICACIONES TCNICAS SERVOMOTOR