Mostrando entradas con la etiqueta Tecnología. Mostrar todas las entradas
Mostrando entradas con la etiqueta Tecnología. Mostrar todas las entradas

jueves, 29 de noviembre de 2012

Enseñando la electricidad a los niños

Dentro de la semana de la ciencia, le pidieron a mi hijo mayor, que mantiene un blog llamado Ciencia Inquieta y colabora con el grupo Hablando de Ciencia, que colaborara con el día de la ciencia que se desarrollaba en el Jardín Botánico de Valencia, dependiente de la Universitat de Valencia, por lo que Hablando de Ciencia desarrolló una serie de actividades, enfocadas tanto a mayores como a niños. A mi me pidió que le ayudara a montar una de las mesas de actividades para niños, aunque al final me dejó solo en ella mientras coordinaba las otras actividades. 

En esa mesa se enseñó a los niños como hacer una batería con limones, y otra con agua salada capaz de encender una bombilla, explicándoles como funciona, enlazando con la producción de la electricidad, de como se produce todavía mucha electricidad quemando combustibles fósiles, que producen CO2 que es uno de los responsables del efecto invernadero, que nos lleva al calentamiento global, para lo que había un experimento con dos matraces, uno lleno de aire y otro de CO2 para ver como uno se enfriaba mas rápido que el otros.

Al final llegamos a las 9, ayudamos a montar algunas cosas, luego monté las pilas, a las 10 llegó el primer niño, y hasta las dos y media estuve repitiendo muchas veces lo mismo, pero siempre es bonito hacer cosas con niños, yo disfrute bastante, y espero que ellos también.

La carpa donde desarrollé la actividad, como siempre el soldador en la mesa, aunque al final no lo utilicé, pensaba soldar los cables a los elementos metálicos, pero lo hice sin soldar nada, para que los niños vieran que lo pueden hacer en casa sin problemas.

A la izquierda los dos matraces, al final fueron demasiadas horas por lo que no pudieron verlo bien, a media mañana ya estaban fríos los dos.
Una batería de este tipo es un trozo de cobre y un trozo de zinc (cualquier cosa de hierro se recubre de zinc para evitar la oxidación, un clip, un tonillo, un clavo, arandelas, soporte de pared) o de aluminio (aunque es menos eficiente) bañados por un electrolito (ácido, base o disolución de sales), esto produce una celda de una pila, igual a la que montó Volta en 1800.

Con el limón es muy sencillo, se pincha un cable de cobre y un clip, de forma que no se toquen internamente, y con el voltímetro se ve que hay unos 0'4voltios. Se hace igual con limón o cebolla que son ácidos, o con patata que tienen muchas sales.

Los tres recipientes (que eran un poco grandes, no hace falta mas que tres tazas) son tres pilas conectadas en serie, unas monedas de céntimos proporcionan el cobre, unas arandelas zincadas el zinc, el electrolito es agua del grifo con sal disuelta, una cucharada grande, y ya proporciona unos 0'7voltios, uniendo el zinc de una con el cobre de otra mediante un hilo, las conectamos en serie, sumándose el voltaje, entre 3 proporcionan unos 2voltios, suficiente para encender un led.
El led se enciende sin problemas, aunque este necesita casi 2 voltios, este es de alta luminosidad rojo, para que se vea mejor con la luz ambiente, ya que estas las baterías proporcionan suficiente corriente para encenderlo mucho tiempo.

Cada led necesita un voltaje y amperaje diferente, por lo que podéis calcular cuantas celdas salinas necesitáis:
  • Con 20mA lucen los diodos rojos normales que van a 1'7 voltios, los rojos de alta luminosidad de 1'9 voltios, los naranjas y amarillos que funcionan a 2 voltios, y los verdes que trabajan a 2'1 voltios.
  • Con 12mA lucen los diodos azules y los de alta luminosidad blancos y verdes, que trabajan a 3'4 voltios.
  • Con 10mA lucen los diodos de alta luminosidad azules que trabajan a 4'6 voltios



Explicando con un led en la mano

 Explicando como hacer la batería con un limón

lunes, 27 de agosto de 2012

Memorias de núcleos magnéticos

Indice de entradas sobre Historia de la Informática

Corregido el 28/02/2013

Los primeros ordenadores usaban memorias de propagación o de retardo, como las de mercurio o los tubos Williams, había otras como las que usaban un alambre al que se hace vibrar, según la longitud tardaba más o menos en detectarse al final del alambre la vibración. Pero todas estas memorias eran delicadas, las de propagación dependían mucho de la dilatación del medio, por lo que era importante mantener una temperatura constante. Los tubos Williams eran susceptibles a interferencias, y tendían a de-sincronizarse tras un tiempo funcionando, por lo que se buscó un nuevo sistema, y el mejor fueron las memorias de ferritas, ideadas por Jay Forrester (más conocido como padre de la Dinámica de Sistemas), al que le costó 7 años convencer a las empresas de su uso, pero que luego fueron adoptadas de forma muy rápida (y sin pagar derechos de patente, por lo que Jay pasó otros 7 años litigando), y fueron usadas en todos los ordenadores hasta el desarrollo de las memorias en chip, incluyendo las primeras calculadoras electrónicas de sobremesa.

Si por un hilo circula una corriente eléctrica, se genera un campo magnético que lo rodea y cuya dirección depende del sentido de la corriente, por lo que es controlable. Si agarramos con la mano derecha el hilo (aunque seamos zurdos), extendiendo el pulgar en la dirección de la corriente, los otros dedos indican la dirección del campo magnético que envuelve al hilo (regla de la mano derecha).

Si arroyamos un hilo sobre un material ferroso, como un clavo, se concentra el campo magnético imantando el clavo y formando un electroimán. Al contrario, un anillo ferroso puede imantarse en uno u otro sentido, dependiendo del sentido de la corriente de un hilo que lo atraviese, solo es necesario enviar una corriente de un determinado valor, y el sentido en que recorre la corriente el anillo cambia. Además, podemos detectar el sentido del campo magnético del anillo, viendo cómo afecta a una corriente que circule por el hilo.

Bien, ya tenemos la posibilidad de almacenar un solo bit, usando un anillo y un hilo. Pero si necesitamos muchos bits, no podemos usar un hilo por cada uno, si queremos almacenar 1K byte, dispondremos de 8.192 bits, y no es practico usar 8.192 hilos, por lo que se recurrió a la solución de establecerlos en filas y columnas, poniendo un anillo en cada intersección. Si por cada hilo se envía la mitad de la corriente necesaria para hacer cambiar el sentido de magnetización del anillo, solo afectará al anillo situado en la intersección de la fila y columna, cambiando el estado de ese anillo pero no los de alrededor. Esta disposición permite ahorrar muchos hilos, si usamos 8 de columna y 1.024 de fila podemos manejar 1K, y hemos reducido de 8.192 a 1.032 los hilos necesarios. Por razones de interferencia los anillos se disponían alternativamente a izquierdas o derechas, como se aprecia en la figura de ejemplo.

Para leer un byte, simplemente se envía la señal de cambio de valor por el hilo de fila, para que cambien a cero todos los anillos de la fila, si el anillo está a cero no pasa nada, pero si está a uno, el cambio de sentido del campo magnético induce una corriente en el hilo de columna, que es detectada. De esta forma se puede leer un byte completo cada vez, ya que no es práctico leer bit a bit. Como hemos puestos a cero todos los anillos de la fila, la lectura es destructiva, por lo que es necesario nada mas leer un dato, volverlo a escribir en la memoria, por lo que al contrario de las memorias modernas, eran más lentas en lectura que en escritura.

Para mejorar la detección de los valores, no se usaba el mismo hilo para lectura y escritura, por lo que habitualmente las ferritas estaban atravesados por tres hilos, el de columnas era siempre de selección, y disponían de un hilo de filas para lectura y otro para escritura.



Como hemos visto, hacían falta muchos hilos para una memoria de 1K, por lo que para optimizar el diseño en lugar de 1024x8 se empleaban sistemas más cuadrados (también hay que tener en cuente que en esa época las palabras no eran todavía de 8 bits, lo normal eran 11, 13, 21 y hasta 35 bits por byte). Aun así eran muchos hilos, por lo que el diseño se complicó, pasando de una disposición 2D, a una denominada 3D, en la que se disponían las ferritas en capas, pudiendo tener varias capas de ferritas una junto a la otra, todas atravesadas por los mismos hilos de fila y columna, por lo que fue necesario añadir un cuarto hilo, el de inhibición, que permitía seleccionar que plano de ferritas deseábamos usar, para ello se enviaba a una señal de grabación pero negativa por ese hilo, de forma que al cruzarse en los anillos no deseados se anulasen la señal de lectura/escritura con la de inhibición. Por razones de hilado este hilo se tejía en diagonal, formando el habitual núcleo de 4 hilos, que es el logotipo de la informática en España, ya que ningún elemento ha revolucionado tanto la informática y la ha hecho prosperar más que las introducción de estas memorias, que fueron un avance fundamental.





Las primeras unidades usaban anillos de 8mm de diámetro, pero conforme más pequeño fueran los anillos, menos energía hacía falta para manejarlos y menos se interferían entre sí, por lo que podían juntarse más, y se conseguía ampliar la capacidad de las memorias y aumentar su velocidad, lo que hizo que las últimas memorias llegaran a tener 0'2 mm de diámetro, apenas visibles por el ojo.

En esta foto del proyecto Apolo de la NASA hay unas operarias "tejiendo" las ferritas, usando un microscopio para ello:


Una explicación mas detallada la podeis ver aquí

sábado, 14 de julio de 2012

Mini simulador de Z1/Z3



Como prometí en la entrada sobre la Z1, he desarrollado un mini emulador de la Z1 y de la Z3. Este no pretende ser un emulador realista, solo se trata de que os hagáis una idea de lo que podía hacer la máquina, he intentado ser solo realista en lo que podía ejecutar la máquina y el tiempo que le costaba hacerlo.

La máquina operaba en punto flotante, pero por simplificar he usado coja fija con 4 posiciones decimales. He reducido las posiciones de memoria de 40 a 10, para probar no hacen falta mas, he puesto un "perforador" de cinta sencillo, y por no liar demasiado el tema, he añadido un visualizador del acumulador, del que no disponía la máquina real.

La Z1 podía ejecutar las 4 operaciones, podía leer una posición de memoria y guardarla, yo he simplificado estas dos operaciones con el acumulador. Además a la Z3 se le añadió la posibilidad de calcular raíces cuadradas.

La simulación es realista en cuanto a tiempos, pero como las operaciones son lentas, he añadido la posibilidad de aumentar la velocidad. Al final del programa indicará siempre el tiempo real en segundos que hubiese tardado la máquina, aunque no es exacto al 100% por no haber simulado el hardware real, he usado los tiempos medios de ejecución de las instrucciones.

Para ejecutarla debéis usar este enlace. El simulador está echo en HTML y Javascript únicamente, por lo que podéis ver el código completo en el fuente de la página. No es nada del otro mundo, pero si tenéis curiosidad lo miráis, y si encontráis problemas o que el código es mejorable, estoy abierto a sugerencias.

Solo se puede interactuar con la unidad de entrada. A la izquierda está la perforadora de cinta de papel, en ella elegimos una operación y con que dirección de memoria se realiza, al darle a "Añadir" la incluye debajo en la cinta. También podemos cambiar al cinta por una nueva y perforarla, usando "Limpiar".

A la derecha está la unidad de entrada a la memoria. Elegimos la posición de memoria e introducimos el valor, al darle a "Guardar" almacena el valor en la posición de memoria indicada. Al darle a "Borrar" inicializa la memoria de la máquina.

Debajo está la unidad de proceso, a la izquierda el lector de la cinta, con las instrucciones que hemos ido añadiendo. A la derecha la memoria. En el centro vemos el acumulador de la máquina, los mandos de velocidad, el indicador del tiempo aproximado que hubiera tardado en ejecutar el programa en la cinta la máquina real, y el botón de "ejecución".

Conforme la máquina ejecuta las órdenes, se indica en la cinta por donde va el programa, y los valores del acumulador, de la memoria y el tiempo se van actualizando conforme termina la operación en curso.

Espero que sirve de idea de que esto tan super sencillo fue el primer paso hacia la computación moderna.

Y para los que tengan interés mas técnico, deciros que la Z1 evidentemente no es una máquina de Turing completa, al carecer de instrucciones de salto, pero si es un computador limitadamente programable sin alterar sus circuitos, lo que lo convierte en el primer computador de la historia.

miércoles, 4 de julio de 2012

Historia de la informática: Memorias de línea de retardo



Allá por el año 1980 yo empecé a estudiar Industriales en la Politécnica de Valencia, donde por desgracia descubrí el centro de cálculo, y fue mi perdición definitiva, si ya tenía ganas de trabajar en informática, eso fue lo que acabó con industriales. La pena es que la ingeniería informática no empezó en Valencia hasta unos cuantos años después.

En el centro de cálculo había acceso a la sala de terminales, conectados a un ordenador  Univac 1100/70, una maravilla de la época, con 4 procesadores de instrucciones y cuatro de entrada/salida, con memoria de núcleo de ferritas, varias unidades de discos, varias unidades de cinta, lector de tarjetas, dos impresoras, y arrancaba usando un disquete de 8".

Esto me hace pensar en modelos mas antiguos, los primeros ordenadores tenían muy poca memoria, ya que montar un bit con lámparas era costoso y caro, y hasta que surgieron las memorias de núcleo de ferrita, ¿que se usaba?, pues memorias de línea de retardo o de propagación. Están basadas en una necesidad de los radares de la época, para reducir el número de falsos ecos, lo que se hacía era comparar la señal actual con la anterior, solo si el eco estaba en ambas se mostraba en la pantalla, si no eran iguales no. Esto representa tener que guardarnos la información, en una época en que no había mas que medios analógicos, y guardar una imagen era impensable, la solución fueron las memorias de retardo, se envía la información a la memoria, esta la transmite de un lugar a otro, y ese tiempo de transmisión es lo que necesitamos, si sincronizamos bien el sistema, la señal actual y la del barrido anterior llegan a la vez al sistema, se comparan y se procesan.

El concepto es sencillo, por un tubo inclinado meto una bola, y mientras cae por el tubo, hago algunas cosas, luego recojo la bola cuando sale, la miro y la vuelvo a meter. Ese juego continuo me permite almacenar cosas, puedo lanzar una bola o lanzar dos juntas, lanzar una roja o una verde, lo que representaría un SI o un NO, un cero o un uno. El acceso no es muy rápido, pues tengo que esperar a que salga la bola para conocer el resultado, pero como soy un aparato lento, así me da tiempo de hacer más cosas entre medias.

Este concepto se aplicó de varias maneras, la primera fue en el Univac I, usaba una memoria de mercurio, un tubo lleno a la mitad con mercurio, mediante una aguja se toca la superficie. Esto produce una onda que recorre el tubo, y aparece en el otro extremo, donde puedo detectarla. Si quiero almacenar un cero no envío la onda, si quiero almacenar un uno la envío. El receptor debe volver a introducir el valor en el tubo para mantener el valor, o cambiarlo si se desea. Hace falta llevar la cuenta del tiempo para saber que bit de una palabra se está recibiendo en cada momento. El sistema usaba 32 tubos, cada uno podía almacenar una palabra de 35 bits, mas un bit de inicio/parada, para sincronizar los temporizadores. En total el sistema disponía de 32x35=1120 bits, lo que representa 140 bytes, o casi 0'14Kb.

Memoria de mercurio de un Univac I

El principal problema es que la velocidad de propagación varía en función de la temperatura, por lo que el sistema se debía mantener a 40º para su correcto funcionamiento, al contrario que el resto de la circuitería que debía refrigerarse.

Otra forma de usar las líneas de retardo se empleó en la Manchester Mark I, que posteriormente se vendieron comercialmente como las Ferranti Mark I (Ferranti es que fabricaba las ULA de los spectrum), usando tubos Williams. El concepto es sencillo, un tubo de televisión (o de radar en aquella época) está recubierto de fósforo, que al recibir el electrón se excita (no seáis mal pensados/pensadas), emite luz que persiste unos milisegundos, lo suficiente para que una pantalla completa se haya presentado. Usando un tubo con fósforo de alta persistencia, lo que se hacía era pintar en la pantalla puntos y rallas, un punto era un cero y una ralla un uno.

Programa simulando la memoria de un Mark I

Sobre la pantalla se ubicaba un detector de luz, de forma que consultándolo se sabía el valor de esa posición de memoria. Cuando el haz de electrones debía repintar la pantalla, leía o un nuevo dato, o si no lo que nos daba el detector, refrescando continuamente la imagen. Este tipo de memorias es más rápido en lectura que la de mercurio, pero graba a la misma velocidad.

Este tipo de memoria era mas "temperamental", normalmente había que ajustarla a menudo para que funcionase bien, pero era mas barata y menos problemática que la de mercurio. El ordenador usaba pantallas de memorias mas pequeñas para sus registros (como el acumulador de 80 bits, o los registros de 40 bits) y pantallas mas grandes con la memoria principal, de una página de 64 líneas cada una. Además usaba un tambor magnético para almacenar más páginas de memoria, lo que le permitía ejecutar programas complejos.

Y entre otras cosas, podemos ver aquí el concepto de "página de memoria", no tan moderno como parece, los pioneros sentaron las bases de todo.