miércoles, 18 de septiembre de 2013

Instalación de una pastilla piezoeléctrica (pickup) para guitarra acústica

Ya se que no encaja con el espíritu del blog donde hemos hablado de Arduino y sus posibilidades (y que espero retomar pronto)  pero creo que esta entrada puede ayudar a aquel que está perdido buscando en Internet si algún otro loco se ha atrevido a mancillar su querida guitarra acústica para instalarle una pastilla.

También sé que la mayoría pensará que lo mejor es comprarse una guitarra con ello instalado pero a) hace años, cuando me la regalaron, no era habitual y b) de cobardes el mundo está lleno y hay que atreverse a emociones fuertes (que os aseguro que lo son cuando te acercas con las herramientas a la inmaculada guitarra).

Voy a intentar ser lo más escueto posible y aunque no he hecho vídeo porque la calidad puede dejar mucho que desear, sinceramente, los pasos son bastante simples y unas fotos ayudan a darse una idea clara.

El aparato es un pickup con equalizador de cuatro bandas más presencia con afinador incluido (que es lo más útil en general si tocas solo). Lo compré por eBay aprovechando un cumpleaños y lo que llega es lo que aparece en la imagen:

donde a) es propiamente el equalizador,
b) es el conector al amplificador (o al iRig). Tiene salida de alta impedancia (el jack de toda la vida) y de baja impedancia (la de los tres pines). Ahí también está la caja de la batería (9v no incluida),
c) es la pastilla piezoeléctrica
d) los tornillos
e) una brida para sujetar internamente los cables y
f) un soporte a pegar en el interior de la guitarra para recoger los cables.
Lo que no esperes son instrucciones adjuntas.

Una vez que te decides, lo primero de todo es preparar un soporte que no vaya a estropear la guitarra con arañazos. Yo preparé en el garaje una mesa a la que puse un mantel (no muy ortodoxo pero válido) como se puede ver en la foto.


Como veis, es una Epiphone Hummingbird que tengo hace mucho tiempo y que no he tocado todo lo que me hubiese gustado pero que suena fenomenal, con un cuerpo y sostenido muy agradable.

Echad un vistazo al detalle del hueso del puente y su medida para la altura de las cuerdas. Lo ideal después será dejarlo así.

Procedemos a quitar las cuerdas y los topes del puente. Retiro el hueso y aunque queda claro qué lado va delante, le hago una marca con un rotulador

Me estuvo ayudando mi hijo y su primer susto fue cuando le dije que había que taladrar el puente y que seguramente habría que agrandar el hueco del hueso. En ese momento dijo que si fuese suya, mandaría a hacerlo (está claro que los padres no operan a sus hijos) pero no es momento de echarse atrás y recubrimos el puente con papel de enmascarar que algo protegerá si nos pasamos (lo cierto es que no, pero eso es adelantarse).
Con una broca de 3mm hacemos un agujero en la parte más baja del rebaje (más cerca de la primera cuerda). Probé primero con la de 2mm pero era pequeña para que pasase el cable asi que es mejor la de 3 mm y ajustar porque hay que abrir un poco más.
Además hay que hacer más grande y más profundo ese rebaje ya que tiene que entrar la pastilla y luego encima va el hueso y aunque vayamos a rebajarlo, también hay que rebajar la madera para distribuir el nuevo grosor de la pastilla. Para rebajar la madera usé un conjunto de fresas del aparatejo Dremel-compatible (de China pero eficaz) con el proceso prueba/fresado hasta que me convenció el resultado.
El hueso también lo rebajé (aproximadamente) con un papel de lija plano para hacerlo de forma regular a lo largo.

Una vez que vemos que entra bien la pastilla pasamos al siguiente punto, abrir en los laterales los huecos para la conexión externa y el equalizador.
Para la conexión externa, en la parte trasera y abajo abrimos un hueco con las medidas internas del dispositivo, mucho cuidado con hacerla más grande porque luego unos tornillos van a sujetar el conjunto y si lo hacemos más grande, los tornillos no agarrarían en madera. Tapamos con cinta para proteger, buscamos la curvatura más adecuada y hacemos las marcas buscando el centro del aro. En este caso es más fácil que para el equalizador donde hay que ser más fino.
Hay muchas formas de atacar el problema, al final, para no poner de los nervios a mi ayudante, usamos la técnica de taladro fino haciendo muchos agujeros a lo largo de una línea y luego repasar con un cutter para separar la pieza y por último limar el borde.
Igual para el equalizador aunque en este caso, ya lanzados, la lima hizo un rallajo al aro aunque con el reparador se ha disimulado bastante.

Detalle del enmascarado y medio taladrado
  Detalle de la pieza ya sacada.
 Limando los bordes con decisión
Rallajo al canto :)
Resultado final. 

Las conexiones son bastante simples. La pastilla tiene un microjack que va al equalizador y éste tiene un conector a la pila.
Para que no queden sueltos los cables, la brida se sujeta al soporte con pegamento pero hay que presentar atención a dónde se pone para que a) no se vea y b) puedas maniobrar ya que el agujero de la guitarra es pequeño para meter el brazo (al menos el mío).

Lo he probado contra el MiniCube y he de decir que estoy contento, se nota la acción de los potenciómetros aunque como siempre, es una cuestión de gusto de cómo tiene que sonar una acústica amplificada.

El afinador hace su función adecuadamente.

Lo que me hubiese gustado es que tuviese retroiluminación el LCD (lo mismo lo tiene pero como no hay instrucciones y no he sido capaz de encontrarlas por ahí)

Tal vez hayan quedado un poco altas las cuerdas (la eterna discusión de cuánto de altas) pero se sigue tocando fenomenal y la solución es tan simple como rebajar un poco el hueso.

De todas formas, cualquier duda ...



lunes, 15 de abril de 2013

Algoritmos de programación

Programar y aprender a programar está muy bien pero si me he estado quejando toda la vida con mis programadores que no vale sentarse delante del editor del lenguaje (el que sea por moda) y ponerse a desarrollar sin tener un esquema, dejar a mis pequeños alumnos hacerlo no tiene perdón.
Por eso y porque, como no soy río me vuelvo cuando quiero (era una expresión de mi abuela que siempre me hizo gracia por lo que subyace en la expresión), vamos un poco más atrás y vamos a hablar de Algoritmos. Hice una pequeña introducción a lo que era un algoritmo y como siempre, práctica.

He preparado un documento que iré complementando con ejemplos y ejercicios de algoritmos. Para el ejemplo primero, el fuente que construyeron está aquí  

miércoles, 13 de marzo de 2013

Introducción a la programación

En la línea de abrir otros frentes para despertar otros intereses, preparé una breve introducción a Java para realizar una serie de ejercicios.
Es cierto que finalmente Arduino se programa en C pero me pareció más adecuado hablar de Java y que puedan aprender a manejarse con un IDE estándar en vez de profundizar en C.
También he querido hacer una aproximación alejada de la típica en la que la orientación a objetos sea lo primero antes de nada. Otra cosa es que conceptos como herencia, polimorfismo, etc. van apareciendo quieras o no.
La presentación que hemos usado está aquí.

Después de la introducción lo que enseñé fue Eclipse, JDeveloper y BlueJ, que son los que tengo instalados en el PC. Por simplicidad para las pruebas descartamos JDeveloper y nos centramos en BlueJ para luego pasar a Eclipse las pruebas realizadas y comprobar que es lo mismo. En siguientes sesiones nos quedaremos con BlueJ, mucho más ligero.
Vimos los ejercicios propuestos pero les he dado tiempo para que asienten los conocimientos y hacer unos ejercicios más completos individualmente en posteriores sesiones.

miércoles, 6 de marzo de 2013

Electrónica Digital. Sesión I

Después del ejercicio del Semáforo y cómo se resolvía con Arduino, uno de mis alumnos se planteó que si les había contado que Arduino existe desde hace unos pocos años y semáforos hay desde hace mucho, ¿cómo se hacían antes?.
Aunque en la introducción de las sesiones hablé un poco de histora, empezamos a hablar de la electrónica convencional de hace 30-40 años (circuitos con transistores, pequeños integrados, ...) y terminé hablando de electrónica digital y puertas lógicas.
Por alguna extraña razón, les llamó la atención y sobre la marcha, dibujé el siguiente esquema que refleja una posibilidad de circuito de control de un semáforo:
identificando el módulo de Reloj (hablando del 555), de un contador binario y de cómo un decodificador ayuda a seleccionar acciones. 
Como vi que tenía interés el tema, preparé el siguiente borrador para una sesión monográfica de Electrónica Digital que dado el éxito obtenido, tendrá su continuación.

Creo que el objetivo no es cortar y pegar de otros contenidos de Internet sobre puertas lógicas, simplemente entrando en la Wikipedia (por poner un ejemplo) tienes información suficiente. Es tal vez la referencia de la utilidad de este tipo de contenido contado a chicos interesados en el tema.

Me sorprendió que no conociesen diferentes sistemas de numeración y su justificación por lo que profundicé un poco en ello con teoría y práctica.
Después hablamos de las puertas lógicas y de cómo se implementarían con transistores y de las ventajas de los circuitos integrados (creo que les da un poco de vértigo la miniaturización y eso que esto no es nada pero el comentario del mayor, cuando hablamos del tamaño que puede alcanzar un transistor en un circuito integrado, se le ocurrió que una célula podría tener un MP3 -buena reflexión-)

Como ejercicios prácticos tuvimos:

* Con un programa de simulación de circuitos, las bases de funcionamiento. Les gustó y lo entendieron fácilmente.
* Con una Protoboard se construyeron físicamente algunos ejemplos prestando atención a que 0 es conectado a gnd mientras que abierta la entrada es 1 (esto les supuso un cierto retraso hasta que lo fijamos). Esto les desarrolla la habilidad motora que en algunos casos es bastante deficiente, teclas si, manos, poco.
* Con Arduino hicimos un prototipo que manejaba las entradas de una puerta y la salida para construir vía serial la tabla de la verdad en plan listado cuando se pulsaba un botón (aquí estoy viendo que algunos tienen la mente preparada para la programación ya que se les ocurren cosas curiosas).

En próximas sesiones de Electrónica Digital hablaremos de FlipFlop, Registros de desplazamiento, manejadores de displays, ...


domingo, 17 de febrero de 2013

Sesión III (2ª parte)

Hacemos la segunda parte de la sesión dedicada exclusivamente a finalizar el prototipo de semáforo doble añadiendo la funcionalidad que nos faltó, esto es:


  • Añadir un segundo semáforo modificando la programación para contemplar los cambios de este nuevo semáforo.
  • Añadir un botón para seleccionar 'Todo Naranja' para los dos semáforos
dada la nula experiencia de programación de los alumnos vamos despacio para que entiendan los conceptos y poco a poco podamos refinar el código. Es decir, hoy no les voy a hablar de las interrupciones en Arduino si no que vamos a introducir el botón como parte del loop para que de esa forma se vayan planteando necesidades que después iremos implementando.

Así, en la primera implementación completa del segundo semáforo, antes de añadir el botón, lo que hacemos es modificar la escala de tiempos (añadimos más delays) para contemplar los pasos a naranja desde verde mientras que está en rojo el otro. Volvemos a trabajar el diagrama de tiempos para que ellos deduzcan los espacios a considerar.

Cuando introducimos el botón y la funcionalidad de 'Todo Naranja', lo hacemos al principio del bucle mirando si está o no pulsado el botón. El problema que aparece con esta localización es que sólo se evalúa cuando todo el bucle de tiempo se ejecuta, pero insisto que es interesante esta aproximación paso a paso para que vean casuísticas y cómo se resuelven.
Sin entrar todavía en interrupciones y para acotar más el problema, lo que hacemos es que nos creamos una función 'espera y mira' que lo que hace es hacer delays más cortos y evaluar el botón.
Aparece entonces otro comportamiento que no les gusta y es que cuando se deja de pulsar el botón se recupera la posición que había en el semáforo lo cual no es seguro en la vida real por lo que les introduzco el concepto de reinicio de bucle implementado con sentencias if.

El prototipo queda como se ve en la foto

Recomiendo echar un vistazo al código y al video que grabamos con el resultado (ya mejoraremos en esto porque no está muy fino) .

Código

/*
  Semaforo, Version 2
  Incluye dos semáforos y un botón para Naranja Parpadeante
  Febr 2013
  Arturo, Jaime
 */
 
int ledRojoSem1 = 12;
int ledNaranjaSem1 = 11;
int ledVerdeSem1 = 10;

int ledRojoSem2 = 5;
int ledNaranjaSem2 = 6;
int ledVerdeSem2 = 7;
 
int buttonState1 = 0; 

int duracion = 1000; 
int duracTotal = 1000;
boolean continuar= true;

//Duracion de Naranja. Rojo = 6*Naranja, Verde = 5*Naranja

// the setup routine runs once when you press reset:
void setup() {                
  // initialize the digital pin as an output.
//  Serial.begin(9600);
  pinMode(ledRojoSem1, OUTPUT);     
  pinMode(ledNaranjaSem1, OUTPUT);
  pinMode(ledVerdeSem1, OUTPUT);     
  pinMode(ledRojoSem2, OUTPUT);     
  pinMode(ledNaranjaSem2, OUTPUT);
  pinMode(ledVerdeSem2, OUTPUT);   
  pinMode(1,INPUT);                    // El Botón para todo Naranja
  pinMode(13,OUTPUT);
       
}

// the loop routine runs over and over again forever:
void loop() {

  digitalWrite(ledNaranjaSem1,LOW);
  digitalWrite(ledNaranjaSem2,LOW);
  continuar = true;
  
  digitalWrite(ledRojoSem1, HIGH);   // turn the LED on (HIGH is the voltage level)
  digitalWrite(ledVerdeSem2, HIGH);   // turn the LED on (HIGH is the voltage level)
  espera(5*duracion);
  if (continuar){
    digitalWrite(ledVerdeSem2, LOW);   // turn the LED oFF (LOW is the voltage level)
    digitalWrite(ledNaranjaSem2, HIGH);   // turn the LED on (HIGH is the voltage level)
    espera(duracion);
    if (continuar){
      digitalWrite(ledNaranjaSem2, LOW);   // turn the LED off (LOW is the voltage level)
      digitalWrite(ledRojoSem1, LOW);   // turn the LED off (LOW is the voltage level)
      digitalWrite(ledVerdeSem1, HIGH);   // turn the LED on (HIGH is the voltage level)
      digitalWrite(ledRojoSem2, HIGH);   // turn the LED on (HIGH is the voltage level)
      espera(5*duracion);
      if (continuar){
        digitalWrite(ledVerdeSem1, LOW);   // turn the LED oFF (LOW is the voltage level)
        digitalWrite(ledNaranjaSem1, HIGH);   // turn the LED on (HIGH is the voltage level)
        espera(duracion);   
        if (continuar){
          digitalWrite(ledNaranjaSem1, LOW);   // turn the LED off (LOW is the voltage level)
          digitalWrite(ledRojoSem2, LOW);   // turn the LED off (LOW is the voltage level)
        }
      }
    }
  }
}

void ponerNaranja(){
  digitalWrite(ledNaranjaSem2, HIGH);   // turn the LED off (LOW is the voltage level)
  digitalWrite(ledNaranjaSem1, HIGH);   // turn the LED off (LOW is the voltage level)
  digitalWrite(ledVerdeSem2, LOW);   // turn the LED off (LOW is the voltage level)
  digitalWrite(ledVerdeSem1, LOW);   // turn the LED off (LOW is the voltage level)
  digitalWrite(ledRojoSem2, LOW);   // turn the LED off (LOW is the voltage level)
  digitalWrite(ledRojoSem1, LOW);   // turn the LED off (LOW is the voltage level)
  delay(100);
  digitalWrite(ledNaranjaSem2, LOW);   // turn the LED off (LOW is the voltage level)
  digitalWrite(ledNaranjaSem1, LOW);   // turn the LED off (LOW is the voltage level)
  delay(50);
  
}

void espera(int duracTotal){
  int n;
  int fin = duracTotal/200;
  for (n = 0 ;fin > n;n++){
    delay(200);  //Espero 1/2 seg
    buttonState1 = digitalRead(1);  //Leer boton
    if (buttonState1 == HIGH) {
      while(buttonState1 == HIGH){
          ponerNaranja();
          buttonState1 = digitalRead(1);  //Leer boton
    }
    continuar= false;
    break;
    } 
  }
}

Aquí tenéis el video 

A modo de reflexión veo que va a ser importante hacer varias sesiones de programación (probaré con BlueJ) para que entiendan completamente las sentencias de control, la utilización de funciones, etc. sin entrar todavía en orientación a objetos.

Como siempre, cualquier aclaración o comentario ...

domingo, 10 de febrero de 2013

Sesión III (1ª parte)

Esta sesión la hemos tenido que hacer entre dos semanas porque el material empezaba a complicarse y una vez que empiezas a programar, el tiempo se va que vuela. El material de apoyo a la sesión está aquí  y la agenda es:

Hoy en la sección de componentes hablamos de Diodos de forma general, hablando de diodos rectificadores, Zenner y LED, que son los que más usaremos para las prácticas. Hablamos de los usos de cada uno y vemos con el Cocodrilo, cómo un diodo recorta una señal alterna y varios circuitos de LED para que los 'quemen' virtualmente si se pasan con la corriente.
Incido en cómo son los diodos LED, su forma, su uso, su polaridad, etc. para que se familiaricen lo antes posible con ellos.

En la sección de Circuitos eléctricos hablamos de los tipos de placas de circuitos jugando con ejemplos físicos de cada una de ella. Con la Protoboard hacemos alguno de los circuitos que hemos hecho en el Cocodrilo.

Pasamos por último a lo que más les llama la atención, jugar con el Arduino y hacerle funcionar. Como he comentado, vamos a hacer el ejercicio de Arduino en dos fases. El proyecto es hacer un cruce de carreteras con dos semáforos. Para facilitar las cosas, sólo considerando coches, no peatones.
En este ejercicio se introducen muchos nuevos conceptos,

  • por el lado de programación vamos a tener que introducir instrucciones de control (if, for, ...), vamos a crear funciones propias, el programa no se va a ver en una sóla pantalla, etc. pero siempre insistiendo de ir de menos a más y probando cada paso. Les insisto en la documentación que no parece que les convenza pero si cogen la costumbre, lo apreciarán en un futuro.
  • Por el lado del prototipo va a haber mucho más cable que hay que manejar con cuidado para no crear falsos contactos. Vamos a introducir un interruptor y posteriormente lo vamos a conectar a otra fuente de alimentación distinta al usb del ordenador.
Como primer objetivo planteamos crear un semáforo según el esquema de Fritzing de la presentación y que se iluminen secuencialmente los diodos. Vamos paso a paso con la programación creando el esqueleto, viendo que funciona, cargando de nuevo al Arduino y volviendo a comprobar. Tengo que hacerles ver la importancia de la depuración de la programación y saber buscar potenciales problemas.
El prototipo construido se puede ver en la imagen y la primera versión del programa es:

/*
  Semaforo, Version 1
  Febr 2013
  Arturo, Jaime
 */
 
int ledRojoSem1 = 12;
int ledNaranjaSem1 = 11;
int ledVerdeSem1 = 10;

int duracion = 1000; //Duracion de Naranja. Rojo = 6*Naranja, Verde = 5*Naranja

// the setup routine runs once when you press reset:
void setup() {                
  // initialize the digital pin as an output.
  pinMode(ledRojoSem1, OUTPUT);     
  pinMode(ledNaranjaSem1, OUTPUT);
  pinMode(ledVerdeSem1, OUTPUT);     
}

// the loop routine runs over and over again forever:
void loop() {
  digitalWrite(ledRojoSem1, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(6*duracion); 
  digitalWrite(ledRojoSem1, LOW);   // turn the LED off (LOW is the voltage level)
   digitalWrite(ledVerdeSem1, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(5*duracion);               // wait for a second
  digitalWrite(ledVerdeSem1, LOW);   // turn the LED oFF (LOW is the voltage level)
  digitalWrite(ledNaranjaSem1, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(duracion);   
  digitalWrite(ledNaranjaSem1, LOW);   // turn the LED off (LOW is the voltage level)
 
}

(Para siguientes programas creo que los dejaré como link)

Algo en lo que hemos dedicado mucha explicación ha sido al concepto de linea temporal para decidir los cambios de colores. Hemos usado unas páginas de GoodNotes para las explicaciones que dejo aquí

Están impacientes por seguir pero eso será dentro de unos días.


jueves, 7 de febrero de 2013

Sesión II

En esta sesión entramos ya en materia. El documento de apoyo se encuentra aquí y la agenda es


En la primera sección tratamos las resistencias (o resistores para ser más precisos). Vemos físicamente algunos ejemplos, estudiamos los códigos de colores desde un punto de vista teórico analizando las bandas y práctico con un tester como primera toma de contacto con los aparatos de medida.
Vemos por encima los circuitos de asociación de resistencias y con la ayuda de una protoboard creamos una asociación en paralelo y en serie y medimos con el tester para comprobar las fórmulas.
Se introduce el término de tolerancia al comprobar que no son exactas las medidas.

En la sección de circuitos, introduzco el concepto de electricidad, corriente eléctrica y los tipos de materiales. Mis alumnos están muy orientados a la química (deformación familiar) y se que es útil y procedente hablar de la estructura atómica para hablar de electrones y orbitales.
Definimos circuito como red cerrada (después hay ejercicios para ver que lo han entendido. Estas imágenes las saqué de un blog de un profesor de Castilla la Mancha que se lo ha trabajado mucho que si tengo hueco para buscarlo, referenciaré aquí).
Hablamos de los tipos de corrientes (continua y alterna), de su aplicación, generación, etc.
También cuento la ley de Ohm pero para que sepan que exista como referencia para cálculos. Dependiendo de la evolución que tengamos, la usarán más o menos a corto plazo.
Con la imagen del circuito y de la evolución de los electrones introducimos el concepto de voltaje e intensidad. Les hago notar la diferencia de criterio entre físicos y químicos al considerar cómo fluye la corriente en un circuito.
En síntesis, en esta sección hago una introducción a términos que habrá que repetir seguramente en posteriores sesiones pero que es importante empezar a entender.

Posteriormente repasamos las preguntas y respuestas en la misma sesión para afianzar los términos.

Después nos ponemos con el IDE de Arduino para recordar lo visto la semana pasada y jugamos con series de encendido/apagado del led incluído en la placa (pin 13).

El objetivo es dedicar entre una hora y media y dos horas y con este material se cubre ese objetivo.