Problema de Proteus a protoboard pic 16f887

Hola, mucho gusto, soy nuevo en el foro.
Regularmente no pregunto hasta que he intentado varias cosas.

Bueno sin más les dejo mi duda, espero puedan ayudarme.

He simulado un circuito con proteus y funciona perfectamente, pero al momento de pasarlo al protoboard ya no funciona.
Pensé que era el protoboard o el pic, pero he comprado un pic nuevo y el soldado el circuito, pero ni así queda.
El bucle si lo agarra pero lo que no agarra son los push butons.

Lo que hace básicamente el código es, prenden unos led random en un rango del 0-7
luego da la opción de mandar una señal por el puerto b y seguidamente hace una suma en el puerto D y le da una salida diferente al a que tiene actualmente.
Código:
#include <16F887.h>
#include <stdlib.h>
#use delay(clock=4000000) 

void main(){
int8 display[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
int8 random;
int estado;
signed int8 i;
//signed int8 i=0;
estado=0;
srand(get_rtcc());
random=rand()%7;
i=random;

while(estado==0){

estado=1;

 
output_d(display[i]);
output_high(pin_c2);

delay_ms(500);
output_low(pin_c2);

while(estado==1){
      if(input_b() == display[i]){
         i++;
         if (i>7){
            i=0;
         }
         //random++;
         output_high(pin_c1);
         output_low(pin_c0);
         delay_ms(1000);
         estado=0;
      }else{
         output_high(pin_c0);
         output_low(pin_c1);
         estado=1;
      }
}
   }
}
Muchas gracias y espero su ayuda.
 

Adjuntos

  • Captura.jpg
    Captura.jpg
    96.7 KB · Visitas: 28
Última edición por un moderador:
He simulado un circuito con proteus y funciona perfectamente, pero al momento de pasarlo al protoboard ya no funciona.
Pensé que era el protoboard o el pic, pero he comprado un pic nuevo y el soldado el circuito, pero ni así queda.
Te falta agregar la palabra de configuración, sin eso el PIC no funcionará físicamente.
Veo que quieres usar el oscilador interno y no usar el pin 1 (MCLR/Vpp)

Modifica y agrega esto a tu código:
#fuses nobrownout, nomclr
#use delay(internal = 4MHz)


También te falta agregar resistencias pull-down en el puerto B
Como se trata de una simulación, seguramente omitiste las resistencias para los LED, pero las pull-down del puerto B si son necesarias para simular y también en el montaje del protoboard.

Suerte.
 
Última edición:
Te falta agregar la palabra de configuración, sin eso el PIC no funcionará físicamente.
Veo que quieres usar el oscilador interno y no usar el pin 1 (MCLR/Vpp)

Modifica y agrega esto a tu código:
#fuses nobrownout, nomclr
#use delay(internal = 4MHz)


También te falta agregar resistencias pull-down en el puerto B
Como se trata de una simulación, seguramente omitiste las resistencias para los LED, pero las pull-down del puerto B si son necesarias para simular y también en el montaje del protoboard.

Suerte.

Si amigo las resistencias si las puse en la proto pero solo la de los leds porque en los push estoy alimentando con usb es decir con 5 volts.Intento lo que me comentas y te aviso como me fue. Muchas gracias por la respuesta. :)
 
Si amigo las resistencias si las puse en la proto pero solo las de los leds porque en los push estoy alimentando con usb es decir con 5 volts.
Eso no tiene nada que ver, o no explicaste bien a que te refieres.
Aunque alimentes al PIC con los 5V del puerto USB, las tienes que poner.
Recuerda que las entradas mantienen un estado flotante y deben tener un estado lógico de referencia.
Si requieres activar las entradas con un 1 lógico, debes colocar resistencias hacia negativo (Pull-Down)
Y si requieres que las entradas se activen con un 0 lógico, debes colocar resistencias hacia positivo (Pull-Up)

Bajo cualquier circunstancia y fuente de alimentación, las entradas digitales siempre deben tener un voltaje de referencia.
Por ese motivo la mayoría de los PIC cuentan con resistencias pull-up internas que se pueden activar por software.
 
Hola amigo ya lo he probado, como me dices y no funciona, te mando como esta el circuito en la proto, perdona esque soy nuevo en esto de la electronica.
 

Adjuntos

  • 10437297_10203131918436548_537020861_n.jpg
    10437297_10203131918436548_537020861_n.jpg
    90.3 KB · Visitas: 33
  • 10154672_10203131916956511_1031406802_n.jpg
    10154672_10203131916956511_1031406802_n.jpg
    91.6 KB · Visitas: 27
Nop, ese montaje está muy mal.
No colocaste las resistencias pull-down que te mencioné y tampoco le pusiste resistencias limitadoras de corriente a los LED que están separados.

Espero que no se haya dañado el PIC por conectar los LED sin su resistencia limitadora.
Ponle una resistencia pull-down a cada pin que tenga pulsador y las resistencias a los LED y vuelve a probar.

Como comentario; ese modelo de protoboard tiene muchas fallas por falsos contactos.
Revisa bien la palabra de configuración con el programa que uses para grabar el PIC y por si acaso, coloca una resistencia de 4.7K o 10K en el pin 1 "Tengo dudas acerca de la inhabilitación del Master Clear"

Suerte.

PD.
¿De qué valor son esas resistencias que pusiste para la barra de LED?
 
Última edición:
Ya quedo amigo.El PIC no se daño debido a que solo le estaba metiendo 5 volts de corriente y además los puertos eran de salida y otorgan el voltaje a los leds, por eso no me preocupe de ponerle resistencias. Pero ya quedó amigo. No le había puesto las resistencias en los push botons. Por alguna razón no daba los ceros lógicos, le pregunte a un compañero de la facultad y me dijo que eran problemas de impedancias y que a el también le había sucedido y con eso lo soluciono, por eso el pic no reconocía los valores que le ponía. Al poner una resistencia de cualquier valos en las salidas del puerto B este reconoce los ceros lógicos de entrada. Muchas gracias amigo y un saludo.
 
Aclaremos algunas cosas.
No estás alimentando al PIC con 5V de corriente, estás alimentando al PIC con 5 Voltios y X corriente.
Corriente y Voltaje son dos cosas muy diferentes. (Estudia esto para conocer la diferencia)

Estudia también como funciona un Diodo Emisor de Luz (LED)
Si un LED normal funciona típicamente con 1.6V a 2.2V y con una corriente de 10mA. aproximadamente,
forzosamente es necesario que lleve una resistencia limitadora de corriente para no dañarlo.
Si no se dañó el PIC, bien se pudo haber dañado el LED (Bajo cortos periodos de tiempo podrían soportar 5V a 25mA.)

Lo que te dijo tu compañero acerca de problemas de impedancia, no es el caso.
Eso te lo mencioné claramente; se necesitan resistencias pull-up/down para mantener una referencia de voltaje.
Así que también estudia la diferencia entre impedancia, resistencia y voltajes de referencia con resistores pull-up/down.

Y sobre lo que mencionas acerca de que funciona poniendo una resistencia de cualquier valor...
Si que funcionará poniendo cualquier valor de resistencia que permita obtener los estados lógicos 1 y 0 cuando un pin de entrada sea llevado hacia VDD o VSS, pero aquí entran en juego nuevamente Voltaje y Corriente para determinar que valor de resistencia se necesita para que el pin de entrada responda correctamente cuando es un 1 o un 0, sin provocar consumos de corriente innecesarios o corto circuitos.

Todas las cosas tienen un motivo y un por qué.
No se trata de hacer pruebas al azar y decir; le puse esto y con eso funcionó.
La electrónica es algo complejo y mantener el mejor desempeño en un circuito es lo que lo hace funcionar bien.

Suerte y estudia lo que te mencioné, verás que al rato comprenderás lo que te dije.

Saludos.
 
HOla.

Tal como te mencionaron, el circuito está mal armado

Los LED no tienen resistencia, por lo que si les aplicas una tensión a "todo" el LED lo quemás, ya que la corriente no se limita por nada más que la resistencia de la pata que es despreciable.

El "bargraph" sí tiene resistencias y es probable que funcione.

Mala noticia: Tu PIC está quemado, los LEDs se quemaron y la corriente también circuló por el PIC, y es altamente probable que eso haya pasado. CAMBIALO!

Tus pulsadores quedan al aire, es decir, no fijan un estado lógico "firme" a la entrada del PIC, la cual es sensible a descargas electrostáticas presentes en el AIRE. Vos dejaste las entradas al AIRE, eso pasa cuando el pulsador no se presiona o sí (uno sólo de los 2 casos), por eso el PIC va a detectar 1 y 0 aleatorios en las distintas entradas.

Activa las resistencias de pull up del puerto y adaptá tu circuito, o ponele vos manualmente unas de pull down.

Y por último, una vez que hayas hecho esto, tu PIC se va a volver a quemar si la corriente total del puerto supera los 75mA. No hagas que a cada LED del bargraph le circule más de 8mA (ponele 5 que anda perfecto), calculando la resistencia adecuada.

Saludos, espero que hayas aprendido algo.
 
Atrás
Arriba