Hola A todos..
He estado estos días jugando de nuevo con el mundo de la electrónica.. asi he diseñado un Probador lógico basado en un pic 12F675,basandome en algunos diseños que he encontrado en la red, Este puede trabajar tanto con circuito TTL o CMOS.
Este equipo indica si el estado a medir es un estado logico Alto, Bajo, Pulso,tanto con una indicacion visual como sonora.
Ademas detecta cuando un estado es no valido o Alta impedancia (Punta de test en el aire. jajajaja)
Características. (Valor Aprox).
Alimentación de 3V (funciona pero si es mas 4Vmejor ) a 15V
TTL Estado Alto >2V (Led Rojo )
TTL Estado Bajo <0,8V (Led Verde)
CMOS Estado Alto >70%Vcc (Led Rojo )
CMOS Estado Bajo < 30%Vcc (Led Verde)
Cualquier otro estado es invalido
Pulso Freq >60Hz +- (valor obtenido de simulación en Proteus)..(led Naranja).
Diseñado utilizando Kicad Para creacion de Esquema y PCB.
El Amplificador a utlizar es LM358, para lo cual utilice un de tipo SMD.
Representacion 3D
Ademas este circuito lo programe el PIC 12F675 utilzando SDCC (Compilador de leguaje C open source, opera en gnu/linux y win), les dejo el codigo fuente, aunque aun debo realizarle algunas mejoras.
Espero Pronto realizar algunas mejor, como migrar el proyecto a un pic12F509 y programarlo en ASM, (ya mande a pedir un par de pic para probar ajajaj)..
Un Video que muestra como trabajar este cicuito.
http://www.youtube.com/v/ktmX0ghK1MA
Saludos
RiSanti
He estado estos días jugando de nuevo con el mundo de la electrónica.. asi he diseñado un Probador lógico basado en un pic 12F675,basandome en algunos diseños que he encontrado en la red, Este puede trabajar tanto con circuito TTL o CMOS.
Este equipo indica si el estado a medir es un estado logico Alto, Bajo, Pulso,tanto con una indicacion visual como sonora.
Ademas detecta cuando un estado es no valido o Alta impedancia (Punta de test en el aire. jajajaja)
Características. (Valor Aprox).
Alimentación de 3V (funciona pero si es mas 4Vmejor ) a 15V
TTL Estado Alto >2V (Led Rojo )
TTL Estado Bajo <0,8V (Led Verde)
CMOS Estado Alto >70%Vcc (Led Rojo )
CMOS Estado Bajo < 30%Vcc (Led Verde)
Cualquier otro estado es invalido
Pulso Freq >60Hz +- (valor obtenido de simulación en Proteus)..(led Naranja).
Diseñado utilizando Kicad Para creacion de Esquema y PCB.
El Amplificador a utlizar es LM358, para lo cual utilice un de tipo SMD.
Representacion 3D
Ademas este circuito lo programe el PIC 12F675 utilzando SDCC (Compilador de leguaje C open source, opera en gnu/linux y win), les dejo el codigo fuente, aunque aun debo realizarle algunas mejoras.
Código:
/*************************************************************************** */
/* Probelogic.c Diciembre del 2010 */
/*---------------------------------------------------------------------------*/
/* Probador Logico TTL/CMOS con Microcontolador Pic12F675 */
/*---------------------------------------------------------------------------*/
/* Ricardo Santibañez <risanti13@hotmail.com> */
/*---------------------------------------------------------------------------*/
/* Desarrolado con SDCC Y PIKLAB. */
/*****************************************************************************/
#include <pic12f675.h>
/* ----------------------------------------------------------------------- */
/* Bits de configuración: adapte los parámetros a su necesidad */
typedef unsigned int word;
word at 0x2007 CONFIG = _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _BODEN_OFF & _CP_OFF & _CPD_OFF;
void EstadoAlto();
void EstadoBajo();
void EstadoPulso();
void espera(char _ms);
void delay_ms(unsigned int ms);
unsigned char temp ,i;
void main() {
TRISIO=0x0c; //GPIO3 Y GPIO2 Como entrada
CMCON =0x07; //Deshabilito comparadores Analogico
ANSEL=0; // Desabilito ADC
OPTION_REG=0xB0; // Configuro Tmr0
while(1) //Bucle infinito
{
TMR0=254;
delay_ms(100); //Tiempo de Muestreo de Pulsos
if (T0IF) //Existe desbordamiento de TMR0
{
EstadoPulso(); // Se Detecto un Tren de Pulsos
T0IF=0;
}
else
{
temp=GPIO & 0x0c; //Aislar Solo GPIO3 Y GPIO2
switch (temp)
{
case 0x00:
EstadoBajo(); //Estado Logico 0
break;
case 0x0c:
EstadoAlto(); //Estado Logico 1
break;
case 0x04:
GPIO=0x00; //Estado No Valido
break;
}
}
}
}
void EstadoAlto()
{
GPIO=0x01; ////Led de Estado Logico 1
//Generacion de Sonido con un Buzzer
for (i=0;i<200;i++)
{
GPIO5=1;
espera(30);
GPIO5=0;
espera(30);
GPIO5=1;
espera(30);
GPIO5=0;
espera(30);
}
}
void EstadoBajo()
{
GPIO=0x10; ////Led de Estado Logico 0
//Generacion de Sonido con un Buzzer
for (i=0;i<200;i++)
{
GPIO5=1;
espera(33);
GPIO5=0;
espera(33);
GPIO5=1;
espera(33);
GPIO5=0;
espera(33);
}
}
void EstadoPulso()
{
GPIO=0x02; ////Led de Estado Logico Pulso
}
//*********Funciones de Retardo*********//
void espera(char _ms)
{
while (--_ms)
{
_asm
nop
_endasm;
}
}
void delay_ms(unsigned int ms)
{
while (ms > 0 )
{
espera(108);
ms--;
}
}
Espero Pronto realizar algunas mejor, como migrar el proyecto a un pic12F509 y programarlo en ASM, (ya mande a pedir un par de pic para probar ajajaj)..
Un Video que muestra como trabajar este cicuito.
http://www.youtube.com/v/ktmX0ghK1MA
Saludos
RiSanti