Saturday, November 23, 2013

TPL0401 Arduino

Continuando con el post sobre el potenciometro digital TPL0401 de Texas Instruments. hemos realizado una placa PCB para soldar el chip que viene en formato SC-70.
 conectamos una placa compatible arduino y cargamos el siguiente codigo:

#include <Wire.h>

void setup()
{
  Wire.begin(); // Initialize i2c bus
}

byte pot = 127;    //0 = 10K  ,  127 = 0K

void loop()
{
  Wire.beginTransmission(46); // device address  TPL04001-A #46 (0x2E) ,  TPL04001-B #46 (0x2E)
  Wire.write(byte(0x00));     // sends instruction.  0x00 = Write
  Wire.write(pot);            // sends value
  Wire.endTransmission();     // end transmission
}
La conexion es sencilla, 5V, Ground, lineas SDA y SDL para conectar con arduino, y las salidas del potenciometro digital.
Si alguien quiere que le mande una placa PCB para soldar el integrado que lo pida en comentarios.
El chip se puede pedir como sample a Texas Instruments, solo hay que abrirse una cuenta de estudiante.
Eso es todo amigos!

Wednesday, November 13, 2013

Tektronix TDS-420 DB9 Video conector to VGA 15 pines

Vamos a realizar un cable adaptador para conectar un monitor a la salida de video externa la cual posee el osciloscopio Tektronix TDS-420.
El equipo dispone de un conector db9 de nueve pines obsoleto en la actualidad y nosotros deseamos salida vga moderna de 15 pines.
Utilizaremos un cable de vídeo y un conector db9 para montar soldado en cable. Para averiguar que cable corresponde con que pin utilizaremos un multímetro e iremos probando cada pin de los conectores.
Realizamos las conexiones siguiendo el siguiente esquema:
                                          VGA DB15-S                       Female DB9
                                                    1................................... 1 Red
                                                    2................................... 2 Green
                                                    3................................... 3 Blue
                                                    4........................... Monitor ID bit 2
                                                    5................................... N/C
                                                    6................................. 6 GND
                                                    7................................. 7 GND
                                                    8................................. 8 GND
                                                    9................................... N/C
                                                    10................................ GND
                                                    11.......................... Monitor ID bit 0
                                                    12.......................... Monitor ID bit 1
                                                    13......................... 4 Horizontal Sync
                                                    14.......................... 5 Vertical Sync
                                                    15.................................. N/C
N/C representa no conectado. Algunos cable no incorporan los cables de Monitor ID bit 0,1 o 2. dependerá de el modelo de cable el conectarlos o no. Los Monitor Bit's son tres cable que se utilizan para enviar tres bits al ordenador con el id del dispositivo. Se conecta cada linea a masa para activar un bit. Montamos la carcasa del conector y lo probamos conectando la salida de vídeo externa a un monitor vga.
 Todo perfecto!
Si tenemos problemas en  los que el monitor no detecte el dispositivo podemos probar con diferentes configuraciones de Monitor bits, conectando o desconectando los pines 4,11 y 12 con masa. Otros monitores necesitan una resistencia entre cada señal de color y su masa,  se trataría de añadir tres resistencias de 100 ohmnios, una entre el pin 1 y 6, otra entre en 2 y 7, y otra entre 3 y 8. Cada linea de color con su respectivo retorno de masa.

Prueba Nintendo Family Fun Fitness

 En esta ocasión e comprado una alfombrilla de baile para la nintendo nes por ebay.
No dispongo de ningún juego compatible por lo que lo probaremos con el osciloscopio.
 Recordemos el pin-out del conector de mandos de nintendo.
 Un mando normal utiliza la linea de datos 1 pero este periférico utiliza las líneas de datos 3 y 4 del puerto de mandos de la NES, aquí vemos una captura donde, de arriba a abajo, la primera señal es de la linea de datos 3 por donde el periférico envía 8 bits con la información de el estado de ocho primeros botones
 La segunda señal es de la línea de datos 4, por aquí se envían los últimos cuatro botones.
Probamos como presionando cada botón cambia el estado en el osciloscopio.  Post con mas info sobre el funcionamiento del protocolo de comunicacion de 8 bits de nintendo clickar aqui.
 Nos hemos asegurado que todo funcione correctamente, el siguiente paso es probarlo en un juego real.

Reparacion amplificador de audio de 900w

 El equipo entro en el taller con solo uno de los dos canales de audio funcionando. El estado de mugre era superior a la media. Se procedio a reparar y restaurar el equipo con una buena limpieza y puesta a punto..
 Se reviso todo el equipo localizando tres transistores quemados dos resistencia y un diodo.
Se procedio a desmontar los disipadores de aluminio con los circutios que incorporan la etapa de amplificacion de cada canal y sustitucion de las piezas averiadas.
 En estas fotos se puede ver un antes y despues de limpiar el equipo.
Despues de una prueba el equipo es entregado al cliente.


Reparacion Tabla Mezclas Ecler Nuo-4

El equipo llego al taller presentando fallos en un fader y en 4 knobs rotatorios. Se desmonto por completo y se procedio a una limpieza a fondo como procedimiento habitual. Los conectores traseros de la salidas y entradas de audio estaban sucios y no proporcionaban buen contacto.
Se retiro la plancha metalica que cubria los faders... Despues la de la parte de knobs

En estas fotos se puede observar mejor las particulas de suciedad que se introducen en los potenciometros y faders causando crujidos y ruidos indeseados en el equipo.

Retirando la tapa trasera se accede a las placas de circuito impreso, faders, fuente de alimentacion y salida/entrada de audio trasera
Si clickais en las fotos se ampliaran, se puede observar que incluso las placas de circuito impreso por la parte de abajo presentan suciedad.
Estas fotos son una ampliacion de los knobs (potenciometros)
 Por ultimo se retira la placa de circuito frontal, Los cuatro fader, de los cuales uno fallaba y es sustituido por un recambio original.
 Se limpia todo a concienda, para lo cual lo ideal es una maquina de limpieza por ultrasonidos y para las piezas grandes agua y jabon debajo del grifo y un conveniente secado antes del montado y puesta en marcha del equipo. Se puede observar el cambio a la salida del taller.
 El equipo es devuelto al cliente en perfecto estado de funcionamiento y con una garantia de reparacion de 3 meses.

Reparacion equipo reproductor de DJ Pioneer CDJ-800

El equipo llego al taller presentando fallos en el boton de play y teniendo problemas al leer los cd's.
Viendo el estado de  suciedad en el que se encontraba decidimos desmontarlo y limpiarlo por completo.
Esta era la placa donde estaba montado el pulsador de Play, como se puede observar estaba llena de una sustancia pastosa, supongo concentrado de cubalibre.
 se limpio a fondo y se subtituyeron los switchs por unos nuevos.
La unidad lectora de cd's estaba tambien muy sucia y se procedio a desmontarla por completo y limpiar la lente y los engranajes de la bandeja.

 Si se hace zoom en la siguiente imagen se puede ver la suciedad de la lente.
 Esta es la bandeja de platico de la unidad lectora de cd's, se limpio a fondo con agua y jabon toda la estructura y se volvieron a colocar lo cables, la bandeja y el cabezal laser.
 Todo el equipo se desmonto por completo y se limpio pieza por pieza con agua y jabon, esta es la carcasa desnuda del equipo.
 Una vez todo montado el equipo fue entregado al cliente funcionando perfectamente.

Nes Controller Pad Bluethoot Hack (En Construccion)

Voy a comenzar un proyecto basado en el mando controlador de la consola Nintendo N.E.S
Primero conectaremos el pad al osciloscopio y veremos como funciona la comunicacion mando-consola.
Conectaremos en los pines de clock, latch y data1.
La primera Captura es sin ningun boton presionado:
La primera señal que encontramos en la imagen es la linea de Clock, que separa cada bit de informacion de la señal de datos.
Luego tenemos la linea de datos, que a cada pulso negativo de Clock, transmite un bit reflejando el estado de cada boton. Un estado alto representa un boton sin presionar y un estado bajo representa un boton presionado.
Y por ultimo la linea Latch que sirve para que el  integrado del pad lea el estado de los botones y los transmita por la linea de datos.
Y despues presionando un par de botones.
 Vemos como cuando se presiona un boton genera un pulso negativo en la linea de datos, en la posicion que le corresponde a cada boton. de izquierda a derecha: A, B, Select, Start,Up, Down, Left, Right.
Aqui tenemos el interior del mando:


El integrado que se encarga de realizar la comunicacion es un MC14021BCP Download Datasheet.
Para leer el estad del mando utilizare un ATTiny84 de atmel.
Instalamos el core tiny-arduino y configuraremos los timers del microcontrolador para emular la comunicacion con la nintendo y transmitir el estado de los botones a traves de un modulo bluethoot.
El codigo es el siguiente:

--------------------------Begin Code--------------------------------------------

#include <SoftwareSerial.h>
SoftwareSerial mySerial(8, 7); // RX, TX

int i=0;
int botones = 0;

void setup() {
  DDRA = (1<<DDA0) | (1<<DDA1) | (1<<DDA2) | (0<<DDA3) | (1<<DDA7);  
  startTimer();
  mySerial.begin(9600);
  mySerial.println("Hello, world?"); 

}

 void startTimer() {
    cli();           // disable all interrupts

    TCCR1A = 0;
    TCCR1B = 0;
    TCCR1C = 0; 
    TCNT1  = 0;

    OCR1A = 10;     // compare  register.
    TCCR1B = (1 << WGM12) | (2 << CS10);    // CTC mode and 256 prescaler 
    TIMSK1 |= (1 << OCIE1A);  // enable timer compare interrupt

    sei();             // enable all interrupts
  }

  ISR(TIM1_COMPA_vect) { 
    PORTA =  PORTA ^ B00000001;  // invierte el pin de salida
    i++;
    PORTA = PORTA ^ B00000001;  // invierte el pin de salida
    if(i==8){
      PORTA = PORTA ^  B00000010;  // invierte el pin de salida
      for(i=0;i<1;i++);
      i=0;
      PORTA = PORTA ^ B00000010;  
      comunica();
      botones =  0;    
    }
   botones = botones << 1;
   botones = botones + !digitalRead(3);
   }
  
  void comunica(){
   if((botones&128)==128) mySerial.println("A");  //Boton A
   if((botones&64)==64) mySerial.println("B");    //Boton B
   if((botones&32)==32) mySerial.println("E");    //Select
   if((botones&16)==16) mySerial.println("T");    //start
   if((botones&8)==8) mySerial.println("U");      //UP
   if((botones&4)==4) mySerial.println("D");      //Down
   if((botones&2)==2) mySerial.println("L");      //Left
   if((botones&1)==1) mySerial.println("R");      //Right
   
   //mySerial.println(botones);
  }
   
 void loop(){  }

---------------------------END CODE-----------------------------------

Al final del codigo vemos donde manda una letra para cada boton presionado.
Los timers se han configurado para leer el mando a la misma velocidad que si estubiera conectado a la consola.
Configuramos el modulo bluethoot en android y instalamos algun programa de terminal para conectarnos en la conexion serie.
Podemos comprobar como cada vez que presionamos cualquier boton del mando, imprime una letra en la conexion serie.
Falta por crear un programa que transforme la salida serie en teclas presionadas en el dispositivo.
EN CONSTRUCCION....