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

Temas similares

11/04/2010 #1


Dónde está el error?
Hola a todos. Para empezar les diré que estoy tratando con el puerto A de un pic 16f876A como salida. RA4, la tengo conectada con una pull-up de 1K (el problema persiste si cambio a una R mayor como 10K) a Vcc. Aclaro esto por que la patilla RA4 es en colector abierto para poder excitar cargas a más de 5 voltios, y es un error bastante común, tratar con ella como salida digital, y cuando envias un 1, se queda en alta impedancia.
Contolo un pequeño motor DC, con el puerto A anteriormente citado, a través de un driver L293E con los pines RA3, RA4y RA5
concretamente:
#bit in1_motor_esquerre= 0x05.3 //RA3
#bit in2_motor_esquerre= 0x05.4 //RA4
#bit enable_motor_esquerre= 0x05.5 //RA5

Pues bien, lo único que pretendo es que la temible RA4, pase de 1 a 0 y de 0 a 1, en funcion de la activación de una entrada
(#bit sensor_exterior_esquerre= 0x06.0 //RB0) debidamente configurada como entrada, manteniendo las otras 2 salidas siempre a 1.
Los que conozcaís un poco el driver L293E, os habreís dado cuenta que trato poner en marcha el motor:

in1_motor_esquerre= 1
in2_motor_esquerre= 0
enable_motor_esquerre= 1

o que se frene:

in1_motor_esquerre= 1
in2_motor_esquerre= 1
enable_motor_esquerre= 1

Lo único que debe cambiar, es el valor de la temible RA4.

Si hago esto, la salida RA4 pasa de 0 (90 mV) a 1(4.97 V) y viceversa sin problemas, cuando activo la entrada RB0, y por tanto el motor se pone en marcha y se frena:

void main()
{
TRISA=0x00;
TRISB=0X3F;

enable_motor_esquerre=1;
in1_motor_esquerre=1;

do{
if(sensor_exterior_esquerre==1)
{
in2_motor_esquerre=1;
}
else
{
in2_motor_esquerre=0;
}

}while(1);
}


Pero si hago esto otro , La salida RA4 pasa de 0 (90 mV) a como mucho (0,34 V), que no se reconoce como un 1, claro etá:

void main()
{
TRISA=0x00;
TRISB=0X3F;

do{
if(sensor_exterior_esquerre==1)
{
enable_motor_esquerre=1;
in1_motor_esquerre=1;
in2_motor_esquerre=1;
}
else
{
enable_motor_esquerre=1;
in1_motor_esquerre=1;
in2_motor_esquerre=0;
}

}while(1);
}


la razon por la que deseo utilizar el segundo caso es porque quiero utilizar funciones que me permitan poner en marcha el motor y frenarlo.

¿Me podriaís dar algun consejo para que la puñetera salida RA4, una vez puesta a 0, suba a 1 y no se quede en 0,34 V?
Gracias de antemano a todos!

Bueno, si lo sé, no posteo nada.
He comprobado la etapa de potencia. He cambiado el IC L293E y todo funciona de maravilla.

Me parece que debe ser la primera vez en la historia de este foro, que alguien se resuelve tan rápido un problema a sí mismo.

Bueno, si lo sé, no posteo nada.
He comprobado la etapa de potencia. He cambiado el IC L293E y todo funciona de maravilla.

Me parece que debe ser la primera vez en la historia de este foro, que alguien se resuelve tan rápido un problema a sí mismo.
Respuesta
¿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.