PDA

Ver la versión completa : una ayudita porfavor con un esquema.....



navegante 420
18/11/2010, 22:23
Sus cuento la historia.

Tengo una linea que varia su tension entre 0 y 14v mediante una resistencia variable que alimenta un motor. este motor es intercambiable, y e aqui el problema, he probado tres motores y cada uno de ellos tiene una tension lindar dfiferente para iniciar el movimiento y estos son los datos.

Motor 1

T= 2,5v y 0,35 Ah

Motor 2

T=3,70v y 0,37 Ah

motor 3

t= 5,2v y 0,35Ah

me gustaría poder diseñar o que me enseñarais un circuito sencillito que me tubiera en cuenta esa tension lindar para mandarme un 0 o un 1 al pic 16f84a

estos son los esquemas que he provado.
38687

El esquema fue el que me facilito dedalo, pero en este caso no funciona ya que no cambia de estado, esta siempre a 1

y el esquema 2 no lo he probado, pero este no tiene en cuenta la tension lindar.


porfavor alguna idea??????


gracias

Aunolose
18/11/2010, 23:34
Ahora no tengo mucho tiempo, y además creo que no te he entendido muy bien, parece que el diodo está para que el motor en parado ponga a masa el pin, así el diodo conduce y da un cero, cuando gira, el motor deja de tener 0 voltios y da un uno.

Pues en el esquema veo un fallo, y es que la masa del motor y la masa del pic no son las mismas, así no puede medir ni 0 ni nada :D

También veo que si uno de los motores tiene 5'2V de zona muerta (¿es eso a lo que te refieres con tensión lindar?), para ese no te va a servir.

Y ya no puedo mirar más, mañana lo intento otra vez.

Aunolose
19/11/2010, 13:55
Tienes que explicarme lo de la tensión lindar, si no, no me entero de lo que quieres hacer.

¿es tensión de funcionamiento o es zona muerta? La zona muerta, es que le llega tensión, pero el motor no se mueve.

Ah, este esquema tiene un gran problema, los 350ma han de pasar por el potenciómetro, y no sé si habrá alguno que lo aguante, tendrá que ser bobinado, perderás un montón de energía en calentar el ambiente...

navegante 420
19/11/2010, 18:06
Tienes que explicarme lo de la tensión lindar, si no, no me entero de lo que quieres hacer.

Perdona aunolose por no decirte nada antes, pero ayer llege muy tarde a casa y hecho polvo, y lo único que hice fue meterme en la cama.

y esta mañana en el hospi donde estoy haciendo las practicas hemos tenido una mañana muy entretenida.


es tensión de funcionamiento o es zona muerta? La zona muerta, es que le llega tensión, pero el motor no se mueve.

lo segundo, que aun llegandole esa tension el motor no se mueve, y inicia el movimiento a las tensiones y amperajes que os he indicado.


, este esquema tiene un gran problema, los 350ma han de pasar por el potenciómetro, y no sé si habrá alguno que lo aguante, tendrá que ser bobinado, perderás un montón de energía en calentar el ambiente...

esto último tienes razón, no habia caido en ello.....

Aunolose
20/11/2010, 14:17
Vale, zona muerta.

¿sigues empeñado en usar el 16F84? :D lo digo porque con un convertidor AD la cosa sería más fácil.

¿Conoces todas las características de los motores? parecen muy diferentes, si lo fueran, podrías medir la resistencia y ya lo tendrías, en realidad sería un convertidor AD de "tres niveles" es decir con dos (o tres) comparadores mides la tensión en el motor (sin alimentar), cada comparador ajustado a un nivel, como cada motor daría una tensión, según que comparador se active, sabes que motor es.

Ahora no puedo ponerte un esquema, me tengo que ir, pero sobre todo esto funciona mejor cuando el motor está sin alimentar, si es que se puede hacer, si no se puede, habría que hacer casi lo mismo, pero midiendo otras cosas.

navegante 420
20/11/2010, 20:56
Vale, zona muerta.

¿sigues empeñado en usar el 16F84? :D lo digo porque con un convertidor AD la cosa sería más fácil.

Jejejeje, pues si, para este proyecto estoy obligado a usar ese.... Espero que por última vez, porque tengo unas ganas de meterme en la serie 18.... o por lo menos de tener que hacer subrutinas para todo.


Conoces todas las características de los motores? parecen muy diferentes, si lo fueran, podrías medir la resistencia y ya lo tendrías, en realidad sería un convertidor AD de "tres niveles" es decir con dos (o tres) comparadores mides la tensión en el motor (sin alimentar), cada comparador ajustado a un nivel, como cada motor daría una tensión, según que comparador se active, sabes que motor es.

Ahora no puedo ponerte un esquema, me tengo que ir, pero sobre todo esto funciona mejor cuando el motor está sin alimentar, si es que se puede hacer, si no se puede, habría que hacer casi lo mismo, pero midiendo otras cosas.

no es mala idea, pero el tema reside que no hay solo tres motores, sino mas de 40 que pueden usarse en este circuito, con lo que es un problema y grabe.....

Supongo que por la complicación que esto genera, acabaré calculando un zener para el motor más libiano y a cascarla......

que ganas tengo de quitarme esta parte del medio....

Aunolose
21/11/2010, 00:54
Vale, se puede hacer de otra manera, justo cuando empiezan a girar la corriente y con ella la tensión en extremos del motor caerá, pues la resistencia del motor pasa a ser un poco mayor, solo es un momento, por que luego cuando gira más rapido vuelve a subir, si lo puedes pillar, ya lo tienes.

Entonces la pregunta es ¿cuando tienes que saber esa tensión? ¿cuando esté en marcha, cuando esté parado, lo tiene que hacer automáticamente? ¿que tiene que hacer cuando lo sepas?

navegante 420
22/11/2010, 22:40
Vale, se puede hacer de otra manera, justo cuando empiezan a girar la corriente y con ella la tensión en extremos del motor caerá, pues la resistencia del motor pasa a ser un poco mayor, solo es un momento, por que luego cuando gira más rapido vuelve a subir, si lo puedes pillar, ya lo tienes.

Lo de medir no creo que sea un problema, en clase tenemos osciloscopios, de una manera o otra podremos tomar la medida.


Entonces la pregunta es ¿cuando tienes que saber esa tensión? ¿cuando esté en marcha, cuando esté parado, lo tiene que hacer automáticamente? ¿que tiene que hacer cuando lo sepas?[/QUOTE]

Lo que realmente me interesa es saber cuando el motor inicia su movimiento, Teniendo en cuenta que cada motor tiene un voltaje distinto, y esa detección la ha realizar automáticamente, para poner un 0 o un 1 al pic, y sin sensores de movimiento.

Aunolose
23/11/2010, 16:57
Si tiene que ser el pic el que detecte el movimiento, debe ser el pic el que mida esa diferencia de tensión/corriente.

Por lo que cuentas, el potenciómetro (o lo que pongas) irá aumentando la tensión hasta que el motor gire ¿es así?

A ver si esta tarde tengo un rato y te pongo una aproximación de como se podría hacer.

Aunolose
25/11/2010, 15:16
No me he olvidado, es que no he tenido tiempo de ponerme. Cuentanos algo más, si puedes, del proyecto.

navegante 420
27/11/2010, 23:51
Bueno ante tus últimas indicaciones, nos cogimos los oscilos analógicos que tenemos y a medir....

la verdad es que diferencia haberla ayla, pero con los oscilos analócos, no queda claro. Así que provaremos el lunes con un digital...

Como puedes ver en la foto, algo de diferencia hay, pero en una es diferencia de voltage y en la otra es mas bien de desfase, pero en ambas es minuscula la diferencia. y no vemos si se juntan o no, ya que se nos escapa del rango, parece que si, pero no lo vemos.

por eso el lunes provaremos con un digital...

38990

38989

Aunolose
29/11/2010, 19:53
¿Donde están tomadas las señales?

Como me temía, la señal está sin estabilizar, así que será más difícil hacer algo ¿seguro que no quieres meterte con los sensores? :D

El "desfase" se puede deber a la diferencia de corriente, al estar sin estabilizar, el rizado aumenta y hace que el osciloscopio dispare más tarde/pronto, pero medir eso va a ser difícil con uno analógico, a ver con el digital, recuerda poner mucho tiempo en la base de tiempos, para que el cambio se vea y se mantenga en la pantalla lo suficiente.

navegante 420
13/12/2010, 01:56
Pues menos mal que probamos con el digital......

Perdona que no haya dicho nada antes, pero despues de los resultados obtenidos con el oscilo digital no pusimos a probar el resto de harware y como era predecible, no funcionaba nada.....

Por partes:

el oscilo digital a maxima división de tiempo, nos revelo que ambas señales eran diferentes, pero se cruzaban contimuamente al no estar estabilizadas, con lo que no es fiable para nuetro prosito.

Descartado esta posiblidad, pasamos al plan B, resistencia en serie que coma los 2 primeros voltios y un zener para protejer el pic.

Segundo.... porque seran tan dificil de manejar un simple 74hc595?????? La madre que lo matriculo.... llevo dos semanas peleandome con él......

De momento, gracias a un foro de arduino, me he enterado que MR tine que conectarse a 5V y OE a Masa. Co esto, por lo menos he conseguido que se enciendan los leds.... A su p u t a bola, pero se encienden.... Ahora si consigo que hayan lo que yo quiero.... sera la leche..... :D:D:D

Supongo que ahora el error estara en mi falta de interpretación del funcinamiento interno del integrado. Así que te dejo el código fuente por si ves el error o me das alguna idea....

Y como no.... en esambler jejejeje.

principal
movlw b'00001001'
movwf regsalida
clrf PORTA
clrf PORTB
call carga595
bsf PORTA,0
bcf PORTA,0
call DEMORA
movlw b'10010000'
movwf regsalida
call carga595
bsf PORTA,0 (conectado a ST_CP)
bcf PORTA,0
call DEMORA
goto principal

carga595
movlw b'00001001'
movwf contadorsal
salida
btfsc regsalida,0 ;miramos que tenemos en datosalida
goto uno
bcf PORTA,2 ;o un 0 (Conectado a DS)
goto cont
uno
bsf PORTA,2 ;dependiendo de como este, cargamos un 1
cont
bsf PORTA,3 ;subimos el clk (conectado a SH_CP)
bcf PORTA,3 ;bajamos el clk
rrf regsalida,f ;rotamos datosalida.
decfsz contadorsal,f ;descendemos el contador en una unidad
goto salida
return

Aunolose
13/12/2010, 18:39
Hola, efectivamente, si haces uso del MCLR (creo que se puede programar que no hagas caso), debe ir a... positivo... mejor a través de una resistencia de 1k, por ejemplo, fíjate que tiene una linea encima /MCLR, eso quiero decir "negado", es decir, que se hace un Master CLeaR si lo pones a 0, para no hacerlo, debes ponerlo a 1, o mejor, con un condensador a masa (100nF p.e.) y una resistencia, a positivo, así le mete un cero (reset) al arrancar (la carga del condensador) y ya lo deja en positivo (a 1, sin reset).

Luego al código le falta el acceso al TRISA antes de poner a 0 o a 1, el TRIS es donde configuras la pata adecuada como salida (por defecto están como entrada) estando como entrada, el 74595 tiene las patas "al aire" y los leds van a su bola... lo bueno, si tienes digital, es que puedes ponerlo en la salida PortA.0, programar el disparo "una vez" y cuando se active el envío de datos, te los mantiene en pantalla y sabes si lo estas haciendo bien.

Aunque pongas una resistencia de medida el que la tensión no esté rectificada va a ser un problema para verlo. y no se me ocurre nada sencillo para remediarlo :(

navegante 420
13/12/2010, 20:03
Hola, efectivamente, si haces uso del MCLR (creo que se puede programar que no hagas caso), debe ir a... positivo... mejor a través de una resistencia de 1k, por ejemplo, fíjate que tiene una linea encima /MCLR, eso quiero decir "negado", es decir, que se hace un Master CLeaR si lo pones a 0, para no hacerlo, debes ponerlo a 1, o mejor, con un condensador a masa (100nF p.e.) y una resistencia, a positivo, así le mete un cero (reset) al arrancar (la carga del condensador) y ya lo deja en positivo (a 1, sin reset).

Ok creo que lo he entendido, Ahora me pongo con el proteus y hago el esquema.... Unque tendria que empezar a acostumbrarme al capture....

y con OE negado que hago???? lo dejo en masa?????

he leido que con esta convinación suele generar parpadeos, o con el esquema que me has propuesto lo soluciono?????

Tambien he visto que en la patiila de carga. (ST_CP) le ponen un condensador electrolitico de 1microF. Me lo recomiendas????


Luego al código le falta el acceso al TRISA antes de poner a 0 o a 1, el TRIS es donde configuras la pata adecuada como salida (por defecto están como entrada) estando como entrada, el 74595 tiene las patas "al aire" y los leds van a su bola... lo bueno, si tienes digital, es que puedes ponerlo en la salida PortA.0, programar el disparo "una vez" y cuando se active el envío de datos, te los mantiene en pantalla y sabes si lo estas haciendo bien.

:banghead::banghead::banghead: Pedazo subnormal que estoy hecho.... Programado estan..... no te lo he puesto porque era obvio..... pero gracias a tu comentario me he acordado que en el programa original DS esta en RB1 y ayer arto de quitar cables para reprogramar el pic, me puse a reparar unas tonterias de la entrenadora para usarla y para evitarme tener que conectar dos cables lo pase todo al puerto RA sin modificar las configuraciones..... :banghead::banghead::banghead: que gilopollas llego a ser.......



Aunque pongas una resistencia de medida el que la tensión no esté rectificada va a ser un problema para verlo. y no se me ocurre nada sencillo para remediarlo :(

Creo que no me exprese bien..... Si les gusta la idea a quien tu ya sabes, que lo solucionen ellos...... Que si no, no voy a llegar a meterle mano al 18f4550.

como sabemos que el motor más longebo tiene zona muerta de hasta 2.65v y el mas pesado 4.75v pondré una resistencia para que entre 0 y 2v en alimentación al motor, el pic siga teniendo un cero y apartir de 2 voltios empieze a recibir tension el pic hasta el cambio de estado (de 0 a 1), para protegerlo y que no le entre mas de 5v pondré un zener.

Aunolose
13/12/2010, 20:13
Espera, que con las prisas no me he dado cuenta de que MR era del 595 y no MCLR del PIC :oops:

Voy a echar un vistazo al 595 a ver si te puedo decir algo más.

Aunolose
13/12/2010, 20:21
Vale, ya lo tengo.

MR debes ponerlo efectivamente a positivo, por lo que te digo, es un Master Reset negado, así que si lo pones a 0, haces un reset en las salidas. OE en cambio debes ponerlo a 0, porque es Output Enable, también negado es decir permite las salidas a 0.

Luego me parece que te falta un flanco de subida en ST_CP al final de la rutina de rotar, es el que latchea (fija) las salidas.

otra cosa ¿porque cuentas 9 y no 8?

Y desde luego colocar cada cosa en su sitio... :D

navegante 420
13/12/2010, 20:25
jejejejejeje

Al final si esto llega a puerto.... tevoy a tener que dar el portatil del compañero.... que te lo estas ganando más que él.....

Mientras tu y yo estamos aqui dandole, el muy c_ _ _ _ _ _ se lo esta pasando teta jugando al WoW.

Aunolose
13/12/2010, 20:25
Los parpadeos solo se evitan si "apagas" todos los leds durante la carga, esto es, si pones OE a 1, como la rutina es muy rápida, puedes apagarlos al principio y encenderlos al final, ningún ojo humano se va a enterar :D


Edito, creo que con el latch (ST_CP) también se evitan los parpadeos, le das un pulso a 1 al final de la rutina, pero solo un pulso, no lo dejes a 1, de esta manera no se apaga ningún led, que no toque apagarse.

navegante 420
13/12/2010, 21:25
Vale, ya lo tengo.

MR debes ponerlo efectivamente a positivo, por lo que te digo, es un Master Reset negado, así que si lo pones a 0, haces un reset en las salidas. OE en cambio debes ponerlo a 0, porque es Output Enable, también negado es decir permite las salidas a 0.

Ok, ahora mismo lo tengo a palo seco, sin resitencias


Luego me parece que te falta un flanco de subida en ST_CP al final de la rutina de rotar, es el que latchea (fija) las salidas.

La subida y bajada del flanco ST-CP lo hago fuera de la subrutina, vale asi???? o es que tienen que ser dos????? o es que no puede estar fuera de la subrutina????


otra cosa ¿porque cuentas 9 y no 8?

Porque al usar el decfsz me faltaria un dato por cargar....

contador a 8
cargo bit 0
contador a 7
cargo bit 1
contador a 6
cargo bit 2
contador a 5
cargo bit 3
contador a 4
cargo bit 4
contador 3
cargo bit 5
contador a 2
cargo bit 6
contador a 1
cargo bit 7
contador a 0

joder.... pues te juro que el dia que lo calcule, te juro que me faltaba un bit....


Y desde luego colocar cada cosa en su sitio... :D

ya esta corregido.

navegante 420
13/12/2010, 21:27
Los parpadeos solo se evitan si "apagas" todos los leds durante la carga, esto es, si pones OE a 1, como la rutina es muy rápida, puedes apagarlos al principio y encenderlos al final, ningún ojo humano se va a enterar :D


Edito, creo que con el latch (ST_CP) también se evitan los parpadeos, le das un pulso a 1 al final de la rutina, pero solo un pulso, no lo dejes a 1, de esta manera no se apaga ningún led, que no toque apagarse.

Ok. si la enana me deja lo pruebo ahora mismo.

Aunolose
14/12/2010, 09:24
Ayer me puse a hablar por teléfono y ya no volví a entrar.

Eh visto el pulso de ST_CP, yo lo metería dentro de la rutina, al final antes de volver, pues forma parte del protocolo.

Al inicio del programa debes poner todo como toca, los relojes a cero, el reset a uno (o con un breve pulso a 0, o con la resistencia y el condensador) el OE a 0, o directamente a masa, y cambiarlos solo cuando sea necesario, en la rutina, y que todo salga de allí "como toca", de esta manera, si algún día cambias ese integrado por otro, con cambiar la rutina ya lo tienes, no tendrás que cambiar nada del resto del programa, y al revés, si te llevas ese integrado a otro sitio, la rutina te la llevas detrás sabiendo que funciona (cuando funcione) sin depender del programa, por eso lo de meter el pulso de ST_CP dentro.

navegante 420
14/12/2010, 21:27
Tranqui oscar, yo tampoco pude dedicarle mucho mas.....

te explico, el tener el cambio de nivel ST_CP fuera, es porque en el programa grande, controlo tres 595, y de esta manera comparto la subrutina de carga y luego por difentes puertos activo.
Pero na..... que no consigo que se encienda ni un puñetero led.... odio el harware....

he provado continuidades, repasado sofware, y na..... que asco me esta dando esto de la electronica....

Si no me he confundido el esquema electrico es este:

http://www.webcampista.com/foro/asset.php?fid=38943úid=2327&d=1292350919

Y el codigo completo.

; **** Encabezado ****
list p=16F84A ; Microcontrolador utilizado.-
#include P16F84A.inc ; Definicion de registros SFR.-
__CONFIG _XT_OSC & _PWRTE_OFF & _WDT_OFF & _CP_OFF
;**** Definicion de Variables ****
CBLOCK 0x0C ; En esta posicion se declaran los registros de usuario (GPR)
contadorsal
regsalida
PDel0
PDel1
ENDC

;**** Inicio del Microcontrolador ****
Reset
org 0x00
goto Inicio ; Salto a inicio del programa.-
;**** Vector de Interrupcion ****
org 0x04
goto Inicio_ISR ; Atiendo Interrupcion.-
;**** Programa principal ****
org 0x05
Inicio
;---- Configuraciones ----
bsf STATUS,RP0 ; Banco 1.-
movlw 0xF2
movwf TRISA ;esees
movlw 0xFF
movwf TRISB ;eeeeeese
movlw 0xDF
movwf OPTION_REG ; Pull-Up deshabiltado, , Timer0|interno, 1:1
bcf STATUS,RP0 ; Banco 0.-


principal
movlw b'00011000'
movwf regsalida
clrf PORTA
clrf PORTB
call carga595
bsf PORTA,0
bcf PORTA,0
call DEMORA
movlw b'10010000'
movwf regsalida
call carga595
bsf PORTA,0
bcf PORTA,0
call DEMORA
goto principal

carga595
movlw b'00001000'
movwf contadorsal
salida
btfsc regsalida,0 ;miramos que tenemos en datosalida
goto uno
bcf PORTA,2 ;o un 0
goto cont
uno
bsf PORTA,2 ;dependiendo de como este, cargamos un 1
cont
bsf PORTA,3 ;subimos el clk
bcf PORTA,3 ;bajamos el clk
rrf regsalida,f ;rotamos datosalida.
decfsz contadorsal,f ;descendemos el contador en una unidad
goto salida
return

DEMORA movlw .239 ; 1 set numero de repeticion (B)
movwf PDel0 ; 1 |
PLoop1 movlw .232 ; 1 set numero de repeticion (A)
movwf PDel1 ; 1 |
PLoop2 clrwdt ; 1 clear watchdog
PDelL1 goto PDelL2 ; 2 ciclos delay
PDelL2 goto PDelL3 ; 2 ciclos delay
PDelL3 clrwdt ; 1 ciclo delay
decfsz PDel1, 1 ; 1 + (1) es el tiempo 0 ? (A)
goto PLoop2 ; 2 no, loop
decfsz PDel0, 1 ; 1 + (1) es el tiempo 0 ? (B)
goto PLoop1 ; 2 no, loop
PDelL4 goto PDelL5 ; 2 ciclos delay
PDelL5 goto PDelL6 ; 2 ciclos delay
PDelL6 goto PDelL7 ; 2 ciclos delay
PDelL7 clrwdt ; 1 ciclo delay
return ; 2+2 Fin.
;**** Rutina de servicio de Interrupcion ****
Inicio_ISR
retfie
;.......................
end

Por hoy plego, que llevo 5 horas con esto....... y tengo que cambiar de clase que tengo rat y fol.... y despues partido pa desaogarme un poco.... mañana mas.

Aunolose
14/12/2010, 23:29
Vaya, he entrado tarde, lo he mirado deprisa, pero el código me parece que está bien, si acaso sobra lo de la demora, la quitaría por si acaso tuvieran algún problema, que con tanto goto te confieso que me he perdido..., el integrado es más rápido que el chip, no creo que halla problemas, ¿que tal un pulsador para incrementar la cuenta que sacas por los leds? el programa saca un dato y se espera a que se pulse el botón, entonces incrementa un registro, que sacas por el integrado y vuelve a esperar.

También me parece que sobra el condensador en la pata RA0, de hecho, es posible que ese sea el problema, si no le da tiempo a subir a la señal ST_CP por culpa del condensador, la información no pasa fuera.

Lo de las Pull up ¿era solo para el puerto B?, porque si son para el A, hacen falta.

navegante 420
15/12/2010, 02:36
Ok oscar mañana pruebo esas modificaciones... ahora voy a probar con el ccs...

navegante 420
17/12/2010, 22:04
Dios existeeeeeee!!!!!!!!!



Ya funciona el puto 595......

Aunolose
17/12/2010, 23:10
jajaja, :D :D

¿que era al final?, para que lo sepamos.

navegante 420
18/12/2010, 01:58
Pues no se yo si vas a queres saberlo.... porque el error era de sofware, y es pa darse cabezazos.... muchos cabezazos.... :banghead::banghead::banghead:

Era tan sencillo como no dar por echo que en el ciclo del pulso venimos del 0 con lo que tenemos que escribir el ciclo completo.

bcf
bsf
bcf
:banghead::banghead::banghead:

Aunolose
18/12/2010, 03:39
entonces hay un fallo en el CLR PortA y CLR PortB, porque eso lo pone a cero todo, además, eso podría ser la primera vez, pero acabas el bucle dejando las dos señales a 0, ¿has quitado el condensador al final o no?

Podrías poner el código completo a ver como ha quedado finalmente.

navegante 420
18/12/2010, 22:39
Pues este es el código que desvelo mi error.

#include<16f84a.h>
#fuses XT,NOWDT,NOPUT,NOPROTECT
#use delay(clock=4000000)
#use fast_io(a)
#use fast_io(b)

void main()
{
int value=0xf2,n;

set_tris_a(0);
set_tris_b(0xff);



for(n=0;n<8;n++){
output_bit(pin_a0,((value >> n) & 1));
output_low(pin_a1);
output_high(pin_a1);
//delay_us();
output_low(pin_a1);
}
output_low(pin_a2);
output_high(pin_a2);
//delay_us();
output_low(pin_a2);
}

Aunolose
19/12/2010, 18:42
Eso es c, no es ensamblador :D

En C se puede usar la directiva #define que te hace las cosas más fáciles.

Puedes poner:
#define dato pin_a0
#define clock pin_a1
#define strobe pin_a2

y así es más difícil equivocarse con a1, a2, a0, es más, si en el diseño final te das cuenta de que es más fácil que las pistas cambien de sitio, vas al #define lo cambias y ya lo has cambiado en todo el programa.


Edito, en ensamblador también se puede hacer con EQU, si no recuerdo mal...

navegante 420
23/12/2010, 00:40
pues si... en esambler tenemos la instrucción EQU

Perdona que no haya dicho nada antes... Pero me quedaban 2 días de clase y un montón de cosas por probar...

Al hacer las pruebas nos ha salido un expediente x. Te explico tenemos el pic, los 595, los conversores 7447 bcd, el display y los leds. Todo en proto menos el pic que esta en la entrenedora.

enciendo la fuente de alimentación, y to esta loco, toco cualquier masa, y arranca el programa del pic y todo funciona de p m.

Nosotros lo hemos atribuido al trabajar con frecuencias y la tener tanto cable, a un problema de imperancias, pero se te ocurre algo a ti?????

gracias.

Ahora voy a seguir, que el profe me ha dejado una fuente pa jugar, digo para hacer pruebas en casa.....

Aunolose
23/12/2010, 12:17
¿Quieres decir que solo con eso ya funcionó?

El condensador me sigue "molestando" a la vista.

De las board puedo decirte que... uffffff, en cuanto a empiezan a tener tiempo de uso, los contactos son muy malos, sobre todo si los cables son de un diámetro muy grande al principio de uso. Es mejor que la punta sea larga y fina, por lo menos al principio... y cuanto menos se muevan los cables una vez puestos mejor, pero al final todas acaban fallando de un modo u otro.
Lo de las frecuencias, no lo creo, la distancia es muy pequeña y con un reloj de 4Mhz, la máxima que llegará a las patas del PIC será de 1Mhz, poco para dar problemas en esa distancia.

Vamos, que salvo el condensador, que no lo veo, es muy posible que el fallo estuviera en las masas o en otra pata, como dices.

navegante 420
05/01/2011, 16:18
Jejejeje, el condensador ese ya hace dias que paso a mejor vida, jejejeje

Respecto a la proto, decirte que apesar de tener un año, es nueva, pues hasta ahora no habia empezado a usarla, con lo que los contactos aun estan virgenes.

eso de la frecuencia no lo sabia, nuevo dato a almacenar.

mirare de hacer la placa el dia 10 y haber que pasa.

navegante 420
19/01/2011, 14:33
Bueno, al final como dicen, muerto el perro, muerta la rabia, o algo así.....

Haciendo el calculo de costes me he percado que los 3 75hc595 más el 16f84a, cuestan más que el 18f4550 y además tengo la ventaja de que con este pic tengo oscilador interno, 40 patillas, y algo que me va de coña para cuando amplie el proyecto, comunicacion SPI.

Así que estos días que he estado desconectado a sido porque me estaba pelenadome con el ccs y el pic, intentando encerder un puñetero led. jejeje.

Aunolose
19/01/2011, 17:29
Eso te pasará muchas veces. Para proyectos caseros usar un micro otro no suele suponer un ahorro decisivo, y si lo es las ventajas añadidas, ese que dices tiene USB, lo puedes programar directamente desde ahí (USB) con un Bootloader, en cualquier sitio donde estés, y sin programador especial, solo "pierdes" dos patas (las del USB) incluso usando unos jumper, no tienes porque perder nada.

Y aprovecho para decirte que siempre que puedas por tamaño y economía, coloques las patas necesarias para la programación en un conector, para poder programarlo directamente en la placa, sin bootloader, aunque en este caso con un programador normal,
en el caso del 2550 las patas son, RB6, RB7, Reset, + y -

Esto ultimo se puede hacer con todos, te ahorras quitar y poner el pic de la placa, con el riesgo de romper una pata cada vez.