Autor Tema: activacion puerto serial  (Leído 8380 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado d4n13l4

  • PIC16
  • ***
  • Mensajes: 107
activacion puerto serial
« en: 16 de Mayo de 2010, 18:42:28 »
Hola tengo un lio en mi cabeza de tanto que he leido que ya no se como empezar
de que forma puedo enviar una señal desde el pc al puerto serial el cual ira conectado a un rs232 que activara un rele o algo en una placa externa?
tendria que tener un programa que al hacerle click envie tal señal?

Desconectado mtristan

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 395
Re: activacion puerto serial
« Respuesta #1 en: 16 de Mayo de 2010, 19:45:32 »
.


Para mandar un dato al pic por rs232 desde la pc tenés que tener:

- Algún programa para el control del puerto serial en la pc (como el hyperterminal o alguno parecido).
- Una interfaz entre pic y pc.
- Un programa en el pic que reciba datos seriales y los analice para, por ejemplo, activar o desactivar un relay.

Por lo primero, lo más sencillo es buscar alguno en la web, instalarlo y listo. Otra opción es hacer un programa propio, pero como solo se programar en C y nunca pude controlar un puerto  :oops:, no puedo decirte qué tan fácil es..
Lo segundo, con un simple integrado MAX232 alcanza. En el datasheet se muestra su modo de uso y cómo conectarlo que, por cierto, es de lo más fácil. Si hacen falta más cosas de las que soporta el integrado (por ejemplo, si usás un cable muy largo tal vez con las caídas de tensión y el ruido no te alcance), hay que buscar otro intergado o diseñar una interfaz con componentes discretos, y ahí no me gustraía estar en tus zapatos  :grin:.
Por último, hay pics que poseen módulos USART especializados en comunicación de datos en forma serial y que facilitan mucho el trabajo. Hay un artículo en este foro muy claro, hecho por Suky, que explica el funcionamiento de este módulo en un 16F628 y tiene ejemplos en ASM, con esquemáticos y todo.

Espero que haya aclarado un poco el asunto y no ser más de lo mismo que ya has leído. ¡Saludos!



When you see a good move, look for a better one (Emanuel Lasker)

Desconectado d4n13l4

  • PIC16
  • ***
  • Mensajes: 107
Re: activacion puerto serial
« Respuesta #2 en: 16 de Mayo de 2010, 19:50:29 »
Hola gracias por tu respuesta
no conoces tu algun programa que me sirva para el primer punto que dices? que lo hayas probado

Saludos

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: activacion puerto serial
« Respuesta #3 en: 16 de Mayo de 2010, 20:15:59 »
Hola.

Para comenzar podrias usar el hyperterminal de window$.
El papel lo aguanta todo

Desconectado d4n13l4

  • PIC16
  • ***
  • Mensajes: 107
Re: activacion puerto serial
« Respuesta #4 en: 16 de Mayo de 2010, 20:39:42 »
el problema es que no se como programar no se que comandos son los correctos por eso me gustaria un codigo para estudiarlo y comenzar de ahi ya que aun cuando lea se debe poner este codigo no es solo escribirlo es incluir librerias adecuadas etc y no me manejo muy bien con eso

Desconectado mtristan

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 395
Re: activacion puerto serial
« Respuesta #5 en: 16 de Mayo de 2010, 22:20:31 »
.


Si tenés el programa Hyperterminal (viene con algunas versiones no ten nuevas de windows en Programas>Accesorios>Comunicaciones) lo abrís y creas una nueva conexión. Luego selecionás "Conectar usando COM1" (o COM2, o el que quieras). Acto seguido, configurás la conexión de modo que lo que queden los mismos parámetros de comunicación que use el PIC (bits por segundo, pits de datos, de paridad, de parada). Una vez configurado, lo que teclees se manda por el puerto serial en formato de caracter ASCII y los caracteres que se reciban por el puerto que seleccionaste se muestran en la ventana del hyperterminal.
Así, por ejemplo, podés programar tu pic para que, cuando reciba el caracter '1' encienda el relay nº1, cuando reciba el '2' encienda el relay nº2, etc. Todo lo que tenés que hacer es abrir el hyperterm. y tipear los números correspondientes para que los mande por el puerto.
Si tu versión de windows no tiene el hyperterm. podés buscar un programa similar en la web (hay muchísimos, pero no tengo uno para recomendarte porque no me acuerdo como se llamaba el que tenía  :mrgreen:).
Saludos.


When you see a good move, look for a better one (Emanuel Lasker)

Desconectado d4n13l4

  • PIC16
  • ***
  • Mensajes: 107
Re: activacion puerto serial
« Respuesta #6 en: 16 de Mayo de 2010, 22:45:50 »
Hola me quedo mas claro como hacerlo
pero me falta una pequeña parte y la mas dificil creo que es poder controlar el hyperterminal por el celular ya que mi proyecto es que atraves del bluetooth del celular puedo controlar el abrir y cerrar de puertas internamente es que el celular se conecta via bluetooth al pc el cual envia informacion al puerto serial el que esta conectado aun pic que a su vez esta conectado a un rele que abrira o cerrara la puerta.

como podria controlar el hyperterminal atraves del celu?

cuando dices "una vez configurado lo que teclees se manda por el puerto serial" te refieres a que teniendo el hyperterminal abierto y siguiendo tu ejemplo al apretar '1' se encendera el relay 1 ? pporque de ser asi podria encontrar una forma de abrir el hyperterminal por el celular y apretar '1' en el celular tenga el mismo efecto que el '1' del pc
« Última modificación: 16 de Mayo de 2010, 22:59:37 por d4n13l4 »

Desconectado mtristan

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 395
Re: activacion puerto serial
« Respuesta #7 en: 17 de Mayo de 2010, 19:06:49 »
.


Mm.. la verdad que no se cómo podrías controlar el puerto serie con bluetooth. Podría hacerse un programa en la pc para recibir datos por USB (donde se conecta el adaptador de BT) y enviar por puerto serial, pero no tengó ni idea de cómo programar una cosa así  :huh:

Citar
cuando dices "una vez configurado lo que teclees se manda por el puerto serial" te refieres a que teniendo el hyperterminal abierto y siguiendo tu ejemplo al apretar '1' se encendera el relay 1 ? pporque de ser asi podria encontrar una forma de abrir el hyperterminal por el celular y apretar '1' en el celular tenga el mismo efecto que el '1' del pc

Esto depende por supuesto de cómo sea el programa que corre en el PIC conectado al puerto serial. No quiero decir que si conectas un pic al puerto y abrís el hypert. va a encender una cosa si apretás un 1 y otra si apretás un 2, a menos que el pic esté ejecutando un programa que reciba los caracteres, los interprete y encienda las salidas respectivas a cada caracter.
Aunque no estoy seguro de que se pueda abrir el hypert. con el celular   :?

Saludos.


When you see a good move, look for a better one (Emanuel Lasker)

Desconectado pipipi

  • PIC12
  • **
  • Mensajes: 91
Re: activacion puerto serial
« Respuesta #8 en: 17 de Mayo de 2010, 23:12:29 »
Hola d4n13l4:

Que es lo que necesitas realizar amigo por que si lo que quieres es controlar tu motor por medio de la pc via rs232 no es nada complicado ya que hay sofware que ya existen que te podrian ayudar yo he manejado uno pero no recuerdo el nombre  :oops:. con este sofware podrias manejar tu motor comunicando pc con pic. Pero si lo que quieres es comunicar un pic via bluetooth con un cel tambien se puede solo que tendrias que conseguir un modulo bluetooth para conectarlo con el PIC, te explico el PIC realizaria comunicacion rs232 con el modulo bluetooth que asu vez este transmitiria los datos al celular el unico prolblema es que tendrias que realizar una aplicacion para el celular la cual interactue con tu PIC y modulo bluetooth.

Desconectado d4n13l4

  • PIC16
  • ***
  • Mensajes: 107
Re: activacion puerto serial
« Respuesta #9 en: 17 de Mayo de 2010, 23:17:56 »
Hola te cuento lo que quiero es manejar el pic via bluetooth pero no ocupando esos modulos bluetooth como el rn41 que son bastante caros como para comprar varios por lo que quiero conectar un bluetooth tipo usb al pc y conectarme al pc via bluetooth con el celular de modo que envie instrucciones por el celular que hagan que el pic funcione

por ejemplo quiero tener una aplicacion en el celular que se conecte al computador y si la persona apreta en la aplicacion la opcion abrir puerta el pic sepa que debe abrir la puerta quiero hacer la comunicacion del pic con el pc atraves del puerto serial

creo que me explique si tienes alguna duda me dices y teexplico mejor
te agradeceria monton si me pudieras ayudar aun mas

Desconectado pipipi

  • PIC12
  • **
  • Mensajes: 91
Re: activacion puerto serial
« Respuesta #10 en: 18 de Mayo de 2010, 14:11:53 »
Hola amigo:

Claro que te puedo ayudar con un pequeño aporte, seria con la comunicacion rs232 entre el PIC y la PC, no se si estes familiarizado con el lenguaje en C pero tratare de ser lo mas explicito posible, este pequeño programita esta echo en el compilador CCS y es para el PIC 16f877. Te puedes apoyar con la hyperterminal de la PC o si quieres me pasas tu correo y te hago llegar el programita que yo utilizo (docklinght) y tambien te podria mandar el compilador en el que fue echo el programilla. Bueno el código el el siguiente:

#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//////////////////////////////////


Enpesamos por los fuses:
 
#FUSES NOWDT,XT
 
Los fuses son instrucciones para el programador NOWDT le indica al programador que no vas a usar el perro guardian, XT le indica que vas a usar un oscilador externo.

---------------------------------------------------------------------------------------------------------------
 #use delay(clock=4000000)
 
Esto corresponde al oscilador de 4mhz que se ocupa

----------------------------------------------------------------------------------------------------------------
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
 
Esto es la configuración de la comunicacion rs232 en la cual se ocupan 9600 baudios correspondientes a la velocidad de transmisión, ocupamos PIN_C6 como pin de transmisión y el PIN_C7 como PIN de recepción.

----------------------------------------------------------------------------------------------------------------
void main(void)
{
}
 
Esto es una función la cual corresponde a nuestro programa principal, es decir todo lo que este dentro de esta función es nuestro programa.

----------------------------------------------------------------------------------------------------------------
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

Aqui declaramos una variable como entero llamada "dato" en la cual vamos almacenar el dato transmitido de la PC al PIC.

Luego configuramos el puerto B como salida poniendo puros unos en el tris B, este puerto lo vamos a usar para prender o apagar tu motor.

Después configuramos el puerto C como entradas y salidas segun corresponde a los pines de recepción y transmisión.

Ponemos todo los pines del puerto B en cero para asegurar que ninguno se active hasta que se reciva algun dato por rs232.

----------------------------------------------------------------------------------------------------------------
if(kbhit())
{
}
El if en lenguaje en C que es ocupado como pregunta , en este caso lo que preguntamos con esta instrucción es que si ha llegado un dato de la PC al pic via rs232. Todo lo que esta dentro de esta instrucción se realiza si es que ha llegado un dato, si no, el pic no realiza nada y solo espera a que llegue el dato.

----------------------------------------------------------------------------------------------------------------
dato=getc();

Esta instrucción se encuentra dentro del if(kbhit()), es decir, que se ejecutara solo si ha llegado un dato de la PC. Con esta instrucción pasamos lo que hay en getc() hacia la variable dato declarada al principio de nuestra programación. En getc() se almacenan los datos recividos de la comunicacion rs232,es importante aclarar que debes ser muy cuidadoso con lo que le mandas de la PC al PIC, ya que como estamos esperando recivir 1 y 2 pero como variables enteras, si no los mandas asi esto te causara problema.

Por ejemplo si mandas  un 1 como caracter el PIC no lo tomaria en cuenta ya que 1 en caracter es igual a 49 en entero o decimal.

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

Por ultimo solo comparamos cual fue el dato recivido si uno o dos, si es uno ponemos en 1 el pin 0 del puerto B y si es 2 ponemos en cero el pin 0 del puerto B, es importante aclarar que estoy tomando en cuenta que solo necesitas prender y apagar un motor controlado por el PIC, no se si vallas a ocupar un motor a paso u otro, si es asi tendriamos que modificar el programa.

----------------------------------------------------------------------------------------------------------------

En esta pagina tienes la manera en la que ocuparias el max 232 y como se conecta tanto al PIC como a la PC: http://www.iearobotics.com/proyectos/cuadernos/ct1/images/max232-conex.jpg

Bueno es todo y espero te sirva de algo, si necesitas el sofware del compilador o el de simulación de la hypeterminal me dices y te lo mando. Suerte

Desconectado d4n13l4

  • PIC16
  • ***
  • Mensajes: 107
Re: activacion puerto serial
« Respuesta #11 en: 18 de Mayo de 2010, 16:51:59 »
Hola primero que todo gracias por tu ayuda
te dejo mi correo para que me envies los compiladores que me dices ya que pretendo ponerme a cablear el jueves y me seria util echarle un vistazo antes, mi correo: flaca_7688@hotmail.com
en cuanto tenga el pic y todo lo pruebo, es que habia perdido mi tiempo buscando hacer la parte del bluetooth sin avanzar por el otro lado ahora aun cuando habia visto como hacerlo pero teoricamente ahora con tu ayuda avanzare
te pasaste un monton  ;-)

una duda de la conexion del pic con el max232 de cuanto me recomiendas que compre los condensadores que van en los pines del max?
la verdad es que en c no me manejo asi que me viene mas que bien tu explicacion para entender lo que hace el codigo.


ah por cierto este seria el 232 a utlizar
http://www.globalelectronica.cl/InfoProd.asp?codigo=022-02320
y el pic este
http://www.globalelectronica.cl/InfoProd.asp?codigo=043-168772

no deberia tener problemas cierto?
Saludos
« Última modificación: 18 de Mayo de 2010, 16:55:41 por d4n13l4 »

Desconectado d4n13l4

  • PIC16
  • ***
  • Mensajes: 107
programar pic
« Respuesta #12 en: 12 de Septiembre de 2010, 16:50:18 »
Hola pipipi
estoy intentando programar el pic con el programa que me diste, pero no he tenido buenos resultados
estoy usando el docklight que me recomendaste, el codigo deberia ir en la parte de hex cierto? y tendria que tener el pic en el programador (tengo un pg2c) conectado al pc y darle al start comunication?
te pregunto porque intente con el mplab y no tuve suerte entonces buske el post donde me habias ayudado para preguntarte

Saludos


 

anything