Probador Logico TTL/CMOS con PIC12F675 y SDCC

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.




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
 
Muy funcional tu proyecto, me hizo recordar cuando construí el mio, aunque es mas grande (hecho con circuitos 74LSXX) pero tiene las mismas funciones, incluso dispone de un contador para inyectar conteos en el circuito bajo prueba...
Consideraré el actualizarlo por este que aportas (El acabado esta muy bien).
Saludos
 
Hola
Te felicito por tu trabajo, pero se puede simplificar bastante este circuito sin utilizar los amplificadores operaciones.
Perfectamente se puede realizar con el pic, 3 led, una resistencia de 10K y una resitencia de 470 Ohm para los 3 led.
 
Hola
Te felicito por tu trabajo, pero se puede simplificar bastante este circuito sin utilizar los amplificadores operaciones.
Perfectamente se puede realizar con el pic, 3 led, una resistencia de 10K y una resitencia de 470 Ohm para los 3 led.

Si hubiera sido bueno usar los comparadores internos del PIC, pero en general esta muy bueno, te felicito, chauuuuuuuuuu

(y) (y) (y) :aplauso: :aplauso: :aplauso:
 
Hola.. a todos.
yo igual pense usar los comparadores internos del pic, sin embargo lo quize que este pudiera ser compatible con los niveles logicos para los IC CMOS , por lo cual use el lm358, alimentado directamente del vcc del circuito a revisar.
para asi poder determinar cuando

CMOS Estado Alto >70%Vcc (Led Rojo )
CMOS Estado Bajo < 30%Vcc (Led Verde)

Mas que nada por eso use un Ao externo... usar directamente el pic, solo me serviria para niveles ttl .
Por ejemplo si quiero revisar un circuito cmos alimentado con 12V, directamente el pic no me sirve,segun mi punto de vista..



Saludos
RiSanti
 
Última edición:
Hola a todos, aqui dejo las fuentes de este proyecto.

Saludos a todos, ojala que logren construir este proyecto.

atte
RiSanti
 

Adjuntos

  • Probelogic.rar
    19.1 KB · Visitas: 172
Buenas tardes a todos.
Soy nuevo en el foro y a pesar que mi profesion no es como acorde a la electronica, envidio las cosas que ustedes hacen, de verdad dejenme felicitarlos por tan maravillosos aporte.
Quisiera de algun modo si pueden colaborarme con las imagenes de los diagramas de este post no logro abrir los vinculos.
Gracias
 
Me gustó, pero cambiaría lo de los LEDs por uno bicolor (para ahorrar espacio y $) y la sección:
Código:
void EstadoPulso()
{
GPIO=0x[B]11[/B]; 	////Led de Estado Logico Pulso (bicolor en naranja)
}
A ver si lo construyo ya que tengo un 12F675 y no se me ocurre en que usarlo.

ARKI1977, no se que problemas tengas por que yo los abro perfectamente.
 
Última edición:
No tengo eso, pero de todas formas tengo que rediseñarlo por que el LM358 en SMD no lo consigo aquí y por lo del LED bicolor.

Gracias Nuyel por tu respuesta, por aca tratare de adelantar algo.
Quisiera saber si me puedes despejar de dos dudas que tengo conforme al diagrama
1.El regulador 78xx no lo logro identificar en la imagen 3d del proyecto:aprecio como un "transistor" en su lugar sin embargo en caso tal que valor debería tener?
2.el switch de posición CMOS-TTL en el pin 1 está desconectado debería estar asi.
Disculpa tanta molestia.
Saludos
 
El interruptor esta bien, lo del regulador es probablemente un 78L05 (5V 100mA viene en encapsulado TO-92 como un transistor de pequeña señal).
 
Amigo Nuyel...
Cuentame como vas con el proyecto?..yo pues por el poco tiempo disponible estoy aun en el rediseño del diagrama pues no encuentro el LM 358 de la forma que Risanti lo emplea en el circuito...aunque pude ver ya todas las imagenes que estaban bloqueadas no logro ni con "lupa" ver los valores de los componentes seria mucha molestia si me colaboraras con esto...he tratado de contactarme con el autor del proyecto pero me ha sido imposible!!!!
saludos.
 
Disculpa es que analizando el circuito creo que puede mejorarse un poco pero estoy de viaje y no se cuando regrese para tomar el PIC y experimentar, como sea los valores creo son
R1 = 22
R2, R3, R6 = 33kΩ :confused:
R4, R5 = 22kΩ
R7 = 100kΩ
R8, R9= 1kΩ
D1 = 1N4001
D2, D3 = 5.1V

R10, R11, R12 = no las marca pero 330Ω o 470Ω

Por como veo el circuito el LM358 solo se usa como comparador así que podría adaptar a un LM393 (con eso se elimina la necesidad de los zener, de hecho es prácticamente innecesario D3 por la protección interna del PIC a menos que la alimentación supere los 25V) o usar solo el LM358 como buffer y realizar las comparaciones usando el ADC del 12F675 con lo cual podría reducir el circuito un poco, mas tarde públicos dos propuestas para esto.
 
Hola Nuyel....
Gracias por los datos ...ya me estaba quebrando la retina tratando de ver los valores jeje, pero esta semana por lo menos el proyecto de Risanti lo terminare de armar para postearlo comentarte como me fué.
Espero tambien las mejoras que le puedas hacer al proyecto seria un magnifico aporte.
Saludos.
 
Atrás
Arriba