TODOPIC
Mecatrónica => Robótica => Mensaje iniciado por: poi en 30 de Junio de 2009, 10:59:32
-
Buenas.
Estoy empezando en esto y he pensado en controlar mediante un PIC16f876 2 motores, ademas tengo unos sensores, los tipicos: siguelinea (CNY70), IR, temperatura, LCD (mediante transmision RS232). Por el momento me sobran puertos, pero, Y si una vez montado todo, y quiero ampliarlo algun dia, me faltan puertos,¿Podria comunicarlo con un BUS I2C con otro microcontrolador por ejemplo?. O pensais que seria muy complicado
Gracias
-
Una solución simple y eficaz, te cambias a un PIC con más pines de E/S, yo creo que es una solución con tres B
Buena
Bonita
Barata
-
Hola, directamente podrias usar un I2C I/O expander, sin necesidad de colocar otro micro.
http://focus.ti.com/lit/ds/symlink/pcf8574a.pdf
Seguramente alguien del foro te dara mas data, en el buscador tb
Saludos !
-
Pasate al 16F877, tiene mas puertos, el precio debe ser idéntico y los módulos (salvo el adc, + canales analógicos) del PIC exactamente iguales.
-
Una opción para aumentar la cantidad de salidas puede ser un registro de desplazamiento, de entrada serie y salida paralela.
Por ejemplo, con el 74HC595 necesitas 4 pines del PIC para obtener 8 salidas digitales, y si necesitas más salidas.... conectas otro 74HC595 en cascada con el primero, y listo, tienes 8 salidas más.... con los mismos 4 pines del PIC. Para implementar las salidas extra solo hay que modificar ligeramente el programa. Yo he implementado un circuito de esta forma con 3 registros en cascada en un PIC16F648A (de 18 pines), obteniendo en total 24 salidas con los registros de desplazamiento.
Esta alternativa es buena para controlar cosas on-off (luces, alarmas, etc.), pero no muy práctica para el pwm de los servomotores y cosas parecidas...
-
Buenas.
Estoy empezando en esto y he pensado en controlar mediante un PIC16f876 2 motores, ademas tengo unos sensores, los tipicos: siguelinea (CNY70), IR, temperatura, LCD (mediante transmision RS232). Por el momento me sobran puertos, pero, Y si una vez montado todo, y quiero ampliarlo algun dia, me faltan puertos,¿Podria comunicarlo con un BUS I2C con otro microcontrolador por ejemplo?. O pensais que seria muy complicado
Gracias
Lo mejor es siempre usar un pic con muchas terminales de sobra. Si haces una PCB ponle unos headers a los pines libres para que puedas conectar lo que quieras después.
El pic que usas ya es obsoleto y por lo tanto caro. Si deseas usar un pic económico compra el PIC16F887 que cuesta la mitad de un PIC16F877A y tiene más terminales que el 876.
-
Eso mismo le digo yo al hombre, yo soy un fuerte defensor de utilizar la menor cantidad de integrados posibles en un diseño, a no ser que de verdad la mejor solución sea la de utilizar componentes externos para ampliar las líneas de E/S, creo que lo mejor es un integrado con bastantes patas.
Y que conste que cuando necesito más integrados para extender la E/S no dudo en utilizar esas técnicas, pero cuidado, eso no es simplemente poner un expansor serie paralelo por I2C o SPI, o un registro de deslazamiento o una interfaz programable 8255, hay que analizar bien que vamos a conectarle a esos integrados, para seleccionar el correcto, porque al final el resultado puede ser muy malo y alejarse demasiado de lo esperado.
Saludos
Reinier
-
El pic que usas ya es obsoleto y por lo tanto caro. Si deseas usar un pic económico compra el PIC16F887 que cuesta la mitad de un PIC16F877A y tiene más terminales que el 876.
Depende de donde seas, por ejemplo en mi ciudad ni soñar conseguir un 16F887 y traerlo me costaría el doble del 877 que si hay :x
-
Si pero aún así el 877 sigue teniendo más pines que el 876 ¿no?
Estoy de acuerdo con Suky en que no todos los lugares son iguales, yo por ejemplo, no puedo ni soñar con conseguir por acá ni un registro de desplazamiento, menos un PIC, por eso mis microcontroladores y componentes se las debo a los amigos del foro que solidariamente me las han enviado por correo. Pero ese es tema de otros hilos.
Saludos
Reinier
-
Al final he optado por el 877, pero sigo en las mismas, ahora mismo me quedan libres los pines:
A1, A5
B7
C2, C5
D3
Y aun me falta por poner encoders 2 para controlar el giro de las ruedas y algun sensor para evitar obstaculos. Y si por ejemplo, pongo en un futuro en vez de 1, 3 o 4 sensores para evitar obstaculos ya estoy en las mismas ¿no?.
He pensado que los sensores que no tengan mucha importancia, como el de temperatura, humedad y luz sacarlos a otro micro y los sensores que intervienen en el movimiento del motor, y LCD.. dejarlos en el 877. ¿Que pensais?
-
Pude ser una solución, pero yo optaría por sensores conectados a un BUS digamos, que todos sean I2C. Aunque si yo fuese a expandir puertos lo haría mediante expansores I2C.
Saludos
Reinier
-
Gracias. He estado mirando lo del expansor de bus I2C y es buena idea.
Aunque lo bueno de poner otro micro conectado al bus con algunos sensores es que el primer micro puede pedirle un dato al segundo micro, y este procesa el dato que queire y se lo envia, quitandole carga al primero.
Investigare un poco mas sobre os exansores de todas formas.
-
Gracias. He estado mirando lo del expansor de bus I2C y es buena idea.
Aunque lo bueno de poner otro micro conectado al bus con algunos sensores es que el primer micro puede pedirle un dato al segundo micro, y este procesa el dato que queire y se lo envia, quitandole carga al primero.
Investigare un poco mas sobre os exansores de todas formas.
Pero para que complicarte la vida!!! Si cambiando el micro se soluciona mucho mas sencillo :undecided:
-
Ya he cambiado el micro, ahora uso el que me dijisteis, pero si una vez montado, me quedo sin pines, que ya quedan pocos, tendre que tener alguna forma de ampliar.
-
Otra opción es que uses un PIC con empaque SMD que tenga muchas más terminales que los DIP. :laugh:
PIC16F946, 53 pines I/O, incluso tiene desde el puerto A hasta el F :shock:
http://ww1.microchip.com/downloads/en/DeviceDoc/41250F.pdf
PIC18F8722
http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en010327
-
Tambien depende en que lenguage programes, lo que te dice mig esta muy bien, pero si programas en asembler RISC la serie 18f no te vale.
La serie 16f88x te da algunos pines mas que la 87x, porque lleva reloj interno, y es mucho mas barata, y el 16f946 es un lujo para los que programamos en asembler y tienes 20 pines I/O mas que en el 877; 20 pines mas es como tener otro PIC al lado sin I2C, SPI, ni nada, crees que tambien te vas a quedar sin pines?.
tapi8