TODOPIC

Microcontroladores PIC => Primeros pasos - Iniciación a los microcontroladores => Mensaje iniciado por: d4n13l4 en 17 de Junio de 2010, 14:15:19

Título: salida 16f877
Publicado por: d4n13l4 en 17 de Junio de 2010, 14:15:19
Hola tengo una duda resulta que programo un 16f877 para que con 1 me abra y con 2 me cierre mi duda es en la salida cuando "abra" entregara un valor alto de cuando es este valor? ya que utilizare un transistor para que funcione como interruptor a la salida del pic

(a que pin del pic deberia ir la base del transistor? )

Título: Re: salida 16f877
Publicado por: septiembre_negro en 17 de Junio de 2010, 15:10:25
Deberías extenderte y explicar mejor que pretendes realizar la verdad es que no se entiende tu consulta.
Si lo que quieres es controlar un transistor con un pìn del pic, puedes utilizar cualquiera siempre y cuando sea digital y este configurado cono salida, el voltaje que  entrega este pin a la base del transistor en igual al de la fuente con que es alimentado el pic 5vcc.

Título: Re: salida 16f877
Publicado por: d4n13l4 en 17 de Junio de 2010, 15:14:30
explico un poco mas
voy a conectar el pic al pc atraves de un max232 el pic esta programado para que cuando aprete un 1 me abra una puerta y cuando aprete un 2 me la cierre, el circuito que traducira la instruccion del pic sera un transistor con un rele
entonces mi duda era el valor del voltaje que sale del pic cuando aprete el 1 que seria un valor alto

mi segunda duda era en que pin debe ir la base del transistor para que le llegue el valor del pic por si el pic tuviera un pin que se llame salida como lo tiene un 555 por ejemplo

espero haberme explicado mas  :oops:
Título: Re: salida 16f877
Publicado por: Leon Pic en 17 de Junio de 2010, 18:26:18
La tensión de salida del pic, dependerá de la alimentación del PIC. Si al mismo lo alimentás con 5V, su salida será 5V cuando esté en estado lógico alto. En cambio, si alimentás al pic con 3V, en la salida habrá 3V con un estado lógico 1.

En cuanto a que salida deberás colocar el transistor, pues ya te lo contestó septiembre negro. El pic 16F877 posee 4 puertos el cual, se los puede configurar como salida o entrada cada bit de cada puerto en forma independiente. Tendrás que elegir una salida que te resulte más cómodo para tu proyecto.

A la hora de elegir un bit o un puerto del pic, tienes que tener en cuenta cual es su segunda función, por ejemplo, en el puerto A de este pic, posee entrada analógica. Si tienes que utilizar las 8 entradas analógica, está más que obvio que no tienes que utilizar ningún bit del puerto A.
Título: Re: salida 16f877
Publicado por: d4n13l4 en 17 de Junio de 2010, 18:33:25
ah ok tendre q leer sobre los puertos del pic que desconocia eso
yo solo sabia que tenia que conectar el tx y rx del pic con el 232 (no me manejo mucho con pics)
Título: Re: salida 16f877
Publicado por: Leon Pic en 17 de Junio de 2010, 18:45:45
Como sabrás, este pic posee, en su hardware, una comunicación serial asincrónica y sincrónica. Los pines de comunicación están en el puerto C más precisamente en los bits RC6 y RC7. Ahí tendrás que conectar el MAX232 si quieres aprovechar la comunicación serie que posee el pic. Podrás usar cualquier pin si vas a implementar por software la comunicación serial.
Título: Re: salida 16f877
Publicado por: d4n13l4 en 17 de Junio de 2010, 18:52:13
mmm tengo conectado el pic con el max en el 25 y 26 que son el RC6 y RC7

Citar
Podrás usar cualquier pin si vas a implementar por software la comunicación serial.
a la salida te refieres?

grax por tus respuestas
Título: Re: salida 16f877
Publicado por: willynovi en 17 de Junio de 2010, 21:48:54
ah ok tendre q leer sobre los puertos del pic que desconocia eso
yo solo sabia que tenia que conectar el tx y rx del pic con el 232 (no me manejo mucho con pics)

mas que leer sobre los puerto, podrias ver algun tutorial de información general sobre microcontroladores PIC.
Si buscas en el foro hay de sobra, incluso hasta proyectos que hacen lo que tu dices.

Basicamente lo que tienes que hacer es:
Lado PC: Soft para gestion del puerto serie.
Lado PIC: Firmware para gestión de la comunicación.

No es tan simple como conectar los cables al MAX232, el PIC y la PC, necesitas cargarle un programa al PIC para que este haga las funciones que le digas, ya sea prender un led o manejar un LCD, o por mas que el 16F877 tenga la USART, es necesario que le indiques que hacer con los datos que recibe.

Saludos y sigue adelante, que cuando descubras el potencial de los PICs no vas a querer dejarlos :mrgreen:
Título: Re: salida 16f877
Publicado por: d4n13l4 en 17 de Junio de 2010, 22:05:33
Hola si obvio esa parte del programa la tengo, tengo el programa que  hara lo que dije q haria tengo que cargarselo y luego conectarlo al max232 y este al pc (me dijeron que la conexion podia ser directa, los cables del tx y rx del 232 al puerto serie del pc) y en el pc con el  hyperterminal creo una conexion para que funcione el pic

por eso hasta ahora tengo el programa listo me falta cargarselo al pic y una vez cargado el circuito esta armado tambien con los condensadores que deben ir en el max232 segun esta imagen
(http://www.iearobotics.com/proyectos/cuadernos/ct1/images/max232-conex.jpg)
quizas para probar podria ser una buena idea colocar leds en la salida para probar que si apreto un 1 se prenda y un 2 se apague y despues probar con el circuito original
Título: Re: salida 16f877
Publicado por: Leon Pic en 18 de Junio de 2010, 12:01:10
mmm tengo conectado el pic con el max en el 25 y 26 que son el RC6 y RC7

Citar
Podrás usar cualquier pin si vas a implementar por software la comunicación serial.
a la salida te refieres?

grax por tus respuestas

No me has entendido d4n13l4
El Pic tiene implementado, por hardware, la comunicación serial. Para utilizarlo debes conectar al MAX232 a los pines RC6 y RC7 (tal como lo has echo, que recién ahora nos lo dijiste) pero a veces, por razones que no vienen al caso, muchos implementan la comunicación serial por software. En este caso, puedes utilizar cualquier pin para la comunicación serial.

Título: Re: salida 16f877
Publicado por: d4n13l4 en 18 de Junio de 2010, 13:22:42
aaah ya te entendi, es que pense que la salida del pic era independiente de la conexion y esa es mi duda
si quisiera poner un led que se encienda cuando apreto un 1 en que pin tendria que ponerlo?
este es mi codigo
Código: [Seleccionar]
#include <16F877.h>
#FUSES XT,NOWDT
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7)

///////////////////////Principio del programa//////////////////////////////////

void main(void)
{

 int dato=0;//declaracion de variables
 set_tris_b(0b11111111);//puerto b como salida
 set_tris_c(0b10111111); //RC7/Rx entrada, RC6/Tx salida
 output_b(0b00000000); //pone en ceros todo el puerto b

while(TRUE)//Ciclo
{
   
   if(kbhit())//si ha llegado un dato
   {
      dato=getc(); //Lee el dato recibido
     
      if (dato==1)//si el dato es 1
      {
         
          output_high(PIN_B0);
         
      }
     
      if (dato==2)//si el dato es 2
      {
     
         output_low(PIN_B0);
      }
         
     
     
   }   
   
 
}

}
//////////////////////////////Fin del programa//////////////////////////////////
Título: Re: salida 16f877
Publicado por: Leon Pic en 18 de Junio de 2010, 17:17:42
Por lo que veo, ese código no es tuyo.

if (dato==1)//si el dato es 1
      {
         
          output_high(PIN_B0);
         
      }
     
      if (dato==2)//si el dato es 2
      {
     
         output_low(PIN_B0);

Esta parte del código analiza el valor de entrada. Dice que si el dato es 1, coloca el PIN B0 en 1. Por otra parte, si el dato recibido es 2, coloca el pin B0 en 0 por lo que el led debe de estar conectado al pin RB0. El ánodo del led debe estar conectado al pic por medio de una resistencia limitadora y el cátodo a masa.
Título: Re: salida 16f877
Publicado por: d4n13l4 en 18 de Junio de 2010, 18:05:00
nops no es mio el codigo me lo mandaron porque serviria para lo que quiero hacer
sino se de pics menos se de programar uno, el lenguaje ni nada

por eso decia que cuando aprete un 1 en el teclado la salida estaria en alto lo que me serviria para abrir la puerta que en su defecto para probar la conexion se encenderia el led
Título: Re: salida 16f877
Publicado por: Leon Pic en 18 de Junio de 2010, 18:32:59
Pero no hay problema. :wink:
Aprender los pic es relativamente fácil

¿Sabes programar en algún lenguaje en especial?
Título: Re: salida 16f877
Publicado por: d4n13l4 en 18 de Junio de 2010, 18:44:10
tuve un curso de c++ pero hace mil añs  :D y no me acuerdo
se un poco mas de php y mysql
pero el programa y el .hex que va para cargar el pic ya lo genere
Título: Re: salida 16f877
Publicado por: Leon Pic en 18 de Junio de 2010, 22:01:07
Podrías programar los PIC en lenguaje C tal como el que has subido, que sino me equivoco es CCS C.
En el foro de C, hay muchísimos temas para aprender a programar en C a estos micros.