Acceso web de Sensores Analogicos para Raspberry Pi (parte 1)

Veremos diferentes circuitos para procesar señales analogicas con nuestra raspberry Pi


En un post anterior veíamos algunas de las posibilidades de  conexión de sensores digitales  a nuestra Raspberry Pi como puede ser añadir sensores I2C con el CI DS1820 , sensores de Co2 basados en el Mq4, sensores genéricos,sensores de presión con el BMP180,sensores de temperatura basados en el TMP102, sensores de proximidad basados en el VCNL 4000o  o los sensores de luminosidad basados en el  TSL2561.

Como todos sabemos  existen también una cantidad muy alta de sensores cuya salida no es digital , lo cual en principio no se podrían conectar directamente a nuestra Raspberry,pero esto no es exactamente así porque si podemos conectarlos por medio de convertidores A/D y D/A  como vamos a ver a continuación

 

PCA9685 PWM

pca9685.png

En efecto con este CI  que podemos comprar por unos 12€  en Amazon podemos ajustar el brillo por ejemplo de 12 leds mediante PWM o por supuesto también controlar hasta 12 servos con esta placa

El  circuito contiene un controlador PWM controlado por I2C con un reloj incorporado. A diferencia de la familia TLC5940, no es necesario enviar continuamente señales pues es gestionado  utilizando sólo dos pines para controlar 16 salidas PWM de funcionamiento libre e  incluso puede encadenar 62 salidas para controlar hasta 992 salidas PWM

Funciona a 5V, lo que significa que puede controlarlo desde 3,3V y seguir con seguridad hasta 6V salidas (esto es bueno cuando se desea controlar LEDs blancos o azules con 3,4+ voltajes hacia adelante)

Lleva 3 conectores de clavija en grupos de 4, así que usted puede enchufar 16 servos a la vez (los enchufes del servo son levemente más anchos de 0.1 “por lo que usted puede apilar solamente 4 al lado de uno a en 0.1”)
La  resolución es de 12 bits para cada salida – para servos, lo que significa una resolución de 4us a 60Hz

 

Un par de notas antes de comenzar:
  • Para agregar un actuador de luminosidad necesita un controlador PWM. Para este ejemplo vamos a utilizar un regulador de la entrada-salida de PCA9685 PWM. Este tutorial asume que usted ya tiene el PCA9685 conectado. Consulte el Tutorial de PCA9685 si necesita ayuda con la parte.
  • Asegúrese de que Raspberry Pi está apagado al conectar los cables.
  • Cuando utilice un cable de cinta GPIO, asegúrese de que está conectado el cable (es un color diferente que los otros) en la esquina de la Raspberry Pi y la parte superior de tu pastel de Pi.
  • El diagrama proporcionado es sólo un ejemplo de cómo conectar el sensor. Hay muchas maneras para conectar sensores y extensiones, así que trate de lo que funciona mejor para usted!
  • Algunos placas de prototipos tamaño completo (usados en los diagramas a continuación) tienen una linea de alimntación que se separa en el medio. Si este es el caso, asegúrese de que sus sensores están conectados en la misma mitad de la placa como tu pastel de Pi.

Use el siguiente diagrama para conectar un LED a su frambuesa Pi y ajustar su brillo mediante PWM.

Paso 1

Conecte uno de los pines PWM de la PCA9685 a lo LED, a través de un resistor conectado al cable (positivo) más. En este caso, utilizaremos canal 0 en el PCA9685.
Luminosity

Paso 2

Conecte tierra del canal 0 de la PCA9685 de los LEDs más corto (negativo).
Luminosity

Paso 3

¡Listo! Ahora puede Agregar el actuador de luminosidad a su panel de control, utilizando el canal 0 en el PCA9685 para ajustar el brillo de los LEDs.

TMP36

TMP36

Antes de comenzar,para poder utilizar un sensor análogo del tipo  TMP36  con la RP Pi tenemos que utilizar un convertidor de analógico a Digital. Para este ejemplo utilizaremos el MCP3008 para esta tarea. Este tutorial asume que usted ya tiene el MCP3008 conectado.

Use el siguiente diagrama para conectar un sensor de temperatura de analógico TMP36.

 

Paso 1

Conecte la energía eléctrica desde el  Pi al TMP36 pin 1 (+ VS).
TMP36

Paso 2

Conectar la tierra de la Pi al TMP36 pin 3 (GND).
TMP36

Paso 3

Conectar la clavija de TMP36 2 (VOUT) en uno de los 8 canales de la MCP3008. Para este ejemplo, CH0.
TMP36

Paso 4

¡Listo! Ahora puede añadir el sensor TMP36 al tablero de Cayenne, usando canal de la MCP3008  para leer el valor del sensor.

 

MCP3004

MCP3004

El  MCP3004  es  un conversor A/D de canales de 10 bits de resolución

Use el siguiente diagrama para conectar su Convertidor A/D de MCP3004 con interfaz en serie SPI.

Paso 1

Desde el pastel de Pi para alimentar el pin MCP3004 14 (VDD) y 13 (VREF).
MCP3004

Paso 2

Conectar la tierra de la Pi al MCP3004 pin 7 (DGND) y 12 (AGND).
MCP3004

Paso 3

Conectar patillas SCLK de la Pi y el MCP3004 11 (CLK).
MCP3004

Paso 4

Conectar patillas MISO de la  Pi y el MCP3004 10 (DUDA).
MCP3004

Paso 5

Conectar patillas MOSI de la Pi y el MCP3004 9 (DIN).
MCP3004

Paso 6

Conecte la clavija de la entrada de la selección de chip MCP3004 8 (CS/SHDN) a uno de los pines del chip select Pi, CE0 en este ejemplo
MCP3004

Paso 7

¡Listo! Ahora puede Agregar el convertidor de MCP3004 a tu panel de control usando el chip-select 0.

MCP3204

MCP3204

Use el siguiente diagrama para conectar su Convertidor de A/D MCP3204 con interfaz en serie SPI.

Paso 1

Desde  Pi puede alimentar el pin MCP3204 14 (VDD) y 13 (VREF).
MCP3204

Paso 2

Conectar la tierra del  Pi al MCP3204 pin 7 (DGND) y 12 (AGND).
MCP3204

Paso 3

Conectar patillas SCLK del Pi y la MCP3204 11 (CLK).
MCP3204

Paso 4

Conectar patillas MISO del Pi y la MCP3204 10 (MOSI).
MCP3204

Paso 5

Conectar patillas MOSI del Pi y la MCP3204 9 (DIN).
MCP3204

Paso 6

Conecte la clavija de la entrada de la selección de chip MCP3204 8 (CS/SHDN) a uno de los pines del chip select del Pi , CE0 en este ejemplo.
MCP3204

Paso 7

¡Listo! Ahora puede Agregar el convertidor MCP3204 a su panel de control usando el chip-select 0.

MCP3208

MCP3208

El  MCP3008  es  un conversor A/D de 8 canales de 10 bits de resolución

Use el siguiente diagrama para conectar su Convertidor A/D de MCP3208 con interfaz en serie SPI.

 

Paso 1

Desde el  Pi alimentar el pin MCP3208 16 (VDD) y 15 (VREF).
MCP3208

Paso 2

Conectar la tierra del pastel de Pi al MCP3208 pin 9 (DGND) y 14 (AGND).
MCP3208

Paso 3

Conectar patillas SCLK del  Pi y el MCP3208 13 (CLK).
MCP3208

Paso 4

Conectar patillas MISO del  Pi y el MCP3208 12 (MOSI).
MCP3208

Paso 5

Conectar patillas MOSI del Pi y el MCP3208 11 (DIN).
MCP3208

Paso 6

Conecte la clavija de entrada MCP3208 chip select (CS/SHDN) de 10 a uno de los pines del chip select del Pi , CE0 en este ejemplo.
MCP3208

Paso 7

¡Listo! Ahora puede Agregar el convertidor de MCP3208 a su panel de control usando el chip-select 0.

MCP3008

MCP3008

El  MCP3008  es  un conversor A/D de 8 canales de 10 bits de resolución  de bajo coste (6€)

Use el siguiente diagrama para conectar su convertidor A/D de MCP3008 con interfaz en serie SPI.

Paso 1

Desde el Pi alimentar el pin MCP3008 16 (VDD) y 15 (VREF).
MCP3008

Paso 2

Conectar la tierra del Pi al MCP3008 pin 9 (DGND) y 14 (AGND).
MCP3008

Paso 3

Conectar patillas SCLK del Pi y el MCP3008 13 (CLK).
MCP3008

Paso 4

Conectar patillas MISO del  Pi y el MCP3008 12 (MOSI).
MCP3008

Paso 5

Conectar patillas MOSI del  Pi y el MCP3008 11 (DIN).
MCP3008

Paso 6

Conecte la clavija de entrada MCP3008 chip select (CS/SHDN) de 10 a uno de los pines del chip select Pi Zapatero, CE0 en este ejemplo.
MCP3008

Paso 7

¡Listo! Ahora puede Agregar el convertidor de MCP3008 a su panel de control, usando el chip-select 0.

ADS1115

ADS1115

El  ADS1115 es un convertidor A/D de alta resolucion de 16 bits de 4 canales de un coste muy contenido (unos 4,25€).

El ADS1115 le permite seleccionar esclavo diferentes direcciones para el convertidor. Para este ejemplo usaremos 0x48.

Use el siguiente diagrama para conectar su convertidor A/D de ADS1115.

 

Paso 1

Desde el Pi para alimentar el ADS1115.
ADS1115

Paso 2

Conectar la tierra del  Pi a la ADS1115.
ADS1115

Paso 3

Conecte los pines SCL de la ADS1115   a la  Pi.
ADS1115

Paso 4

Conecte las clavijas SDA de la ADS1115 de  la Pi.
ADS1115

Paso 5

Conecte los pines GND y ADDR en la ADS1115. Esto resultará en una dirección de I2C del 0x48.
ADS1115

Paso 6

¡Listo! Ahora puede Agregar el convertidor de ADS1115 en el tablero de Cayenne, con dirección por defecto de 0x48.

ADS1015

ADS1015

Hablamos del ADS1015  un conversor  A/D de 12 bits  de 5 canales .El ADS1015 le permite seleccionar esclavo diferentes direcciones para el convertidor. Para este ejemplo usaremos 0x48.

Use el siguiente diagrama para conectar su convertidor A/D de ADS1015.

 

Paso 1

Desde el pastel de Pi para alimentar el ADS1015.
ADS1015

Paso 2

Conectar la tierra del  Pi a la ADS1015.
ADS1015

Paso 3

Conecte los pines SCL de la ADS1015 a la Pi.
ADS1015

Paso 4

Conecte las clavijas SDA de la ADS1015 a la  Pi.
ADS1015

Paso 5

Conecte los pines GND y ADDR en la ADS1015. Esto resultará en una dirección de I2C del 0x48.
ADS1015

¡Listo! Ahora puede Agregar el convertidor de ADS1015 en el panel de Cayenne, con dirección por defecto de 0x48.

 

MCP23018

MCP23018

El MCP23018 es un convesor A/D de 12bits de 4 canales  de alta precisión .Use el siguiente diagrama para conectar su MCP23018 IO expansor.

Paso 1

Alimentar 5V desde el zapatero de Pi a VDD (pin 11) en el MCP23018.
MCP23018

Paso 2

Conectarse tierra del Pi el VSS (pin 1) en el MCP23018.
MCP23018

Paso 3

Conectar los pines SCL de la MCP23018 (pin 12)  de su Pi.
MCP23018

Paso 4

Conecte las clavijas SDA de la MCP23018 (pin 13)  a la  Pi.
MCP23018

Paso 5

Alimentar el reset (pin 16) en el MCP23018. Tira de alta Reset es necesario para el funcionamiento normal.
MCP23018

Paso 6

Conectar toma de tierra al pin de dirección (pin 15) en el MCP23018. Esto le dará el expansor de una dirección predeterminada de 0 x 20.
MCP23018

Paso 7

¡Listo! Ahora puede Agregar el MCP23018 en el panel de Cayenne, con dirección por defecto de 0 x 20.

No se preocupe  hay muchos mas posibilidades  que hablaremos en proximos post

IoT con Raspberry Pi sin escribir código

veremos como conectar un sensor de temperatura a una Raspberry pi


 

En este ejemplo vamos a ver lo facil qeu es configurar un sensor de temperatura:el DS18B20  usando el agente de Cayenne .

Todo lo que necesita hacer es configurar el circuito y tenerlo conectado a la Pi,el cual es bastante sencillo pues  se usa un bus de 1hilo cuyo diagrama del circuito viene a continuación. También se puede agregar un LED al pin # 17 con una resistencia de 100 ohmios al carril de tierra.
Raspberry Pi Diagrama de Sensor de Temperatura
Ahora cuando lo conecte  si tiene instalado el agente de Cayenne  el sensor sera detectado automáticamente y agregado al  tablero de mandos. Lo que es bastante bueno sin embargo, si no se agrega automáticamente, entonces tendrá que agregar manualmente. Para agregarlo manualmente, haga lo siguiente.

  1. Ir a añadir en la esquina superior izquierda del tablero de instrumentos.
  2. Seleccione el dispositivo en el cuadro desplegable.
  3. Encuentre el dispositivo, en este caso es un sensor de temperatura DS18B20.
  4. Agrega todos los detalles del dispositivo. En este caso necesitará la dirección de esclavo para el sensor. Para obtener la dirección de esclavo introduzca lo siguiente en el terminal de Pi.
    cd /sys/bus/w1/devices ls
  5. La dirección del esclavo será similar a esta 28-000007602ffa . Simplemente copie y pegue esto en el campo de esclavo dentro del panel de Cayenne.
  6. Una vez introducida seleccione sensor de complemento.
  7. El sensor debe aparecer ahora en el tablero de instrumentos.
  8. Si necesita personalizar el sensor, presione el diente y aparecerá algunas opciones.
  9. También puede ver estadísticas / gráficos. Por ejemplo, el sensor de temperatura puede trazar datos en tiempo real y mantendrá los datos históricos también.

Si también desea agregar un LED que pueda encender y apagar a través del tablero de instrumentos, siga las siguientes instrucciones.

  1. Ahora vamos a agregar un dispositivo más. Excepto que éste será un LED.
  2. Vuelva tan para agregar el nuevo dispositivo.
  3. Ahora busque la salida digital y selecciónela.
  4. Para este dispositivo seleccione su Pi, tipo de widget es el botón, el icono puede ser lo que quieras, y luego seleccione integrado GPIO. Finalmente, el canal es el pin / canal al que está conectado nuestro LED. Para este ejemplo es el pin # 17. (Esta es la numeración GPIO de los pines).
  5. Ahora presione el botón add sensor.
  6. Ahora puede girar el pin GPIO alto y bajo desde el tablero de mandos y también utilizarlo en un disparador.
  7. Ahora estamos listos para crear nuestro primer gatillo.

Ahora debería tener dos dispositivos en el tablero de mandos que deberían verse así.
Dispositivos añadidos

Configuración de su primer  trigger

Los disparadores en Cayenne son una forma de hacer que tu pi reaccione a un cambio en el Pi mismo oa través de un sensor conectado a él. Esto podría ser algo tan simple como una temperatura superior a un cierto valor o incluso sólo su Pi va fuera de línea. Como se podría imaginar esto puede ser muy poderoso en la creación de dispositivos inteligentes que reaccionan a los alrededores. Por ejemplo, si la habitación se pone demasiado fría, encienda el calentador.

El proceso de agregar un disparador es súper simple como vamos a ver aontunuacion:

  1. Ir a añadir en la esquina superior izquierda del tablero de instrumentos.
  2. Seleccionar un trigger desde el cuadro de abajo.
  3. El nombre de su gatillo, voy a llamar a la mía “demasiado caliente”.
  4. Ahora arrastrar y soltar su Frambuesa Pi desde la esquina izquierda en el caso de la caja.
  5. Por debajo de esto seleccionar el sensor de temperatura y tienen casilla junto a “por encima de la temperatura” seleccionado. (Si las opciones del dispositivo no se muestran simplemente actualizar la página)
  6. Ahora en el cuadro de selección a continuación, notificación y agregar una dirección de correo electrónico o número de teléfono de un mensaje de texto (puede agregar ambos).Asegúrese de marcar las casillas de verificación también.

Dispara demasiado caliente

  1. Ahora haga clic en “Save trigger”.
  2. Ahora se debe guardar y le enviará una alerta cada vez que el sensor de temperatura es más de 40 grados Celsius.
  3. También puede arrastrar el Raspberry Pi en el cuadro a continuación, y tienen que hacer muchas cosas, incluyendo el control de los dispositivos de salida. Por ejemplo, en mi circuito tengo un LED que se activará cuando la temperatura supere los 40 grados Celsius.
  4. Para hacer clic en el gatillo de disparo LED de nueva situada en la parte superior de la página. Nombre esta activar el gatillo LED.
  5. Ahora arrastrar el Pi en el caso de la caja y luego seleccione el sensor de temperatura de nuevo con 40 grados centígrados por encima.
  6. Ahora arrastrar el Raspberry Pi en cuadro a continuación. Seleccione nuestra salida digital y marque la casilla de verificación activada.
  7. Ahora haga clic en Save trigger.
  8. Ahora, cada vez que nuestro sensor de temperatura conectado al Pi informe una temperatura superior a 40 grados Celsius, enviará un correo electrónico y encenderá el LED.También necesitarás agregar otro disparador para apagar el LED cuando caiga por debajo de los 40 pero lo dejaré por ahora y pasaré a eventos.

Mydevices cayennem Disparadores

Eventos

Los eventos en Raspberry Pi Cayenne son algo similar a los desencadenantes, pero son dependientes del tiempo en lugar de confiar en un cambio en un sensor o el propio dispositivo. La configuración de un evento es bastante fácil,asi que por ejemplo vamos a ver cómo configurar su Pi para reiniciarla una vez al mes.

  1. Ir a añadir en la esquina superior izquierda del tablero de instrumentos.
  2. Seleccionar evento en el cuadro de abajo.
  3. Ahora debería ver una pantalla con un calendario y un popup llamado nuevo evento.
  4. Ingrese los detalles de su evento. Por ejemplo, la mina se llama reinicio mensual y sucederá el primero de cada mes a las 2am. A continuación se muestra un ejemplo de la pantalla.

Cayenne eventos con detalles

  1. Una vez hecho esto, haga clic en Guardar.
  2. Ahora debería poder ver su evento en el calendario. Simplemente haga clic en él si desea editarlo.

Como usted podría imaginar los acontecimientos pueden ser bastante poderosos así que valdría la pena de mirar en éstos más. Un buen ejemplo de uso de eventos sería si necesita algo para ejecutar o encender. Otro ejemplo es algo como luces que necesitan ser encendidas en un momento específico.

Panel GPIO

El panel GPIO en Cayenne  le permite controlar y alterar los pines en el Pi.Por ejemplo, puede convertir un pin de ser una entrada a una salida y viceversa. También puede activar los pines de salida bajos y altos.
Panel Cayenne GPIO
Como se puede ver también hace que una gran hoja de referencia si necesita volver a ver y ver qué pins son los que necesita. También puede ver los dispositivos que están actualmente asignados a pines específicos. También puede ver el estado actual de un pin. (Por ejemplo, entrada o salida y baja o alta)

Escritorio remoto

Se puede conectar a la  Pi a través de Secure Shell o tambien   con VNC. Si ha  instalado cayenne también puede escritorio remoto a su Raspberry Pi a través del navegador web o a través de la aplicación móvil. Puede hacerlo simplemente haciendo lo siguiente.

  1. En el tablero de mandos encontrar el widget que dice “comandos”.
  2. Dentro de este widget haga clic en acceso remoto.
  3. Ahora se conectará al Pi y abrirá una nueva ventana. Si una nueva ventana no abre su navegador probablemente lo bloqueó. Simplemente permita que cayenne.mydevices abra nuevas pestañas.
  4. Una vez hecho usted puede controlar su Pi como si estuviera allí con él.
  5. Uno de los profesionales con el uso de Cayenne para escritorio remoto es que se puede acceder a ella en cualquier parte del mundo con bastante facilidad en lugar de la necesidad de configurar una VPN o abrir los puertos de su red.

Sin duda es un ejemplo muy sencillo pero que demuestra la gran potencia del agente de Cayenne para aplicaciones de IoT con su Raspberry Pi

 

Fuente   aqui

Grabador de EPROM para Nintendo


 La tendencia actual en muchos  equipos electrónicos es que estos se asemejan cada día mas a las ordenadores, pues televisores de última generación (LCD’s, retroproyectores, etc.),televisores, equipos de audio, DVD, cámaras digitales, reproductores de mp3 ,teléfonos,etc   incorporan en su electronica , memorias  con el software grabado en su interior..Es así como en los electrodomésticos actuales se incluye unos circuitos de memoria del tipo EEPROM los cuales en su gran mayoría manejan la serie 24XX , 93Cxx pero también memorias clásicas memorias  como son las  estándar 27C64 y 27C128.

Muchas de los fallos que presentan los equipos electrónicos,  donde también incluimos casi todos los antiguos juegos en formato cartucho, se deben a problemas en las memorias EEPROM que utilizan.

En efecto, una memoria puede resultar dañada y dejar de funcionar correctamente, pero en la mayoría de los casos, el problema es que se ha alterado o perdido su contenido o información binaria, es decir, los datos que tenía grabados en su interior. Eso es lo que mayormente provoca fallos de funcionamiento en el equipo que  la utiliza.

Lo interesante es que reescribiendo el contenido original de la memoria, ya sea en la misma o en una nueva, el mal funcionamiento del equipo desaparece y la avería queda resuelta.Ademas no solo nos podemos limitar a copiar el contenido origina, pues adelantándonos  un paso más incluso podemos incluso cambiar el contenido original por otro que nos interese.

El autor del programador  que vamos ver, Robson Couto, tomó la decisión de fabricarse su propio cartucho  cuando se compró una consola SNES, descubriendo   al poco tiempo que la mayoría de los cartuchos que se venden  actualmente para esta consola  supuestamente “originales” en realidad no lo son pues  tienen la ROM cambiada y los vendedores  pretenden cobrarlo a precio original  sin por supuesto carecer de los derechos del software original .

cartucho.png

Couto , molesto con esta actitud ,entendió que se no deberia  sobrevalorar algo que en esencia no es demasiado licito  pues no se puede vender  software  del que no se posee  licencia, por muy antiguo que sea,  así  que  decidió  crear  sus propios cartuchos usando para ello su Arduino Mega para programar la memoria EEPROM,   que es realmente la memoria donde se almacena el juego  dentro de cada cartucho.

Para gestionar la grabación de la EEPROM con su Arduino, eligió el lenguage  Python  para hacer el programa de grabación  de las memorias EEPROM , las cuales, por cierto se pueden encontrar por un módico precio en ebay.

Robson ha necesitado hacer bastante trabajo de programación e ingeniería inversa para conseguirlo, pero finalmente lo consiguió   y ha  decidido compartirlos con toda la comunidad  tanto los esquemas del circuito como sobre todo  el software que permite hacerlo funcionar.

¿Cómo se fabrican los cartuchos de repro (normalmente) que hay disponibles en el mercado?

  1. Se busca  un cartucho de juego aburrido (deportes especialmente);
  2. Se graba una EPROM con el archivo ROM deseado;
  3. Se cambia la ROM del cartucho con la ROM programada.

Bien, pero entonces ¿por qué no todos están haciendo sus propias repros ?

Pues por el precio , dado que un programador no es tan barato,ya que incluso los chinos tampoco lo son ( ademas  dependiendo del lugar habra que pagar impuestos,etc)

Todo tiene una relación costo-beneficio y los fabricantes / hackers están siempre creando herramientas super útiles con materiales baratos. En 2014, se fijo el cartucho de  Mega Drive  utilizando chips  BIOS que se encuentran en la chatarra. Escribir memoria flash no es trivial, hay un cierto algoritmo, pero sigue siendo un proceso relativamente simple, asi que escribir en una memoria EPROM no debería ser mas complicado.

El programador

Una EPROM también es una memoria,y en realidad es aún más fácil de programar que las memorias flash. Para escribir un byte en EPROM tenemos que seguir lo siguientes pasos:

  1. Seleccione la dirección a través de los pines A0, A1, A2 … y así sucesivamente
  2. Poner el byte de datos para ser escrito en Q0 pines, Q1, Q2 … etc,
  3. Dar un pulso de al menos 50ms  con una tensión de  13V en el pin Vpp
  4. Repetir el proceso para toda la memoria  ( en caso de de la eprom 27C801  son  8 * 1024 * 1024 = 8388608 direcciones)
  5. También, debe ser observado que el Eprom necesita ser alimentado 6V cuando está programado(motivo por el que se ha incluido  un  interruptor en el esquema de mas abajo aunque se puede utilizar  en su lugar  un simple puente simple y cambiar manualmente Vcc cuando era necesario).

 

Para continuar es sumamente interesante comprender el pinout de una memoria típica  con las típicas señales de control : VSS,Enable y GVPP

27c801

 

Los 13 voltios son proporcionados por un módulo de refuerzo ( boost) que puede conseguirse ya montado el cual básicamente es un convertidor DC-DC de 5V a 12V, pero claramente se puede usar una simple fuente de 12 voltios,aunque esto hará necesario conexiones externas al montaje

De la salida de 13V del modulo Boost , gracias a un regulador LM317  y dos resistencias de 1K  ajustable y una de 220 ohmios  , podemos obtener los 6V para alimentar el circuito en modo programación ,aunque claramente también se podría  haber optado por  un simple LM 7806 , regulador que como sabemos no necesita ajustes.

Por ultimo ,para conmutar la señal de programación G/VPP que conectaremos al pin 24 del zocalo ZIF necesitamos dos circuitos  de conmutación cuyas salidas  conectaremos a dicho pin. Ambos circuitos están  basados en dos transistores de pequeña señal NPN y  PNP (por ejemplo BC557 para el PNP y un BC547pra NPN) alimentandos por 13v y 5V respectivamente usando como señales de control las señales 3(13V) y 5(5v) del Arduino Uno

A continuación se muestra el esquema final del programador:

grabador

Como vemos el circuito gira alrededor de un zocalo ZIF de inserción nula para que no dañe las patas de la EPROM , y  se conectan  30  pines del Arduino  UNO  al  bus de direcciones  de 20 bits (son los pines numerados con A0 ,A1,,..A19)  y el bus de datos de 8 bits  (son los pines numerados con q0,q1,..q7)  de  la EEPROM.

Las conexiones que se usan en este circuito son casi todas las salidas binarias del bus de expansión del Arduino Mega:

arduino-uno

Las conexiones entre el zocalo ZIF y el arduino Mega utilizadas son las siguientes:

27c801

ARDUINO MEGA

1-A19 39
2-A16> 40
3-A15 37
4-A12 34
5-A7 29
6-A6 28
7-A5 27
8-A4 26
9-A3 25
10-A2 24
11-A1 22
12-A0 5
13-Q0 5
14-Q1 6
15-Q2 7
16-VSS GND
17-Q3 8
18-Q4 9
19-Q5 10
20-Q6 11
21-Q7 12
22-ENABLE(NEGADO) 2
23-A10
24-G/vPP VER CIRCUITO
25-A11 33
26-A9 31
27-A8 30
28-A13 35
29-A14 36
30-A17 41
31-A18 38
31/VCC 5V ó 6V

 

 

El montaje podemos soldarlo  directamente  en un escudo de prototipos para un Arduino Mega que enchufaremos encima del propio Arduino

Como comentábamoses muy interesante usar  un zócalo ZIF, lo cual hará mas facil   conectar  y quitar la Eprom.

 

Software

Obviamente el circuito montado sin sw no podemos hacer nada , así que el autor ha escrito tanto un script ,como un sketch para ayudar a la lectura o grabacion de la Eeprom usando para ello un  script en  Python que lee los datos de un archivo y los nvía estos al Arduino Mega, que recibe los datos y los escribe en la memoria

Python 3 y pyserial son necesarios para cargar datos a la eprom pues como vemos el sw en realidad se compone de dos partes:

  • El script en python para leer el fichero  y enviarlo al Arduino por el puerto serie  y también para leer el contenido de la EEPROM via peticion al Arduinoi
  • Un sketch  para  Arduino para permitir leer y escribir en  la Eeprom, donde como hemos comentado ,para la programación, se debe aplicar un vpp de 12V y un vcc de 6V a la eprom

Los archivos del proyecto están disponibles en el repositorio de github del autor.

Ahora usted ya sabe que puede programar EPROMS con sólo un Arduino Mega y algunos componentes adicionales( y no se preocupe si se equivoca,!pues  puede borrarlos simplemnte liberando la ventanita y exponiendo esta  con luz UV ! )

 

Fuente aqui