TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: tuxon en 28 de Enero de 2012, 16:44:50
-
buenas tarde disculpen tengo un problema en donde estoy realizando mis practicas me pidieron que realizara un comunicacion desde una pc hacia cuatro pic`s esclavos por communicacion rs485 pero que segun esto de la computadroa solo sale la cmunicacion rs232 y tengo que usar un cnvertidor de rs 232 a rs485 como puedo hacer esto ? y como lo controlo desde el lenguje del pic en " c "
-
Amigo realiza busqueda en el foro con rs485, veras que sale montón de información.
saludos
-
gracias mano
-
Hola, tienes que emplear un MAX232 para pasar los niveles de tensión del puerto serie (+15-15v), a valores de TTL (0-5v), y con estos valores, lo ingresas a un MAX485 (SN75176) que te genera dos salidas en corriente, opuestas entre si...
por algun lado en el foro... estaba el circuito.....
http://www.todopic.com.ar/foros/index.php?topic=13389.msg311145#msg311145
(http://www.todopic.com.ar/foros/index.php?action=dlattach;topic=13389.0;attach=17694)
-
A mi me toco hacer algo parecido en mi practica, como datos útiles
Se trata de una practica, por lo que puedes pedir que te compren el conversor y te ahorras el drama de hacerlo :D
Necesitas saber si el tipo de comunicación que vas a utilizar (según lo que te hayan pedido) va a ser half duplex o full duplex,
half duplex usa solo 2 cables(A y B) ( 3 si incluyes tierra común(recomendado)) y full duplex usa 4
con eso claro, el resto es fácil
para la comunicación, esta funciona igual que el el serial 232, la diferencia que en vez de tener solo 1 pic conectado a la red, ahora puedes tener hasta 31 ( 32 nodos= 31 + pc)
vas a tener que diseñar un pequeño protocolo para que cada pic tenga una dirección única, de manera que los puedas controlar de forma independiente.
Saludos!
-
Hola, tienes que emplear un MAX232 para pasar los niveles de tensión del puerto serie (+15-15v), a valores de TTL (0-5v), y con estos valores, lo ingresas a un MAX485 (SN75176) que te genera dos salidas en corriente, opuestas entre si...
por algun lado en el foro... estaba el circuito.....
http://www.todopic.com.ar/foros/index.php?topic=13389.msg311145#msg311145
(http://www.todopic.com.ar/foros/index.php?action=dlattach;topic=13389.0;attach=17694)
el problema no es el hradware sino que ya no encuentro como hacer funcionar la comunicacion por que a lo que he leido todo doce que se usa igual que la rs 232 pero lo uso igual y no se como poner la direccion del esclavo no se si me explico señor todopic sipudiese poner o decirme como hacer esoo seria fantastico y gracias a todos por su ayuda ya ire comentando mis avanses y como va todo
-
Hola, tienes que emplear un MAX232 para pasar los niveles de tensión del puerto serie (+15-15v), a valores de TTL (0-5v), y con estos valores, lo ingresas a un MAX485 (SN75176) que te genera dos salidas en corriente, opuestas entre si...
por algun lado en el foro... estaba el circuito.....
http://www.todopic.com.ar/foros/index.php?topic=13389.msg311145#msg311145
(http://www.todopic.com.ar/foros/index.php?action=dlattach;topic=13389.0;attach=17694)
el problema no es el hradware sino que ya no encuentro como hacer funcionar la comunicacion por que a lo que he leido todo doce que se usa igual que la rs 232 pero lo uso igual y no se como poner la direccion del esclavo no se si me explico señor todopic sipudiese poner o decirme como hacer esoo seria fantastico y gracias a todos por su ayuda ya ire comentando mis avanses y como va todo
bien osea si entiendo a la perfeccion como "teoricamente" hacer eso que dices pero no he podido hacer funcionarlo osea no se realmente como decirle al esclavo como es su nombre y como decirle al maestro que le able a cierto esclavo no se si sfui claro jja normalmente siempre me enredo solo
-
Si necesitas una placa aqui esta tambien el post del pcb
http://www.todopic.com.ar/foros/index.php?topic=26076.0
(http://img509.imageshack.us/img509/127/13974575.png)
-
Hola, tienes que emplear un MAX232 para pasar los niveles de tensión del puerto serie (+15-15v), a valores de TTL (0-5v), y con estos valores, lo ingresas a un MAX485 (SN75176) que te genera dos salidas en corriente, opuestas entre si...
por algun lado en el foro... estaba el circuito.....
http://www.todopic.com.ar/foros/index.php?topic=13389.msg311145#msg311145
(http://www.todopic.com.ar/foros/index.php?action=dlattach;topic=13389.0;attach=17694)
el problema no es el hradware sino que ya no encuentro como hacer funcionar la comunicacion por que a lo que he leido todo doce que se usa igual que la rs 232 pero lo uso igual y no se como poner la direccion del esclavo no se si me explico señor todopic sipudiese poner o decirme como hacer esoo seria fantastico y gracias a todos por su ayuda ya ire comentando mis avanses y como va todo
bien osea si entiendo a la perfeccion como "teoricamente" hacer eso que dices pero no he podido hacer funcionarlo osea no se realmente como decirle al esclavo como es su nombre y como decirle al maestro que le able a cierto esclavo no se si sfui claro jja normalmente siempre me enredo solo
Eso es facil, al micro esclavo siempre lo vaz a dejar esperando orden, nose con un getc() o mediante alguna interrucion por rs232, el maestro siempre estara transmitiendo, la ventaja que hay en el 485 es que cualquiera de los esclavos puede ser maestro todo dependera de las condiciones que uses.
-
Eso es facil, al micro esclavo siempre lo vaz a dejar esperando orden, nose con un getc() o mediante alguna interrucion por rs232, el maestro siempre estara transmitiendo, la ventaja que hay en el 485 es que cualquiera de los esclavos puede ser maestro todo dependera de las condiciones que uses.
[/quote]
mira te adjunto mi codigo o cn lo que recivo el 232 pero no se en que parte manejar el 485 me explico?
por que unos comentan que eso es nadamas por hardware y otros por software y en mi cidigo no se comod ecirle si mi pic es maestro o esclavo? ese es realmente mi problema?
-
a
-
#include <16f877a.h>
#fuses NOWDT, XT, NOPUT, NOPROTECT, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG
#use standard_io(b)
#use delay(clock=4M)
//#byte port_a=5
//#byte port_b=6
//#byte port_c=7
#use rs232 (baud=9600, Xmit=pin_c6, Rcv=pin_c7, bits=8) // ordenes del puerto serie
char a=' ';
void main()
{
enable_interrupts(GLOBAL);
enable_interrupts(INT_RDA);
enable_interrupts(INT_EXT);
}
#int_rda
void leer_232(void)
{
char x;
int y,w;
while(1){
if(kbhit())
x=getc();} //recibo mi dato y o guardo en x
y=x-65; //aqui le quito 66 para poder recibir el valor en ascii de la "A"
if(y>0||y<27){ //condiciono para obtener solo valores entre 0 y 27 que serian los valores que se encuentran en el abcdario en el codigo ascii
w=y; //en caso de ser asi se lo asigno a la variable w
}
else{
w==0; //de lo contrario que W me vlga 0
}
en donde pongo lo del maestro y lo del esclavo?? esa es la parte que aun no logro entender osea se supone que aqui lo tengo a la escucha del 232 pero como le digo que el es esclavo o mestro ?
-
El problema que tu aqui tienes es nada mas simple logica.
Cuando los dejas escuchando todos son esclavos.
Para que uno sea maestro tienes que transmitir un ejemplo basico seria.
que se active la interrupcion de rb0 no por asi decirlo en alguno de todos los pics, para esto al activarse este imprimira algun caracter los demas lo van a escuchar pero solo uno le contestara al micro ya que por decir asi, mandas un "@" el pic que tenga la condicion de @ sabe que es su turno, el pic que transmitio ahora solo se queda en espera y el otro le contesta, y asi se sigue la cadena
-
si es verdad todos estos escuchando son esclavos! por que el codigo que subi fue de un esclavo
y si ya te entendi ose que por ejemplificar le digo a mi esclavo:
if(getc()==64)// o algo por el estilo verdad
pero potra duda que me surge es ¿no se supone que se mandan en cadena de 8 bits? osea a lo que me refiero como hago para separarlas por que a lo que he leido una parte de esa cadena es la direccin despues la instruccion y cosas por asi que se envian porcada cadena de datos que se envia o estoy mal? grcias por tu ayuda khronos eres un experto en el tema ojala me puedas seguir auxiliando ya irre subiendo avances para que me vayas comentando como te parece
-
bueno en vista del que el tiempo casi se me agota (solo tenog 15 dias para la entrega) y al no saber como manejar el rs485(que seegun es igual al 232 pero si fuera igual ps tendria que funcionar) lo cual no funciona osea quiere decir que no son iguales jajaa paso a retirarme gracias señor darck kronos a todo pic y a os que ayudaron
-
bueno en vista del que el tiempo casi se me agota (solo tenog 15 dias para la entrega) y al no saber como manejar el rs485(que seegun es igual al 232 pero si fuera igual ps tendria que funcionar) lo cual no funciona osea quiere decir que no son iguales jajaa paso a retirarme gracias señor darck kronos a todo pic y a os que ayudaron
no tienes por que tirar la rienda, es solo simple logica al principio como todo cuesta es solo que hay que ponerle un poco mas de atencion, de cierta forma tambien explica que es tu proyecto y si lo estas simulando con las imagenes de la simulacion podemos encontrar donde esta el posible error
-
mi pryecto es el siguiente: comunicar desde la pc varios pic ya que en cada pic estara un dusplay conectado y mostrare una informacion diferente en cada terminal(osea en cada pic) lo que es el pprograma de loq ue mostrare ya lo tengo solo me falta el como decirle al maestro que es maestro y al eslcavo que es esclavo (lo cual no se como aun) unos dicen es igfual al al rs232 pro ya me he metido a leer una y otra ves el 232 y no hayo donde o l amanera de dicerla acada pic si es esclavo o maestro y como me faltan 15 dias ps creo que esto ya esta por perdeerse a menos de que en ese tiempo baje el mismisimo jesus del cielo y me ayude con esto (lo no creo que suceda jaja )
-
mi pryecto es el siguiente: comunicar desde la pc varios pic ya que en cada pic estara un dusplay conectado y mostrare una informacion diferente en cada terminal(osea en cada pic) lo que es el pprograma de loq ue mostrare ya lo tengo solo me falta el como decirle al maestro que es maestro y al eslcavo que es esclavo (lo cual no se como aun) unos dicen es igfual al al rs232 pro ya me he metido a leer una y otra ves el 232 y no hayo donde o l amanera de dicerla acada pic si es esclavo o maestro y como me faltan 15 dias ps creo que esto ya esta por perdeerse a menos de que en ese tiempo baje el mismisimo jesus del cielo y me ayude con esto (lo no creo que suceda jaja )
ok mira lo que pides no es muy dificil, como te comentaba es solo simple logica, si me puedes subir un diagrama de como estas haciendo y que tiene que hacer cada micro yo te puedo ayudar para conseguir lo que quieres, y veas que no esta tan complicado.
-
Hola, en tu caso, el maestro, es la pc... todos los micros serán esclavos...
en el ns75176, conectas los pines 2y3 a masa, y ya están leyendo
Luego, como esta en los otros mensajes, le asignas un ID a cada micro, podrian ser pines del puerto como lectura, y colocas dipswich para asignarles un numero, o le grabas en una posicion de memoria un numero
Cuando envias dicho numero, todos lo leen... lo comparan, y el correspondiente esclavo que tenga dicho numero "marca una bandera" SOY YO!!!!
entonces, en tu programa, PRIMERO tienes que verificar si esa bandera esta marcada.. si es asi, es porque tiene que ir a leer la proxima info..
al terminar de recibir datos la borras,,
de esta forma, reconoces si el dato es una ID o es un dato para ese micro... :mrgreen:
Saludos!
-
señor todo pic como sabe usted tanto estuve probndo asi como usted dijo y voala parece que ha funcionado seguire trabajando el fin de semana y mas tarde subo mi proyecto ya terminadoo graacias muchas gracias paree que ya quedo solo completo lo que ya tenia conm el protocolo de comunicacion y listo
-
uuy muy malas noticias no funciono la comunicacion ni modo a llorar no queda mas
-
uuy muy malas noticias no funciono la comunicacion ni modo a llorar no queda mas
recuerda que tienes que explicar tu problema para hacerte ver la posible solucion aun quedan 7 dias mas para entregar tu proyecto
-
bueno ps las fecha se me termino pero en fin ahora lo terminare mas afuerzas que de ganas por que un proyectito de estos no se va avenir a reir de mi quisiera saber si me pudiesen decir ahora sii o auxiliar es como decirle a mi esclavoo que se llama esclavoo para poder usar el protocolo 485 el hardware ya lo tengo y funciona y se que funciona por que un amigo mio ya lño soluciono el lo desarrollo pero no quiero copiarle squiero aserlo yoo mismo con ayuda un poco de ustedes