Transmitir información usando el mando de un coche teledirigido

Hoy vamos a ver una introducción a la transmisión digital de señales. Veremos los conceptos básicos y haremos una pequeña práctica con los materiales que tenemos a mano. Caracterizaremos el sistema y programaremos un par de PICs para que hagan las funciones de transmisor y receptor.

Lo primero es un transmisor y un receptor. Lo tenemos, vamos a usar el transmisor y el receptor de un coche teledirigido. El circuito receptor no está pensado para esto y no trabaja demasiado bien, lo veremos. El consumo del transmisor ronda los 12mA, mientras que el del receptor es de 9.5mA. La velocidad que conseguiremos es de 14 baudios, poco más de un byte por segundo. Muy lenta para algunas cosas, pero por ejemplo se podría utilizar en un sensor inalámbrico de lluvia, de temperatura o una alarma.


Transmisión de la señal

Para hacer llegar información (datos) de un punto a otro necesitamos usar varios elementos. Si os acordáis del modelo OSI, vamos a trabajar en la primera capa, la más baja y cruel de todas: la capa física. Resumiendo, esta capa transmite información de un lado a otro, dándole igual los errores con que llegue. De eso ya se encargarán otras capas superiores.

Y dentro de esta, vamos a construir los cimientos desde el sótano describiendo nuestro medio, canal, modulación, codificación y alguna idea relativa al protocolo.

  • Medio: Es el medio que se usa para mover la información, puede ser por ejemplo un cable eléctrico o uno de fibra optica. En nuestro caso es transmisión inalámbrica, así que nuestro medio son las ondas radioeléctricas.

  • Portadora: Pero el espectro radioeléctrico es muy amplio. Y habrá que decir qué parte de él usamos. 27.145MHz es la frecuencia a la que trabajan la mayoría de los coches teledirigidos de gama baja. No siempre se indica pero por las características concretas de nuestro proyecto conviene.

  • Modulación: Los bits se transmiten haciendo variar algún parámetro de la portadora que el receptor pueda detectar. Podemos variar la amplitud (ASK) por ejemplo, o la frecuencia de la portadora (FSK). Nuestro transmisor funciona en modulación de amplitud, y tiene dos frecuencias distintas con las que modula la portadora en función del botón que pulsemos. Una es 250Hz y la otra 1kHz.

    Este tipo de modulación se llama AFSK. Significa que variamos la frecuencia de modulación, pero no la de la portadora en sí, que seguirá siendo 27.145MHz. No es lo mismo que FSK aunque muchas veces se habla de FSK por simplificar.

  • Codificación: Ya sabemos el parámetro que varía. Habrá que determinar cuando significa un bit 0 y qué forma toma un bit 1. Eso es la codificación. Hay varias formas de hacerlo. Ya vimos cómo funciona la codificación Manchester o la Codificación por Separación de Pulsos hablando de mandos a distancia RC5 y NEC respectivamente.
    No me voy a enrollar contando las bondades e inconvenientes de las codificaciones que se usan hoy en día. Aquí voy a usar una que se llama No Retorno a Cero porque es la más sencilla de implementar y de entender para la prueba de concepto.

  • Protocolo: Como nuestra transmisión es unidireccional de emisor a receptor no hay respuesta. Así que el protocolo que implementemos tiene que ser lo más robusto posible, porque el receptor no puede pedir que le vuelvan a enviar un paquete que ha llegado mal. Pero eso lo dejamos para más adelante. De momento no nos interesa. Si acaso podríamos incorporar un bit de paridad.

    Decidimos enviar los datos en paquetes de 8 bits (byte) más un bit de inicio, para probar. Si luego encontramos una aplicación concreta podemos dedicar 4 de esos 8 bits a una cosa y otros 4 a otra, o mandar paquetes de 32 en vez de 8 bits, lo que necesitemos.


Caracterizar el sistema

Bueno. Ya que tenemos un poco de idea de cómo transmitir información digital vamos a coger nuestros circuitos transmisor y receptor del coche teledirigido y obtendremos algunas características clave. Como por ejemplo el alcance o la demora entre que pulsamos un botón y en el transmisor y el receptor se entera. Este retardo es el que va a limitar la velocidad de transmisión, porque si cambiamos de tono para el 0 y para el 1 demasiado rápido el receptor no se va a enterar y no nos servirá de nada. Así que lo primero que tenemos que medir es cuánto tarda en recibir la señal.

Una característica típica de los detectores de tono (que es lo que lleva el integrado RX-3 para saber qué botón pulsamos), es que funcionan más deprisa cuanto más alta es la frecuencia que tienen que detectar. Digamos que el tiempo que tarda en identificar un tono es proporcional a su periodo. Como aquí los tonos que tenemos son de 250 y 1000Hz ya os digo yo que la velocidad de transmisión va a ser muy baja.

Como tenemos dos botones en el mando, tenemos tres estados:
  • A: Parado. Ningún botón activo.
  • B: Grave. El botón del tono grave está pulsado.
  • C: Agudo. Pulsamos el botón del tono agudo.

Habrá que medir cuánto tarda en pasar del estado A al B, del B al C y del C al A, y viceversa. Son pues, 6 transiciones que se pueden hacer en bucle:
Estad: A -> B -> C -> A -> C -> B -> A
Trans:   AB   BC   CA   AC   CB   BA

Lo hacemos con este montaje, en el que el receptor y el transmisor van conectados al mismo PIC.


Para abreviar no pondré los programas. Podéis encontrarlos si os interesa en el enlace que hay al final de la entrada, dentro del directorio transiciones. El algoritmo es muy sencillo y consiste en lo siguiente:
  1. Fijar el estado A (ningún botón pulsado).
  2. Esperar a que se desactive la señal en el receptor.
  3. Enviar por puerto serie el nuevo estado.
  4. Fijar el estado B (botón de tono grave).
  5. Esperar a que en el receptor se refleje el cambio.
  6. Enviar por puerto serie el nuevo estado.
  7. ...
  8. Repetir en el orden que habíamos dicho antes.

Si pusiéramos la oreja en la antena esto es lo que oiríamos:


Aquí vemos un sonograma de Baudline. El tiempo transcurre hacia abajo y las frecuencias aumentan hacia la derecha. Como es una onda cuadrada, las lineas verticales son los armónicos. En el estado A no hay ninguna señal. En el B las líneas están muy juntas porque se trata de los armónicos de una onda de 250Hz (250Hz, 500Hz, 750Hz, 1000Hz, 1250Hz, etc). En cambio la frecuencia moduladora para el estado C es de 1000Hz. Y los armónicos son múltiplos de 1000 (1000Hz, 2000Hz, 3000Hz, etc), por eso salen más separados.

Otra cosa interesante es que está más tiempo parado en el estado A que en los demás. Y que el estado C es el que menos dura. En efecto, el receptor se da cuenta muy rápidamente del tono de 1000Hz, para detectar el de 250Hz le cuesta un poco más. Pero una vez cesamos de enviar señal, la inercia que tiene es muy grande. Es normal, es un circuito pensado para un coche teledirigido, no para hacer de modem.

Luego en el puerto serie tenemos un recolector de información que es el que lleva el registro del tiempo entre un estado y otro. Similar al que habíamos usado en nuestro sensor LED.

Los tiempos mínimos y máximos que se obtienen son (en milisegundos):

AC:    8 - 17
BC: 17.5 - 17.7

AB: 64.4 - 65.6
CB: 65.5 - 67.5

CA: 146 - 149
BA: 175 - 194

Pensad que estos tiempos son los tiempos durante los que tenemos que mantener un mismo estado para que el receptor se entere. Luego para nuestra codificación está claro que nos tenemos que centrar en B y C que son los dos estados más "rápidos", porque en cuanto queramos hacer algo con el estado A tendríamos que esperar hasta 200ms. La velocidad va a caer en picado. Y dentro del juego B y C lo que nos dice esto es que tenemos que darle a cada tono unos 70ms de margen (el máximo entre los dos).

Lo ideal sería quedarnos sólo con el C, pero como para transmitir algo tenemos que tener dos estados por fuerza hay que elegir B y C.

En realidad no siempre tardan lo mismo. Va a haber un valor mínimo del tiempo de detección, por debajo del cual no se detecta nada. Pero habrá veces que tarde más o tarde menos dependiendo por ejemplo de la calidad de la recepción. Hay una distribución estadística, que se llama de Weibull que más o menos modela este comportamiento. No vamos a hacer el test porque creo que ya queda fuera del ámbito del artículo. Para las tres transiciones podemos dibujar tres histogramas que nos darán una idea de cual es el margen que tenemos que dejar si queremos que el receptor no se confunda. Esto es importante, porque la tasa de error va en funciona de este tiempo. Si dejamos un tiempo demasiado corto podremos transmitir más rápido pero a costa de tener más errores, habrá símbolos que se reciban bien (1 o 0) y otras veces se recibirán mal (un 0 por un 1 o al revés).



En la imagen superior vemos que la transición hacia A (apagado) desde cualquiera de los estados activos (lo que tarda el receptor en enterarse de que hemos soltado el botón) ronda los 182ms. Puede ocurrir que se detecta antes, por diversas causas, pero es raro que se detecte antes de 178ms. Y hay un tiempo mínimo donde la probabilidad de que se detecte es cero. Por ejemplo en t=0 no vamos a detectar nada, porque es evidente que el integrado necesita un tiempo para procesar la señal y conmutar.


La transición hacia C es mucho más rápida, de hecho en la imagen superior se notan los pasos discretos de tiempo. Lo mismo que la anterior, lo normal es que se detecte en 15ms. Puede darse en menos tiempo pero también puede tardar más.


Esta es la transición hacia B. El factor limitante de la velocidad. Al igual que las otras tiene un tiempo característico, que es de unos 64.6ms. Pero si ajustamos ahí nuestro retardo puede pasar que no se detecte algunas veces, porque como ya vemos en la distribución, hay muchas medidas que han ocurrido en tiempos superiores. Cuando diseñamos un sistema de transmisión tenemos que alcanzar un compromiso entre velocidad y tasa se fallo. En este caso con tomar 66ms parece que cubriríamos todo el margen. Pero eso no nos asegura una tasa de error cero. Porque siempre habrá ruido e interferencias.

Resumiendo, con 70ms de duración de cada simbolo tenemos una velocidad máxima de 14 baudios. Como decíamos al principio es poca cosa pero para según qué proyectos puede ser muy útil.


Enviar la información

Ya tenemos todo listo. Vamos a usar el método de No Retorno a Cero, con una velocidad de 14 baudios. Si transmitimos paquetes de 8 bits, y teniendo en cuenta los tiempos de parada (de 200ms) es algo más de 1 byte por segundo. Basta programar un poco para tener dos PICs, uno actuando sobre el transmisor con un texto preprogramado y otro con el receptor.


He usado un pequeño truco para sincronizar las dos partes. Porque al haber tanta inercia es fácil que el receptor se pierda. Consiste en que al inicio siempre transmito un 0. Como es el que más tarda, el retardo también sirve para el 1. Si no lo hiciera, el receptor perdería el hilo en los signos que empezaran por 1. Ese truco se llama Look At Me y se usa en casi todos los dispositivos remotos. Tened en cuenta que aunque yo conmute siempre a un tiempo fijo en el transmisor, al receptor le llega la señal cada vez con un retardo distinto. Por eso tengo que ver qué estado hay al final de los 70ms. Si lo viera a la mitad unas veces se recibiría bien (para los 1, que tardan menos por ser el tono más agudo) y otras mal.

Este es el programa transmisor:

void one (void) {
 output_high(PIN_LED);
 input(PIN_TXGrave);
 output_low(PIN_TXAgudo);
 delay_ms(symbol_time);
}

void zero (void) {
 input(PIN_TXAgudo);
 output_low(PIN_TXGrave);
 delay_ms(symbol_time);
}

void off (void) {
 input(PIN_LED);
 input(PIN_TXAgudo);
 input(PIN_TXGrave);
} 

/* Transmitiremos primero el bít más significativo  */
/* Se podría hacer al revés también, va al gusto.   */
/* Antes de empezar la transmision mandamos un bit  */
/* de start.                                        */
void transmit_byte (char value) {
 #bit msb = value.7
 char i;
 
 // Bit de start a modo de LAM (Look At Me)
 // Uso el cero porque tarda más en recibirse que el uno
 // entonces el retardo es válido para los dos.
 zero();

 // Transmisión del bit
 for (i=0; i <= 7; i++) {
  if (msb) {
   one(); 
  }
  else {
   zero();
  }
  value <<= 1;
 }
 off();
}

void main()
{
 unsigned char i;
 unsigned char test_seq[] = {
                             0b00000000, // 0x00
                             0b00010001, // 0x11
                             0b01010101, // 0x55
                             0b10101010, // 0xAA
                             0b11110000, // 0xF0
                             0b00001111, // 0x0F
                             0b11111111, // 0xFF -> FIN
                               };

 setup_adc(ADC_OFF);
 setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
 setup_oscillator(OSC_4MHZ);
 port_a_pullups(FALSE);

 off();

 i = 0;
 for(;;) {
  char value;
//  value = read_eeprom (i);
  value = test_seq[i];
  if (value == 0xFF) {
   i = 0;
   delay_ms(repetition_time);
  }
  else {
   output_high(PIN_LED);
   transmit_byte(value);
   output_low(PIN_LED);
   delay_ms(off_time);
   i++;
  }
 }

}

El algoritmo es muy simple. Descomponer el símbolo en sus bits y transmitirlos en el orden que queramos (ya sea primero el más significativo o el menos). También me gustaría que os fijarais en los códigos de prueba que se transmiten.

A la hora de recibir es cuando nos servimos del truco que os había dicho antes. Recibimos el primer bit y sabemos que va a ser un cero. Así que una vez lo recibamos vamos muestreando los estados a intervalos regulares. Cuando juntamos 8 bits transmitimos el byte correspondiente por el puerto serie hasta el PC.

void main()
{
 setup_adc(ADC_OFF);
 setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
 setup_oscillator(OSC_4MHZ);
 port_a_pullups(FALSE);

 
 for (;;) {
  char value;
  char num;
  
  // Esperamos el estado A (a que todo se apague)
  while(input(PIN_RXAgudo) || input(PIN_RXGrave));
  printf("A");
  // Esperamos un B que significa el comienzo
  while(!input(PIN_RXGrave));
  printf("C ");

  // Esperamos un pequeño lapso porque la transición 
  // A-B tiene un error de más-menos unos pocos ms.
  delay_ms(5);
  
  // Y muestreamos cada symbol_time ms
  // Terminamos si se apagan los dos (se vuelve a A)
  // o si se llega a los 8 bits
  value = 0;
  for (num=0; num<=7; num++) {
   #bit lsb = value.0
   short grave, agudo;
   
   delay_ms(symbol_time);
   
   grave = input(PIN_RXGrave);
   agudo = input(PIN_RXAgudo);
   
   if (grave) {
    // Es un 0, rotamos y añadimos el valor
    value <<= 1;
    lsb = 0;
    printf("0");  
   }
   else if (agudo) {
    // Es un 1, rotamos y añadimos el valor
    value <<= 1;
    lsb = 1;
    printf("1");
   }
   else {
    // No hay más datos
    printf("A");
    break;
   }
  }
  
  output_high(PIN_LED);
  printf(" %X\r\n", value);
  delay_ms(100);
  output_low(PIN_LED);
 
 }

}

Lo mismo que antes, cuando ponemos la oreja en la antena vemos algo como esto. La captura es de una prueba anterior, en la que habíamos usado un retardo de 68ms y la señal de Look At Me era un 1 seguido de un 0. Así es como se vería la transmisión de 3 bytes: 0x0F, 0x55 y 0x55:




 Después de hacer todas las pruebas tenemos un sistema de transmisión inalámbrico, lento, muy lento pero muy fácil de hacer. Y hasta aquí podemos llegar con estos circuitos tal como vienen de fábrica sin modificaciones importantes.



Evolución del sistema

¿Qué modificaciones podríamos hacer en el sistema para convertirlo en algo más útil? Pues algunas, por ejemplo:
  • Más velocidad. Con el RX-3 que viene de fábrica es imposible. Así que tal vez podríamos capturar la señal cuando sale del demodulador (ver este esquema) y procesarla para detectar nosotros el tono.
  • También podemos obviar la parte del oscilador en el transmisor (ver esquema del transmisor) y utilizar otro sistema para modular la portadora. Así podríamos usar frecuencias más altas que sean más rápidas de detectar.
  • Más potencia. Incorporando un transistor para amplificar la potencia al final y una buena antena tendríamos un poco más de alcance.
En definitiva, aprovechar los osciladores de RF y currarnos el resto, que cada uno juzgue si le parece práctico o no. Encontraréis los archivos usados en las pruebas aqui. Están los logs de las transiciones, los programas y los hex de los PICs.
Artículo completo >>

Medir valores lógicos con tarjeta de sonido

Hoy os cuento el primer intento de una prueba que quería hacer desde hace tiempo. Se trata de adaptar una tarjeta de sonido para poder medir también valores de tensión continua. Este es uno de esos experimentos que tienen muchas posibilidades de salir mal, o por lo menos, de no salir tan bien como esperábamos. Las cosas no siempre salen a la primera.

La prueba la he hecho con una tarjeta USB muy barata. Está basada en el chipset TP6911 de Tenx y sus cualidades de grabación son bastante pobres:
  • ADC de 10 bits.
  • Frecuencia de muestreo 24kHz
  • Mono

Pero más que suficientes para lo que haremos. ¿24kHz es poco? Pues para grabar con calidad de CD no sirve, pero precisamente este experimento va de medir tensión continua o que varía muy lentamente. ¿10bits es poco? Hombre depende, si lo que queremos es medir valores lógicos nos sobran 9.

Con el tamaño de los componentes que tienen estos productos genéricos made in China es poco menos que un trabajo de relojería.



Configuración de entrada

No voy a meterme en cómo se puede configurar un ADC, Maxim tiene una buena guía. Según el datasheet del TP6911 el circuito debe parecerse a este:


A la derecha veis la entrada de micrófono. Con la típica configuración para alimentar un electret.

En teoría lo que queremos hacer es puentear el condensador en serie para que no nos cape la componente continua. Y de paso cargarnos también la resistencia que lleva la alimentación para el micrófono, porque si no la estaríamos midiendo también. Tampoco nos interesan los condensadores en paralelo que puedan estar filtrando ya que estos sólo introducirían demora y artefactos en la medida.

Como podéis ver no estamos haciendo una mejora, sino una mutilación. Estamos eliminando los filtros paso bajo y paso alto que dotan de más o menos calidad a la entrada y es probable que cuando terminemos ya no nos sirva para conectar un micrófono.

Hay un primer problema. La entrada de micro parece ser diferencial. Si la entrada estuviera referida a masa todo sería perfecto, pero no es así. Para esta primera prueba, rápida y poco cuidadosa todo hay que decirlo, opto por ignorar la entrada negativa. Y como era de esperar el rango dinámico se reduce a la mitad. Es decir que en lugar de medir valores simétricos MIN-0-MAX vamos a medir sólo entre MIN y 0.

Hay un segundo problema. El datasheet TP6911 es muy básico. Y aunque he encontrado tres notas de aplicación son prácticamente iguales. Así que lo siento, las pruebas hay que hacerlas por ensayo y error.

Por ejemplo la estructura de la entrada de grabación dicen que es así:


Sin embargo no se corresponde con el circuito de la tarjeta. La resistencia no existe y si eliminamos el condensador se supone que no deberíamos tener señal de entrada. Sin embargo la tenemos. Es parecido a trabajar a ciegas. Por suerte este hardware es muy barato.


Ejemplos

Me hubiera gustado mostraros la captura con el Xoscope. Pero no me deja seleccionar el dispositivo de entrada, y como ya tenía configurada la tarjeta integrada no admite la USB. Nos apañaremos con Audacity y Baudline.

En primer lugar probaremos con un potenciómetro. Observad cómo se produce saturación antes de llegar al mínimo y antes de llegar al 0.



Ahora vamos a conectar un módulo detector de IR y veremos cómo es una ráfaga infrarroja de un mando a distancia NEC. De estos módulos ya hablamos en otra entrada.



Para terminar vamos a conectar un interruptor a masa. Y veamos lo que ocurre al pulsar. Todos los que hayáis trabajado con pulsadores habréis tenido el problema de los rebotes (bounces). Que consiste en que la pulsación no es limpia sino que abre y cierra varias veces hasta quedar en un estado estable. Por eso hay que incorporar una rutina o unos componentes que eviten contar estos rebotes rápidos como pulsaciones legítimas.


Así es como se ve la pulsación de un botón. El tiempo entre que se pulsa hasta que queda estable es de aproximadamente 1 milisegundo.


Si necesitáis medir valores digitales por USB este es el procedimiento más sencillo que hay. Otra opción es usar el conversor USB a puerto serie que ya publicamos. Veis que el procedimiento que hemos seguido no es el mejor pero sirve perfectamente para nuestro propósito. Es cuestión de hacer pruebas para mejorar los resultados.
Artículo completo >>

La subasta americana

Últimamente no tengo mucho tiempo para escribir. Veis que las entradas que estoy sacando estas semanas son cortitas y con poca chicha. A ver si saco un poco más de tiempo y escribo sobre el circuito del DimmerIR, o la tercera entrada de estadística, u otra sobre transmisiones digitales.

De momento nos conformaremos con algo que no tiene que ver con la electrónica. Trataremos el tema de la subasta americana. Esto viene de una discusión que leí hace ahora diez años en es.ciencia.matematicas. Para los que no lo sepáis, en una subasta americana como en cualquier otra subasta, el artículo se adjudica al mayor postor; pero a diferencia de otras subastas todo el mundo debe pagar su última puja. Es decir que si pujas, pagas. Te lleves o no te lleves nada.

Esta claro que se hace para incentivar a los asistentes a subir la puja, porque a medida que se va superando la puja, los postores tienen la presión de tener que pagar lo último pujado además de irse con las manos vacías. Se podría decir que en este sistema el que puja arriesga, y si no consigue su objetivo pierde todo lo arriesgado.

Pero lo interesante de todo esto es que, si nos paramos a pensar, veremos situaciones exactamente iguales en la vida real. Y no una ni dos, sino muchas situaciones donde hay que arriesgarse para conseguir algo, y perder lo apostado si no se logra.


Venta limitada

Pongamos por ejemplo la venta de una edición limitada de un cómic. Sabemos que la tienda abre a las 9AM. Y van a vender sólo 20. Pero claro, si llegamos allí a las 9 en punto lo más probable es que nos encontremos una cola de más de 20 personas y nos quedemos sin cómic.

Así que decidimos levantarnos temprano para estar allí antes. ¿Cómo de temprano? Pues para saberlo tendríamos que ver qué intenciones tiene el resto de la gente. Pero al igual que en la subasta americana no tenemos esa información.

Si llegamos allí a las 7, dos horas antes de abrir y nos encontramos una cola de 20 habremos madrugado para nada. No recuperaremos lo invertido y tampoco tendremos premio.

Así que elegimos llegar muy pronto, por ejemplo a las 5, cuatro horas antes de que abran. Igualmente podemos encontrarnos con otros 20 que estaban allí antes que nosotros... o no. Porque si llegamos y no hay nadie esperando sentiremos que hemos perdido el tiempo, y que podíamos haber dormido un poco más en vez de llegar tan temprano.

Podíamos pensar que la mejor opción es asegurarse, por ejemplo quedarse allí a hacer noche. Pero al igual que en una subasta habrá que considerar si vale el precio.


Espera indeterminada

Seguro que a todos nos ha pasado. Esperar que pase algo durante horas hasta que decidimos irnos. Y al día siguiente alguien nos cuenta que si hubiéramos esperado sólo unos minutos más lo habríamos visto.

Se trata de otra subasta americana. Porque el tiempo que esperemos ya no lo vamos a recuperar. Y si nos vamos antes de que ocurra habremos perdido el tiempo. Pero mientras más esperemos sin que ocurra nada, más tiempo habremos perdido.

Así que eso te anima a seguir y seguir esperando con la consiguiente frustración si al final no se ve nada.


Salvamento

Esta es una de las situaciones más frustrantes. Cuando arriesgas tu tiempo, tu reputación o tu integridad física para salvar a alguien.

Imaginad que estáis en la playa y veis a alguien que pide ayuda porque la marea lo arrastra mar adentro y no puede salir. Pero tú eres buen nadador y tienes experiencia en rescates, podrías salvarlo.

Te lanzas al agua y nadas hacia él, pero la marea lo arrastra cada vez más adentro. Tú te alejas de la costa y en tu interior eres consciente de que mientras más te alejes más fácil es que tú tampoco puedas salir.

Así que tienes que decidir, si sigues avanzando llegas hasta él y lo rescatas el riesgo habrá merecido la pena. Si decides que estás lejos de la playa y que debes volver, habrás arriesgado tu vida para nada.

Pero si no te rindes a tiempo no podrás salir tu ni por supuesto rescatarlo tampoco. Morirás por nada.


Insistir en una relación

En una relación amorosa entre dos personas también se da este mecanismo.

Cuando las cosas empiezan a ir mal, suele haber alguien de la pareja que intenta salvar la relación. Ya sea poniendo de su parte, haciendo regalitos, teniendo detalles, portándose bien...

Si finalmente no consigue salvar la relación habrá invertido tiempo, autoestima y dinero para nada. Podía habérselo ahorrado desde el principio, pero algo en su interior le dirá que no hizo todo lo posible por su chico o por su esposa.


Estudios

Comienzas la carrera universitaria, de 4 o 5 años. Pero cuando vas por el segundo año ves que no avanzas.

Si lo dejas ahora habrás perdido el tiempo y dinero de dos años. Así que lo mejor será seguir hasta terminarla. Habrás estudiado algo que no te gusta pero al menos tendrás un título.

Pero nada quita que después de otros dos años sigas atascado. Y te replanteas tu decisión. Sí lo hubieras dejado antes habrás perdido los dos primeros años, pero habrías ahorrado estos dos últimos. Y si finalmente decides dejarlo ahora habrás perdido no dos, sino cuatro años en tiempo y en dinero.


Un mal libro

Empezamos a leer un libro pero cuando vamos más menos por la mitad nos damos cuenta de que no nos gusta nada. ¿Qué hacemos? ¿Seguimos leyendo hasta el final o lo dejamos?

Si lo dejamos hemos perdido el tiempo hasta donde íbamos leyendo. Reconoceremos nuestra derrota y nos preguntaremos durante un tiempo si podría habernos llegado a gustar.

Si seguimos puede ser que nos acabe gustando más adelante, y habrá merecido la pena continuar leyendo. Pero también puede ser que se haga insoportable, entonces pensaremos que teníamos que haber dejado de leer mucho antes. Y que podríamos haber aprovechado el tiempo para leer otro libro mejor.


Guerras

Suponed que un estado declara la guerra a otro. Pasan varios años luchando y ambos ejércitos están ya mermados.

Cualquiera de los dos bandos sabe que si se rinde ahora todos los recursos, dinero, vidas que ha arriesgado no habrá servido para nada.

Así que ambos tienen que elegir entre rendirse pagando mucho para no conseguir nada, o seguir arriesgando con la esperanza de ganarlo todo o perderlo todo.

Por eso es frecuente que las guerras duren muchos años y prácticamente hasta que no quedan soldados, o dinero e uno u otro bando.


Estrategia óptima

Todos estos ejemplos siempre tienen algo en común. Y es el pensamiento de "ya que he llegado hasta aquí no lo puedo dejar ahora":

  • Ya que he esperado tanto no me voy a ir porque ¿y si pasa después? Claro que puede pasar que sigas esperando más y más y no ocurra de todas maneras, así que habrás esperado para nada.
  • Ya que he subido hasta aquí tengo que alcanzar la cima. Claro que lo mismo no llegas a alcanzar la cima nunca y hubiera sido mejor parar antes aunque tuvieras que reconocer que habías hecho todo el esfuerzo en balde.
  • Ya que he invertido tanto por salvar a esta persona, no puedo dejarla tirada. Claro que lo mismo no te conviene seguir arriesgando más, y sea mejor dar por perdido el tema.

En el hilo del que hablaba antes se debatía una estrategia óptima. Algunos tertulianos llegaban a la conclusión de que lo mejor es no jugar, pero si no juegas no ganas.

Los bienes que se subastan por este procedimiento suelen ser extraordinarios y van destinados a quienes les sobra el dinero. De primeras, a nadie se le ocurriría participar porque sabe que tiene muchas más papeletas de perder que de ganar. Sin embargo es lo mismo que pasa con los juegos de azar, y los casinos se llenan, la gente juega a la lotería y apuesta igualmente.

Nadie quiere perder dinero y los asistentes tienen a hacer pujas mucho más modestas que las que harían en una subasta normal. Si no se tiene cuidado al fijar la puja inicial se puede acabar vendiendo un bien a un precio muy inferior a su valor. Sin embargo no es problema para el vendedor porque el resto de postores también pagan su parte. El comprador compra un bien a un bajo precio y el vendedor obtiene el mismo o más dinero. Así no parece tan absurdo ¿verdad?

Otros decían que lo mejor es pujar un precio desorbitado para asegurarte de que nadie puja más que tu y ganas la subasta. Pero si haces eso acabarás pagando mucho por algo que no lo merece.

La situación óptima es saber exactamente cuanto vale el bien que se está subastando y pujar justamente eso. Así si te lo llevas no habrás pagado de más. Y si no te lo llevas ambos (el ganador y tu) habréis perdido dinero. Claro que tú más que él.

No obstante como casi nunca sabemos el precio exacto, ni lo que los demás están dispuestos a pagar. Ante semejante falta de información lo mejor es fijarse una puja máxima para escapar de la espiral que nos haría ir subiendo la puja con tal de llevarnos algo.

Esa es precisamente la estrategia que tomamos en la vida real. Decimos "ya estoy harto de esperar, me voy", o "yo no pago tanto por aquello" o "ya no puedo más, me rindo" o finalmente "ya no sigo leyendo, paso del libro". Que por cierto si has leído hasta aquí, gracias.
Artículo completo >>

Bromas de alta tensión

Vamos a hablar en esta entrada de esos típicos aparatos de broma que dan calambre. Todos los habéis visto, un bolígrafo que da corriente, o un puntero láser, un libro, etc. También hay juegos que el perdedor recibe un calambre, por ejemplo en algunas pistolas láser, o juegos de reflejos. Veamos cómo funcionan.


Antes de nada, no confundirlos con los aparatos de electro-estimulación muscular que se usan en rehabilitación (los llamados TENS). No tiene nada que ver: estos últimos actúan emitiendo una corriente a través de la piel que llega al músculo y lo estimula. Necesitan un pulso con una duración y una forma determinada y unos electrodos apropiados para llegar al músculo sin ser demasiado desagradable.

Sin embargo, ahora queremos que alguien sienta el calambre pero no llegar al músculo (porque sólo es una broma, no queremos electrocutar a nadie, ni causar espasmos, mi paradas cardíacas, ni quemaduras, ni otras cosas malas que hace la electricidad).


Principio físico

  • Primero necesitamos una corriente alterna, o pulsante, de baja frecuencia. Así la sensación será más desagradable pero inofensiva.
  • Segundo es suficiente con tensiones muy altas, y de intensidad mientras más baja mejor. Recordad que lo que es peligroso no es la tensión. Lo que pasa es que la piel es como una resistencia, y si aumentan los voltios lo hacen los amperios.
  • Tiempo muy limitado. Como decíamos antes si sube la tensión sube la intensidad, pero entonces ¿Como conseguimos alta tensión y baja intensidad a la vez? Pues una manera simple es por ejemplo con picos de muy corta duración. Así la intensidad será muy alta, pero durante un tiempo muy pequeño, y el efecto (que también depende del tiempo que dura) es mínimo.

Hmm... pulsos muy cortos, con tensiones elevadas... si tienes una mínima idea de electromagnetismo inmediatamente te sonará a una bobina. Ya hablamos en otra entrada sobre transformadores flyback. Y si no la tienes te cuento el tema muy por encima:

Cuando aplicamos tensión a una bobina (un inductor también se llama) crea un campo electromagnético. Y este proceso digamos que es lento, más lento cuanta más inducción (más vueltas) tiene la bobina, lo llamamos L. Se puede describir con esta fórmula:

\[E = - {d \phi \over dt} = -L \cdot {dI \over dt }\]

La primera parte viene a decir que la tensión (E) depende de cómo varíe el flujo magnético en el interior (φ). Eso es la inducción: Un imán gira dentro de una bobina y en los extremos tenemos una tensión eléctrica. Vamos a pasar del signo negativo.

La segunda parte dice que, como el flujo magnético también se puede obtener no con un imán externo, sino haciendo pasar una corriente por la bobina, pues la tensión inducida también depende de cómo cambie esta corriente.

OJO: Que la bobina induce tensión cuando la cambia corriente que pasa. Si pasa de no tener corriente a tenerla induce una tensión. Que no solemos notar. Pero si tenía corriente y la quitamos de golpe va a haber un pico de tensión. Por eso cuando usamos un transistor para activar un relé o un motor ponemos un diodo a contracorriente. Porque sabemos que cuando el transistor pase a corte y el relé se desactive, la corriente que circula va a cesar de golpe. Y la bobina va a reaccionar con un pico de tensión, y demás, por el signo menos es tensión inversa. La tensión inversa podría destruir el transistor de control si no hubiera un diodo en paralelo para cortocircuitarla.

Por cierto que la tensión inducida depende de la derivada de la intensidad, o sea del cambio, mientras más rápidamente cambie más voltios se inducen. Pero claro, durante un tiempo más breve. Y cuando digo rápidamente no me refiero a la frecuencia, sino a que el interruptor electrónico sea más o menos rápido. Independientemente de que luego repitamos varias veces por segundo.


Esquema eléctrico

Así que ya sabemos lo que tenemos que hacer para dar calambre, tener una bobina gorda para conectarla y desconectarla, con un interruptor lo más rápido posible, a una frecuencia de varias veces por segundo.

Eso es precisamente lo que lleva el circuito de la foto que he puesto arriba.
Para reducir costes al mínimo lo que han hecho es utilizar componentes no estándar, diseñados para este circuito y fabricados en masa. Por ejemplo la bobina no es tan simple, es un autotransformador que sirve también para elevar la tensión de los picos.

Además hay un oscilador, representado por un interruptor. Que es una placa con una gota de resina Epoxy, diseñada para conectar y desconectar con una frecuencia de 150Hz.

Resulta que si medimos la tensión de salida con un tester True RMS sólo marca 7V. Claro, eso es el valor medio, RMS. En realidad el valor de pico alcanza fácilmente los miles de voltios y no se puede medir así.

Para medirlo nos basamos en la longitud del arco eléctrico (o sea de la chispa que hace). El aire seco tiene una rigidez dieléctrica de unos 3MV/m. Quiere decir que si la chispa mide 1m es que tiene una tensión de 3.000.000 de voltios.

Nuestra chispa no llega a más de medio milímetro por lo que suponemos que la tensión de salida puede ser de unos 1000V. Nada mal a partir de tres pilas botón. Y pulsos de 1000V son suficientes para dar un buen susto. Y sin daño porque el tiempo que se necesitaría para dañar el tejido es del orden de minutos, y
se retira la mano antes.
Artículo completo >>