5 votos

Comunicación múltiples fotos con una PC

Tengo una tarea en la que necesito para conectar 5 o más ucontrollers a un PC para el envío de los datos que se almacenan en el PC. Las condiciones son las siguientes:

  • La ucs en cuestión son PIC 16F877As; cada uno de ellos es parte de un sistema que realiza un seguimiento del número de tornillos que se usan(como ahora), impulsado por la constante DCV de tapones de modo que el poder no es un problema.
  • los datos que se envían son sólo números; el número actual de los tornillos utilizados
  • el medio ambiente es el de una fábrica de línea de montaje; el tornillo de contadores se utilizan en la línea y el env generalmente es ruidoso
  • los datos recibidos por el PC se almacena en una tabla; pensé que puede tomar el cuidado de esta parte posterior
  • la distancia entre cada uno de los PIC es de unos 2-3 metros; el PC está en el final de la línea, de unos 10 metros, el vínculo entre el PIC y el PC puede ser física o inalámbrica, aunque yo prefiero inalámbrica, ya que es más libre de problemas(creo...), a pesar de la robustez de los datos enviados es prioridad
  • como de costumbre, el sistema debe ser hecho para ser tan barato como sea posible, sin sacrificar la fiabilidad

He conectado con éxito un PIC a PC mediante puerto RS-232, así que sé lo suficiente de manera que no se puede conectar fácilmente a todos los 5 de las Fotos directamente a un PC mediante RS; demasiado problemático, y la distancia de los problemas. Lo que estoy pensando es algo así como un centro; el 5 Fotos conectarse a un maestro PIC que, a cambio, obtiene los datos a partir de los 5 Fotos y las envía a la PC. He leído algunas cosas sobre I2C y creo que es factible suficiente. He buscado en soluciones inalámbricas como XBee; tengo SKKCA de Cytron, pero no sé cómo hacer que se manejan muchos-a-uno de comunicaciones de datos.

Alguien tiene mejores ideas sobre cómo me puede sacar esto de la forma menos dolorosa, de forma barata posible? Todo este proyecto es un one-man-show, así que prefiero mantener las cosas simples y de bajo costo.

10voto

RelaXNow Puntos 1164

No sé cómo usted está atascado en el 16F877A, pero eso es una mala elección para algo como esto. Creo que de los 16 de la serie es sólo para situaciones especiales, como el alto volumen donde bajan un poco el precio es importante, consumo de energía baja, o de pequeño tamaño físico. Usted no tiene ninguno de estos problemas, y el 16F877A es un viejo propósito general parte de todos modos.

Me gustaría usar algo como un 18F4580, que tiene una PUEDE transceptor incorporado. La aplicación es sólo clama por PUEDE. Es un bus diferencial, por lo que tiene una buena inmunidad al ruido. Sus distancias se pueden manejar fácilmente, incluso a la máxima velocidad de 1 Mbit/s. RS-485 como otros han mencionado que es diferencial demasiado, pero se detiene en la toma de especificación. Usted tiene que diseñar su propio protocolo en la parte superior de que, teniendo en cuenta las colisiones, reintentos, el arbitraje, errores de bits, etc. Evidentemente, esto es factible, pero hay un montón más pequeño trampas que no son, probablemente, aparente a primera vista. Hay un montón de maneras de obtener esta mal, y la mayoría de la gente, al menos la primera vez.

Con PUEDE, todo lo que se define en la norma e implementado en el hardware. De enviar un mensaje, y que solo se muestra a los otros nodos. Varios nodos tratando de transmitir al mismo tiempo que se maneja automáticamente. no hay definido un plan de arbitraje que el hardware PUEDE periféricos implementar, con la función de reintento automático hasta que el mensaje llega a través de. Cada mensaje contiene también un 16 bits CRC, que es de nuevo generados y controlados en el hardware.

Tomará un poco de esfuerzo para aprender, y el periférico, pero esto va a ser inferior a hacer su propio protocolo RS-485, al menos si lo haces bien. Además, es una buena cosa para aprender mientras que el RS-485 es un legado de una época pasada.

Si usted no puede usar un PIC con PUEDE incorporado (aunque hay algunos con la misma huella que el arcaico 16F877A), puede utilizar el externo PUEDE chip que se comunica con el PIC sobre SPI. Nuestro libre PIC Desarrollo de Herramientas de liberación en http://www.embedinc.com/pic/dload.htm incluye el código fuente tanto para la conducción de la externa, PUEDE chip y el interno PUEDE periférica de un 18F4580.

Tendrá algo que permite que el PC pueda comunicarse con el bus CAN, pero son cosas que están disponibles fuera de la plataforma. Tenemos nuestro propio USB PUEDE adaptador de que no lo ha hecho a un producto, pero yo estaría dispuesto a publicar el diseño y el código fuente de éste. Si no recuerdo mal, de National Instruments es una de las empresas que hace fuera de la plataforma PUEDE adaptadores para PC.

7voto

John Christman Puntos 188

RS485 es, en realidad, la solución más habitual para este entorno. PUEDE también es una buena solución, pero podría ser un poco mucho para su aplicación. Es realmente la intención de múltiples master configuraciones. Usted no lo necesita ya que usted tiene un PC de dominar el autobús, aunque.

Hay una versión simplificada de la CAN llamado el Bus LIN que supone un único maestro conectado a varios esclavos. Es generalmente de puente a un bus CAN para redes más complejas. Transceptor de las fichas disponibles que se conectan a LIN a un estándar TTL UART y un par de PIO pines. Microchip vende tres y proporciona un código de soporte.

2voto

John Stauffer Puntos 5988

Aquí el poder no es un problema, usted puede simplemente ir para una solución inalámbrica.

Porque usted necesita una solución de bajo costo, prefiero los siguientes....

En primer lugar usted puede hacer un cable USART red donde todos RX pines están conectados a la TTL lado de un único MAX, y los pines TX conectado a la misma MAX. Asignar la dirección a cada uno de los esclavos. Los esclavos permanece Inactivo en la línea de comunicación, mientras continúa con sus todas las demás actividades. Enviar las entradas(número de tornillos) a una cola, en este caso, simplemente una matriz.

Ahora el maestro lado,

Que es el PC y se conecta a la RS232 lado de MAX. Usted puede simplemente hacer su propio protocolo para comunicarse con cada uno de los esclavos. La mejor manera es utilizar 9 bits de comunicación con la dirección de detectar. Usted puede hacer un simple conjunto de comandos de la siguiente manera,

COMANDO: ECHO_ADDRESS

VALOR HEXADECIMAL: 0XAA

SIGNIFICADO: Si el ECHO_ADDRESS es recibido, el destinatario de esclavos enviará a su dirección de regreso.


COMANDO: SEND_COUNT

VALOR HEXADECIMAL: 0XA1

SIGNIFICADO: Si el SEND_COUNT es recibido, el destinatario esclavo envía el número de datos presentes en su búfer.


Creo que esta solución es barato y usted no necesita ir a por y avanzadas del procesador. El procesador seleccionado tiene suficiente memoria RAM y ROM.

Ahora si actualiza el sistema a la conectividad inalámbrica, el método más barato es conseguir ordinario transceptores de RF. quite el cable conectado a su pines RX y TX, e inserte el transceptor allí. Conecte el mismo transceptor de RF a su máximo. Aquí la frecuencia del transmisor en el MAX lado y el receptor de la frecuencia en la que los esclavos deben ser del mismo y viceversa.

Cuando la selección de la frecuencia de RF, es mejor considerar el medio ambiente distorsiones.

Hai,
El wireless que he mencionado no es un moderno transceptor inalámbrico como Zigbee, Wi-Fi... he sugerido una simple RF transciver de bajo costo. En este caso, él no necesita una alta velocidad de datos. Yo uso el módulo inalámbrico de cerca de $2 por menor datarate de comunicación y da un rendimiento satisfactorio. Ahora, acerca de por qué me sugirió inalámbrica, la respuesta que yo creo que el cliente va a ser más feliz si no hay cables ni necesidad de cableado adicional, y el producto se ve bien.

Podemos conectar muchos pines TX juntos. Porque nuestro maestro controla el bus, el chanses de collission es demasiado baja. Pero tiene usted razón puede haber collissions debido a un error de comunicación. Tenemos que proteger el dispositivo de esta collission, puede ser hecha por algunos eléctrica isulator.

Esto puede no ser una solución perfecta, pero funciona para la situación actual.

1voto

Adam Puntos 11

Suponiendo que no te gusta la solución propuesta de RS485, ¿por qué usando RS232 en una cadena de Margarita? Cada tornillo contar esclavos ecos cada método no configuración.

Otra opción es RFID, cada tornillo cuenta enviar un RFID id/mensaje con la cuenta de tornillo como parte de su identificador.

0voto

Mark Biek Puntos 41769

Poner un transceptor RS-485 en cada tablero y poner en práctica una simple red maestro-esclavo. Yo usaría un chip más moderno que el 16F877A, como el PIC16F887, o un PIC18.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X