SlideShare una empresa de Scribd logo
1 de 24
La Máquina de los Dioses Documentación
PARTE 1 HARDWARE
[object Object],En un principio se usó una Arduino NG, con Atmega8 (16MHz, 8KB flash, 1KB SRAM) A esta tarjeta se le realizaron ciertas modificaciones, en la zona del regulador de voltaje, ya que el proyecto funciona con una alimentación de 24V. Posteriormente se sustituyó el Atmega8 por un Atmega168 (16KB de flash) conservando la misma placa. Se agregó una llave selectora de alimentación (USB / externa) y un botón de Reset externo, para facilitar la programación sin necesidad desmontar la placa.
[object Object],Se usaron 2 baterías de gel de 12V / 1,2Ah puestas en serie, lo que proporciona una tensión de 24V. En diversas partes del circuito se utilizan los siguientes voltajes: 24V – motores paso a paso principales 12V – reproductor de cinta y detector de proximidad IR 5V – Arduino y resto del hardware Estos voltajes se obtienen con los reguladores 7812 y 7805 (en realidad se utilizaron dos 7805, uno de ellos con un divisor de tensión en el polo común, ya que no disponíamos de 7812) y sendas resistencias puestas en serie para absorber la diferencia de potencial (una de ellas tiene a su vez un ventilador de computadora de 12V puesto en serie.)  Cabe destacar que, al escaso rendimiento de las baterías de gel en comparación con otros tipos (baja relación capacidad/masa, aunque también es bajo su costo) se suma el también bajo rendimiento del sistema de reducción de voltaje. Buena parte de energía se disipa en calor en las resistencias mencionadas, lo que resulta en una autonomía de menos de 1 hora para el robot. No obstante, este sistema es el más sencillo y brinda una mayor comodidad de diseño, evitando el uso de múltiples fuentes de alimentación, o complicados circuitos de reducción. Las baterías de gel son asimismo fáciles de cargar y tienen un índice muy bajo de auto-descarga.
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Está montado en una placa que a su vez se calza sobre el “shield”, formando una especie de pirámide de circuitos de 3 pisos (contando la propia Arduino). Esta placa contiene el integrado 74LS47, convertidor de binario a 7 segmentos, del cual, anotaremos como curiosidad, se utilizan las 16 combinaciones de sus 4 entradas binarias. De esta manera pueden verse ocasionalmente en el display “caracteres” que no corresponden a ninguna cifra decimal, e incluso caracteres que no existen en la especificación del chip, los cuales se logran conmutando rápidamente 2 códigos distintos. Los 3 transistores restantes forman un conmutador izquierda / derecha, que convenientemente manejado desde la Arduino permite desplegar bastante información usando sólo 5 salidas digitales y un diseño sumamente sencillo. Doble display led de 7 segmentos
0  - in  - control remoto IR  1  - out  - "E" (clock 2) LCD / BackLight LCD 2-4  - out  - "bus de direcciones" 74HC259  4 - detector de proximidad IR (led)  2 - motor radar  3 - Clock 1 (shift register) LCD 5  - out  - "Dato" 74HC259 / buzzer / "Dato" LCD 6  - out  - "enable" 74HC259 (lógica negativa) 11  - out  - volumen buzzer (PWM) 7  - out  - led display C  8  - out  - led display B 12  - out  - led display D 13  - out  - led display A 9,10 - out  - motor cassette (PWM)  Utilización de pines de la Arduino Como puede verse, absolutamente todos los pines de la Arduino son utilizados en este proyecto, algunos con más de una función. El diseño no fue enteramente planificado, sino que se fueron agregando nuevas partes, tratando de modificar mínimamente lo que ya estaba hecho. Esto explica que la distribución de los pines resulte desordenada y aparentemente caprichosa. Cabe destacar que las decisiones de diseño respondieron siempre a la simplicidad y facilidad de implementación, pero no sólo en lo electrónico, sino que muchas veces pesaron factores de tipo mecánico, espacial, cercanía de las partes, cableado, etc. Tanto el 74HC259 como el 74LS374 (que se usó como “shift register”) y el display LCD poseen un pin de “data” y otro de “enable”, “clock” o simplemente “E” (en el caso del LCD, son 8 los bits de data). El 74HC259 posee además 3 pines para direccionamiento. El 74LS47 (interface para el display de 7 segmentos) tiene 4 entradas, llamadas A, B, C y D.  Los pines del 1 al 5 de la Arduino tienen todos dos y hasta tres funciones. El “truco” consiste en compartir, por ejemplo, los pines de direccionamiento del 74HC259, los cuales mientras no se active el “E” de dicho chip no alteran el estado de los latchs. Esta misma filosofía se aplicó a todos los casos posibles, permitiendo incluso cierta “interacción” entre los módulos, la cual es evidente por ejemplo en el caso del buzzer. Este produce diversos “pitidos involuntarios” cada vez que se escribe en el display LCD, se activan los motores, etc., lo que no constituye sin embargo una limitación, sino que se aprovecha “estéticamente”.  analog 2,3,4  - detectores de proximidad analog 5  - encoder magnético en cassette analog 0  - IR Ranger SHARP  (10cm = 528; 80cm = 64; inf. cm = 0) analog 1  - posición radar (0, 768, 682, 512) direcciones 74HC259: 0-5 motores paso a paso principales 6  - izquierda/derecha led display  7  - atraer cabezal cassette
74HCT259 / 74LS47 Circuitos básicos alimentación motores principales
Circuitos básicos (cont.) puente en “H” cintero Control remoto / detector de proximidad Motor radar / electroimán cintero / relé cintero
Circuitos básicos (cont.) Display LCD / Buzzer / RF
Circuitos básicos (cont.) Encoder cintero Encoder radar Imán permanente
Estructura mecánica Consiste en una cruz de aluminio, en uno de cuyos ejes (el más ancho) van montados los 2 motores principales, y en el otro dos ruedas “locas” (pivotantes) provistas además de sendos resortes que las mantienen siempre en contacto con la superficie, absorbiendo posibles irregularidades de la misma. Se trata entonces del clásico robot tipo “tortuga”. (de hecho, esta estructura fue construida por el año 1990, junto con Daniel Lopes, y solíamos referirnos a ella como “la tortuga”).
Los motores principales Se trata de unos motores paso-a-paso (steppers) de gran tamaño, obtenidos del desguace de unas computadoras Texas Instruments de la década del 70. Cada uno de estos motores movía el cabezal de unas grandes disketteras (obsérverse el “sinfín” de que disponen, a tales efectos). Al estar acoplados directamente a las ruedas, sin ningún sistema de reducción, el movimiento resultante es un tanto tosco, necesitando además una poderosa fuente de alimentación y una velocidad no excesiva en la secuencia de control. Este diseño se realizó en forma totalmente experimental, sin ningún cálculo previo, como casi todas las restantes partes del robot. No obstante, en una etapa posterior, a través del software, se optimiza todo lo posible el control, lográndose interesantes velocidades de movimiento en forma bastante estable. Un detalle interesante de estos motores es que, a pesar de contar con 4 conectores, no se trata de los clásicos steppers bipolares, sino que son motores de “reluctancia variable”, muy raros hoy en día, con 3 bobinas y un polo común, lo que al final de cuentas simplificó bastante el diseño del circuito de control. Éste consta de 6 darlingtons de potencia y los obligatorios  diodos para cancelar la corriente inversa de las bobinas.
El control remoto IR Se trata de un control remoto IR doméstico, de 38KHz como es habitual en casi todos los equipos del mercado. Este control en particular, pertenecía a una tarjeta de video MSI. Varios controles remotos fueron probados con el receptor IR de 38KHz (IRM8510), y todos ellos funcionaban, algunos incluso compartían idéntico sistema de codificación, diferenciándose únicamente en el byte identificatorio.  El MSI pertenecía al grupo mayoritario en lo que a codificación se refiere, utilizando el llamado “protocolo NEC”, que se verá en detalle en la parte de software. Fue elegido por la gran cantidad de botones con que cuenta, y por la relativa coherencia de los mismos con las posibles funciones de un robot. ch. up  26  ch. dn  30 vol. up  27  vol. dn  31 ch rtn  23  enter  77 mute  12  <<  22 >||  20  >>  24 rec  72  |<  73 stop  89  >|  91 Códigos del control remoto IR power  18  suspend  80 sleep  81  home  82 DVD  84  FM  86 arriba  92  abajo  95 izquierda  93  derecha  94 enter  83 menu  16  exit  78 mts  19  c.c/ttx  79 tv  64  fm radio  65 music  66  pictures  67 video clip  68  dvd  69 game zone  70  application  71
El detector de proximidad IR Otra pieza de hardware totalmente experimental, es este detector de proximidad IR “casero”. La carcaza de una cámara web se utilizó solamente como soporte mecánico, aunque esto indefectiblemente provoca una confusión en quien observa el robot a primera vista. En el primer diseño se utilizaron 3 leds IR controlados por un único transistor conectado a una salida digital de la Arduino, y un fototransistor con un filtro IR, formando un divisor de tensión con una resistencia de 500K, y conectado a una entrada analógica de la placa. Posteriormente se sustituyeron dos de estos mismos leds, por dos nuevos detectores laterales. Este diseño extremadamente sencillo adolece de no pocos defectos, los cuales intentarán ser subsanados a través del software, que es quien se encarga además de efectuar “manualmente” la medición. ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
El reproductor de cinta Sin dudas uno de los puntos fuertes del proyecto fue incluir este reproductor de cinta para que el robot “hable”. El sistema de control de posición para que los mensajes sean reproducidos con exactitud, es también una de las partes que más experimentación requirió, y cuyo software de control resultó más complicado. El software incluye una cantidad de sofisticaciones, entre ellas un sistema de “freno” para contrarrestar la inercia, un detector de “vueltas falsas”, etc. El dispositivo fue extraido de un contestador telefónico Panasonic, un modelo que fue muy popular en nuestro pais. El amplificador de audio fue extraido de otro dispositivo de micro-cassette, esta vez un pequeño grabador portátil. El mecanismo original es relativamente sencillo, consta de un motor DC para mover la cinta en ambas direcciones, a distintas velocidades, un electroimán para atraer el cabezal de grabación/reproducción y un “encoder” magnético acoplado a uno de los ejes de carrete. El encoder en el aparato original, presumimos que se usa únicamente para detectar si la cinta llegó a uno de los extremos, mientras que para el posicionamiento de los mensajes se usan señales de audio grabadas en la propia cinta. Sin embargo, en nuestro diseño el encoder es usado en todo momento para medir la cantidad de vueltas que dio el carrete, tarea que resultó bastante compleja ya que el comportamento de este dispositivo es a veces, en apariencia, impredecible. El control de velocidad y dirección se efectúa mediante 2 salidas PWM de la Arduino, conectadas a un puente en “H” de 4 transistores NPN. Por útimo se colocó un relé funcionando a la par del electroimán, para desconectar el amplificador de audio de la alimentación mientras no se usa y de esta manera ahorrar energía.
Control de volumen para el buzzer Otra salida PWM se utiliza para controlar el volumen del buzzer. Nuevamente, se trata de un diseño extremadamente sencillo. Una salida PWM conectada a un filtro RC para obtener una tensión de control; ésta se amplifica con un operacional CA3140 en configuración “seguidor de tensión” (salida conectada directamente a entrada inversora) y la salida de este operacional se aplica a un circuito VCA muy elemental. El VCA consiste en 2 transistores puestos en “serie”, como muestra la figura. Uno de ellos recibe la señal de audio y el otro la tensión de control (un VCA es esecialmente un “multiplicador” de señales).
El “radar” Un módulo de gran elaboración, aunque en la práctica no resulta tan útil. Consiste en un medidor de distancia Sharp GP2D12, con salida analógica, que mide distancias entre 10 y 80cm basándose en el ángulo de reflexión de un haz IR, montado sobre una estructura giratoria con un encoder de 4 posiciones. La estructura giratoria consta de una caja de reducción extraida de un reloj electrónico de pared, con un motor DC en la base. El encoder consiste en una red de resistencias con 4 contactos puestos formando un cuadrado, sobre la superficie que recorre otro contacto acoplado con la pieza giratoria. Este contacto se dirige a una entrada analógica de la Arduino, proporcionando 4 voltajes fácilmente identificables, cada vez que la pieza se encuentra en una de las 4 posiciones buscadas (una especie de “servo casero”, la red de resistenicas sustituye al potenciómetro). Nuevamente es el mismo software de la Arduino el que está a cargo de manejar este dispositivo, como ocurre en casi todo el resto del proyecto. (Apenas el display LCD es el único periférico dotado de un procesador propio.)
El display LCD La inclusión de este display LCD de 2 x 16 caracteres (cada carácter formado por una matriz de 7 x 5 puntos) permite desplegar información muy diversa, pero tiene el inconveniente de que sus dimensiones no están en relación con las del robot mismo; desde la distancia normal a la que suele estar el observador, no es posible leer los mensajes en él mostrados. El display utiliza un bus de datos paralelo de 8 bits, y algunas señales de control. Contiene un controlador, un chip  KS0066, compatible con el HD44780, lo que significa que este display utiliza el protocolo estándar, clásico de los LCD de este tipo. Para comunicarnos con el display desde la Arduino, utilizamos esta vez un protocolo serial sincrónico, y con el comando “ShiftOut” escribimos los 8 bits en un “shift register”. En lugar de  un auténtico shift register, utilizamos un 74LS374, óctuple latch, y conectamos los latchs en cadena, con lo que se obtiene exactamente el mismo resultado. También se puso un transistor para controlar la luz trasera, y un detalle interesante a este respecto, es que el pin que se usa para controlar dicha luz es el mismo  que se usa para la señal “clock” del display. Esto es un ejemplo de la técnica de compartir pines llevada al extremo: la señal permanece en reposo tanto en “0” como en “1”, pero cuando es necesario escribir un dato en el display, la señal tiene que conmutar entre ambos estados y luego volver al que estaba. Junto al 74LS374 puede verse el  HT640, usado en el trasmisor de RF, que toma el dato del mismo shift register que el display LCD.
Trasmisor de RF de 430MHz Finalmente, el último dispositivo en integrarse fue este trasmisor de RF de 430MHz, que hace juego con un receptor de la misma frecuencia colocado en otro robot, permitiendo intercambiar información entre ambos. La comunicación es en una sola dirección (para la otra dirección utilizamos IR, simulando un control remoto) Estos módulos de RF son realmente muy limitados, su velocidad de transferencia de datos no llega a los 2Kb/s, carecen de electrónica de control alguna, es decir no hay control de flujo ni corrección de errores. Lo mejor, entonces, es usarlos en combinación con un par de integrados codificador / decodificador, como en nuestro caso que utilizamos el HT640, si bien la decodificación en el otro robot se hizo por software, usando la Arduino. El HT640 lee permanentemente un byte de la salida del 74LS374, nuestro “shift register”, lo codifica y lo trasmite indefinidamente a través del módulo RF. Obsérvese que de esta manera logramos introducir una nueva funcionalidad al robot, sin modificar prácticamente nada, tal como nos veníamos proponiendo desde el principio. El dato que se trasmite por RF puede escribirse en el 74LS374, sin modificar lo que muestra el display LCD; no obstante, una vez que lo hicimos, si quisiéramos modificar el estado de la luz trasera, por ejemplo, podríamos activar accidentalente el clock y en ese caso sí, el display recibiría un dato incorrecto. Este tipo de cosas son las que hay que tener en cuenta cuando se trabaja compartiendo el hardware de esta manera. A modo de antena, se utilizó un alambre de cobre de 16cm (1/4 de onda).
PARTE 2 SOFTWARE
movimientos simples velocidades &quot;atención obstáculo&quot; modos de zig-zag volumen profundidad en los zig-zag y modo automático encendido / apagado los detectores de obstáculo para hacer musiquita el tema del apagado de motores, modo &quot;pause&quot;, modo &quot;sleep&quot;  modo aleatorio modo automático movimiento acelerado Apendices: Protocolo nec Data sheets del irm8510 Del ht640, de los módulos RF, gp2d12, 259, 374, 7447 , display LCD Circuitos varios Compartir pines mas a fondo Pwm en el atmega Mas fotos
Mensajes de la cinta: 0  - mensaje de bienvenida 10-100 - velocidades 110  - detenido 120  - adelante 130  - atrás 140  - izquierda 150  - derecha 160  - obstáculo 170  - apagado 180  - encendido 190  - modo aleatorio 200  - zig-zag adelante 210  - zig-zag atrás 220  - zig-zag derecha 230  - zig-zag izquierda 240  - modo automático 250  - contacto 260  - sacándole viruta al piso
Modo “automático”

Más contenido relacionado

Destacado

Microcontroladores 6 – interrupciones
Microcontroladores 6 – interrupcionesMicrocontroladores 6 – interrupciones
Microcontroladores 6 – interrupcionesPablo Gindel
 
Microcontroladores 1 – arquitectura
Microcontroladores 1 – arquitecturaMicrocontroladores 1 – arquitectura
Microcontroladores 1 – arquitecturaPablo Gindel
 
Óhmetro con Arduino
Óhmetro con Arduino  Óhmetro con Arduino
Óhmetro con Arduino Pablo Gindel
 
Electrónica 4 – fuentes y baterías
Electrónica 4 – fuentes y bateríasElectrónica 4 – fuentes y baterías
Electrónica 4 – fuentes y bateríasPablo Gindel
 
Dimmer de 230V AC con Arduino
Dimmer de 230V AC con ArduinoDimmer de 230V AC con Arduino
Dimmer de 230V AC con ArduinoPablo Gindel
 
Fuente conmutada con Arduino
Fuente conmutada con ArduinoFuente conmutada con Arduino
Fuente conmutada con ArduinoPablo Gindel
 
Microcontroladores 5 – comunicación (SPI & I2C)
Microcontroladores 5 – comunicación (SPI & I2C)Microcontroladores 5 – comunicación (SPI & I2C)
Microcontroladores 5 – comunicación (SPI & I2C)Pablo Gindel
 
Microcontroladores 2 – GPIO y PWM
Microcontroladores 2 – GPIO y PWMMicrocontroladores 2 – GPIO y PWM
Microcontroladores 2 – GPIO y PWMPablo Gindel
 
Diagrama de bloque tanque
Diagrama de bloque tanqueDiagrama de bloque tanque
Diagrama de bloque tanqueE_ANTOLINEZ
 
Microcontroladores 4 – comunicación (uart)
Microcontroladores 4 – comunicación (uart)Microcontroladores 4 – comunicación (uart)
Microcontroladores 4 – comunicación (uart)Pablo Gindel
 
Electrónica 2 – fundamentos 2; componentes pasivos
Electrónica 2 – fundamentos 2; componentes pasivosElectrónica 2 – fundamentos 2; componentes pasivos
Electrónica 2 – fundamentos 2; componentes pasivosPablo Gindel
 
Simplificacion+diagramas
Simplificacion+diagramasSimplificacion+diagramas
Simplificacion+diagramasUNEFA
 
Algebra de bloques0
Algebra de bloques0Algebra de bloques0
Algebra de bloques0Mario Audelo
 

Destacado (14)

Microcontroladores 6 – interrupciones
Microcontroladores 6 – interrupcionesMicrocontroladores 6 – interrupciones
Microcontroladores 6 – interrupciones
 
Audio con Arduino
Audio con ArduinoAudio con Arduino
Audio con Arduino
 
Microcontroladores 1 – arquitectura
Microcontroladores 1 – arquitecturaMicrocontroladores 1 – arquitectura
Microcontroladores 1 – arquitectura
 
Óhmetro con Arduino
Óhmetro con Arduino  Óhmetro con Arduino
Óhmetro con Arduino
 
Electrónica 4 – fuentes y baterías
Electrónica 4 – fuentes y bateríasElectrónica 4 – fuentes y baterías
Electrónica 4 – fuentes y baterías
 
Dimmer de 230V AC con Arduino
Dimmer de 230V AC con ArduinoDimmer de 230V AC con Arduino
Dimmer de 230V AC con Arduino
 
Fuente conmutada con Arduino
Fuente conmutada con ArduinoFuente conmutada con Arduino
Fuente conmutada con Arduino
 
Microcontroladores 5 – comunicación (SPI & I2C)
Microcontroladores 5 – comunicación (SPI & I2C)Microcontroladores 5 – comunicación (SPI & I2C)
Microcontroladores 5 – comunicación (SPI & I2C)
 
Microcontroladores 2 – GPIO y PWM
Microcontroladores 2 – GPIO y PWMMicrocontroladores 2 – GPIO y PWM
Microcontroladores 2 – GPIO y PWM
 
Diagrama de bloque tanque
Diagrama de bloque tanqueDiagrama de bloque tanque
Diagrama de bloque tanque
 
Microcontroladores 4 – comunicación (uart)
Microcontroladores 4 – comunicación (uart)Microcontroladores 4 – comunicación (uart)
Microcontroladores 4 – comunicación (uart)
 
Electrónica 2 – fundamentos 2; componentes pasivos
Electrónica 2 – fundamentos 2; componentes pasivosElectrónica 2 – fundamentos 2; componentes pasivos
Electrónica 2 – fundamentos 2; componentes pasivos
 
Simplificacion+diagramas
Simplificacion+diagramasSimplificacion+diagramas
Simplificacion+diagramas
 
Algebra de bloques0
Algebra de bloques0Algebra de bloques0
Algebra de bloques0
 

Último

pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxMiguelAtencio10
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfAnnimoUno1
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfvladimiroflores1
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 

Último (11)

pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 

La Máquina de los Dioses - Documentación

  • 1. La Máquina de los Dioses Documentación
  • 3.
  • 4.
  • 5.
  • 6. Está montado en una placa que a su vez se calza sobre el “shield”, formando una especie de pirámide de circuitos de 3 pisos (contando la propia Arduino). Esta placa contiene el integrado 74LS47, convertidor de binario a 7 segmentos, del cual, anotaremos como curiosidad, se utilizan las 16 combinaciones de sus 4 entradas binarias. De esta manera pueden verse ocasionalmente en el display “caracteres” que no corresponden a ninguna cifra decimal, e incluso caracteres que no existen en la especificación del chip, los cuales se logran conmutando rápidamente 2 códigos distintos. Los 3 transistores restantes forman un conmutador izquierda / derecha, que convenientemente manejado desde la Arduino permite desplegar bastante información usando sólo 5 salidas digitales y un diseño sumamente sencillo. Doble display led de 7 segmentos
  • 7. 0 - in - control remoto IR 1 - out - &quot;E&quot; (clock 2) LCD / BackLight LCD 2-4 - out - &quot;bus de direcciones&quot; 74HC259 4 - detector de proximidad IR (led) 2 - motor radar 3 - Clock 1 (shift register) LCD 5 - out - &quot;Dato&quot; 74HC259 / buzzer / &quot;Dato&quot; LCD 6 - out - &quot;enable&quot; 74HC259 (lógica negativa) 11 - out - volumen buzzer (PWM) 7 - out - led display C 8 - out - led display B 12 - out - led display D 13 - out - led display A 9,10 - out - motor cassette (PWM) Utilización de pines de la Arduino Como puede verse, absolutamente todos los pines de la Arduino son utilizados en este proyecto, algunos con más de una función. El diseño no fue enteramente planificado, sino que se fueron agregando nuevas partes, tratando de modificar mínimamente lo que ya estaba hecho. Esto explica que la distribución de los pines resulte desordenada y aparentemente caprichosa. Cabe destacar que las decisiones de diseño respondieron siempre a la simplicidad y facilidad de implementación, pero no sólo en lo electrónico, sino que muchas veces pesaron factores de tipo mecánico, espacial, cercanía de las partes, cableado, etc. Tanto el 74HC259 como el 74LS374 (que se usó como “shift register”) y el display LCD poseen un pin de “data” y otro de “enable”, “clock” o simplemente “E” (en el caso del LCD, son 8 los bits de data). El 74HC259 posee además 3 pines para direccionamiento. El 74LS47 (interface para el display de 7 segmentos) tiene 4 entradas, llamadas A, B, C y D. Los pines del 1 al 5 de la Arduino tienen todos dos y hasta tres funciones. El “truco” consiste en compartir, por ejemplo, los pines de direccionamiento del 74HC259, los cuales mientras no se active el “E” de dicho chip no alteran el estado de los latchs. Esta misma filosofía se aplicó a todos los casos posibles, permitiendo incluso cierta “interacción” entre los módulos, la cual es evidente por ejemplo en el caso del buzzer. Este produce diversos “pitidos involuntarios” cada vez que se escribe en el display LCD, se activan los motores, etc., lo que no constituye sin embargo una limitación, sino que se aprovecha “estéticamente”. analog 2,3,4 - detectores de proximidad analog 5 - encoder magnético en cassette analog 0 - IR Ranger SHARP (10cm = 528; 80cm = 64; inf. cm = 0) analog 1 - posición radar (0, 768, 682, 512) direcciones 74HC259: 0-5 motores paso a paso principales 6 - izquierda/derecha led display 7 - atraer cabezal cassette
  • 8. 74HCT259 / 74LS47 Circuitos básicos alimentación motores principales
  • 9. Circuitos básicos (cont.) puente en “H” cintero Control remoto / detector de proximidad Motor radar / electroimán cintero / relé cintero
  • 10. Circuitos básicos (cont.) Display LCD / Buzzer / RF
  • 11. Circuitos básicos (cont.) Encoder cintero Encoder radar Imán permanente
  • 12. Estructura mecánica Consiste en una cruz de aluminio, en uno de cuyos ejes (el más ancho) van montados los 2 motores principales, y en el otro dos ruedas “locas” (pivotantes) provistas además de sendos resortes que las mantienen siempre en contacto con la superficie, absorbiendo posibles irregularidades de la misma. Se trata entonces del clásico robot tipo “tortuga”. (de hecho, esta estructura fue construida por el año 1990, junto con Daniel Lopes, y solíamos referirnos a ella como “la tortuga”).
  • 13. Los motores principales Se trata de unos motores paso-a-paso (steppers) de gran tamaño, obtenidos del desguace de unas computadoras Texas Instruments de la década del 70. Cada uno de estos motores movía el cabezal de unas grandes disketteras (obsérverse el “sinfín” de que disponen, a tales efectos). Al estar acoplados directamente a las ruedas, sin ningún sistema de reducción, el movimiento resultante es un tanto tosco, necesitando además una poderosa fuente de alimentación y una velocidad no excesiva en la secuencia de control. Este diseño se realizó en forma totalmente experimental, sin ningún cálculo previo, como casi todas las restantes partes del robot. No obstante, en una etapa posterior, a través del software, se optimiza todo lo posible el control, lográndose interesantes velocidades de movimiento en forma bastante estable. Un detalle interesante de estos motores es que, a pesar de contar con 4 conectores, no se trata de los clásicos steppers bipolares, sino que son motores de “reluctancia variable”, muy raros hoy en día, con 3 bobinas y un polo común, lo que al final de cuentas simplificó bastante el diseño del circuito de control. Éste consta de 6 darlingtons de potencia y los obligatorios diodos para cancelar la corriente inversa de las bobinas.
  • 14. El control remoto IR Se trata de un control remoto IR doméstico, de 38KHz como es habitual en casi todos los equipos del mercado. Este control en particular, pertenecía a una tarjeta de video MSI. Varios controles remotos fueron probados con el receptor IR de 38KHz (IRM8510), y todos ellos funcionaban, algunos incluso compartían idéntico sistema de codificación, diferenciándose únicamente en el byte identificatorio. El MSI pertenecía al grupo mayoritario en lo que a codificación se refiere, utilizando el llamado “protocolo NEC”, que se verá en detalle en la parte de software. Fue elegido por la gran cantidad de botones con que cuenta, y por la relativa coherencia de los mismos con las posibles funciones de un robot. ch. up 26 ch. dn 30 vol. up 27 vol. dn 31 ch rtn 23 enter 77 mute 12 << 22 >|| 20 >> 24 rec 72 |< 73 stop 89 >| 91 Códigos del control remoto IR power 18 suspend 80 sleep 81 home 82 DVD 84 FM 86 arriba 92 abajo 95 izquierda 93 derecha 94 enter 83 menu 16 exit 78 mts 19 c.c/ttx 79 tv 64 fm radio 65 music 66 pictures 67 video clip 68 dvd 69 game zone 70 application 71
  • 15.
  • 16. El reproductor de cinta Sin dudas uno de los puntos fuertes del proyecto fue incluir este reproductor de cinta para que el robot “hable”. El sistema de control de posición para que los mensajes sean reproducidos con exactitud, es también una de las partes que más experimentación requirió, y cuyo software de control resultó más complicado. El software incluye una cantidad de sofisticaciones, entre ellas un sistema de “freno” para contrarrestar la inercia, un detector de “vueltas falsas”, etc. El dispositivo fue extraido de un contestador telefónico Panasonic, un modelo que fue muy popular en nuestro pais. El amplificador de audio fue extraido de otro dispositivo de micro-cassette, esta vez un pequeño grabador portátil. El mecanismo original es relativamente sencillo, consta de un motor DC para mover la cinta en ambas direcciones, a distintas velocidades, un electroimán para atraer el cabezal de grabación/reproducción y un “encoder” magnético acoplado a uno de los ejes de carrete. El encoder en el aparato original, presumimos que se usa únicamente para detectar si la cinta llegó a uno de los extremos, mientras que para el posicionamiento de los mensajes se usan señales de audio grabadas en la propia cinta. Sin embargo, en nuestro diseño el encoder es usado en todo momento para medir la cantidad de vueltas que dio el carrete, tarea que resultó bastante compleja ya que el comportamento de este dispositivo es a veces, en apariencia, impredecible. El control de velocidad y dirección se efectúa mediante 2 salidas PWM de la Arduino, conectadas a un puente en “H” de 4 transistores NPN. Por útimo se colocó un relé funcionando a la par del electroimán, para desconectar el amplificador de audio de la alimentación mientras no se usa y de esta manera ahorrar energía.
  • 17. Control de volumen para el buzzer Otra salida PWM se utiliza para controlar el volumen del buzzer. Nuevamente, se trata de un diseño extremadamente sencillo. Una salida PWM conectada a un filtro RC para obtener una tensión de control; ésta se amplifica con un operacional CA3140 en configuración “seguidor de tensión” (salida conectada directamente a entrada inversora) y la salida de este operacional se aplica a un circuito VCA muy elemental. El VCA consiste en 2 transistores puestos en “serie”, como muestra la figura. Uno de ellos recibe la señal de audio y el otro la tensión de control (un VCA es esecialmente un “multiplicador” de señales).
  • 18. El “radar” Un módulo de gran elaboración, aunque en la práctica no resulta tan útil. Consiste en un medidor de distancia Sharp GP2D12, con salida analógica, que mide distancias entre 10 y 80cm basándose en el ángulo de reflexión de un haz IR, montado sobre una estructura giratoria con un encoder de 4 posiciones. La estructura giratoria consta de una caja de reducción extraida de un reloj electrónico de pared, con un motor DC en la base. El encoder consiste en una red de resistencias con 4 contactos puestos formando un cuadrado, sobre la superficie que recorre otro contacto acoplado con la pieza giratoria. Este contacto se dirige a una entrada analógica de la Arduino, proporcionando 4 voltajes fácilmente identificables, cada vez que la pieza se encuentra en una de las 4 posiciones buscadas (una especie de “servo casero”, la red de resistenicas sustituye al potenciómetro). Nuevamente es el mismo software de la Arduino el que está a cargo de manejar este dispositivo, como ocurre en casi todo el resto del proyecto. (Apenas el display LCD es el único periférico dotado de un procesador propio.)
  • 19. El display LCD La inclusión de este display LCD de 2 x 16 caracteres (cada carácter formado por una matriz de 7 x 5 puntos) permite desplegar información muy diversa, pero tiene el inconveniente de que sus dimensiones no están en relación con las del robot mismo; desde la distancia normal a la que suele estar el observador, no es posible leer los mensajes en él mostrados. El display utiliza un bus de datos paralelo de 8 bits, y algunas señales de control. Contiene un controlador, un chip KS0066, compatible con el HD44780, lo que significa que este display utiliza el protocolo estándar, clásico de los LCD de este tipo. Para comunicarnos con el display desde la Arduino, utilizamos esta vez un protocolo serial sincrónico, y con el comando “ShiftOut” escribimos los 8 bits en un “shift register”. En lugar de un auténtico shift register, utilizamos un 74LS374, óctuple latch, y conectamos los latchs en cadena, con lo que se obtiene exactamente el mismo resultado. También se puso un transistor para controlar la luz trasera, y un detalle interesante a este respecto, es que el pin que se usa para controlar dicha luz es el mismo que se usa para la señal “clock” del display. Esto es un ejemplo de la técnica de compartir pines llevada al extremo: la señal permanece en reposo tanto en “0” como en “1”, pero cuando es necesario escribir un dato en el display, la señal tiene que conmutar entre ambos estados y luego volver al que estaba. Junto al 74LS374 puede verse el HT640, usado en el trasmisor de RF, que toma el dato del mismo shift register que el display LCD.
  • 20. Trasmisor de RF de 430MHz Finalmente, el último dispositivo en integrarse fue este trasmisor de RF de 430MHz, que hace juego con un receptor de la misma frecuencia colocado en otro robot, permitiendo intercambiar información entre ambos. La comunicación es en una sola dirección (para la otra dirección utilizamos IR, simulando un control remoto) Estos módulos de RF son realmente muy limitados, su velocidad de transferencia de datos no llega a los 2Kb/s, carecen de electrónica de control alguna, es decir no hay control de flujo ni corrección de errores. Lo mejor, entonces, es usarlos en combinación con un par de integrados codificador / decodificador, como en nuestro caso que utilizamos el HT640, si bien la decodificación en el otro robot se hizo por software, usando la Arduino. El HT640 lee permanentemente un byte de la salida del 74LS374, nuestro “shift register”, lo codifica y lo trasmite indefinidamente a través del módulo RF. Obsérvese que de esta manera logramos introducir una nueva funcionalidad al robot, sin modificar prácticamente nada, tal como nos veníamos proponiendo desde el principio. El dato que se trasmite por RF puede escribirse en el 74LS374, sin modificar lo que muestra el display LCD; no obstante, una vez que lo hicimos, si quisiéramos modificar el estado de la luz trasera, por ejemplo, podríamos activar accidentalente el clock y en ese caso sí, el display recibiría un dato incorrecto. Este tipo de cosas son las que hay que tener en cuenta cuando se trabaja compartiendo el hardware de esta manera. A modo de antena, se utilizó un alambre de cobre de 16cm (1/4 de onda).
  • 22. movimientos simples velocidades &quot;atención obstáculo&quot; modos de zig-zag volumen profundidad en los zig-zag y modo automático encendido / apagado los detectores de obstáculo para hacer musiquita el tema del apagado de motores, modo &quot;pause&quot;, modo &quot;sleep&quot; modo aleatorio modo automático movimiento acelerado Apendices: Protocolo nec Data sheets del irm8510 Del ht640, de los módulos RF, gp2d12, 259, 374, 7447 , display LCD Circuitos varios Compartir pines mas a fondo Pwm en el atmega Mas fotos
  • 23. Mensajes de la cinta: 0 - mensaje de bienvenida 10-100 - velocidades 110 - detenido 120 - adelante 130 - atrás 140 - izquierda 150 - derecha 160 - obstáculo 170 - apagado 180 - encendido 190 - modo aleatorio 200 - zig-zag adelante 210 - zig-zag atrás 220 - zig-zag derecha 230 - zig-zag izquierda 240 - modo automático 250 - contacto 260 - sacándole viruta al piso