Autor Tema: Problema con varios 16f628a conectados por serial  (Leído 2497 veces)

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

Desconectado maur0328

  • PIC10
  • *
  • Mensajes: 1
Problema con varios 16f628a conectados por serial
« en: 23 de Junio de 2009, 06:22:31 »
Hola amigos, he leído muchos de sus foros pero al parecer nadie ha tenido el problema que tengo.... quiero controlar varias cosas distintas, por lo que decidí hacer una comunicación serial entre varios pics. Al principio todo funcionaba de maravilla, pero al seguir aumentando la cantidad de módulos comenzó el problema. Uno de los pics es el que envia datos por el B2(TX), y todos los otros pics estan conectados por un mismo cable .... algo asi como un BUS, al B1 (RX)...... todo esta alimentado con una fuente de computador por lo que creo que el voltaje de alimentación y el ruido están controlados....... intente hacer pruebas eliminando el pic principal y conectando el cable del BUS directamente al max232 y enviar los datos desde el computador, pero de un momento a otro comienza a volverse loco..... si pruebo cada uno de los programas independientes todo funciona de maravilla pero me he dado cuenta que todo falla cuando son mas de 5 pics aproximadamente conectados al cable (BUS), a continuación pongo el código del programa que mas se vuelve loco, este es para controlar 2 reles.

#include <16F628A.h>
#fuses HS,NOWDT,PROTECT,NOLVP,NOPUT,NOBROWNOUT
#use delay(clock=20000000)
#use rs232(baud=9600,parity=N, xmit=PIN_B2, rcv=PIN_B1,bits=8)
  int dato = 0;

void motor(dato){
         if(dato == 51){
            output_high(PIN_B4);
            delay_ms(1250);
            output_low(PIN_B4);
         }
         if(dato == 52){
            output_high(PIN_A3);
            output_high(PIN_B4);
            delay_ms(900);
            output_low(PIN_B4);
            output_low(PIN_A3);
         }
}
void main(){

   set_tris_a(0x00);
   set_tris_b(0x02);
   port_b_pullups(true);
   enable_interrupts(INT_RDA);
   enable_interrupts(GLOBAL);
   setup_oscillator(false);

   output_low(PIN_B4);
   output_low(PIN_A3);

   printf("start");

   while (true){
         if(kbhit()){
            dato = getc();
            putc(dato);
            motor(dato);
         }
   }
}

Cuando se vuelve loco, comienza a prende y apagar los reles, y si le mando el valor 51 o 52 funciona bien, pero apenas dejo de enviarle datos, comienza a cambiar de estado de forma aleatoria.

Estaba leyendo que el numero de dispositivos que pueden conectarse a un bus I2C esta limitado, de forma que este no supere los 400 pF de capacitancia.
Alguien me puede explicar que es eso??.... cuanta capacitancia tiene un pic???.... sera que eso es lo que hace que se vuelvan locos todos los pics?????.


Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Problema con varios 16f628a conectados por serial
« Respuesta #1 en: 23 de Junio de 2009, 14:49:18 »
Hola.

Si vas a usar serial con varios pics debes usar RS485. Goglea y busca en el foro y encontraras mucha informacion.

Saludos
El papel lo aguanta todo

Desconectado jodorowsky

  • PIC12
  • **
  • Mensajes: 52
Re: Problema con varios 16f628a conectados por serial
« Respuesta #2 en: 26 de Junio de 2009, 23:15:18 »
Hola maur0328

Creo que estas confundiendo las cosas. Una cosa es rs232 y otra diferente es i2c. No puedes usar rs232 para conectar mas de 2 dispositivos ya que está diseñado para comunicación punto a punto. Es decir que solo puedes conectar 2 pic entre si o un pc y un pic. El max 232 es un conversor de voltajes TTL a RS232. Se lo utiliza para comunicarse con un pc.

i2c es un bus y puedes tener varios dispositivos colgados al bus, como pics, memorias, relojes, conversores ADC,etc.

Si quieres conectar varios pic entre si, debes utilizar i2c. Si quieres conectar varios pic entre si y un pc tambien, utiliza rs485.
Sobre rs485 puedes utilizar el max485 para adaptar señales ttl del pic. tambien hay el 75sn176.

Para ayudarte mejor tambien podrias postear tu circuito, y diagramas, asi es mas facil ver el problema.

Desconectado darck_khronos

  • PIC18
  • ****
  • Mensajes: 493
Re: Problema con varios 16f628a conectados por serial
« Respuesta #3 en: 26 de Junio de 2009, 23:31:11 »
ya hay un tema con el 485


 

anything