TODOPIC
Otros Microcontroladores / Dispositivos programables => ** PROYECTOS ** => Mensaje iniciado por: Fer_TACA en 24 de Diciembre de 2022, 15:59:44
-
Hola a todos y de antemano ¡FELIZ NAVIDAD!
Una pregunta: Seguramente tenga un proyecto en el que tenga que utilizar 5 pics. Uno trabajando como maestro y el resto como esclavos todo dentro de la misma pcb.
¿Qué comunicación me recomiendan entre ellos? ¿I2C?
El maestro realizará todo el control del sistema y los esclavos solo recibirán un valor y lo usaran para sacar dicho valor por su correspondiente display de 7 segmentos dependiendo a cual de los esclavos vaya dirigido el valor?
F.
-
Hola a todos y de antemano ¡FELIZ NAVIDAD!
Una pregunta: Seguramente tenga un proyecto en el que tenga que utilizar 5 pics. Uno trabajando como maestro y el resto como esclavos todo dentro de la misma pcb.
¿Qué comunicación me recomiendan entre ellos? ¿I2C?
El maestro realizará todo el control del sistema y los esclavos solo recibirán un valor y lo usaran para sacar dicho valor por su correspondiente display de 7 segmentos dependiendo a cual de los esclavos vaya dirigido el valor?
F.
¿Qué distancia existe entre el Maestro y los esclavos?
¿Seguro que no puedes hacerlos con un solo microcontrolador grande?
SI la distancia es de varios metros, yo apostaría a alguno seguro como TCP/IP sobre ethernet.
-
la misma pcb, yo lo haría con un maestro que tenga un puerto dedicado a eso y los esclavos también, todos conectados al mismo puerto por así decirlo en paralelo que del puerto maestro salga el dato de 8 bits y les llegue a todos al mismo tiempo ya solo en cada esclavo el primer dato seria la dirección y ya después los datos a mostrar así la comunicacion seria sencilla tanto para la programación como todo lo demás, ahora que si no hay espacio y se necesitan muchos pines para el proyecto puedes poner los módulos TM1637 sencillos y 2 pines solamente por modulo.
-
Yo usaría comunicación serial sobre RS-485, con 9 bits, siendo el noveno bit un identificador entre direcccion y dato.
De esta manera los dispositivos esclavos se configuran con detección de dirección.
Elreypic
-
Gracias a todos por las respuestas.
Estoy valorando opciones.
Será para leer un encoder que gira muy rápido, aprox. 200KHz. La lectura es por interrupciones por flanco.
Lo de los 5 pics es porque tendría uno que sería máster controlando un display y todo el sistema del equipo
Los 4 esclavos solo para controlar uno display cada uno cuando recibiesen el dato desde el máster.
Dominus:
La distancia será como máximo 30cm aprox.
Un micro mayor creo que me va a introducir retardos que no deseo ya que necesito 5 juegos de 8 display de 7 segmentos y el multiplexado introducirá retardos y perdería pulsos.
El rey del Pic:
Estoy viendo los retardos tanto de I2C como 485.
Tsu:
Otra opcion, si el cliente acepta, sería usar solo un display y con una entrada y un contador representar el valor de cada variable según el valor del contador.
Esto ya lo estoy comprobando y los retardos que me introduce creo que son aceptables para no perder muchos pulsos.
F.
-
La distancia será como máximo 30cm aprox.
En el mismo PCB, I2C y SPI es para distancias cortas, yo utilizaría RS232 (Como sugiere el Rey)
(https://pbs.twimg.com/media/Fk3mSQKXoAAzQLU?format=png&name=small)
Un micro mayor creo que me va a introducir retardos que no deseo ya que necesito 5 juegos de 8 display de 7 segmentos y el multiplexado introducirá retardos y perdería pulsos.
Utiliza procesamiento paralelo y multitareas.
-
Si PIC que planeas usar tiene DMA lo puedes aprovechar para quitarle trabajo a la CPU, por lo que no necesitarías 5 de ellos.
El DMA en conjunto con algún controlador de LEDs como el IS31FL3726A-SALS4-TR, te podrían ayudar a reducir la cantidad de componentes y hacer más fácil el diseño.
https://www.lumissil.com/assets/pdf/core/IS31FL3726A_DS.pdf
Nota: Ese modelo de CI me lo arrojó una búsqueda rápida en mouser.
-
Tengo una tarjetita que trabaja como dices 1 master y 4 esclavos, en mi caso uso rs232 porque tengo funciones muy probadas y por velocidad de desarrollo. Todos los pic tienen su pin de busy y selec, para saber si están libres y de selec para simplificar el protocolo.
De todas formas si no tienes prisa y ya tienes muy probados la comunicación por PSI o I2C, es ideal para lo que quieres.
-
En mi caso cada pic esclavo tiene una entrada optoacoplada por donde le llegan las tramas de datos. Cada entrada de los esclavos puede estar configurada a distinta velocidad, por supuesto cada pic tiene su propio buffer de entrada, el master es el que se encarga de coordinar a los esclavos y ensamblar las tramas para posteriormente sacarlas al exterior por una única línea y a una misma velocidad.
Al implementar pin de Busy y Selec no necesitas protocolo para comunicar con los esclavos, así simplificas enormemente la comunicación.
Cuando un esclavo tiene suficientes datos en su buffer activa su pin de busy, el maestro escanea estos pin de forma secuencial, e indica mediante el pin de selec que puede verter los datos al buffer interno. Según describes no es lo que necesitas, parece que es lo contrario, pero puede servirte de referencia.
-
Tengo una tarjetita que trabaja como dices 1 master y 4 esclavos, en mi caso uso rs232 porque tengo funciones muy probadas y por velocidad de desarrollo. Todos los pic tienen su pin de busy y selec, para saber si están libres y de selec para simplificar el protocolo.
De todas formas si no tienes prisa y ya tienes muy probados la comunicación por PSI o I2C, es ideal para lo que quieres.
Hola Carlos,
Gracias por el ofrecimiento. Si me gustaría echar un vistazo bien a la placa o al software si es posible.
Evidentemente no copiaría el tuyo, lo utilizaría un poco como guía, además por prescripción del cliente debo realizarlo con Niple.
Mis esclavos solo serian para visualizar, en un conjunto de 6 dígitos de 7 segmentos, un dato que le enviase el maestro y ninguna otra acción mas.
El maestro además de todo el control, también tiene que presentar un valor pero esta vez en un conjunto de 8 dígitos de 7 segmentos.
Un saludo
F.
Ademas casi con toda seguridad iria todo montado en la misma placa.
-
Por desgracia es un proyecto comercial que aún se fabrica, así que no puedo hacerlo publico.
De todas formas tu y yo que somos veteranos en el foro, ya sabemos lo que le paso a un colega del foro que tan solo publico una foto de una tarjeta que había diseñado, fue despedido de la empresa donde trabajaba. :?
-
Por desgracia es un proyecto comercial que aún se fabrica, así que no puedo hacerlo publico.
De todas formas tu y yo que somos veteranos en el foro, ya sabemos lo que le paso a un colega del foro que tan solo publico una foto de una tarjeta que había diseñado, fue despedido de la empresa donde trabajaba. :?
Sin problemas.
-
I2C sencillo y potente. Se diseñó para comunicar varios CI en PCB, justo lo que quieres.
Por otro lado, es posible que puedas utilizar menos PIC, pero al precio tan barato que cuestan ahora no creo que merezca la pena.
-
I2C sencillo y potente. Se diseñó para comunicar varios CI en PCB, justo lo que quieres.
Por otro lado, es posible que puedas utilizar menos PIC, pero al precio tan barato que cuestan ahora no creo que merezca la pena.
No me convence usar I2C a 30 cm. Dependería del ruido de los otros componentes, el ruido del ambiente, el diseño de las pistas, etc.
Lo que podría hacer es utilizar transmisión y recepción diferencial con I2C.
Pero sigo pensando que un sólo microcontrolador puede hacer todo. Se ahorraría mucho en hardware y tiempo programación.
-
Si hay problemas de ruido puedes utilizar transceptores CAN en la capa física, pero eso complicaría demasiado el circuito.
-
Al final va a ser por RS-485 por motivos de distancia.
Agradezco a todos las respuestas dadas. ((:-)) ((:-)) ((:-)) ((:-)) ((:-))
F.
-
es la mejor eleccion y si no tienes prisa le bajas el Baud Rate y aun mas seguro .
funciona muy bien
-
Al final va a ser por RS-485 por motivos de distancia.
En tu proyecto me surgen unas dudas.
Si los esclavos solamente se encargan de manejar un display de 8 dígitos:
- La velocidad de comunicación puede ser muy baja, ya que refrescar un display mas de 5 veces por segundo no tiene sentido porque no llegás a "entender" el número que ya cambió.
30cm puede ser problemático pero para velocidades altas con cablé común, pero acá no necesitás usarlas.
- Mas práctico que un microcontrolador me parece usar directamente un MAX7219.
- Tienes que ingresar para ver archivos adjuntos -
Como bonus, en general vas a necesitar menos componentes externos que con un microcontrolador y de paso las salidas de digitos tienen mayor capacidad de corriente.
Tenés drivers para PICs en Github y el modelo en Proteus.
Si querés trabajar menos o para prototipo, vienen chinorris displays de 8 dígitos con max7219 (https://listado.mercadolibre.com.ar/electronica-audio-video/componentes-electronicos/max7219_OrderId_PRICE_NoIndex_True)
Respecto a la velocidad y procesamiento de los pulsos del encoder:
- Si los 200KHz se refieren a 5us de mínimo tiempo entre flancos, corresponde a un eje girando a 3000rpm.
Si son la frecuencia máxima de las fases, entonces el tiempo entre flancos es de 1.25us y se corresponde a un eje a 12000RPM
Si bien el tiempo alcanza para trabajarlo por interrupción, te deja poco margen.
No se que PIC pensás usar, pero apuntaría a uno con QEI (quadrature encoder interface), que tienen un contador up/down manejado por señales en cuadratura, además de hacer un filtrado digital para evitar falsos pulsos.
Ejemplo: El PIC18F4431 (https://articulo.mercadolibre.com.ar/MLA-608511107-pic-18f4431-pic-18f4431-pic18f4431-mcu-microchip-pwm-flash-_JM#position=1&search_layout=grid&type=item&tracking_id=bb7d253e-7e50-418c-889e-bdad09c67d8d) con el que te sobraría tiempo por todos lados.
Lástima que hoy es un mal momento para comprar componentes en Argentina, se consigue muy poco :(
Todo esto si el objetivo es medir posición, porque si se trata de medir velocidad en ambos sentidos lo hacés con el PIC mas pedorro existente porque mandás las fases a las entradas D y clk de un flip flop D (detectás sentido de giro) y una fase a una entrada de conteo del PIC. Con eje detenido (o muy muy baja velocidad) se pueden generar falsos pulsos que hay que descartar por software.
Saludos.
-
El problema con ese circuito es que cuesta mucho más que un PIC (más de 10 euros):
https://www.mouser.es/ProductDetail/Maxim-Integrated/MAX7219CWG%2bT?qs=p6VZ%252BklCkRRSntwSIyvWcQ%3D%3D
-
El problema con ese circuito es que cuesta mucho más que un PIC (más de 10 euros):
https://www.mouser.es/ProductDetail/Maxim-Integrated/MAX7219CWG%2bT?qs=p6VZ%252BklCkRRSntwSIyvWcQ%3D%3D
Tal vez podría usar los productos de PCCh, como el CH423 que cuesta alrededor de 0.35 ctv de dolar, obviamente no se sabe que calidad tienen.
Más info:
https://es.aliexpress.com/item/1005005003361454.html?spm=a2g0o.productlist.main.19.ad33718dO8moYL&pdp_ext_f=%7B"sku_id"%3A"12000031311519018"%7D&pdp_npi=2%40dis%21USD%210.35%210.35%21%21%21%21%21%402102110316724922063995213d06fe%2112000031311519018%21sea&curPageLogUid=pKno1H4R5ACF (https://es.aliexpress.com/item/1005005003361454.html?spm=a2g0o.productlist.main.19.ad33718dO8moYL&pdp_ext_f=%7B"sku_id"%3A"12000031311519018"%7D&pdp_npi=2%40dis%21USD%210.35%210.35%21%21%21%21%21%402102110316724922063995213d06fe%2112000031311519018%21sea&curPageLogUid=pKno1H4R5ACF)
file:///C:/Users/Fabian/Desktop/CH423DS1.PDF (http://file:///C:/Users/Fabian/Desktop/CH423DS1.PDF)
(https://pbs.twimg.com/media/FlTwvu5X0AU8_8u?format=png&name=900x900)
-
El problema con ese circuito es que cuesta mucho más que un PIC (más de 10 euros):
https://www.mouser.es/ProductDetail/Maxim-Integrated/MAX7219CWG%2bT?qs=p6VZ%252BklCkRRSntwSIyvWcQ%3D%3D
Ese integrado, mas bien el módulo con los 8 dígitos es muy común, junto con los displays basados en TM1637 y TM1638.
Son muy económicos, antes puse un link a MercadoLibre donde los tenés por 1.5USD (dólar blue) , otros vendedores también los ofrecen y siempre por menos de 3.5USD.
Además, como Mercadolbre te cobra comisión, en la tienda virtual del vendedor a veces está a menos (1.4USD en https://tiendavirtual.com/tienda/arduino-y-raspberry/modulos-y-sensores/display-8-digitos-arduino-max7219)
En Aliexpress lógicamente tenés precios muy inferiores, aunque China es otro mundo.
No entiendo por qué en tiendas como Mouser hay tanta diferencia, un poco lo entiendo, tanta no :(
-
Aun por la distancia, es todo el mismo PCB por lo que he entendido y es sencillo proteger las señales si no van por cables.
Si te sirve, yo hace un tiempo hice un comprobador que tenia 51 pic , 50 pic "esclavos" hacían un test eléctrico independiente a unos pcbs, los resultados los mandaban todos por I2C al maestro, otro pic y este se encargaba de comunicarse con por comunicación usb a un ordenador donde mostraba los resultados.
la placa era bastante grande, como la de un ordenador portátil de 17" mas o menos.
Nunca tuve problemas con el I2C.
un saludo.
-
Aun por la distancia, es todo el mismo PCB por lo que he entendido y es sencillo proteger las señales si no van por cables.
Si te sirve, yo hace un tiempo hice un comprobador que tenia 51 pic , 50 pic "esclavos" hacían un test eléctrico independiente a unos pcbs, los resultados los mandaban todos por I2C al maestro, otro pic y este se encargaba de comunicarse con por comunicación usb a un ordenador donde mostraba los resultados.
la placa era bastante grande, como la de un ordenador portátil de 17" mas o menos.
Nunca tuve problemas con el I2C.
un saludo.
¿Pero es necesario ese tamaño? Es decir, no puedes reducir al PCB.
También es posible que lo hagas con un sólo microcontrolador con multitareas. Se te podría ir guiando en el desarrollo del código.
-
También puedes usar este tipo de display que ya te viene ensamblado y está basado en el MAX 7219.
Este es muy caro pero se encuentran por muchísimo menos y te puedes quitar trabajo.
https://amzn.eu/d/5JmeIwk
Módulo de 7 segmentos, SENRISE MAX7219 8-Digital Segment LED Display Tube Serial Driver Board para 51/AVR/STM32, verde
-
Entiendo que con el MAX7219 ya no se necesita hacer el múltiplexado de los leds.
¿La realiza ya el integrado de forma interna?
F.
-
Tanto el max7219 como el tm1638 se encargan del multiplexado de hasta 8 digitos.
Las salidas correspondientes a la excitacion de dígitos te manejan corrientes de mas de 200ma, no necesitan un transistor.
-
Gracias por la aclaración.