Haz una pregunta
  Foros de Electrónica » Diseño analógico » Diseño de circuitos en general
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

07/05/2015 #1


Duda en circuito con pic de "organo electronico"
Buenos dias compañeros de grupo
hace un par de semanas me dejaron hacer un "organo electronico"
el programa consiste a travez del puerto b0 a b6 matar una determinada frecuencia
por A0.

El programa funciona correctamente , es mas simula en proteus
El problema viene al momento de armarlo en el protoboard, no entiendo porque no
logro escuchar nada.

Agradeceria si me pudiesen guiar en que me estoy equivocando
aclaro que lo he probado con transistores y sin transistores a la salida
sin obtener resultados

Código:
#include <16f628A.h>
#FUSES XT,NOWDT
#USE delay (clock=4M) //frecuencia del cristal 4 Mhz

#DEFINE ENTRADA0 PIN_B0
#DEFINE ENTRADA1 PIN_B1
#DEFINE ENTRADA2 PIN_B2
#DEFINE ENTRADA3 PIN_B3
#DEFINE ENTRADA4 PIN_B4
#DEFINE ENTRADA5 PIN_B5
#DEFINE ENTRADA6 PIN_B6
#DEFINE SALIDA PIN_A0

VOID MAIN()
{
SET_TRIS_B(0B00000000);//CONFIGURA EL PUERTO B 1ENTRADAS Y 0 SALIDAS
SET_TRIS_A(0B11111111);//CONFIGURO EL PUERTO C EN ESDTE CASO TODOS SALIDA
output_b(0b0000000000);



WHILE (TRUE)

{
if(INPUT(ENTRADA0)==1)
{
OUTPUT_HIGH(SALIDA);
DELAY_MS(62);
}
if(INPUT(ENTRADA1)==1)
{
OUTPUT_HIGH(SALIDA);
DELAY_MS(125);
}
if(INPUT(ENTRADA2)==1)
{
OUTPUT_HIGH(SALIDA);
DELAY_MS(250);
}
if(INPUT(ENTRADA3)==1)
{
OUTPUT_HIGH(SALIDA);
DELAY_MS(500);
}
if(INPUT(ENTRADA4)==1)
{
OUTPUT_HIGH(SALIDA);
DELAY_MS(1000);
}
if(INPUT(ENTRADA5)==1)
{
OUTPUT_HIGH(SALIDA);
DELAY_MS(2000);
}
if(INPUT(ENTRADA6)==1)
{
OUTPUT_HIGH(SALIDA);
DELAY_MS(2551);
}

else
 {
OUTPUT_LOW(SALIDA);
}

}
}
07/05/2015 #2


En la protoboard la patilla MCLR la tienes conectada a tensión o al aire? conectalo a la tensión o sino añade en el programa #fuses NOMCLR
07/05/2015 #3


Fuentes84 dijo: Ver Mensaje
En la protoboard la patilla MCLR la tienes conectada a tensión o al aire? conectalo a la tensión o sino añade en el programa #fuses NOMCLR
si esta conectado
07/05/2015 #4


El transistor darlington no necesita una resistencia de base en la salida de RA0?
07/05/2015 #5

Avatar de jsemari

Y yo quitaría la del colector, ¿no?. Y con un solo transistor debe funcionar, no hace falta un darlington
07/05/2015 #6

Avatar de Ardogan

¿El buzzer es piezoeléctrico o electromecánico/magnético?
07/05/2015 #7

Avatar de Gudino Roberto duberlin

Hola, sucede que intentas usar el puerto B cómo entrada, pero lo declaras cómo salida. Las entradas no tienen resistencias pull-dn.
Un voltímetro, no funciona en un circuito serie. Utiliza el altavoz en el colector si es piezoeléctrico. Si es del tipo electrodinámico, utiliza una resistencia de carga en colector y desacopla el altavoz con un condensador.
07/05/2015 #8


Gudino Roberto duberlin dijo: Ver Mensaje
Hola, sucede que intentas usar el puerto B cómo entrada, pero lo declaras cómo salida. Las entradas no tienen resistencias pull-dn.
Un voltímetro, no funciona en un circuito serie. Utiliza el altavoz en el colector si es piezoeléctrico. Si es del tipo electrodinámico, utiliza una resistencia de carga en colector y desacopla el altavoz con un condensador.
nuevamente mi codigo editado y diagrama
ahora mo me funciona ni en isis

Código:
#include <16f628A.h>
#FUSES XT,NOWDT
#USE delay (clock=4M) //frecuencia del cristal 4 Mhz

#DEFINE ENTRADA0 PIN_B0
#DEFINE ENTRADA1 PIN_B1
#DEFINE ENTRADA2 PIN_B2
#DEFINE ENTRADA3 PIN_B3
#DEFINE ENTRADA4 PIN_B4
#DEFINE ENTRADA5 PIN_B5
#DEFINE ENTRADA6 PIN_B6
#DEFINE SALIDA PIN_A0

VOID MAIN()
{
SET_TRIS_B(0B11111111);//CONFIGURA EL PUERTO B 1ENTRADAS 
SET_TRIS_A(0B00000000);//CONFIGURO EL PUERTO a EN ESDTE CASO TODOS SALIDA
output_b(0b0000000000);



WHILE (TRUE)

{
if(INPUT(ENTRADA0)==1)
{
OUTPUT_HIGH(SALIDA);
DELAY_MS(62);
}
if(INPUT(ENTRADA1)==1)
{
OUTPUT_HIGH(SALIDA);
DELAY_MS(125);
}
if(INPUT(ENTRADA2)==1)
{
OUTPUT_HIGH(SALIDA);
DELAY_MS(250);
}
if(INPUT(ENTRADA3)==1)
{
OUTPUT_HIGH(SALIDA);
DELAY_MS(500);
}
if(INPUT(ENTRADA4)==1)
{
OUTPUT_HIGH(SALIDA);
DELAY_MS(1000);
}
if(INPUT(ENTRADA5)==1)
{
OUTPUT_HIGH(SALIDA);
DELAY_MS(2000);
}
if(INPUT(ENTRADA6)==1)
{
OUTPUT_HIGH(SALIDA);
DELAY_MS(2551);
}

else
 {
OUTPUT_LOW(SALIDA);
}

}
}
07/05/2015 #9

Avatar de Gudino Roberto duberlin

Sino colocas las resistencias pull-dn, no creo que funcione muy bien.
07/05/2015 #10


Gudino Roberto duberlin dijo: Ver Mensaje
Sino colocas las resistencias pull-dn, no creo que funcione muy bien.
Gracias Roberto
eso era precisamente lo que estaba saliendo mal

Gracias foreros el circuito funciona perfectamente
el error estaba en los pulsadores
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Diseño de circuitos en general

Alarmas, temporizadores, acondicionadores de señal...

Cerrar
Foros de Electrónica » Diseño analógico » Diseño de circuitos en general

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.