sábado, 21 de septiembre de 2013

Impresora 3D, Parte II: Microcontrolador

En la primera parte presentamos a estos dispositivos. Ahora nos dedicaremos ha describirlo en detalle. Es importante dado que se les puede utilizar en muchísimas aplicaciones,y que la impresión 3D es solo una más de tantas.


¿Pero qué es un microcontrolador?

Un procesador digital con periféricos integrados o como lo dice la Wikipedia:  Un circuito integrado programable, capaz de ejecutar las órdenes grabadas en su memoria. Está compuesto de varios bloques funcionales, los cuales cumplen una tarea específica. Un microcontrolador incluye en su interior las tres principales unidades funcionales de una computadora: unidad central de procesamiento, memoria y periféricos de entrada/salida.
Desmenuzando el concepto encontramos palabras como procesador o unidad central de proceso, memoria y periféricos de entrada/salida.

Procesador: Es la cabeza del microcontrolador, lee instruciones de la memoria, las ejecuta y el resultado lo vuelve a guardar en memoria y/o lo envía a los periféricos. 
En comparación a los procesadores usados en computadoras son mucho más "lentos". Además se dedican a una tarea específica. Lejos de ser desventajas, implica menor consumo de energía y menor costo. 

Memoria: Ya que el propósito de un procesador es seguir instrucciones, estas se almacenan en una memoria. Estas instrucciones es lo que llamamos programa al ejecutarse en un orden pre-establecido. Para obtener dicho orden requiere de un contador de programa y una pila (fila) para este contador. La memoria que almacena estas instrucciones es de solo lectura y de allí su nombre en inglés ROM (Read Only Memory).
  
Dentro de la memoria además se encuentran registros reservados para el funcionamiento correcto del microcontrolador y variables de usuario, datos que varían durante la ejecución del programa. La memoria que almacena esto es más grande y se necesita de acceso aleatorio, de alli sun nombre en inglés RAM (Random Access Memory).

Periféricos de Entrada/Salida: Un sistema digital que no posee interacción con el mundo físico no sirve de mucho. Está es la principal ventaja de los microcontroladores, poseen en un solo chip todo lo necesario para interactuar con el mundo físico y con otros sistemas digitales. Más que los periféricos como tal, que pueden ser una pantalla, un teclado, un motor, un micrófono, un parlante, etc, el microcontrolador posee los puertos (físicamente las patitas o pines) para conectarlos y lo necesario para comunicarse mediante estándares como I2C, SPI, UART, USB incluso ETHERNET. 

Ejemplo de comunicaciones SPI, el Master es una computadora básica y utiliza un microcontrolador en una placa Arduino para controlar la Pantalla LCD

¿Como funciona un microcontrolador?

El microcontrolador esta diseñado para dedicarse a una tarea específica. Esta tarea es definida por el programa, el cual puede ser escrito en diversos lenguajes de programación: ensamblador(el cual es distinto según el fabricante del microcontrolador, pero permite usarlo completamente), en C (el más usado y cumple un estándar, por lo que pasar el programa de un microcontrolador a otro, ya sea de distinto modelo o marca, es más fácil.) o en Basic (el más sencillo pero puede no estar disponible para algunos microcontroladores). 

Una vez que esta listo el programa debe ser grabado en el microcontrolador. Esto se puede hacer mediante un grabador dedicado para el microcontrolador según el fabricante o cargando previamente un programa llamado "bootloader", mediante dicho grabador, para luego poder modificar el programa mediante conexión USB. Tal vez no hace falta mencionar que hasta este punto una computadora es imprescindible para el proceso, de aquí en adelante la necesidad de un computador dependerá del uso que le demos al microcontrolador.

Una vez con el programa cargado en el microcontrolador, debemos energizarlo y darle una señal de reloj para que el programa inicie a ejecutarse, además conectarle a los periféricos con los que se va a trabajar.
Esto podemos realizarlo ya sea en un protoboard o en una placa impresa previamente realizada.
Como es más seguro hacerlo en una placa impresa pero también podemos desear grabarle otro programa, o de plano utilizar el microcontrolador en otra tarea entonces es muy útil hacer una placa llamada Entrenadora, con conexiones para todos los puertos. 
Entrenadora para un PIC18F2550
(Queda pendiente subir el diseño de una entrenadora y un tutorial para crear tus propias placas impresas, puedes adelantarte buscando en Internet.
Esto hasta encontrar un programa libre para realizar placas y la mejor opción de microcontrolador. El PIC16F887 de Microchip es en el cual esta desarrollado actualmente la impresora.
Como se ve en las imagen anterior el PIC18F2550/4550, también de Microchip, o en la imagen siguiente una placa Arduino traen directamente conexión USB, pero Arduino no es de Microchip sino de Atmel*.
Tal como se comenta antes, pasar el programa escrito en C a cualquier microcontrolador no representa dificultad mayor, sin embargo el compilador [que es libre en ambos casos*] y el hardware necesario para grabar el microcontrolador son totalmente distintos.)



<Publicidad>Tal vez hoy en día la placa entrenador más famosa es Arduino, que la pueden comprar hecha, además trae el microcontrolador ya cargado con el bootloader y el software necesario para escribir el programa.</Publicidad>
Placa Arduino UNO

Y eso es todo.

Bueno no todo, si no sabes programar o si no tienes un poco de conocimientos en electrónica, pero para eso esta Internet. 
Actualmente es relativamente fácil aprender la programación y electrónica necesarias para un proyecto específico con un poco de esfuerzo y dedicación. 
En el resto de artículos nos dedicaremos a estos dos temas en referencia a la Impresión 3D. Además se tratará de conceptos de código G y modelado 3D, también necesarios para la impresión 3D.



*Conseguir microcontroladores de Atmel en mi ciudad "Cuenca, Ecuador" no es fácil.
**Arduino es un proyecto de hardware y software libre. Software de compilación para Microchip lo proporciona la misma empresa pero es más largo el desarrollo en comparación de realizarlo con software de pago.

jueves, 19 de septiembre de 2013

Modelos Matemáticos III: Vectores y Matrices

Día a día esperamos tener en orden las cosas. La naturaleza así mismo tiene un orden, y los podemos representar matemáticamente, tanto los procesos humanos como los naturales, mediante lo que se llaman arreglos o arrays (en inglés). Una propiedad importante de los arreglos es que poseen dimensiones, al igual que se entiende el mundo como lo vemos con nuestros ojos, de tres dimensiones. 
Además pueden ser de dimensión cero, es decir un número normal, llamado también escalar, se puede representar como un punto gráficamente.
De una dimensión, varios números formando una fila o una columna, llamado vector, se representa con una línea y además se le puede dar sentido y dirección. Ejemplo: $ \left[ 2\quad 3 \right] $ es un vector de dos dimensiones. Ojo con eso el vector es una array de una dimensión, pero a su vez puede contener otra cantidad de dimensiones, un vector de una dimensión también es un escalar.

De dos dimensiones, un conjunto de números ordenados en filas y columnas, llamado matriz, se representa como un plano. Ejemplo: $\begin{bmatrix} 7 & 8 & 9 \\ 4 & 5 & 6 \\ 1 & 2 & 3 \end{bmatrix}$, la disposición acostumbrada en un teclado numérico  de tres filas y tres columnas. Al igual que los vectores, la matriz es un array de dos dimensiones, sin embargo puede contener una cantidad cualquiera de filas y columnas.

De tres dimensiones, un conjunto de matrices,se representa como un espacio tal como ven nuestros ojos. Así mismo pueden ser arreglos de más dimensiones, por ejemplo la realidad según la relatividad general es de 4 dimensiones, y la teoría de cuerdas propone una realidad de 11 dimensiones.

Estos últimos ejemplos demuestran la importancia de los arreglos, pues logran describir la base sobre la cual se sostienen los demás modelos matemáticos. La mayoría de cursos formales de física inician con una introducción de calculo vectorial, pues resulta sumamente útil el concepto de vector para explicar matemáticamente un fenómeno. En el artículo anterior se habló de la velocidad en un vector de una sola dimensión, un escalar, sin embargo para describir mejor el fenómeno se debería usar $ \frac { d\overrightarrow { posición }  }{ dt } =\frac { d\overrightarrow { x }  }{ dt } +\frac { d\overrightarrow { y }  }{ dt } +\frac { d\overrightarrow { z }  }{ dt } $, que indica el movimiento en las tres dimensiones del espacio, tal como perciben nuestros ojos.

Otra cualidad de gran importancia de los arreglos es su uso en computo de información, pues el hecho de tener datos ordenados, proporciona una gran ventaja para la elaboración de algoritmos. Es por esto que a un nivel básico se puede entender la memoria de un computador como un arreglo, no de números simples, sino de bytes; que a la vez es un arreglo de 8 bits, unidades básicas de información,que pueden ser verdadero o falso.
Otro uso en la informática es el despliegue de datos visualmente. Las pantallas modernas, díganse planas, son una matriz, y cada elemento es un píxel, cada píxel a su vez tiene tres partes, una de color rojo, una verde y una azul. Colocando los valores adecuados de intensidad para cada color del píxel se pueden conseguir los mas variados colores. Colocando en cierto orden los píxeles de un color dado se forman figuras, letras, imágenes, etc.
Una cámara fotográfica digital así mismo tiene sensores cuyas celdas se encuentran colocadas en forma matricial, según la intensidad de la luz que llega a cada celda se puede formar la imagen.
Matriz correspondiente a una celda de un sensor ccd usado en la cámaras digitales.

La asignatura de la Matemática que estudia los arreglos se llama Álgebra Lineal, sin embargo aplicaciones no lineales han permitido el desarrollo de una nueva rama llamada Cálculo Tensorial.

Al hablar de digital, hablamos de cantidades discretas, a pasos determinados, ya sea el bit que solo puede ser 1 ó 0, o ya sea refiriéndonos al tiempo, ya que el mundo no es digital y para transformarlo como tal se necesita tiempo. Al hablar en "digital":  una línea continua como de la geometría clásica,de puntos infinitos,  pasa a ser un vector con una cantidad finita de elementos. 
La transformación de la línea al vector se pude realizar mediante muestreo, es decir tomando solo ciertos puntos de dicha linea. La forma más sencilla es hacerlo cada cierto tiempo determinado, por ejemplo cada 0,01 segundos, es por eso que se dice que el tiempo también se vuelve discreto.
Discretización de una señal.

La línea verde que son mediciones reales, se convierten en un vector que toma como elementos cada uno de los datos, tomados en los tiempos determinados por la líneas naranjas.
 El vector Dato permite trabajar con dichos valores en una computadora o cualquier sistema digital, realizando cualquier operación. Para poder utilizar la línea verde del gráfico anterior, en un equipo electrónico, se necesita un equipo diseñado particular y específicamente para la operación requerida.

En fin, sin el concepto matemático de arreglo nos es imposible dale un orden al mundo físico, ya sea en la forma que perciben nuestros sentidos o en la forma que hemos desarrollado de procesarlo y sacarle mayor provecho mediante digitalización.

Son sin duda, dado su capacidad de organizar, los arreglos lo que nos permite entrar a la era conocida como de la Información. Pues ninguna información es útil si no puede localizarse y relacionarse con otras de temática semejante. 
Como dato final y curioso, lo que acabas de leer esta almacenado en vectores de bytes, que con un estándar conocido como ASCII  relaciona cada byte con un carácter de texto. Lees gracias también a los píxeles de tu pantalla, que llegan hasta tus ojos gracias a la luz, que sera uno de los temas a tratar en el próximo artículo. Porque todos estamos contentos con los vectores físicos para explicar fenómenos pero nos falta conocer (modelar), que produce y que actúa en tales fenómenos. Además, porque el siguiente artículo casi solo trata de física, aprovecharemos para crear un enlace a otra asignatura matemática que se emplea para modelar todo. Quizá no me crees, pero con eso puedo apostar.  

    

sábado, 7 de septiembre de 2013

Impresora 3D: Parte I; Introducción

Una impresora 3D básicamente es un mecanismo que da forma en la vida real a objetos modelados por computadora.
La impresora que construimos (está en construcción), para realizar su objetivo tiene un extrusor, el cual calienta el material con el que se imprime y lo deposita como un filamento. El extrusor es movido en las tres dimensiones de largo, ancho y altura a través del giro de varillas roscadas acopladas a motores de pasos.
¿Cómo conseguir la impresión de la figura deseada? Fácil, moviendo los pasos necesarios de cada motor para alcanzar la posición indicada, soltar un poco de material y repetir este proceso en cada punto de la figura.

¿Cómo mover los pasos necesarios de cada motor? Pues mediante un simple cálculo y una regla de tres.

Finalmente
Para indicar al motor que se mueva el número de pasos calculado se le debe enviar una orden, indicando la dirección y otra que se repite tantas veces como pasos tiene que dar el motor. El motor en sí necesita de una secuencia correcta, la cual es generada por el microcontrolador, para que el movimiento sea en orden.
Estas secuencias pueden ser las siguientes (video borroso, pero se entiende):
 
Ahora explicaré unos breves conceptos de electrónica y microcontroladores para los que no conocen del tema.
La electrónica digital basa su operación en el concepto de estados binarios, es decir se puede estar encendido o apagado. Por general, y debido a que todo se modela matemáticamente es conveniente colocar el estado de encendido como un 1 y el estado de apagado como 0. A la unidad que posee esta característica de estar en uno u otro estado se le llama bit. El microcontrolador que usamos, el PIC 16F887, procesa datos de 8 bits, que van desde el 00000000 hasta el 11111111, pasando por el 00000001, 00000010, etc. Que representan los números en base decimal del 0 al 255.

Los datos binarios al igual que sus similares decimales se pueden sumar, restar, multiplicar y dividir, pero además se pueden realizar operaciones lógicas, es más el microcontrolador en sí mismo esta constituido de compuertas lógicas, las cuales están hechas a su vez de transistores.

A los microcontroladores actualmente se les encuentra en muchos aparatos eléctricos pues su capacidad de ser programados les permite cumplir una inmensa cantidad de tareas, ya sea una secuencia de luces, reproducción de audio y video o una incontable lista de actividades posibles de realizar con un poco de imaginación y conocimiento.  En el próximo artículo se contara más sobre estos dispositivos que marcan sin duda el salto al mundo digital.