Where are they?

Cita

Evolution has no destination. Each time you push the “go” button, you end up someplace different. Start things over on Earth (or another Earth-like planet) and not only would there be different species with perceptions and intelligences that vary wildly from our own, the very chemistry of life would be altered as well!

That’s conjecture – but it’s pretty safe conjecture. To see why, let’s do a quick back-of-the-envelope calculation.

Among other things, our DNA contains instructions for building proteins out of sequences of amino acids. For simplicity, let’s assume that life always evolves that same basic molecular machinery. There are 500 or so known amino acids, of which life on Earth uses only 23. Sticking with our KISS (keep it simple, stupid) approach, let’s assume all life uses those same 23.

The average protein in an eukaryotic (nucleus-containing) cell on Earth is about 450 amino acids long. There are therefore 23^450 (=10^613) different proteins of that length that the machinery of our DNA might construct. That’s a huge number! Not surprisingly, terrestrial life has stumbled upon uses for only a small fraction of those possible proteins – about 10 million.

So now let’s take those 10^613 possible proteins and split them into planet-proportioned groups of 10 million each. With no overlap at all, there would be 10^606 of those piles! There are no more than about 10^23 habitable planets in the entire observable universe. You could spread those stacks of proteins over the planets in 10^583 similar universes without having to duplicate a single protein on any two planets!

The takeaway is this: The likelihood that any two life-bearing planets in the universe share even remotely compatible biochemistry is effectively zero.

 

Jeff Hester. Astronomy Magazine, September 2016

El Castillo en el Cielo

Aquí va el arreglo que preparéde “Llevándote” (Kimi wo nosete) de la película de animación “El Castillo en el Cielo” (Laputa, Castle in the Sky), de Hayao Miyazaki. La música es de Joe Hisaishi, y para este arreglo que he hecho para coro, chelo, flauta, guitarra y bajo me basé en el concierto que dio Joe Hisaishi en el Budokan:

La verdad es que podría mejorar la parte instrumental, pero por el momento lo dejo así.

Laputa Llevándote – Bajo eléctrico

Laputa Llevándote – BAJO

Laputa Llevándote – CONTRALTO

Laputa Llevándote – Flauta

Laputa Llevándote – Guitarra acústica

Laputa Llevándote – Partitura completa

Laputa Llevándote – SOPRANO, CONTRALTO, TENOR, BAJO

Laputa Llevándote – SOPRANO

Laputa Llevándote – TENOR

Laputa Llevándote – Violín 1

Laputa Llevándote – Violonchelo

Este es el vídeo del Sibelius:

Laputa Llevándote

Y estas las grabaciones para practicar cada voz:

Cumpleaños feliz

Aquí va el arreglo que he hecho de “Cumpleaños Feliz” para coro (SATB):

Cumpleaños feliz – Partitura completa

Y las grabaciones, para ensayar cada voz por separado (muy mal cantado, lo siento):

Soprano:

Contralto:

Tenor:

Bajo:

Todos:

On Structural Engineering

Cita

The welfare of the earth and its inhabitants is a defining theme for the 21st century. Structural engineering has a significant role to play as the world faces these challenges. In fulfilling this function, building engineers continue the age-old human endeavor to provide society with structures that protect, serve, and inspire mankind. From pioneering new systems for better buildings with economy, to ensuring the safety of human life from nature’s wrath, to stabilizing implausible forms to defy gravity and lateral loads, building engineers venture to create livable spaces from humaninity’s dreams and ideas. Building engineering requires a comprehensive understanding of building assembly and an appreciation of how forces are resisted within the structure and eventually by the earth.

 

Bungale S. Taranath, “Structural Analysis and Design of Tall Buildings. Steel and Composite Construction”. CRC Press, Boca Raton, 2012

On seismic design

Cita

On seismic design:

Although over the years, experience and research have diminished our uncertainties and concerns regarding the characteristics of earthquake motions and its manifestations, it is unlikely, though, that there will be such a change in the nature of knowledge to relieve us of the necessity of dealing openly with random variables. In a way, earthquake engineering is a parody of other branches of engineering. Earthquake effects on structures systematically bring out the mistakes made in design and construction, even the minutest mistakes. Add to this the undeniable dynamic nature of disturbances, the importance of soil-structure interaction and the extremely random nature of it all; it could be said that earthquake engineering is to the rest of the engineering disciplines what psychiatry is to other branches of medicine. This aspect of arthquake engineering makes it challenging and fascinating, and gives it an educational value beyond its inmediate objectives. If structural engineers are to acquire fruitful experience in a brief span of time, expose them to the concepts of earthquake engineering, even if their interest in earthquake-resistant design is indirect. Sooner or later, they will learn that the difficulties encountered in seismic design are technically intriguing and begin to exercise that nebulous trait called engineering judgment to make allowance for these unknown factors.

Bungale S. Taranath, “Structural Analysis and Design of Tall Buildings. Steel and Composite Construction”. CRC Press, 2012, Boca Raton, Florida.

Elon Musk digging tunnels to save the world’s congestion problem?

I don’t know if you follow Elon Musk (Tesla, SpaceX…) on Twitter. I do. A few weeks ago he twitted on his way to work -on a Tesla, I suppose- that he was exasperated with Los Angeles traffic, and wondered about boring a tunnel. A moment later he twitted again that he would do it.

It seems now that he’s taken seriously the idea, and this past weekend workers started excavating a test trench at SpaceX headquarters.

I’m somewhat confused about this: being Elon Musk the visionaire and entrepeneur he is in so many different areas (PayPal, Tesla, SpaceX, Hyperloop…) this shouldn’t surprise anyone. But this is civil engineering (tunnel boring) he’s talking now, and he even claims he wants to improve tunneling speed by 500 or even 1,000 percent! Although he did say: “We have no idea what we’re doing – I want to be clear about that” (!!!!???!!!)

What do you think? Is Elon Musk out of his depth this time? Will this new idea fail? Or if it works (I don’t know what innovative technology he wants to try out), will it work on all types of soils/rocks? Something deep in my cartesian/engineer mind tells me that it’s very difficult for someone with no previous (civil) engineering knowledge to suddenly come up with an idea that thousands of engineers and contractors all over the world are struggling with everyday. Or is it?

This is Elon Musk we’re talking about. They said the same things about him and the electric car or about launching rockets and landing them back again… And he proved them wrong. And what about the Hyperloop…? We’ll soon see.

Maybe he will fail in this new tunnel adventure, maybe he wont. But in any case this is exactly what the civil engineering world requires: out-of-the-(cartesian)-box thinking and people like Elon Musk with enough ingenuity -and money- to propose and experiment on new, world-changing ideas.

Let’s keep a close eye on Elon Musk’s latest idea, because it would indeed change our profession and the world!

More info:

Inside the ‘Tunnel’ Elon Musk Is Already Digging Under Los Angeles


https://www.wired.com/2017/01/elon-musks-plan-tunnel-la-misguided-nonsense/http://gizmodo.com/elon-musk-on-digging-big-ass-tunnel-we-have-no-idea-wh-1791803837

Cita de Charles Babbage

Cita

On two occasions I have been asked (by members of Parliament!), “Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out?” I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question.

Charles Babbage (1791-1871), diseñador de la máquina analítica, precursora del ordenador.

Inventors and Inventions, Volume 1. Marshall Cavendish, 2007

Manejar un motor stepper con un driver A4988 y Arduino

Voy a contar cómo manejar un motor a pasos (stepper) con Arduino a través de un driver A4988. En esta otra entrada ya expliqué cómo hacerlo con un controlador DRV8825, que es una versión mejorada del A4988 (admite microstepping has 1/32, frente al 1/16 del A4988, 45V frente a 35V, y 2.5A frente a 2A).

Características principales del driver A4988:

  • Para motores bipolares
  • Permite microstepping de hasta 1/16
  • 2A
  • Interfaz casi idéntica al DRV8825
  • 35 V máximo
  • Control de corriente máxima con un potenciómetro

El motor que voy a usar es un motor NEMA 17 JK42HS40-1704 13A, comprado aquí por 12.50 €, pero valdría cualquier motor bipolar de 4 cables.

Características:

  • Número de parte: JK42HS40-1704 13A
  • Tamaño de marco: NEMA17
  • Ángulo del paso: 1,8 grados
  • Voltaje: 3.4V
  • Corriente: 1,7 A/phase
  • Resistencia: 2,0 ohmios/fase
  • Inductancia: 3,0 mH/phase
  • Llevar a cabo el esfuerzo de torsión: 4000g-cm 58.30 OZ-IN
  • Inercia del rotor: 54 g-cm2
  • Esfuerzo de torsión de la muesca: 0,22 kilogramo-cm
  • Número de ventajas de alambre: 4
  • Peso: 0,24 kilogramos
  • Longitud: 40m m
  • Eje del motor: 5mm
  • Longitud del árbol delantero: 20 mm
  • Certificación: CE, ROHS, ISO9001

Siguiendo las instrucciones de la hoja de especificaciones de Pololu, voy a emplear el segundo modo de conexión (hay dos formas, empleo la segunda):

Empleo un Arduino Nano, pero valdría cualquier otro. Uso el pin 8 para la dirección y el 9 para el step. El esquema Fritzing sería así:

La conexión de los cables del motor al DRV8825 la hago así:

  • A1: negro
  • A2: verde
  • B1: rojo
  • B2: azul

Para no dañar el motor tenemos que regular inicialmente el potenciómetro a la mínima potencia, girando el potenciómetro en sentido antihorario hasta el final, y más adelante ajustarlo hasta la capacidad del motor. En este vídeo se explica cómo regular adecuadamente la intensidad.

Con el código siguiente el motor da una vuelta completa en una dirección, y luego cambia de dirección y da otra vuelta:

const int dirPin = 8;
const int stepPin = 9;
 
const int steps = 200;
int microPausa = 1000;
 
void setup() {
 pinMode(dirPin, OUTPUT);
 pinMode(stepPin, OUTPUT);
}
 
void loop() {
 digitalWrite(dirPin, HIGH);  // Establezco una dirección

 for (int x = 0; x < steps ; x++) {
   digitalWrite(stepPin, HIGH);
   delayMicroseconds(microPausa);
   digitalWrite(stepPin, LOW);
   delayMicroseconds(microPausa);
 }
 delay(1000);
 
 digitalWrite(dirPin, LOW);  // Cambio la dirección

 for (int x = 0; x < steps ; x++) {
   digitalWrite(stepPin, HIGH);
   delayMicroseconds(microPausa);
   digitalWrite(stepPin, LOW);
   delayMicroseconds(microPausa);
 }
 delay(1000);

}

Referencias

https://www.pololu.com/product/2133

Motores paso a paso con Arduino y driver A4988 o DRV8825

http://www.instructables.com/id/Drive-a-Stepper-Motor-with-an-Arduino-and-a-A4988-/

Manejar un motor stepper con un driver DRV8825 y Arduino

Voy a contar cómo manejar un motor a pasos (stepper) con Arduino a través de un controlador DRV8825. En esta otra entrada explico cómo hacerlo con una Raspberry Pi, de forma muy similar, y en esta hablo de varios motores y drivers.

0j42241200

Características principales del driver DRV8825:

  • Para motores bipolares
  • Permite microstepping de hasta 1/16
  • 1.5  por fase o 2.2A si se dispone de ventilación forzada de aire o disipadores
  • Interfaz casi idéntica al A4988
  • 45 V máximo
  • Control de corriente máxima con un potenciómetro

El motor que voy a usar es un motor NEMA 17 JK42HS40-1704 13A, comprado aquí por 12.50 €, pero valdría cualquier motor bipolar de 4 cables.

Características:

  • Número de parte: JK42HS40-1704 13A
  • Tamaño de marco: NEMA17
  • Ángulo del paso: 1,8 grados
  • Voltaje: 3.4V
  • Corriente: 1,7 A/fase
  • Resistencia: 2,0 ohmios/fase
  • Inductancia: 3,0 mH/phase
  • Llevar a cabo el esfuerzo de torsión: 4000g-cm 58.30 OZ-IN
  • Inercia del rotor: 54 g-cm2
  • Esfuerzo de torsión de la muesca: 0,22 kilogramo-cm
  • Número de ventajas de alambre: 4
  • Peso: 0,24 kilogramos
  • Longitud: 40m m
  • Eje del motor: 5mm
  • Longitud del árbol delantero: 20 mm
  • Certificación: CE, ROHS, ISO9001

Siguiendo las instrucciones de la hoja de especificaciones de Pololu, voy a emplear el segundo modo de conexión (hay dos formas, empleo la segunda):

Empleo un Arduino Nano, pero valdría cualquier otro. Uso el pin 8 para la dirección y el 9 para el step. El esquema Fritzing sería así (¡¡¡¡Falta añadir el condensador!!!!!):

La conexión de los cables del motor al DRV8825 la hago así:

  • A1: negro
  • A2: verde
  • B1: rojo
  • B2: azul

Para no dañar el motor tenemos que regular inicialmente el potenciómetro a la mínima potencia, girando el potenciómetro en sentido antihorario hasta el final, y más adelante ajustarlo hasta la capacidad del motor. En este vídeo se explica cómo regular adecuadamente la intensidad.

Mirando en la ficha de mi motor, la máxima corriente por fase es de 1.7 A/fase. Por encima de 1.5 A (y hasta 2.2A) el controlador DRV8825 debe tener ventilación forzada de aire o un disipador, así que le pego un disipador (me venía con el DRV8825).

Ahora tengo que ajustar la corriente del DRV8825 con el potenciómetro. Primero tengo que averiguar a cuánto he de limitar esa corriente. Para ello empleo la fórmula que viene en la hoja de especificaciones del dirver:

Current Limit = VREF × 2

 

Con el código siguiente el motor da una vuelta completa en una dirección, y luego cambia de dirección y da otra vuelta:

 

const int dirPin = 8;
const int stepPin = 9;
 
const int steps = 200;
int microPausa = 1000;
 
void setup() {
 pinMode(dirPin, OUTPUT);
 pinMode(stepPin, OUTPUT);
}
 
void loop() {
 digitalWrite(dirPin, HIGH);  // Establezco una dirección

 for (int x = 0; x < steps ; x++) {
   digitalWrite(stepPin, HIGH);
   delayMicroseconds(microPausa);
   digitalWrite(stepPin, LOW);
   delayMicroseconds(microPausa);
 }
 delay(1000);
 
 digitalWrite(dirPin, LOW);  // Cambio la dirección

 for (int x = 0; x < steps ; x++) {
   digitalWrite(stepPin, HIGH);
   delayMicroseconds(microPausa);
   digitalWrite(stepPin, LOW);
   delayMicroseconds(microPausa);
 }
 delay(1000);

}

 

 

Referencias

https://www.pololu.com/product/2133

Controlador de motor a pasos DRV8825

Motores paso a paso con Arduino y driver A4988 o DRV8825

https://forum.pololu.com/t/drv-8825-stepper-motor-steps-and-delay-between-pulses/7530

Acceder a la consola de una Raspberry Pi (Zero) por UART con un adaptador USB PL2303

La Pi Zero es una maravilla, si no fuera por lo complicado que es acceder a su consola, al tener un único puerto USB y no tener ni WiFi integrado ni una conexión de red: hace falta conectarse con un teclado y a una pantalla a través de HDMI, o a través de un hub USB, más una tarjeta WiFi USB, etc.

Una forma más sencilla de poder acceder a la consola de la Raspberry Pi es a través de UART, con un cable específico USB, o con un adaptador USB PL2303. Esto es válido no solo para la Raspberry Pi Zero, sino para todas las Raspberrys.

Adaptador USB – TTL PL2303 (vista delantera)

Adaptador USB – TTL PL2303 (vista trasera)

Lo primero es activar la comunicación en serie en la Raspberry Pi. Esto lo podemos hacer con sudo raspi-config
y después en Advanced Options – Serial decimos sí a permitir hacer login por serie. Otra alternativa es editar el ficher /boot/config.txt y añadir al final enable_uart=1. En cualquier caso, es necesario reiniciar tras hacer el cambio.

Ahora es necesario instalar los drivers en nuestro ordenador para que reconozca el PL2303. Para ello nos descargamos de la página oficial el driver correspondiente a nuestro sistema operativo (para Mac, para Windows, para Linux no hace falta, viene por defecto). Tras instalarlo tenemos que reiniciar el ordenador.

Como en Windows me ha dado problemas (no reconoce el módulo), al final lo he probado desde mi Mac y ha funcionado. He hecho lo siguiente.

 

Tras instalar el driver del enlace anterior y reiniciar, he conectado el adaptador (a su vez conectado a la Raspberry Pi) de la siguiente forma:

Ojo, que el TXD de la Raspberry Pi se conecta al RXD del PL2303 y viceversa.

Esquema conexión PL2303 a Raspberry Pi Zero

Tras comprobar que todo estaba bien conectado, he abierto una consola en mi Mac y he escrito el siguiente comando: screen /dev/cu.usbserial 115200. ¡Y ya está! Tras hacer eso y dar al enter, ya nos pide el usuario y contraseña y ya estamos conectados a la Raspberry Pi.

(Ojo, que a lo mejor en otros casos el dispositivo podrá tener otro nombre; entonces bastará con teclear screen /dev/cu. y darle al TAB para ver los que hay, y escogemos.)