Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

09/06/2012 #1

Avatar de Ericktronik

Problema con PIC16F628A y matriz de LED
Hola a todos.
estoy desarrollando una pequeña matriz de leds para una luz trasera para bicicleta, de tal manera que esta pueda hacer animaciones.
acabo de terminarla pero al momento de alimentar el circuito queda estatico(todos los leds encendidos).
agradesco a quien pueda ayudarme a solucionar este problema.

dejo adjundo un archivo comprimido con los esquemas en proteus y en PDF, tanto del PCB como el esquematico y el pequeño codigo que tengo(y unas foticos).

lo subi a mediafire porque pesa mas de 2mb.

link: Stop animado para Bici.


Agradesco toda la ayuda posible, ya que hice esta luz pues mi bicicleta es mi transporte y la uso en la noche, si pongo esta luz podrian verme mejor.
09/06/2012 #2

Avatar de Justiciero24

Hola Ericktronic

Revise tu circuito y no encontre problema.
Parece ser que el problema es el codigo, probablemente sea un error al declarar TRISA y TRISB.

Intenta meterle a tu pic un programa similar que use las salidas y que de antemano sepas que funcione y asi comprobrar que efectivamente es un error en el codigo.

Saludos,
09/06/2012 #3
Moderador

Avatar de D@rkbytes

Ericktronik dijo: Ver Mensaje
Hola a todos.
estoy desarrollando una pequeña matriz de leds para una luz trasera para bicicleta, de tal manera que esta pueda hacer animaciones.
acabo de terminarla pero al momento de alimentar el circuito queda estatico(todos los leds encendidos).

Agradesco toda la ayuda posible, ya que hice esta luz pues mi bicicleta es mi transporte y la uso en la noche, si pongo esta luz podrian verme mejor.
Saludos Ericktronik.

¿No será porque te hace falta declarar los comparadores analógicos del puerto A en OFF?

Como por ejemplo con esta instrucción:

#byte CMCON = 0x1F // Referencia al registro CMCON
Void main(){
CMCON = 0x07; // Comparadores analógicos OFF (CM2,CM1,CM0 = b'111')

Espero que eso sea el problema.

Suerte y exito en tus proyectos.
10/06/2012 #4

Avatar de Ericktronik

Hola.
ya funciona, solo que por alguna extraña razon se quemaron 3 leds en diferentes lugares.
lo que hize fue re-programar el PIC.
gracias por su colaboracion.
tratere de hacer el aporte de esta luz en cuando tenga tiempo.
13/06/2012 #5

Avatar de Ericktronik

hola a todos.
el circuito funciona a la perfeccion, ahora quiero usar el pin A5 para seleccionar el tipo de secuencias que quiero que aparescan.
segun el programa, si esta en 1 entra al ciclo infinito y crea algunas animaciones, pero si esta en 0 deberia quedar totalmente encendido.
cuando programo el pic no hay problema, pero al probarlo simplemente hace todas las animaciones independientemente de la poscicion del interruptor.

espero puedan ayudarme.
aca esta el codigo:

Código:
#include <16F628a.h>
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES INTRC_IO                 //Reloj Interno
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOMCLR                   //No se usa el pin del master clear
#FUSES NOLVP                    //No se programa con bajo voltaje, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection
#use delay(clock=4000000)

#bit y1=0x05.2
#bit y2=0x05.3
#bit y3=0x05.4
#bit y4=0x06.0
#bit y5=0x06.1
#bit y6=0x06.2
#bit y7=0x06.3
#bit y8=0x06.6
#bit y9=0x06.5
#bit y10=0x06.4

#bit x5=0x05.1
#bit x4=0x05.0
#bit x3=0x05.7
#bit x2=0x05.6
#bit x1=0x06.7
int type=0;
int i,a;

void alloff(int){
output_a(0x00);
output_b(0x00);
}
void allon(int){
output_a(0xff);
output_b(0xff);
}
void xon(int){x1=x2=x3=x4=x5=1;}
void yon(int){y1=y2=y3=y4=y5=y6=y7=y8=y9=y10=1;}
void xoff(int){x1=x2=x3=x4=x5=0;}
void yoff(int){y1=y2=y3=y4=y5=y6=y7=y8=y9=y10=0;}


Void strobe(int){
for(i=0;i<=5;i++){
allon(1);
delay_ms(50);
alloff(1);
delay_ms(50);
allon(1);
delay_ms(50);
alloff(1);
delay_ms(50);
allon(1);
delay_ms(50);
alloff(1);
delay_ms(300);
}
}
void downup(int){
y1=y2=y3=y4=y5=y6=y7=y8=y9=y10=1;
x1=1;
delay_ms(100);
x2=1;
delay_ms(100);
x3=1;
delay_ms(100);
x4=1;
delay_ms(100);
x5=1;
delay_ms(100);
}
void updown(int){
y1=y2=y3=y4=y5=y6=y7=y8=y9=y10=1;
x5=1;
delay_ms(100);
x4=1;
delay_ms(100);
x3=1;
delay_ms(100);
x2=1;
delay_ms(100);
x1=1;
delay_ms(100);
}
void downupoff(int){
y1=y2=y3=y4=y5=y6=y7=y8=y9=y10=1;
x1=0;
delay_ms(100);
x2=0;
delay_ms(100);
x3=0;
delay_ms(100);
x4=0;
delay_ms(100);
x5=0;
delay_ms(100);
}
void updownoff(int){
y1=y2=y3=y4=y5=y6=y7=y8=y9=y10=1;
x5=0;
delay_ms(100);
x4=0;
delay_ms(100);
x3=0;
delay_ms(100);
x2=0;
delay_ms(100);
x1=0;
delay_ms(100);
}
void rlon(int){
delay_ms(50);
y1=1;
delay_ms(100);
y2=1;
delay_ms(100);
y3=1;
delay_ms(100);
y4=1;
delay_ms(100);
y5=1;
delay_ms(100);
y6=1;
delay_ms(100);
y7=1;
delay_ms(100);
y8=1;
delay_ms(100);
y9=1;
delay_ms(100);
y10=1;
delay_ms(100);
}
void lron(int){
delay_ms(50);
y10=1;
delay_ms(100);
y9=1;
delay_ms(100);
y8=1;
delay_ms(100);
y7=1;
delay_ms(100);
y6=1;
delay_ms(100);
y5=1;
delay_ms(100);
y4=1;
delay_ms(100);
y3=1;
delay_ms(100);
y2=1;
delay_ms(100);
y1=1;
delay_ms(100);
}
void rloff(int){
delay_ms(50);
y1=0;
delay_ms(100);
y2=0;
delay_ms(100);
y3=0;
delay_ms(100);
y4=0;
delay_ms(100);
y5=0;
delay_ms(100);
y6=0;
delay_ms(100);
y7=0;
delay_ms(100);
y8=0;
delay_ms(100);
y9=0;
delay_ms(100);
y10=0;
delay_ms(100);
}
void lroff(int){
delay_ms(50);
y10=0;
delay_ms(100);
y9=0;
delay_ms(100);
y8=0;
delay_ms(100);
y7=0;
delay_ms(100);
y6=0;
delay_ms(100);
y5=0;
delay_ms(100);
y4=0;
delay_ms(100);
y3=0;
delay_ms(100);
y2=0;
delay_ms(100);
y1=0;
delay_ms(100);
}
void cuadros1(int){
for(a=0;a<=10;a++){
x3=y3=y4=y5=y6=y7=y8=1;
delay_ms(250);
alloff(1);
for(i=0;i<=254;i++){
x2=x3=x4=y2=y9=1;
delay_ms(1);
alloff(1);
x2=x4=y2=y3=y4=y5=y6=y7=y8=y9=1;
delay_ms(1);
alloff(1);
}
for(i=0;i<=254;i++){
x1=x2=x3=x4=x5=y1=y10=1;
delay_ms(1);
alloff(1);
x1=x5=y1=y2=y3=y4=y5=y6=y7=y8=y9=y10=1;
delay_ms(1);
alloff(1);
}
}
}
void cuadros2(int){
alloff(1);
for(a=0;a<=10;a++){
for(i=0;i<=128;i++){
x1=x2=x3=x4=x5=y1=y4=y7=y10=1;
delay_ms(1);
alloff(1);
x1=x5=y1=y2=y3=y4=y7=y8=y9=y10=1;
delay_ms(1);
alloff(1);
}
for(i=0;i<=128;i++){
x2=x3=x4=y2=y3=y8=y9=1;
delay_ms(2);
alloff(1);
}
}
}
void bolitas1(int){
for(a=0;a<=10;a++){
alloff(1);
for(i=0;i<=254;i++){
x1=x4=Y2=y3=y8=y9=1;
delay_ms(1);
alloff(1);
x2=x3=y1=y4=y7=y10=1;
delay_ms(1);
alloff(1);
}
y2=y3=y5=y6=y8=y9=x2=x3=1;
delay_ms(252);
}
}
void caras(int){
for(a=0;a<=5;a++){
for(i=0;i<=254;i++){
x1=y3=y8=1;
delay_ms(1);
x1=0;
yoff(1);
x2=y2=y4=y7=y9=1;
delay_ms(1);
x2=0;
yoff(1);
x4=y1=y10=1;
delay_ms(1);
x4=0;
x5=1;
yon(1);
delay_ms(1);
alloff(1);
}
}
delay_ms(100);
strobe(1);
delay_ms(100);
for(a=0;a<=5;a++){
for(i=0;i<=254;i++){
x1=y2=y3=y8=y9=1;
delay_ms(1);
x1=0;
x2=y2=y3=y8=y9=1;
delay_ms(1);
x2=0;
yoff(1);
x3=y5=y6=1;
delay_ms(1);
x3=y5=y6=0;
x4=y1=y10=1;
delay_ms(1);
x4=0;
x5=1;
yon(1);
delay_ms(1);
alloff(1);
}
}
}
void stop(int){
for(a=0;a<=5;a++){
for(i=0;i<=254;i++){//PA
x1=y1=y2=y3=y8=y9=1;
delay_ms(1);
alloff(1);
x1=0;
x2=y1=y4=y7=y10=1;
delay_ms(1);
x2=0;
alloff(1);
x3=y1=y2=y3=y7=y8=y9=y10=1;
delay_ms(1);
x3=0;
alloff(1);
delay_us(20);
x4=y1=y7=y10=1;
delay_ms(1);
x4=0;
x5=y1=y7=y10=1;
delay_ms(1);
alloff(1);
}
for(i=0;i<=254;i++){//RE
x1=y1=y2=y3=y7=y8=y9=y10=1;
delay_ms(1);
alloff(1);
x1=0;
x2=y1=y4=y7=1;
delay_ms(1);
x2=0;
alloff(1);
x3=y1=y2=y3=y7=y8=y9=1;
delay_ms(1);
x3=0;
alloff(1);
x4=y1=y3=y7=1;
delay_ms(1);
x4=0;
alloff(1);
x5=y1=y4=y7=y8=y9=y10=1;
delay_ms(1);
alloff(1);
}
}
}

Void main(){
set_tris_a(0xff);
set_tris_b(0xff);
input(pin_A5);
delay_ms(100);
while(true){//ciclo infinito
tipo:
type=input(pin_a5);
delay_ms(10);
while(type==1){
stop(1);type=input(pin_a5);if(type==0){goto tipo;}
bolitas1(1);type=input(pin_a5);if(type==0){goto tipo;}
strobe(1);type=input(pin_a5);if(type==0){goto tipo;}
caras(1);type=input(pin_a5);if(type==0){goto tipo;}
strobe(1);type=input(pin_a5);if(type==0){goto tipo;}
cuadros2(1);type=input(pin_a5);if(type==0){goto tipo;}
strobe(1);type=input(pin_a5);if(type==0){goto tipo;}
cuadros1(1);type=input(pin_a5);if(type==0){goto tipo;}
strobe(1);type=input(pin_a5);if(type==0){goto tipo;}
stop(1);type=input(pin_a5);if(type==0){goto tipo;}
downup(1);type=input(pin_a5);if(type==0){goto tipo;}
updownoff(1);type=input(pin_a5);if(type==0){goto tipo;}
updown(1);type=input(pin_a5);if(type==0){goto tipo;}
downupoff(1);type=input(pin_a5);if(type==0){goto tipo;}
alloff(1);type=input(pin_a5);if(type==0){goto tipo;}
delay_ms(5);
alloff(1);type=input(pin_a5);if(type==0){goto tipo;}
xon(1);type=input(pin_a5);if(type==0){goto tipo;}
rlon(1);type=input(pin_a5);if(type==0){goto tipo;}
lroff(1);type=input(pin_a5);if(type==0){goto tipo;}
lron(1);type=input(pin_a5);if(type==0){goto tipo;}
rloff(1);type=input(pin_a5);if(type==0){goto tipo;}
alloff(1);type=input(pin_a5);if(type==0){goto tipo;}
}
//cuadros2(1);type=input(pin_a5);if(type==1){goto tipo;}
//strobe(1);
output_b(0xff);
output_a(0xff);
type=input(pin_a5);if(type==1){goto tipo;}
delay_ms(10);
}
}
---------- Actualizado después de 18 minutos ----------

ya esta solucionado.
solo puse una resistencia de 10k entre A5 y tierra.

sucedia que quedaba en un limbo logico porque no tenia punto de referencia 0, por eso siempre lo tomaba como 1.
13/06/2012 #6

Avatar de SERGIOD

Ericktronik dijo: Ver Mensaje
hola a todos.
el circuito funciona a la perfeccion, ahora quiero usar el pin A5 para seleccionar el tipo de secuencias que quiero que aparescan.
segun el programa, si esta en 1 entra al ciclo infinito y crea algunas animaciones, pero si esta en 0 deberia quedar totalmente encendido.
cuando programo el pic no hay problema, pero al probarlo simplemente hace todas las animaciones independientemente de la poscicion del interruptor.

espero puedan ayudarme.
aca esta el codigo:

Código:
#include <16F628a.h>
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES INTRC_IO                 //Reloj Interno
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOMCLR                   //No se usa el pin del master clear
#FUSES NOLVP                    //No se programa con bajo voltaje, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection
#use delay(clock=4000000)

#bit y1=0x05.2
#bit y2=0x05.3
#bit y3=0x05.4
#bit y4=0x06.0
#bit y5=0x06.1
#bit y6=0x06.2
#bit y7=0x06.3
#bit y8=0x06.6
#bit y9=0x06.5
#bit y10=0x06.4

#bit x5=0x05.1
#bit x4=0x05.0
#bit x3=0x05.7
#bit x2=0x05.6
#bit x1=0x06.7
int type=0;
int i,a;

void alloff(int){
output_a(0x00);
output_b(0x00);
}
void allon(int){
output_a(0xff);
output_b(0xff);
}
void xon(int){x1=x2=x3=x4=x5=1;}
void yon(int){y1=y2=y3=y4=y5=y6=y7=y8=y9=y10=1;}
void xoff(int){x1=x2=x3=x4=x5=0;}
void yoff(int){y1=y2=y3=y4=y5=y6=y7=y8=y9=y10=0;}


Void strobe(int){
for(i=0;i<=5;i++){
allon(1);
delay_ms(50);
alloff(1);
delay_ms(50);
allon(1);
delay_ms(50);
alloff(1);
delay_ms(50);
allon(1);
delay_ms(50);
alloff(1);
delay_ms(300);
}
}
void downup(int){
y1=y2=y3=y4=y5=y6=y7=y8=y9=y10=1;
x1=1;
delay_ms(100);
x2=1;
delay_ms(100);
x3=1;
delay_ms(100);
x4=1;
delay_ms(100);
x5=1;
delay_ms(100);
}
void updown(int){
y1=y2=y3=y4=y5=y6=y7=y8=y9=y10=1;
x5=1;
delay_ms(100);
x4=1;
delay_ms(100);
x3=1;
delay_ms(100);
x2=1;
delay_ms(100);
x1=1;
delay_ms(100);
}
void downupoff(int){
y1=y2=y3=y4=y5=y6=y7=y8=y9=y10=1;
x1=0;
delay_ms(100);
x2=0;
delay_ms(100);
x3=0;
delay_ms(100);
x4=0;
delay_ms(100);
x5=0;
delay_ms(100);
}
void updownoff(int){
y1=y2=y3=y4=y5=y6=y7=y8=y9=y10=1;
x5=0;
delay_ms(100);
x4=0;
delay_ms(100);
x3=0;
delay_ms(100);
x2=0;
delay_ms(100);
x1=0;
delay_ms(100);
}
void rlon(int){
delay_ms(50);
y1=1;
delay_ms(100);
y2=1;
delay_ms(100);
y3=1;
delay_ms(100);
y4=1;
delay_ms(100);
y5=1;
delay_ms(100);
y6=1;
delay_ms(100);
y7=1;
delay_ms(100);
y8=1;
delay_ms(100);
y9=1;
delay_ms(100);
y10=1;
delay_ms(100);
}
void lron(int){
delay_ms(50);
y10=1;
delay_ms(100);
y9=1;
delay_ms(100);
y8=1;
delay_ms(100);
y7=1;
delay_ms(100);
y6=1;
delay_ms(100);
y5=1;
delay_ms(100);
y4=1;
delay_ms(100);
y3=1;
delay_ms(100);
y2=1;
delay_ms(100);
y1=1;
delay_ms(100);
}
void rloff(int){
delay_ms(50);
y1=0;
delay_ms(100);
y2=0;
delay_ms(100);
y3=0;
delay_ms(100);
y4=0;
delay_ms(100);
y5=0;
delay_ms(100);
y6=0;
delay_ms(100);
y7=0;
delay_ms(100);
y8=0;
delay_ms(100);
y9=0;
delay_ms(100);
y10=0;
delay_ms(100);
}
void lroff(int){
delay_ms(50);
y10=0;
delay_ms(100);
y9=0;
delay_ms(100);
y8=0;
delay_ms(100);
y7=0;
delay_ms(100);
y6=0;
delay_ms(100);
y5=0;
delay_ms(100);
y4=0;
delay_ms(100);
y3=0;
delay_ms(100);
y2=0;
delay_ms(100);
y1=0;
delay_ms(100);
}
void cuadros1(int){
for(a=0;a<=10;a++){
x3=y3=y4=y5=y6=y7=y8=1;
delay_ms(250);
alloff(1);
for(i=0;i<=254;i++){
x2=x3=x4=y2=y9=1;
delay_ms(1);
alloff(1);
x2=x4=y2=y3=y4=y5=y6=y7=y8=y9=1;
delay_ms(1);
alloff(1);
}
for(i=0;i<=254;i++){
x1=x2=x3=x4=x5=y1=y10=1;
delay_ms(1);
alloff(1);
x1=x5=y1=y2=y3=y4=y5=y6=y7=y8=y9=y10=1;
delay_ms(1);
alloff(1);
}
}
}
void cuadros2(int){
alloff(1);
for(a=0;a<=10;a++){
for(i=0;i<=128;i++){
x1=x2=x3=x4=x5=y1=y4=y7=y10=1;
delay_ms(1);
alloff(1);
x1=x5=y1=y2=y3=y4=y7=y8=y9=y10=1;
delay_ms(1);
alloff(1);
}
for(i=0;i<=128;i++){
x2=x3=x4=y2=y3=y8=y9=1;
delay_ms(2);
alloff(1);
}
}
}
void bolitas1(int){
for(a=0;a<=10;a++){
alloff(1);
for(i=0;i<=254;i++){
x1=x4=Y2=y3=y8=y9=1;
delay_ms(1);
alloff(1);
x2=x3=y1=y4=y7=y10=1;
delay_ms(1);
alloff(1);
}
y2=y3=y5=y6=y8=y9=x2=x3=1;
delay_ms(252);
}
}
void caras(int){
for(a=0;a<=5;a++){
for(i=0;i<=254;i++){
x1=y3=y8=1;
delay_ms(1);
x1=0;
yoff(1);
x2=y2=y4=y7=y9=1;
delay_ms(1);
x2=0;
yoff(1);
x4=y1=y10=1;
delay_ms(1);
x4=0;
x5=1;
yon(1);
delay_ms(1);
alloff(1);
}
}
delay_ms(100);
strobe(1);
delay_ms(100);
for(a=0;a<=5;a++){
for(i=0;i<=254;i++){
x1=y2=y3=y8=y9=1;
delay_ms(1);
x1=0;
x2=y2=y3=y8=y9=1;
delay_ms(1);
x2=0;
yoff(1);
x3=y5=y6=1;
delay_ms(1);
x3=y5=y6=0;
x4=y1=y10=1;
delay_ms(1);
x4=0;
x5=1;
yon(1);
delay_ms(1);
alloff(1);
}
}
}
void stop(int){
for(a=0;a<=5;a++){
for(i=0;i<=254;i++){//PA
x1=y1=y2=y3=y8=y9=1;
delay_ms(1);
alloff(1);
x1=0;
x2=y1=y4=y7=y10=1;
delay_ms(1);
x2=0;
alloff(1);
x3=y1=y2=y3=y7=y8=y9=y10=1;
delay_ms(1);
x3=0;
alloff(1);
delay_us(20);
x4=y1=y7=y10=1;
delay_ms(1);
x4=0;
x5=y1=y7=y10=1;
delay_ms(1);
alloff(1);
}
for(i=0;i<=254;i++){//RE
x1=y1=y2=y3=y7=y8=y9=y10=1;
delay_ms(1);
alloff(1);
x1=0;
x2=y1=y4=y7=1;
delay_ms(1);
x2=0;
alloff(1);
x3=y1=y2=y3=y7=y8=y9=1;
delay_ms(1);
x3=0;
alloff(1);
x4=y1=y3=y7=1;
delay_ms(1);
x4=0;
alloff(1);
x5=y1=y4=y7=y8=y9=y10=1;
delay_ms(1);
alloff(1);
}
}
}

Void main(){
set_tris_a(0xff);
set_tris_b(0xff);
input(pin_A5);
delay_ms(100);
while(true){//ciclo infinito
tipo:
type=input(pin_a5);
delay_ms(10);
while(type==1){
stop(1);type=input(pin_a5);if(type==0){goto tipo;}
bolitas1(1);type=input(pin_a5);if(type==0){goto tipo;}
strobe(1);type=input(pin_a5);if(type==0){goto tipo;}
caras(1);type=input(pin_a5);if(type==0){goto tipo;}
strobe(1);type=input(pin_a5);if(type==0){goto tipo;}
cuadros2(1);type=input(pin_a5);if(type==0){goto tipo;}
strobe(1);type=input(pin_a5);if(type==0){goto tipo;}
cuadros1(1);type=input(pin_a5);if(type==0){goto tipo;}
strobe(1);type=input(pin_a5);if(type==0){goto tipo;}
stop(1);type=input(pin_a5);if(type==0){goto tipo;}
downup(1);type=input(pin_a5);if(type==0){goto tipo;}
updownoff(1);type=input(pin_a5);if(type==0){goto tipo;}
updown(1);type=input(pin_a5);if(type==0){goto tipo;}
downupoff(1);type=input(pin_a5);if(type==0){goto tipo;}
alloff(1);type=input(pin_a5);if(type==0){goto tipo;}
delay_ms(5);
alloff(1);type=input(pin_a5);if(type==0){goto tipo;}
xon(1);type=input(pin_a5);if(type==0){goto tipo;}
rlon(1);type=input(pin_a5);if(type==0){goto tipo;}
lroff(1);type=input(pin_a5);if(type==0){goto tipo;}
lron(1);type=input(pin_a5);if(type==0){goto tipo;}
rloff(1);type=input(pin_a5);if(type==0){goto tipo;}
alloff(1);type=input(pin_a5);if(type==0){goto tipo;}
}
//cuadros2(1);type=input(pin_a5);if(type==1){goto tipo;}
//strobe(1);
output_b(0xff);
output_a(0xff);
type=input(pin_a5);if(type==1){goto tipo;}
delay_ms(10);
}
}
---------- Actualizado después de 18 minutos ----------

ya esta solucionado.
solo puse una resistencia de 10k entre A5 y tierra.

sucedia que quedaba en un limbo logico porque no tenia punto de referencia 0, por eso siempre lo tomaba como 1.
Genial gracias por compartirlo en horabuena que esta OK
28/07/2012 #7

Avatar de SERGIOD

Ericktronik dijo: Ver Mensaje
Hola a todos.
estoy desarrollando una pequeña matriz de leds para una luz trasera para bicicleta, de tal manera que esta pueda hacer animaciones.
acabo de terminarla pero al momento de alimentar el circuito queda estatico(todos los leds encendidos).
agradesco a quien pueda ayudarme a solucionar este problema.

dejo adjundo un archivo comprimido con los esquemas en proteus y en PDF, tanto del PCB como el esquematico y el pequeño codigo que tengo(y unas foticos).

lo subi a mediafire porque pesa mas de 2mb.

link: Stop animado para Bici.


Agradesco toda la ayuda posible, ya que hice esta luz pues mi bicicleta es mi transporte y la uso en la noche, si pongo esta luz podrian verme mejor.
cuando lo simulo en mi PC no encienden los leds ; y salen error no se mucho de proteus
Imágenes Adjuntas
Tipo de Archivo: jpg stop animado.JPG (150,3 KB (Kilobytes), 36 visitas)
28/07/2012 #8

Avatar de Ericktronik

SERGIOD dijo: Ver Mensaje
cuando lo simulo en mi PC no encienden los leds ; y salen error no se mucho de proteus
no se encienden porque no estan conectados a nada, solo puse la matriz para poder crear el PCB.
pero si quieres puedo enviarte toda la informacion del stop. ya funciona.
28/07/2012 #9
Moderador

Avatar de D@rkbytes

SERGIOD dijo: Ver Mensaje
cuando lo simulo en mi PC no encienden los leds ; y salen error no se mucho de proteus
Como yo tampoco me quería quedar con la duda de como funcionaba, realice la simulación.
Aquí adjunto el archivo simulable.

Saludos.
Archivos Adjuntos
Tipo de Archivo: rar Simulación.rar (18,6 KB (Kilobytes), 68 visitas)
26/06/2017 #10


Hola buenas tardes.

Estoy desarrollando una matriz de leds para una luz de frenado para un camión, de tal manera que esta pueda hacer animaciones.

Esta matriz debe trabajar a 12/ 24 V no estoy muy seguro si esta bien el esquemático no se si alguien pudiera ayudarme a revisarlo y decirme si es correcto o tiene alguna falla.

Les agradezco su ayuda.

dejo adjunto un archivo en PDF del esquemático gracias.

saludos


Es algo de lo que quiero hacer
Archivos Adjuntos
Tipo de Archivo: pdf Plafon.pdf (124,7 KB (Kilobytes), 11 visitas)
26/06/2017 #11
Moderador

Avatar de D@rkbytes

¿Para qué sirven los circuitos conformados por Q2 y Q3?
Parecen reguladores que a su salida tendrán 2.25 V. Aproximadamente.
Si son las entradas de control, 2.25 V no es un nivel apto para un PIC sin ADC. (En dado caso que se quisiera comparar analógicamente)
Ese PIC tiene dos comparadores, pero creo que por ahí no viene el caso.

Con las resistencias de 1 kΩ, (R2 a R6) no tendrás la corriente suficiente para encender los LED a 5 V.
26/06/2017 #12


D@rkbytes dijo: Ver Mensaje
¿Para qué sirven los circuitos conformados por Q2 y Q3?
Parecen reguladores que a su salida tendrán 2.25 V. Aproximadamente.
Si son las entradas de control, 2.25 V no es un nivel apto para un PIC sin ADC. (En dado caso que se quisiera comparar analógicamente)
Ese PIC tiene dos comparadores, pero creo que por ahí no viene el caso.

Con las resistencias de 1 kΩ, (R2 a R6) no tendrás la corriente suficiente para encender los LED a 5 V.
En efecto los transistores los ocupo como reguladores saldran 5 volts de cada uno para poder utlizarlo como comparadores.
26/06/2017 #13
Moderador

Avatar de D@rkbytes

Tienes un divisor de tensión a la salida, así que obtendrás: 5.1 V - 0.6 V / 2 = 2.25 V. Aprox.
27/06/2017 #14


D@rkbytes dijo: Ver Mensaje
Tienes un divisor de tensión a la salida, así que obtendrás: 5.1 V - 0.6 V / 2 = 2.25 V. Aprox.
y tu que me recomiendas ya que necesito que solo prendan los leds y cuando frene se muevan
las R2 - R6 son de 10 ohms.
27/06/2017 #15
Moderador

Avatar de D@rkbytes

Hace tiempo hice algo así pero para una moto, y sólo utilicé el divisor y un diodo Zener.
Para darle prioridad al freno, usé una interrupción externa.

Imágenes Adjuntas
Tipo de Archivo: jpg MotoStop.jpg (56,3 KB (Kilobytes), 85 visitas)
28/06/2017 #16


D@rkbytes dijo: Ver Mensaje
Hace tiempo hice algo así pero para una moto, y sólo utilicé el divisor y un diodo Zener.
Para darle prioridad al freno, usé una interrupción externa.
hola buenos dias con la matriz que tengo solo puedo agregarle parte de tu esquemático.
21/09/2017 #17


Hola. Buenas tardes. ¿Por qué cuando configuro el PIC en Microcode y compilo, me sale un error?
Y
no sé si puedo utilizar los pines del RA6 y RA7 como salidas.
Esos pines son del oscilador y quiero que en esos pines enciendan unos leds.
¿Tengo que configurar algo para poderlos utilizar? ¿Me pueden ayudar?

Adjunto el programa.
Código:
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2017 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 31/07/2017                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
 led VAR portb.0
loco:
HIGH led
pause 50
low led 
pause 50
GOTO loco
end
Gracias y saludos.
Archivos Adjuntos
Tipo de Archivo: rar matriz.rar (311 Bytes, 7 visitas)
21/09/2017 #18

Avatar de Gudino Roberto duberlin

Hola, no puedo abrir tu archivo adjunto, pero los pines que mencionas, pueden utilizarse, mientras no esté configurado el oscilador externo.
21/09/2017 #19
Moderador

Avatar de D@rkbytes

ruse85 dijo: Ver Mensaje
¿Por qué cuando configuro el PIC en Microcode y compilo, me sale un error?

Debes especificar qué error es el que aparece.
ruse85 dijo: Ver Mensaje
Y no sé si puedo utilizar los pines del RA6 y RA7 como salidas.
En el PIC16F628A sí se pueden utilizar esos pines como entradas o salidas, pero únicamente cuando se usa el oscilador interno.
ruse85 dijo: Ver Mensaje
Esos pines son del oscilador y quiero que en esos pines enciendan unos leds.
¿Tengo que configurar algo para poderlos utilizar?
Sí, los fuses de la palabra de configuración. Principalmente el fuse referente al oscilador.
ruse85 dijo: Ver Mensaje
¿Me pueden ayudar?

La mejor ayuda que puedes obtener para estos casos, es leer la hoja de datos.
22/09/2017 #20

Avatar de pandacba

En tu programa no has declarado como se comportara el puerto si inputo o output
la variable Var tampoco esta declarada el compilador no sabe de que tipo es ni de donde aparecio
Como te dijeron si utilizas el reloj interno puedes declarar esas dos patillas como salidas
Busca el manual, que incluso se consigue en español o en la misma ayuda del microcode en reverencia del lenguaje
Como se declaran las variables y como se setean los puertos
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

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