TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: Picuino en 06 de Noviembre de 2011, 14:24:45
-
Hola foreros,
Soy nuevo en el foro y quisiera solicitar vuestra ayuda para mejorar un proyecto que estoy desarrollando.
La idea es realizar una placa de desarrollo para PIC16F y PIC18F con licencia abierta (Creative Commons).
Por ahora he construido 4 placas diferentes, afinando el diseño.
He abierto un blog para ir publicando todos los detalles, por ahora sólo he tenido tiempo de colgar la documentación de una de las placas.
Las características más importantes de la placa son:
- 20 entradas/salidas genéricas (10 de ellas pueden configurarse como entradas analógicas)
- Terminales de conexión directa al microcontrolador y terminales de conexión protegidos con resistencias limitadoras de corriente, para evitar daños en las entradas/salidas.
- Regulador de tensión de baja caída y bajo consumo LM2931Z-5.0 para trabajar con baterías. Corriente máxima de salida 200mA (protege al pic), Tensión de entrada desde 5,2v. Protección frente a inversión de polaridad de la tensión de entrada
- Conexión RS232 full-duplex con posibilidad de reset remoto desde el PC y sin consumo de corriente mientras no haya comunicación.
- Oscilador de cuarzo de 20MHz.
- Dos pulsadores-led con dos terminales de conexión para conectar a la entrada del micro deseada.
- Pulsador de reset.
- Alimentación por Jack hembra de 5mm.
Por supuesto si alguien quiere fabricarla, estaría encantado de ayudarle y conocer cómo ha sido su experiencia.
¿Que os parece la idea?
¿Alguien está interesado en fabricarse una placa así?
¿Se echa de menos algo en la placa?
Por favor comentad.
Un saludo a todos.
-
Muy interesante picuino... yo estoy con algo parecido, pero he optado por un PIC que ofrece conexión USB, pues ahora mismo me parece que está más presente que el RS232.
Estaré atento a tus avances.
-
Gracias por el comentario.
Tengo una placa basada en PIC18F4550 que utiliza USB para programación y alimentación, que es una gran ventaja.
Pero esta placa tiene varios inconvenientes o problemas para mí:
1.- Los micros deben ser potentes (18F4550 o superior) y no siempre fáciles de encontrar. Si compras una placa ya fabricada en internet que incorpore este micro, no suelen tener resistencias limitadoras para no fundir salidas.
2.- El reset debe hacerse a mano antes de enviar el programa al bootloader.
3.- La programación de las comunicaciones por USB es más compleja que con la USART (RS232)
En cualquier caso no descarto diseñar una placa con USB una vez que coja confianza con las placas basadas en el viejo RS232 que por ahora domino sin problemas.
Un saludo.
-
no es necesario hacer reset a mano para entrar en bootloader, es tan simple como ir a la direccion del bootloader cuando se le indique.
-
Estoy pensando que quizá la placa más adecuada para empezar a diseñar es una que sirva para principiantes con el PIC16F628 (no se si admite bootloader) o el PIC16F88.
Para usuarios avanzados las placas son más complejas y ya hay algunas soluciones construidas.
Tengo ya construida una placa para PIC16F88 pero creo que necesito mejorarla.
Las dudas que me surgen para construir la placa son:
Puertos de conexión
Puedo poner todos los pines en linea (los 8 de cada puerto) con terminales torneados para insertar un cablecillo, como los que utilizan los zócalos:
Imagen: http://es.rs-online.com/uk/img/site/spotlight/Preci-Dip/Open_DIL.jpg
o utlilizar una configuración con dos pines para la alimentación (+ y gnd) y varios pines de señal (creo que 2 o 4 sería una buena opción). En este caso el tipo de pin de conexión debería ser hembra largo para conectar con pines maccho:
Imagen: http://www.shoptronica.es/img/images/Tira%20de%20pines%20hembra%20torneado%20recto.jpg
Imagen: http://www.shoptronica.es/images/Tira%20de%20pines%20torn.%202.54mm%20recto.jpg
Puerto de comunicaciones con PC
En esto creo que no hay duda: RS232
En el caso de la placa que he construido, utilizo un interface con 3 transistores que no consumen nada en reposo. El MAX232 es quizás más sencillo, pero también más caro y consume tanta corriente funcionando o en reposo como el propio microcontrolador.
En otra placa que tengo, sólo incluyo 5 pines para conectar a otra placa que tiene el interface. (Separar interface y placa con PIC) Cada una tiene sus ventajas e inconvenientes.
Teclado y Leds
Creo que juntar cada pulsador con un led es una buena solución para ahorrar pines, con el inconveniente de que el led se enciende al pulsar.
En mi placa conecto los pulsadores al micro mediante un pequeño hilo de cable de red para poder desconectarlo si necesito la entrada para otra cosa.
Creo que ya no podría prescindir de pulsadores y led en una placa de entrenamiento (son utilisimos para depurar y sin el engorro de montarlos en la protoboard) el problema quizá sea el número de ellos. Por ahora con 2 pulsadores + reset me ha bastado, pero a veces echo de menos uno más:
1 pulsador para cambiar de modo.
2 pulsadores para seleccionar (por ejemplo + y -)
1 pulsador de reset
¿Qué opinais sobre los pulsadores?
-
A mi me gusta que la placa PIC esté separada de la placa protoboard, así tengo más espacio en esta última. Por eso no utilizo pines macho en la parte de abajo del PCB, sino pines hembra en la cara de componentes.
Adjunto una foto de mi "entrenador" basado en la placa picuino controlando un miliohmetro en el que estoy trabajando:
https://sites.google.com/site/picuino/imagen/Picuino%2BProtoboard_800px.jpg?attredirects=0
La placa PIC va pegada a una pequeña madera, igual que la placa protoboard. Así dispongo de las dos a la vez.
Las dos placas se alimentan a la vez con el conector de la placa PIC.
-
Yo también me he quedado al final con 2 pulsadores aunque quería 3... pero lo he resuelto implementando pulsaciones largas, de modo que al final es como si tuviera cuatro botones :mrgreen:
-
Estoy con jfmateos2, se debería partir de un PIC18 mínimo. Por costo y características, ya un 16F no se suele utilizar. Y otra cosa USB es casi obligado, da mucha portabilidad ;-)
Saludos!
-
El puerto RS232 se puede conseguir con un pequeño cable que se conecta al USB y mis placas son compatibles con estos conversores. (por lo tanto ambos formatos no están reñidos)
De hecho la plataforma Arduino utiliza un pequeño integrado que convierte USB a RS232, de manera que el microcontrolador "VE" un puerto RS232 aunque en la placa el conector sea USB.
Otro problema de estos micros es que son micros un pelin caros (donde yo compro, un PIC18F2550 vale 8 euros y no siempre tienen ese micro frente al PIC18F628 que cuesta 1.5 euros)
y en muchas ocasiones un micro 18F es demasiado. Por ejemplo ahora estoy diseñando un temporizador con control de potencia PWM para una insoladora por LEDs. Con un micro pequeño me sobra.
Otro problema que veo es que el USB es un poco difícil para mi.
Por ahora utilizo el Tiny PIC bootloader que es una pequeña maravilla. Permite programar el micro y, a continuación, recibir todos los datos por RS232.
La placa que tengo de tipo USB con PIC18F4550 es esta:
http://tiertexdesignstudios.netdirector.co.uk/pub/files/Manuals/1313065930_TDSDB14550.pdf
Que funciona con el HIDBootLoader:
http://www.tiertex.com/pub/files/Drivers/1306914541_HIDBootLoader.exe
Este programa permite cargar un programa en el micro, pero no recibe datos. Por otra parte para comenzar la programación hay que pulsar reset (y es un engorro).
-
yo tengo en venta pic18f4550 en DIP40 por 4,7€ cada uno, por si te interesan.
Si quieres hacer una placa tipo arduino se suele poner un pic potente, con muchas salidas, y conocido.
Sobre lo del USB es cierto que es mejor, aunq puedes poner un ft232, pero el usart apenas se usa, los portatiles de hecho ya no lo traen. Si quieres hacer algo para comercializar, el rs232 sera un atraso porque habra mucha gente que no disponga de este, por ejemplo usuarios con portatil.
-
No estoy interesado en comercializar las placas, aunque no me importaría que un fabricante de placas de tipo Olimex distribuyera algún modelo que esté bien desarrollado.
La licencia del harware permite comercializar las placas, pero yo estoy interesado en diseñar una que realmente pueda ser popular y que la gente se enganche a realizar desarrollos hardware y software para ella.
(igual que los desarrollos de software libre)
-
Aposta por un micro potente y con USB entonces ;-)
-
comercialices o no, segun quieres es orientarlo al publico, y el publico lo que quiere es facilidades, si les das un pic dificil de conseguir/entender, o si no pueden enchufarlo a su PC porque no disponen de usart la gente se va a por otro que lo tenga. Crees que una persona no le gustaria pagar 20€ por una placa que sea tipo arduino, es lo que te pueden costar todos los componentes. Ahora piensa, si por usb son 3€ mas cual crees que se venderia mas?
-
El problema que necesito resolver en ese caso es encontrar un entorno de desarrollo para el PC que pueda programar el micro con bootloader a través de USB y recoger la información que el micro envíe de vuelta (que el micro pueda servir de datalogger).
El entorno de desarrollo debería ser al menos freeware y mejor si puede ser Open Source.
En cuanto a los compiladores, hay muchos que cumplen.
El editor de texto tampoco es un problema.
El grabador que envíe el programa al bootloader y que a continuación pueda comunicarse con el micro en ambas direcciones es el problema.
Otro problema es cómo programar aplicaciones para Windows que interactuen con el micro (creo que con el rs232 es más sencillo)
Por eso, por ahora, yo prefiero comprar un cable USB-RS232 o una placa RS232 para el PC, porque es más sencillo de programar desde el PC, no porque sea más barato (que al final no lo es). Si encuentro una solución sencilla para manejar el USB, desde luego voy a añadir USB a la placa.
-
lo del bootloader es lo mas sencillo del mundo, yo hice un bootloader en un par de dias, y en otro par de dias lo adapte a usarlo para CAN BUS, y cuando digo par de dias digo a ratos, porque lo mismo me pongo 5 minutos que 1h y luego vuelvo a empezar.
Para usar USB en tu programa unicamente te tienes que bajar una libreria usb para Visual C++ en caso de que uses este, y a partir de eso es unicamente enviar y recibir como un usart.
-
Respecto al bootloader, lo podes encarar en el lenguajes que trabajes y si hay dudas podes consultar en el foro, seguramente alguien te tira una idea. (MerLiNz por ejemplo, ves que la tiene re clara :D )
Y con respecto a una aplicación para adquisición también. Fíjate este trabajo: Un nuevo terminal Serial RS232 (Octoplus - Terminal) (http://www.todopic.com.ar/foros/index.php?topic=35482.0) ;-)
Saludos!
-
Mi opinión es que para conseguir algo popular tienes que combatir contra Arduino, cuyos puntos fuertes son el hardware, su ubicuidad y, sobre todo, su entorno de desarrollo integrado.
En http://pinguino.cc ya han logrado todos estos valores... pero han llegado tarde ¿cómo aproximarse ahora a Arduino que lleva años de ventaja y ha calado en la comunidad DIY de bajo nivel?
Aportando algo más ¿qué? Hay entra en juego la imaginación :mrgreen:
-
Lo que te dicen los compañeros del USB tienen razon, sin ninguna duda, pero tambien te digo que los PLCs que son carisimos, superprofesionales, fabricados por grandes marcas, que prsumen de ser la panacea de la tecnologia :lol: (me dio un poco la risa) se programan como el tuyo con un cable adaptador USB-RS232, es mas el cable lo venden a un precio que flipas, digo esto con la conviccion de que tienen razon los que te recomiendan ponerle USB.
-
Respecto al USB, me habéis convencido. Tendré que empezar a estudiar a fondo el tema USB.
Por otra parte creo que el RS232 también debería estar presente (tapi8 tiene razón, hay equipos carísimos que todavía utilizan RS232, debe ser como el Cobol o el Fortran que son eternos)
La solución que se me ocurre es la siguiente:
Conectores en la placa:
Conector USB conectado al micro y a la alimentación (gnd y +5V) de forma estandar
Conector RS232 de 5 pines conectado al micro y a la alimentación (gnd y +5V) con la siguiente configuración en sus pines:
[ GND ] [ TX ] [ RX ] [Reset] [ +5V ]
Esto permite insertar un conector de sólo 3 pines para comunicación RS232 o un conector de 5 pines para comunicación y alimentación.
Habría que diseñar dos placas para conexión con RS232 desde el ordenador:
Una placa USB - Conector RS232 de 5 pines que proporcione comunicación, alimentación y quizás reset
Una placa RS232 - Conector RS232 de 5 pines que proporcione comunicación y reset
Por supuesto, este conector se podría utilizar para enlazar con otro micro, con un modem o símplemente como conector de dos entradas/salidas con alimentación incluída.
Alimentación:
Se podría conseguir del conector USB o del conector RS232 de 5 pines. La tensión no estaría regulada.
Comunicaciones:
Se pueden realizar todo tipo de configuraciones:
Sólo USB
Sólo RS232
Combinar USB para programación bootloader y RS232 para comunicación o viceversa
Creo que es la configuración más flexible. ¿Qué opinais?
Problemas a resolver:
- Conversor AD: Por ahora tomo la tensión de alimentación como referencia para el conversor AD. En este caso la referencia de tensión a VDD no me asegura una tensión constante ni bien regulada. ¿Cómo funciona la tensión USB como referencia analógica?
- Cortocircuitos: En caso de cortocircuito o de consumo excesivo del micro no quiero fundir el puerto USB ni el micro ¿Que soluciones puede haber?
- Modelo de micro: Creo que el mejor modelo para empezar puede ser el PIC18F2550 en formato DIL estrecho de 28pin ¿Que opinais?
- Conector USB: Para que la placa se pueda construir en casa con facilidad, creo que el conector mini-usb queda descartado. ¿Qué os parece el conector tipo "A"?
http://www.digital-sa.com/tienda/product_info.php?products_id=6682
-
el usb si tiene una tension regulada, piensa que viene del PC, y el pc tiene una fuente excelente.
Yo dejaria el usart como parte de la parte de "aprendizaje", es decir si alguien quiere ver como funciona y tal pues es su ocasion. El usb para lo demas, programar, conectar entre el software...
Se que el ICD3, pickit3 (el 2 no se) traen proteccion anti sobrecarga del usb, deberias mirar sus esquemas para ver como van.
-
Si se selecciona un PIC puedo agregar al Terminal la función de compilador, solo que haría falta un grupo de trabajo que apoyara esta tarea. En general quedaría un software con editor de texto, programación por bootloader, terminal RS232 con las particularidades que ya tiene.
Saludos!
-
Proteccion del USB contra sobrecorriente
El arduino lleva un fusible de 500mA en sus esquemas, pero en la placa no veo ningún fusible corriente.
El fusible debe ser un componente smd soldado debajo del conector USB con color plateado en sus extremos:
http://arduino.cc/en/uploads/Main/ArduinoUno_r2_front.jpg
...
Buscando por internet he encontrado que se trata de un PTC.
Si no tienen una resistencia alta (por aquello de las caídas de tensión en la alimentación), creo que podría valer.
Seguiré investigando.
Saludos.
-
Terminal Octoplus:
Hola LABmouse y gracias por comentar. Creo que el Octoplus es un desarrollo impresionante. No lo conocía y me ha encantado.
Lo que quisiera saber es si se conecta por puerto serie, por USB o por los dos (me ha parecido que sólo por puerto serie).
-
¿Que puede aportar otra placa de desarrollo?
Mi opinión es que para conseguir algo popular tienes que combatir contra Arduino, cuyos puntos fuertes son el hardware, su ubicuidad y, sobre todo, su entorno de desarrollo integrado.
En http://pinguino.cc ya han logrado todos estos valores... pero han llegado tarde ¿cómo aproximarse ahora a Arduino que lleva años de ventaja y ha calado en la comunidad DIY de bajo nivel?
Aportando algo más ¿qué? Hay entra en juego la imaginación :mrgreen:
He revisado la web de Pinguino y parece orientarse a la gama media-alta y alta de micros.
El micro más básico que utilizan es el PIC18F2550 y con una placa muy básica en cuanto a conectividad y teclado y muy compleja en cuanto a fabricación (con resistencias smd):
http://sites.google.com/site/pinguinotutorial/hardware/traditional
La idea en este caso es tomar la placa de pinguino y modificar lo siguiente:
- Utilizar resistencias tradicionales de 1/4W más fáciles de montar.
- Añadir acceso directo a los pines del micro sin resistencia limitadora (esto también es util para pinchar el polímetro y medir tensión en el pin o para medir la caída de tensión en la resistencia y calcular la corriente de salida)
- Conectores hembra para pinchar cables y conectores hembra para conectar tiras de pines macho (creo que tener ambas opciones es más útil y no añade demasiada complejidad)
- Añadir conectores de comunicación dedicados (por ejemplo el conector de 5 pines para RS232, conector SPI-I2C, ICSP, etc.)
- Añadir 2 pulsadores de entrada y 3 Led de salida con su propio terminal de conexión, para conectar con un cablecillo a los pines del micro que más me convenga.
Como el micro es el mismo, debería funcionar con el mismo software que el pinguino.
Lo que busco es diseñar un modelo de placa que dé unas prestaciones que no tienen las que he encontrado por ahora. Si el nuevo modelo de placa puede aprovechar software existente de pinguino o de otro tipo, mejor aun.
El problema consiste en saber cual es el tipo de placa que no existe y a muchos nos gustaría tener.
Algunas placas son demasiado grandes y completas (como un 4x4) o demasiado rápidas y con pocos accesorios (como un deportivo biplaza), otras placas tienen poca potencia o pocos accesorios (como un Ford fiesta) y yo busco una placa intermedia, con suficiente potencia para los proyectos de todos los días y con los accesorios más necesarios (como un turismo mediano).
Saludos.
-
NUEVA PLACA CON USB PIC18F2550
Estoy desarrollando una nueva placa con USB, siguiendo los consejos recibidos.
Por ahora tengo el esquema eléctrico y la distribución de componentes.
Aún no he comenzado con el enrutado, de manera que por ahora es fácil hacer modificaciones.
Como novedad la nueva placa incluye USB y todos los demás conectores con alimentación incluída.
Recuerdo cuando salió el interface USB que una de las cosas que más me llamó la atención era que el nuevo estandar incluía alimentación de 5v con lo que te ahorrabas un montón de cables en los periféricos más pequeños.
Además todos los conectores tienen ahora tamaño estandar (8 pines ó 5 pines), de forma que con un sólo cable paralelo se podrán conectar módulos externos.
Enlace a la entrada del blog y a las fotos del esquema y de la disposición de componentes:
Entrada Blog nueva placa 18F2550 (http://picuino.blogspot.com/2011/11/picuino-guacamole-18f2550.html)
Esquema eléctrico (http://1.bp.blogspot.com/-XoVsh07fJPY/TrvXHS62lkI/AAAAAAAAAEE/Ad8OefSTXWI/s1600/Picuino_Guacamole_esquema_01.png)
Distribución de componentes (http://3.bp.blogspot.com/-_KJzliXR4LI/TrvYCyaucYI/AAAAAAAAAEU/DWIRoRBP0cw/s1600/Picuino_Guacamole_componentes_01.png)
¿A alguien se le ocurre alguna mejora? ¿Que opinaís?
Saludos
-
Viendo el esquema rapidamente veo que usas un cristal de 10MHz, para un 18F2550 no es lo más adecuado, pueden ser 4,8,12,16,20 MHz ;-) Otro detalle es que se puede aprovechar la alimentación directamente desde el puerto USB.
Saludos!
-
Viendo el esquema rapidamente veo que usas un cristal de 10MHz, para un 18F2550 no es lo más adecuado, pueden ser 4,8,12,16,20 MHz ;-) Otro detalle es que se puede aprovechar la alimentación directamente desde el puerto USB.
Saludos!
Tienes razón. Estoy revisando el Datasheet y la máxima frecuencia es de 48Mhz, de manera que colocaré un cristal de 12Mhz que con el PLL puede llegar a 48Mhz.
La alimentación del USB la he conectado a Vdd a través de una resistencia PTC (fusible reseteable) para proteger el puerto USB de sobrecorrientes.
Lo que no se es si dará problemas la conexión directa de las dos alimentaciones (USB y regulador de tensión de 5v) si por alguna casualidad conecto los dos a la vez.
He estado haciendo pruebas con el USB y la alimentación es malísima. Me llegan al conector entre 4.9 y 4.7 voltios, que bajan a 4.64 cuando conecto una memoria USB al hub. Quizás sin Hub las tensiones mejorarían, pero me queda claro que no puedo fiarme de la tensión USB para la referencia del ADC.
Por lo que comento, creo que si coinciden las dos alimentaciones, el regulador de tensión terminará alimentando el bus USB, y eso no se si es bueno o malo...
Saludos!
-
En la página 183 del datasheet del 18F2550 muestra como se puede controlar el tema cuando se utiliza ambas alimentaciones. También en el foro se ha tratado el tema ;-)
Saludos!
-
Menudo lio que montan en el Datasheet! :shock:
El mayor problema consiste en que la alimentación llega del regulador de tensión a través de un diodo, de forma que se pierde la tensión estabilizada.
No he encontrado nada mejor en el foro por ahora.
La solución que se me ocurre por ahora es colocar un jumper o un pequeño selector para decidir la alimentación. Así, al menos, se que la salida del regulador vale 5v con poco error.
Saludos.
-
Yo me decidí por un jumper para la placa eaglefree18f2550:
http://hsblog.mexchip.com/es/2009/07/eaglefree18f2550-placa-de-pruebas-para-pic18f2550/
Sobretodo porque le puse un relay, el cual solamente trabaja cuando se usa alimentación del regulador, no del puerto USB.
-
Yo también, generalmente coloco un jumper y a otra cosa :mrgreen:
-
Terminal Octoplus:
Hola LABmouse y gracias por comentar. Creo que el Octoplus es un desarrollo impresionante. No lo conocía y me ha encantado.
Lo que quisiera saber es si se conecta por puerto serie, por USB o por los dos (me ha parecido que sólo por puerto serie).
Se conecta por ambas. USB para el bootloader y Serial para el terminal.
Saludos!Yo también, generalmente coloco un jumper y a otra cosa :mrgreen:
Yo también uso un Jumper.
-
Terminal Octoplus:
En cuanto tenga la placa terminada, el primer proyecto que tengo en mente es utilizar el Terminal Octoplus para recoger datos de un graficador de curvas de componentes - miliohmetro.
Es el primer proyecto que quiero añadir a la placa para "vestirla" un poco y creo que tu terminal podrá dar mucho juego. ;-)
Revision 0.2 de la placa:
He modificado el esquema con todas las ideas recogidas y alguna nueva que he tenido:
- Oscilador: cambiado el cristal de cuarzo de 10Mhz por otro de 12Mhz
- Alimentación: he colocado un jumper para seleccionar la alimentación desde el conector USB o desde el regulador de tensión de 5V. Se mantiene el condensador de 100uF detrás del regulador de tensión y se añade otro condensador de 100uF conectado directamente al micro. Esto permite trabajar al micro con tensión USB y disponer a la vez de la tensión regulada (por ejemplo para alimentar motores).
- Compatibilidad 18F2525: añadido un conector de 5 pines en línea conectado a los pines del USB. Este conector puede servir para acceder a las tensiones del conector USB o para tener un puerto SPI en el caso de insertar un micro PIC18F2525. A su vez se ha colocado un jumper en el pin 14 para desconectar el condensador de este pin cuando se trabaje con un PIC18F2525.
- Protección de corriente: las resistencias de protección han cambiado de 180 Ohm a 330 Ohm. De esta forma se limita la corriente máxima de un pin a nivel bajo a 14 mA y la corriente máxima de todo el puerto (8 pines) a 114 mA.
Esquema de la placa 18F2550 USB. Revisión 0.2 (http://2.bp.blogspot.com/-r5c1-Lf_XUI/Tr2YFR1n3fI/AAAAAAAAAEc/GfaGF8oGPr4/s1600/Picuino_Guacamole_esquema_02.png)
Nuevas dudas:
Ahora, con estos cambios, me han surgido algunas dudas
Masa USB ¿Alguien sabe si se puede conectar la masa del conector USB "B" (la carcasa) al negativo de la alimentación del USB? ¿Son lo mismo?
Saludos!
-
La carcasa se puede conectar con tierra, no hay ningun problema.
-
Terminal Octoplus:
Hola LABmouse y gracias por comentar. Creo que el Octoplus es un desarrollo impresionante. No lo conocía y me ha encantado.
Lo que quisiera saber es si se conecta por puerto serie, por USB o por los dos (me ha parecido que sólo por puerto serie).
Se conecta por ambas. USB para el bootloader y Serial para el terminal.
Aclarar que se puede usar un dispositivo con USB CDC (Emulación de puerto serie) ;-)
-
el usb si tiene una tension regulada, piensa que viene del PC, y el pc tiene una fuente excelente.
Yo dejaria el usart como parte de la parte de "aprendizaje", es decir si alguien quiere ver como funciona y tal pues es su ocasion. El usb para lo demas, programar, conectar entre el software...
Se que el ICD3, pickit3 (el 2 no se) traen proteccion anti sobrecarga del usb, deberias mirar sus esquemas para ver como van.
Gracias por tu aporte MerLiNz, he podido encontrar que el pickit3 utiliza una resistencia PTC de 500mA para protección y voy a poner una igual en la placa (además hay otro montón de circuitos que no voy a copiar).
Pickit user guide página 66: Pickit 3 user guide (http://www.google.es/url?sa=t&rct=j&q=pickit%203%20user%20guide&source=web&cd=1&sqi=2&ved=0CB8QFjAA&url=http%3A%2F%2Fwww.sparkfun.com%2Fdatasheets%2FProgrammers%2FPICkit_3_User_Guide_51795A.pdf&ei=1ke-TozIPMae-wbQt4jwBA&usg=AFQjCNEMbZmoGN84L8bopZxG8Rj3qu8K9Q&cad=rja)
Es verdad que el pc tiene una fuente excelente. El problema parece ser que la tensión va cayendo en los cables usb (algunos son mejores que otros) y tambien cae en las protecciones (fusibles reseteables y similares) y, en mi caso, un hub que necesito para llegar a la caja del pc.
En total, la tensión que llega a la placa no se parece nada a la que hay en el interior del pc.
Si a eso le añado otra resistencia pct de protección, la tensión que le llega al micro es todavía más baja.
La precisión que necesito para la conversión ADC es de +-5mV (5V / 1023 pasos) y parece muy dificil conseguir eso con la tensión de alimentación, pero me gustaría acercarme todo lo posible.
Saludos.
-
Terminal Octoplus:
Hola LABmouse y gracias por comentar. Creo que el Octoplus es un desarrollo impresionante. No lo conocía y me ha encantado.
Lo que quisiera saber es si se conecta por puerto serie, por USB o por los dos (me ha parecido que sólo por puerto serie).
Saludos!
Se conecta por ambas. USB para el bootloader y Serial para el terminal.
Aclarar que se puede usar un dispositivo con USB CDC (Emulación de puerto serie) ;-)
Efectivamente amigo Suky.
-
el usb si tiene una tension regulada, piensa que viene del PC, y el pc tiene una fuente excelente.
Yo dejaria el usart como parte de la parte de "aprendizaje", es decir si alguien quiere ver como funciona y tal pues es su ocasion. El usb para lo demas, programar, conectar entre el software...
Se que el ICD3, pickit3 (el 2 no se) traen proteccion anti sobrecarga del usb, deberias mirar sus esquemas para ver como van.
Gracias por tu aporte MerLiNz, he podido encontrar que el pickit3 utiliza una resistencia PTC de 500mA para protección y voy a poner una igual en la placa (además hay otro montón de circuitos que no voy a copiar).
Pickit user guide página 66: Pickit 3 user guide (http://www.google.es/url?sa=t&rct=j&q=pickit%203%20user%20guide&source=web&cd=1&sqi=2&ved=0CB8QFjAA&url=http%3A%2F%2Fwww.sparkfun.com%2Fdatasheets%2FProgrammers%2FPICkit_3_User_Guide_51795A.pdf&ei=1ke-TozIPMae-wbQt4jwBA&usg=AFQjCNEMbZmoGN84L8bopZxG8Rj3qu8K9Q&cad=rja)
Es verdad que el pc tiene una fuente excelente. El problema parece ser que la tensión va cayendo en los cables usb (algunos son mejores que otros) y tambien cae en las protecciones (fusibles reseteables y similares) y, en mi caso, un hub que necesito para llegar a la caja del pc.
En total, la tensión que llega a la placa no se parece nada a la que hay en el interior del pc.
Si a eso le añado otra resistencia pct de protección, la tensión que le llega al micro es todavía más baja.
La precisión que necesito para la conversión ADC es de +-5mV (5V / 1023 pasos) y parece muy dificil conseguir eso con la tensión de alimentación, pero me gustaría acercarme todo lo posible.
Saludos.
siempre puedes coger un IC de referencia de voltaje y con eso tendras poco error, sin embargo 5mv es muy dificil de conseguir, ya el mismo ruido de la fuente, o de otro pin que interfiera puede darte esos 5mv de error.
-
Le he dado varias vueltas al tema y creo que tengo un IC que me valdrá para conseguir la referencia de tensión: LM385 (http://www.datasheetcatalog.net/es/datasheets_pdf/L/M/3/8/LM385.shtml),
pero no quiero incluírlo en la placa para no complicarla más. En cuanto pueda voy a intentar hacer un módulo que incluya esta referencia junto a varios sensores.
Por ahora ya tengo la primera versión construída y estoy deseando ponerla en marcha. El caso es que tengo experiencia con el RS232, pero no con el USB.
Bootloader USB:
Con los micros suelo trabajar de forma muy espartana (editor de texto configurado para que ejecute aplicaciones en línea de comandos). Para el caso de comunicar con USB
Hasta ahora he trabajado con el Tiny PIC Bootloader (http://www.etc.ugal.ro/cchiculita/software/picbootloader.htm) que me ha dado muy buenos resultados con RS232
El bootloader que he probado por ahora para USB es el HID Bootloader y no permite comunicar con el micro (sólo enviar el programa).
¿Que bootloader me recomendais?.
¿Cómo puedo comunicar con el micro para enviarle el programa y después recibir los datos?
En cuanto pueda publico las fotos de la placa
Un saludo!
-
Hola amigos, ya tengo la primera placa construída :-/
Me ha costado un buen puñado de horas, incluyendo la nueva insoladora a leds que he tenido que construir. En las fotos puede verse que el centro de la placa está demasiado insolado, de manera que todavía no he conseguido cogerle del todo el punto.
En cualquier caso, el trabajo ha merecido la pena. Adjunto unas fotos de la placa:
(http://1.bp.blogspot.com/--96p2_MfEO4/TsGV9xKKlEI/AAAAAAAAAEk/MXgxIBmBCWg/s1600/Picuino_Guacamole_10_Front_754px.jpg)
(http://3.bp.blogspot.com/-Xzw2IatPNi4/TsGWDu-4YQI/AAAAAAAAAEs/5q4E50uUKEA/s1600/Picuino_Guacamole_10_Rear_908px.jpg)
Todavía quedan algunas resistencias por soldar cuando las compre (algunas resistencias ya soldadas son de 1/2W y otras de 1/8W, lo que tenía a mano)
El esquema final ha quedado así:
Esquema eléctrico Picuino 18F2550 USB Versión 1.0 (http://3.bp.blogspot.com/-zsypq7HO4o4/TsGYwjNoSbI/AAAAAAAAAE0/yzTi7ruA85U/s1600/Picuino_Guacamole_esquema_11.png)
En el Blog iré publicando más datos, incluídos los esquemas finales cuando haya probado todo y corregido fallos:
http://picuino.blogspot.com/
Muchas gracias a todos por los comentarios y las respuestas, que suponen un apoyo estupendo.
Saludos!
-
el usb si tiene una tension regulada, piensa que viene del PC, y el pc tiene una fuente excelente.
Yo dejaria el usart como parte de la parte de "aprendizaje", es decir si alguien quiere ver como funciona y tal pues es su ocasion. El usb para lo demas, programar, conectar entre el software...
Se que el ICD3, pickit3 (el 2 no se) traen proteccion anti sobrecarga del usb, deberias mirar sus esquemas para ver como van.
Gracias por tu aporte MerLiNz, he podido encontrar que el pickit3 utiliza una resistencia PTC de 500mA para protección y voy a poner una igual en la placa (además hay otro montón de circuitos que no voy a copiar).
Pickit user guide página 66: Pickit 3 user guide (http://www.google.es/url?sa=t&rct=j&q=pickit%203%20user%20guide&source=web&cd=1&sqi=2&ved=0CB8QFjAA&url=http%3A%2F%2Fwww.sparkfun.com%2Fdatasheets%2FProgrammers%2FPICkit_3_User_Guide_51795A.pdf&ei=1ke-TozIPMae-wbQt4jwBA&usg=AFQjCNEMbZmoGN84L8bopZxG8Rj3qu8K9Q&cad=rja)
Es verdad que el pc tiene una fuente excelente. El problema parece ser que la tensión va cayendo en los cables usb (algunos son mejores que otros) y tambien cae en las protecciones (fusibles reseteables y similares) y, en mi caso, un hub que necesito para llegar a la caja del pc.
En total, la tensión que llega a la placa no se parece nada a la que hay en el interior del pc.
Si a eso le añado otra resistencia pct de protección, la tensión que le llega al micro es todavía más baja.
La precisión que necesito para la conversión ADC es de +-5mV (5V / 1023 pasos) y parece muy dificil conseguir eso con la tensión de alimentación, pero me gustaría acercarme todo lo posible.
Saludos.
siempre puedes coger un IC de referencia de voltaje y con eso tendras poco error, sin embargo 5mv es muy dificil de conseguir, ya el mismo ruido de la fuente, o de otro pin que interfiera puede darte esos 5mv de error.
Ensayo de tensión suministrada por el puerto USB
He estado probando la tensión suministrada por el USB, con un cable directo a la placa base (una placa base baratita) para saber hasta que punto varía la tensión.
Los resultados son bastante mejores que con el Hub USB:
Condiciones: Conexión de USB a ordenador semitorre con placa base barata. Cable USB2.0 normal de 120cm de largo
| Corriente | Tensión |
| [mA] | [V] |
| 0 | 5.15 |
| 50 | 5.11 |
| 106 | 5.07 |
| 156 | 5.03 |
| 212 | 4.99 |
La resistencia en serie equivalente de la fuente es de 0.75 Ohmios
La tensión se mantiene muy bien. El error máximo de tensión es menor de 5mV siempre que el consumo varíe menos de 7mA.
Por lo tanto la tensión USB se mantiene bastante constante con variaciones en la corriente pequeñas (creo que es suficiente para una placa de desarrollo).
El ruido no lo he medido (mi osciloscopio de mano barato sólo llega a 20mV) pero me imagino que será fácil tener interferencias o ruido de la fuente como tu dices.
Si alguien puede medirlo, sería un aporte estupendo.
Hub USB
Es mejor no utilizar un Hub usb, a no ser que tengan una fuente de alimentación propia bien regulada, porque la tensión baja mucho a través de ellos (hasta 4.5 voltios)
Saludos!
-
lo del bootloader es lo mas sencillo del mundo, yo hice un bootloader en un par de dias, y en otro par de dias lo adapte a usarlo para CAN BUS, y cuando digo par de dias digo a ratos, porque lo mismo me pongo 5 minutos que 1h y luego vuelvo a empezar.
Para usar USB en tu programa unicamente te tienes que bajar una libreria usb para Visual C++ en caso de que uses este, y a partir de eso es unicamente enviar y recibir como un usart.
Bootloader USB
Hola MerLiNz,
ya tengo la placa probada por completo y funcionando correctamente con un PIC18F2550 cargado con un Bootloader RS232 (que conozco bien y sé como modificar).
Ahora quisiera instalar en la placa un bootloader USB, pero no se nada sobre USB.
Suelo programar en C y ensamblador (prefiero C).
¿Qué Bootloader me recomiendas para comenzar?
Si puede ser, que tenga fuentes para poder modificarlo más tarde (no se nada de USB, pero aprendo rápido)
Muchas gracias y un saludo.
-
si trabajas con C18 microchip da muchos ejemplos de bootloader en su web, en Microchip Solutions (usa el buscador de la web) te bajas un comprimido que contiene como 40 ejemplos de todo, usb, spi, bootloader....
Sobre el USB yo no te puedo ayudar mucho porque no lo he usado aun, pero se que hay muchos bootloader en usb
-
He mirado en la página web de Pinguino y allí utilizan un bootloader USB basado en el Vasco Bootloader.
¿Qué tal es ese bootloader?
Saludos!
-
Puedes revisar el siguiente explicado para C18: http://www.micros-designs.com.ar/c18-bootloader-usb-hid/ Por aqui deje una versión en español del soft: http://www.micros-designs.com.ar/foros/index.php?topic=15.0
Saludos!
-
Puedes revisar el siguiente explicado para C18: http://www.micros-designs.com.ar/c18-bootloader-usb-hid/ Por aqui deje una versión en español del soft: http://www.micros-designs.com.ar/foros/index.php?topic=15.0
Saludos!
Gracias por las fuentes Suky ;-).
Problemas con bootloader:
He descargado las fuentes y las he modificado (para trabajar con un xtal de 12Mhz) todo compila bien y genera un archivo .HEX sin problemas. (Me ha costado algún tiempo comenzar a trabajar con el C18 )
Después de grabar el bootloader en el chip y conectar al USB, el ordenador muestra el mensaje:
"No se reconoce el dispositivo USB"
y no consigo avanzar más.
Pruebas para encontrar el problema:
- Ordenador: He probado el ordenador con otra placa PIC18F4550 USB y la reconoce sin problemas (no es problema del ordenador).
- Placa de desarrollo: He probado la placa con un bootloader RS232 y funciona sin problemas.
- Firmware: He probado a cargar en el PIC otros bootloader como uno HID para el 18F4550, el firmware para el Pickit2 y en ningún caso reconoce el dispositivo.
Después de todas estas pruebas, creo que el problema sólo puede estar en el firmware, pero no se qué está mal :huh:.
En el programa del bootloader ya he cambiado la linea:
#pragma config PLLDIV = 3 // (12 MHz crystal on PICDEM FS USB board)
para adaptarlo a 12Mhz
Estoy a punto de soldar un Xtal de 20Mhz a ver que pasa.
¿Alguien tiene alguna idea?
¿Existe algún programa para probar comunicación USB con el 18F2550?
Un saludo!
-
Revisa la correcta conexión de las lineas D+ y D- al conector y al microcontrolador. (D- a pin 2 del conector USB). Coloca un capacitor de minimo 470nF al PIN RC3, revisa su correcta conexión. Por lo visto es problema de hardware, ya que ningún ejemplo de USB funciona :tongue:
Saludos!
-
Yo hace poco tuve problemas con el 4550, la verdad esq era la 2ª vez que consegui hacer un USB funcionar ya que nunca lo he usado, y el problema fue tan tonto como que el cristal de 20Mhz que tenia estaba mal, o en la protoboard no funcionaba bien, le puse uno de 4Mhz y fue cambiar el cristal y sonar el ruidito de la conexion USB en el Windows, y eso que la frecuencia estaba mal porque lo tenia con PLLDIV = 5 (20Mhz) pero aun asi lo detecto, sin embargo daba problemas de conexion (logico).
Si no te lo detecta es problema de hardware, si te lo detecta pero te dice que hay problemas en la conexion es ya de software. Yo para comprobar que era problema de "arranque" unicamente mire que el VUSB tenia los 3.3V, en mi caso no los tenia y por eso detecte que el problema era de que el pic no arrancaba, una vez arranco me daba los 3.3V
-
Gracias por las respuestas,
He encontrado el problema :). Como suele ocurrir, una vez encontrado resulta ser algo muy simple.
El problema está en que las resistencias R19 y R20 que he colocado entre el micro y el conector USB son muy grandes (de 330 Ohm).
Las he puenteado y todo funciona bien.
Esquema: http://3.bp.blogspot.com/-zsypq7HO4o4/TsGYwjNoSbI/AAAAAAAAAE0/yzTi7ruA85U/s1600/Picuino_Guacamole_esquema_11.png
El caso es que quiero mantener las resistencias para que se pueda utilizar la misma placa con un PIC16F886 o con un PIC18F2525.
Estos micros no tienen USB y utilizan los pines 14, 15 y 16 como entradas/salidas o como conexión SPI y quiero protegerlas con resistencias.
Una solución puede ser colocar las resistencias después del conector USB. (Tendré que modificar el esquema y las rutas otra vez :( )
En cualquier caso, gracias por la ayuda
Un Saludo!
-
Proba con 220 Ohm, creo que con ese valor vas a estar al limite :tongue:
Saludos!
-
Actualizados esquemas, componentes y pistas para corregir el problema de comunicación USB. (VERSION 1.2)
Con esta versión todos los elementos Hardware de la placa están probados y funcionando. :-/
(https://sites.google.com/site/picuino/imagen/Picuino_Guacamolo_Front_r10_700px.jpg)
Adjunto enlace a la página web donde he colocado los esquemas y archivos KiCad para montar la placa:
https://sites.google.com/site/picuino/picuino-18f2550
Saludos!
-
He estado empapándome de manuales y código USB y empiezo a tener la cabeza que me da vueltas :-)
El interface USB es algo complicado comparado con la USART.
Los compiladores para la familia 18 tampoco se quedan cortos en cuanto a complicaciones. (estoy haciendo pinitos con SDCC y con C18)
Ya he conseguido hacer funcionar el Bootloader USB-HID.
Ahora estoy intentando hacer una aplicación que envíe y reciba datos entre el PIC y el PC mediante el puerto USB.
La idea es tener el equivalente a un terminal RS232, pero con USB HID para que no necesite instalación de ningún driver.
Me surgen muchas dudas:
- ¿Qué lenguaje utilizar para el PC? (Microchip utiliza Borland C en su USB Framework, otros utilizan Delphi)
- ¿Existe alguna aplicación de código abierto que ya funcione como terminal para USB HID?
- ¿Se puede aprovechar el Bootloader HID (que ya me funciona) como BIOS para que la aplicación PIC comunique con protocolo HID, o hay que programar por separado otro interface HID?
- ¿El framework USB FS de Microchip puede ayudar para hacer el terminal USB?
Como véis, tengo un pequeño lio que tengo que aclarar poco a poco.
Gracias y un saludos!
-
1. Visual C++ puede ser una opción, aprovechando que Microchip da la DLL HIDClass. Podes mirar un ejemplo por aquí: http://www.micros-designs.com.ar/practicas-en-visual-c-05/
2. Desconozco.
3. No, hay que crear el proyecto con otro interfaz HID.
4. Por supuesto.
Saludos!
-
para la comunicacion usb tienes muchos ejemplos en la web de microchip "Microchip Solutions", todos van con visual c++, este te lo puedes bajar gratis, son ejemplos muy sencillos y claros, faciles de entender.
-
para la comunicacion usb tienes muchos ejemplos en la web de microchip "Microchip Solutions", todos van con visual c++, este te lo puedes bajar gratis, son ejemplos muy sencillos y claros, faciles de entender.
:D Vamos, no lo puedes decir enserio :shock: :D Librerías C18 USB inaccesibles... al menos para mi inteligencia (http://www.todopic.com.ar/foros/index.php?topic=33640.msg281614#msg281614)
-
joe pues si, cierto que hay algunas que son muy largas de entender, pero yo he visto varias y son muy sencillas, es mas, la forma de leer el formato .hex para el bootloader lo saque del codigo que pone microchip para el software, adaptado a mi programa.
Luego libreria usb me decidi por la WinUSB, no la veo muy complicada, cierto que la libreria en si tiene mucho codigo, pero lo que es iniciar, enviar/recibir, y luego algunas configuraciones no es muy complicado.
Tambien los ejemplos CAN, fue donde aprendi a usar el CAN ya que los ejemplos que encontre en este foro eran en CCS.
Nose, a mi en principio lo que he visto no me ha parecido complicado, las placas de entrenamiento si suelen ser mas complejas ya que suelen tener varias funciones y se unen en un codigo, pero el tipico ejemplo de usb, envia y recibe pues se me hace muy sencillo, incluso el soft de visual c++.
-
He estado empapándome de manuales y código USB y empiezo a tener la cabeza que me da vueltas :-)
El interface USB es algo complicado comparado con la USART.
Los compiladores para la familia 18 tampoco se quedan cortos en cuanto a complicaciones. (estoy haciendo pinitos con SDCC y con C18)
Ya he conseguido hacer funcionar el Bootloader USB-HID.
Ahora estoy intentando hacer una aplicación que envíe y reciba datos entre el PIC y el PC mediante el puerto USB.
La idea es tener el equivalente a un terminal RS232, pero con USB HID para que no necesite instalación de ningún driver.
hola picuino,
Buena la chamba que estas montando, en mi caso estoy armando algo similar, estoy por publicarlo en una web pero quizas te de algunas ideas la descripcion:
core: pic18f4550
booloader: usb hid de microchip con el soft pdfsusb tambien de microchip
xtal: 20MHz pero por dentro sube con el PLL a 48Mhz
fuente: seleccionable con jumper entre DC y USB.
icsp: tiene los pines para usarlo con algun grabador externo sin sacar el pic y puedes aisalar o conectar el rb6 y rb7 con jumpers.
pines dedicados: el reset y el boton de boot.
leds dedicados: power y el led de boot.
salidas: le puse pines por debajo para que se inserte sobre un protoboard (como el pinguino).
(http://img403.imageshack.us/img403/2610/photo00307.jpg)
(http://img339.imageshack.us/img339/5228/photo00291u.jpg)
-
Bonita placa.
¿Que software utilizas para programar? ¿Utilizas el entorno de pinguino?
Saludos
-
Entonces picuino ya esta todo el hardware listo o tienes planeado hacer alguna modificación??
-
Bonita placa.
¿Que software utilizas para programar? ¿Utilizas el entorno de pinguino?
Saludos
Todo es para C18, el bootloader y el soft para subir el hex es de microchip, pero esta todo el codigo fuente para hacerle mejoras.
Del pinguino recogi la idea de poder plantarlo en un protoboard, y esa caracteristica es la que anima a estudiantes que recien empiezan y que por lo general tienen su protobard a mano y no tienen tiempo o dinero para estar haciendo una placa para hacer pruebas.
-
Entonces picuino ya esta todo el hardware listo o tienes planeado hacer alguna modificación??
Ahora mismo no tengo previsto realizar ninguna modificación. El hardware de la placa de control (versión 1.2) está completo y funciona correctamente:
https://sites.google.com/site/picuino/picuino-18f2550
En un futuro estoy planteándome cambiar las conexiones de los puertos (pines hembra torneada de 10mm) por conexiones machos (tipo conector molex).
Pero probablemente no es necesario cambiar el PCB para realizar esto, basta con soldar al PCB el conector molex macho y ya está.
El desarrollo en estos momentos está en los siguientes puntos:
SOFTWARE:
* Desarrollar un bootloader USB HID (conseguido con el Bootloader de Microchip)
* Desarrollar un bootloader RS232 y un entorno de desarrollo (conseguido con Tiny Pic Bootloader)
* Desarrollar una aplicación para el PC que reciba y envíe datos por USB-HID como si se tratara de un terminal RS232 (en desarrollo)
* Desarrollar librerías muy sencillas (3 o 4 funciones) para que las aplicaciones del PIC envíen y reciban datos por el USB como si se tratara de la USART. (No comenzado)
* Desarrollar librerías muy sencillas para comunicación de puerto serie sobre USB. (No comenzado)
HARDWARE:
Construir varias placas de aplicación que se conecten a los puertos de la placa de control picuino:
* Miliohmetro que inyecte hasta 3 amperios y hasta 5 voltios para realizar gráficas de componentes electrónicos, medir resistencias en el rango de los miliohmios, medir inductancias, medir resistencia equivalente en serie de condensadores y medición de inductancias y su rango de saturación. (Placa construida, software de control en desarrollo)
* Controlador flexible de dos Mosfet de potencia para realizar pruebas de topologías de fuentes de alimentación conmutadas: Flyback, Buck, Boost, Buck-Boost, Push-pull, Cuk, Medio puente H, etc. (Circuito diseñado)
* Controlador de LCD con teclado. (En fase de diseño)
* Controlador de motor de CC con control de velocidad por Back-Emf y control de posición con encoder (Construida una placa de pruebas)
OTROS PROYECTOS:
Si a alguien se le ocurren más proyectos que "enganchar" a la placa, puede proponerlos y veré que puedo hacer.
Los proyectos que quiero desarrollar por ahora deben ser muy flexibles (para poder montar rápidamente prototipos) y útiles para muchas aplicaciones.
Saludos!
-
OK yo ahoramismo estaba aburrido y estoy haciendo una version en SMD (mas pequeñita) porque me ha hecho gracia esto de Picuino ;-)
Yo lo único que le voy a modificar es ponerle un led testigo de conexión del USB y quitar los pulsadores y los leds, es que me gusta mas lo básico. Por lo demás igual. De momento sólo tengo el esquemático y la placa haber si tengo un ratito hoy y la hago.
El problema es que no tengo ni idea de KiCAD y lo estoy haciendo en ALTIUM, que aunque no es free, voy a poner aquí los links para el quiera hacerla la haga y además si que tu quieres lo cuelgues en la web.
-
Me alegro de que vayas a construirla, espero las fotos.
KiCad no es dificil y creo que te costará menos modificar mis ficheros que volver a rehacerlo. La ventaja de KiCad está en que es OpenSource.
Si quieres ayuda puedes consultarme dudas.
Los pulsadores son una cuestión de gusto, en mi caso son casi imprescindibles a la hora de realizar pruebas rápidas.
Los pulsadores también se pueden colocar en la protoboard, en mi caso prefería tenerlos siempre montados y a mano.
Por otra parte, como no quería consumir pines fijos del micro, no están conectados a ninguna entrada-salida (la conexión se realiza a mano).
Si quieres ayudar a desarrollar un terminal USB sencillo, la ayuda será bien recibida.
Saludos.
-
Todo es para C18, el bootloader y el soft para subir el hex es de microchip, pero esta todo el codigo fuente para hacerle mejoras.
Del pinguino recogi la idea de poder plantarlo en un protoboard, y esa caracteristica es la que anima a estudiantes que recien empiezan y que por lo general tienen su protobard a mano y no tienen tiempo o dinero para estar haciendo una placa para hacer pruebas.
La idea de picuino es que pueda prescindir de placa protoboard para los montajes más sencillos (de ahi que incluya leds, pulsadores y puertos con pines hembra)
También se puede utilizar con una placa protoboard, pero sin ocupar espacio. En los pines torneados se pueden conectar cables (los hilos de un cable de red valen) que vayan a la placa protoboard.
Como la placa picuino ya trae resistencias limitadoras, se pueden conectar las salidas directamente a un led o a un transistor sin miedo a quemar una salida (algo frecuente en el caso de estudiantes).
Una tercera opción es soldarle en los puertos de salida, pines machos por la cara de soldadura para utilizar la placa sobre una protoboard (como la pinguino).
(en este caso sólo se diferenciaría de pinguino en los pulsadores-led, en el conector ICSP y en la colocación de los pines en puertos de 5 o de 3 entradas-salidas)
Si en el futuro tiene cierto éxito, realizaré una versión SMD para que se pueda fabricar por parte de un fabricante de placas, reduciendo mucho el precio y el tamaño final.
Saludos.
-
He incluido en la página web una explicación de los puertos de entrada-salida de la placa:
https://sites.google.com/site/picuino/picuino-18f2550/Picuino_Guacamole_10_Explained.png?attredirects=0
-
Picuino creo que si la habras visto este link: http://www.hackinglab.org/ (http://www.hackinglab.org/)
En ella hay un bootloader para el PIC18F2550/4550 por USB
-
Picuino creo que si la habras visto este link: http://www.hackinglab.org/ (http://www.hackinglab.org/)
En ella hay un bootloader para el PIC18F2550/4550 por USB
Si, lo conozco.
La dirección corresponde a la web de la placa Pinguino, que utiliza un bootloader basado en el proyecto Open Source Vasco Pic USB Framework (http://vasco.gforge.enseeiht.fr/).
La gran ventaja que tiene es que se trata de un bootloader de código libre compilado con SDCC (compilador también Open Source).
En el futuro quizás intente utilizar ese bootloader, pero por ahora voy a utilizar el bootloader HID-USB de microchip que ya me funciona.
Ahora estoy peleándome símplemente para que la placa envíe y reciba datos por el USB hacia el PC y sólo con eso ya tengo bastantes quebraderos de cabeza.
El USB es de todo menos sencillo. Como he leído en algún lado, el protocolo USB debe haberlo inventado un comité de expertos a los que pagaban por complicar el estandar. ;-)
Saludos.
P.D. Por si te interesa, en la página web acabo de actualizar el esquema del circuito con comentarios explicando todos los pines de de todos los puertos de la placa.
Esquema eléctrico. Picuino 18F2550 V1.2b (https://sites.google.com/site/picuino/picuino-18f2550/Schematic_v12b.png?attredirects=0) (3/dic/2011)
-
P.D. Por si te interesa, en la página web acabo de actualizar el esquema del circuito con comentarios explicando todos los pines de de todos los puertos de la placa.
Esquema eléctrico. Picuino 18F2550 V1.2b (https://sites.google.com/site/picuino/picuino-18f2550/Schematic_v12b.png?attredirects=0) (3/dic/2011)
Pues la verdad es que esta muy bien explicado!
Ahora en 5 minutos te pongo una captura de pantalla de como esta quedando la que estoy haciendo.
-
Las capturas de pantalla de la imagen 3D:
(http://i108.photobucket.com/albums/n18/sasmshiel/samshieldesignsblog/PicuinoSMD1.jpg)
(http://i108.photobucket.com/albums/n18/sasmshiel/samshieldesignsblog/PicuinoSMD3.jpg)
(http://i108.photobucket.com/albums/n18/sasmshiel/samshieldesignsblog/PicuinoSMD2.jpg)
Me faltan poner el LED del USB y algunas conexiones todavia y poner la serigrafía, pero por lo menos te puedes hacer una idea.
Un saludo!
-
La placa tiene muy buena pinta. ;-)
En cada pin de entrada-salida yo coloco un pin hembra grueso (para pinchar un conector macho o un componente con patillas gruesas) y un pin hembra fino (para conectar un hilo de cobre fino, como en las protoboard)
Los pines hembra gruesos no sirven para conectar hilo de cobre finos (como el de cable de red) porque el hilo se sale del agujero.
Hembra finos: http://www.robodacta.mx/images/detailed/0/tira_40_pines13141396694e542e15bc9c5.jpg
Hembra gruesos (como los que has instalado): http://www.robodacta.mx/images/detailed/0/17-60.1comp.jpg
Saludos.
P.D: ¿Cómo vas a sujetar la placa sin tornillos?
-
P.D: ¿Cómo vas a sujetar la placa sin tornillos?
Ahi voy! jejeje
(http://i108.photobucket.com/albums/n18/sasmshiel/samshieldesignsblog/PicuinoSMD4.jpg)
Lo de aguamole es por que es una variedad de salsa Guacamole pero mas ligera. Una metaforilla que me he sacao jejejeje :D
-
Ya que estamos con las fotos, adjunto una de la placa con dos módulos conectados:
1.- Módulo de conexión RS232
2.- Módulo Tester VI (para realizar gráficas de funcionamiento de componentes o medir miliohmios)
La placa Test-VI (a la derecha) tiene alimentación de 5v para los circuitos de control (a través del conector de 8 pines) y alimentación de potencia de 8v a través del conector molex conectado a la placa Picuino.
De esta forma el ruido se minimiza y la corriente suministrada por la placa de Test-VI puede llegar a 3 amperios.
(https://sites.google.com/site/picuino/_/rsrc/1322948178128/picuino-18f2550/Picuino%2BVI%2BRS232_800px.jpg?height=400)
Resultados de funcionamiento de una bombilla incandescente. El PIC envía parejas de datos V-I y después se grafican en Excel:
(https://sites.google.com/site/picuino/_/rsrc/1322948582937/picuino-18f2550/Test_VI_Bombilla_incandescente.png?height=400)
En cuanto funcione un poco mejor la placa y tenga los drivers programados, la subiré a la web.
Saludos
-
Lo de aguamole es por que es una variedad de salsa Guacamole pero mas ligera. Una metaforilla que me he sacao jejejeje :D
Te está quedando bastante chula, incluido el nombre ;-)
Saludos.
-
P.D: ¿Cómo vas a sujetar la placa sin tornillos?
Ahi voy! jejeje
Lo de aguamole es por que es una variedad de salsa Guacamole pero mas ligera. Una metaforilla que me he sacao jejejeje :D
Esta bacan la imagen 3D, parece una nave espacial jejej, lastima que si hago algo asi por aca te cobran un extra por darle esos cortes a la placa. Saludos y a seguir adelante!
-
1. Visual C++ puede ser una opción, aprovechando que Microchip da la DLL HIDClass. Podes mirar un ejemplo por aquí: http://www.micros-designs.com.ar/practicas-en-visual-c-05/
Hola Suky,
He bajado el ejemplo que me señalas y consigo compilar el firmware del micro con MPLAB.
En cuanto a la aplicación para PC no consigo compilarla. ¿Podrías enviar el proyecto con sus dependencias e includes?
Muchas gracias.
Saludos
-
Es visual C++ 2008. Sinceramente, el proyecto ni la mas remota idea de donde esta o si sigue dentro de mi PC :(
Saludos!
-
Estoy hasta el santo xFm!!#F¿Ñ¨ :rayito: m>/¬& del bendito interface USB.
Pruebas hasta el momento:
1. Jan Axelson USB (http://www.lvr.com/hidpage.htm):
Firmware para C18 con Framework de Microchip: Compila y funciona
Host para PC con VC6: No compila
Host para PC con VisualBasic 6: funciona, pero no reconoce que esté conectado el PIC
2. Prácticas con USB en VisualC (by Sucky) (http://www.micros-designs.com.ar/practicas-en-visual-c-05):
Firmware para C18 con Framework de Microchip: Compila y funciona
Host para PC con VisualC++ 2008: No consigo compilarlo.
3. Microchip HID Bootloader (https://sites.google.com/site/picuino/picuino-18f2550/recursos-usb):
Funciona el firmware y el programa Host.
Sólo sirve para transferir un programa al micro.
4. Tutorial del proyecto Pinguino (http://sites.google.com/site/pinguinotutorial/home):
Bootloader basado en Vasco PUF. Funcionan los led y el ordenador reconoce el dispositivo.
Entorno de desarrollo basado en Python (compila)
No consigo descargar el código compilado (.hex) al microcontrolador.
5. Principles of Engineering (http://pe.ece.olin.edu/ece/projects.html):
Lab 2 peripheral firmware for PIC18F2455 in assembler and in C
Aplicación que simula un teclado USB. (compila y funciona OK)
El firmware funciona y envía comandos al PC que son interpretados como teclas de un teclado.
Hay que ejecutarlo sobre un editor de texto para recibir los datos.
Si no tienes cuidado te desbarata todo porque actúa como un teclado real.
No le veo muchas aplicaciones prácticas.
6. Osciloscopio USB (http://www.semifluid.com/?p=24):
Firmware para CCS: funciona
Host para VisualBasic 6: compila y funciona
Esta es la primera aplicación que hace algo y que he conseguido que funcione.
La parte host está programada en VisualBasic (lo conozco más y es más sencillo)
El único problema está en el firmware que es para CCS y por ahora ya no me queda cabeza para aprender otro compilador más.
7. Vasco PIC USB Framework (http://vasco.gforge.enseeiht.fr/):
Proyecto OpenSource muy interesante.
Código C para el compilador SDCC, (compilador tambien OpenSource)
El Bootloader de la placa pinguino utiliza este Framework modificado.
No consigo compilar más que cosas sencillas en este compilador, de manera que por ahora no me atrevo a intentar
una aplicación que envíe y reciba datos entre el PIC y el PC. Cuando se me enfrien las neuronas intentaré continuar.
No consigo en ninguna de ellas tener una aplicación que funcione y que yo pueda modificar sin tener que leerme un millón de líneas de código y manuales.
Saludos!
-
Respecto al ejemplo que subí yo, que error indica al compilar?
-
El código VisualC++ es el siguiente:
#include "Form1.h"
#include "stdafx.h"
using namespace HIDClass;
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
// Initialize class with Vendor ID, Product ID, and report size)
MCHPHIDClass::USBHIDClassInit (0x4D8, 0x003F, 64);
}
private: System::Void cb_Led4_CheckedChanged(System::Object^ sender, System::EventArgs^ e) {
unsigned char OutputPacketBuffer[64]; //Allocate a memory buffer equal to our report size
OutputPacketBuffer[0] = 0x80; // Cambiar el estado de los leds.-
OutputPacketBuffer[1] = 0x00; // Borramos todos, si está checkeado colocamos un 1 en el lugar correcto.-
if(cb_Led1->Checked==true){
OutputPacketBuffer[1]+=1;
}
if(cb_Led2->Checked==true){
OutputPacketBuffer[1]+=2;
}
if(cb_Led3->Checked==true){
OutputPacketBuffer[1]+=4;
}
if(cb_Led4->Checked==true){
OutputPacketBuffer[1]+=8;
}
// enviamos:
if (MCHPHIDClass::USBHIDWriteReport(OutputPacketBuffer, 2) == true){
lb_Estado->Text = "USB: Conectado";
lb_Estado->ForeColor=Color::Green;
}else{
lb_Estado->Text = "USB: Desconectado";
lb_Estado->ForeColor=Color::Red;
}
}
private: System::Void tm_Ticks_Tick(System::Object^ sender, System::EventArgs^ e) {
unsigned char OutputPacketBuffer[64]; //Allocate a memory buffer equal to our report size
unsigned char InputPacketBuffer[64]; //Allocate a memory buffer equal to our report size
// Comenzamos leyendo estado de los pulsadores:
OutputPacketBuffer[0] = 0x81; //0x81 Leer Pulsadores.-
if (MCHPHIDClass::USBHIDWriteReport(OutputPacketBuffer, 1) == true){
lb_Estado->Text = "USB: Conectado";
lb_Estado->ForeColor=Color::Green;
MCHPHIDClass::USBHIDReadReport(InputPacketBuffer); // leemos datos.-
//InputPacketBuffer[0] Estado pulsadores.-
cb_SW2->Checked=false;
cb_SW3->Checked=false;
if((InputPacketBuffer[0]&1)==1){ // Mascara para obtener bit que nos interesa.-
cb_SW2->Checked=true;
}
if((InputPacketBuffer[0]&2)==2){
cb_SW3->Checked=true;
}
// Ahora leemos valor del potenciometro:
OutputPacketBuffer[0] = 0x37; //0x37 Leer Pot.-
if (MCHPHIDClass::USBHIDWriteReport(OutputPacketBuffer, 1) == true){
MCHPHIDClass::USBHIDReadReport(InputPacketBuffer);
//InputPacketBuffer[0] dato LSB
//InputPacketBuffer[1] dato HSB
// Cargamos en barra de progreso valor enviado en 10 bits.-
pb_AN0->Value=((Int16)InputPacketBuffer[1]*256 + InputPacketBuffer[0]);
}else{
lb_Estado->Text = "USB: Desconectado";
lb_Estado->ForeColor=Color::Red;
}
}else{
lb_Estado->Text = "USB: Desconectado";
lb_Estado->ForeColor=Color::Red;
}
}
Los errores de compilación que genera: (sólo he copiado los errores que genera hasta la línea 11 del código)
1>Compilando...
1>Form1.cpp
1>.\Form1.cpp(4) : error C2871: 'HIDClass' : no existe ningún espacio de nombres con este nombre
1>.\Form1.cpp(6) : error C2059: error de sintaxis : 'private'
1>.\Form1.cpp(8) : error C2653: 'MCHPHIDClass' : no es un nombre de clase o espacio de nombres
1>.\Form1.cpp(8) : error C3861: 'USBHIDClassInit': no se encontró el identificador
1>.\Form1.cpp(11) : error C2059: error de sintaxis : 'private'
.
.
.
El compilador es Visual C++ 2008 Express Edition spanish
Saludos.
-
:roll: Te conviene crear una aplicación desde 0, y de ahí ir agregando las funciones (Seguro que si sacas la parte de USB tampoco te compila ese proyecto :? ). Porque trabajas en el main.cpp si se maneja todo desde el .h ? Hay errores que si trabajaras con el proyecto correctamente no te saldrían ;-)
Después anda agregando funciones de a poco, por ejemplo solamente MCHPHIDClass::USBHIDClassInit (0x4D8, 0x003F, 64). Si no te vuelves loco buscando errores :x
Saludos!
-
:roll: Te conviene crear una aplicación desde 0, y de ahí ir agregando las funciones (Seguro que si sacas la parte de USB tampoco te compila ese proyecto :? ). Porque trabajas en el main.cpp si se maneja todo desde el .h ? Hay errores que si trabajaras con el proyecto correctamente no te saldrían ;-)
Después anda agregando funciones de a poco, por ejemplo solamente MCHPHIDClass::USBHIDClassInit (0x4D8, 0x003F, 64). Si no te vuelves loco buscando errores :x
Saludos!
Animo picuino! cuando un codigo no me compila es mejor empezar de cero e ir agregando etapas, recuerda: divide y venceras!
-
Gracias por los ánimos, porque a veces los necesito.
El otro día tardé varias horas símplemente en instalar visual C++.
Parece fácil, pero me encontré con que la partición del disco del sistema operativo estaba casi llena y tuve que hacer espacio primero. Entre ese y otros problemas...
Además nunca he programado en Visual C++. Parece que la adaptación puede ser facil, pero he llegado a tardar más de 1hora hasta que me di cuenta de que había que crear un formulario :huh: y hasta que encontré después la barra de herramientas para editar formularios :roll:.
Bueno... que voy a comenzar a aprender VisualC++ desde cero (seguiré toda la serie de Sucky desde el ejemplo 1 ;-) )
y después comenzaré el proyecto USB desde cero.
Cuando llegue os comento.
Saludos.
-
Este inicio de tutorial que a realizado Ariel te va a venir bien, es de VB, pero en general los pasos a seguir son similares: http://www.ucontrol.com.ar/forosmf/programacion-en-visual-basic/visual-basic-2008-creando-interfaces-para-pic-desde-cero/
Saludos!
-
Creo que conocer el stack USB y la programación en Visual C++ me llevará bastante tiempo, de manera que he decidido ir poco a poco con el USB y mientras tanto seguiré desarrollando aplicaciones para la placa Picuino.
Ahora quisiera retomar algunos temas que se han tratado al comienzo del hilo y creo que son interesantes.
Saludos!
-
Mi opinión es que para conseguir algo popular tienes que combatir contra Arduino, cuyos puntos fuertes son el hardware, su ubicuidad y, sobre todo, su entorno de desarrollo integrado.
En http://pinguino.cc ya han logrado todos estos valores... pero han llegado tarde ¿cómo aproximarse ahora a Arduino que lleva años de ventaja y ha calado en la comunidad DIY de bajo nivel?
Aportando algo más ¿qué? Hay entra en juego la imaginación :mrgreen:
Bien, creo que tengo claro que no quiero combatir contra Pinguino ni contra Arduino.
¿Qué más puede aportar la placa Picuino?
Frente a la placa Arduino:
- Microprocesador PIC ;-)
- Interface USB nativo (Arduino utiliza un conversor USB-RS232)
- Posibilidad de emular periféricos HID (por ejemplo interruptores de expansión para el Flight Simulator)
- Conectores de expansión estandar con alimentación incluida, que facilita conectar placas de expansión
- Placas de ampliación o Shields que no tiene Arduino
Frente a la placa Pinguino:
La placa pinguino parece estar orientada sólo a realizar pruebas sencillas con el microcontrolador y, como mucho, controlar un montaje realizado sobre placa protoboard.
Esto creo que limita bastante en la parte hardware. No es fácil conectarle un módulo de ampliación o shield, ni encontrar módulos de expansión ya diseñados y probados.
En cuanto al entorno de desarrollo, creo que el de pinguino es suficiente y puede funcionar con Picuino. No creo que sea necesario volver a realizar otro.
Por mi parte, prefiero programar en un editor de texto estandar.
Donde creo que Picuino puede añadir algo más a la placa Pinguino es en:
- Conectores estandar para ampliar con facilidad la placa y que añaden alimentación
- Placas de expansión hardware fáciles de conectar y programar.
- Firmware para manejar las placas de expansión con facilidad. (algo parecido a lo que hace CCS con los periféricos del PIC)
Para esto creo que necesito vuestro aporte:
¿Qué placas de expansión creeis que sería más interesante empezar a desarrollar?
Os dejo algunas ideas que ya he tenido:
- Placa para realizar curvas de funcionamiento de componentes VI-Tester (https://sites.google.com/site/picuino/picuino-18f2550/vi-tester) (ya desarrollado el hardware)
- Placa de adaptación de niveles RS-232 (ya desarrollada, me falta publicarlo)
- Placa de control de motores DC.
- Placa con 2 mosfet para realizar pruebas con fuentes de alimentación conmutadas
- Control de tiempo y de potencia (por ejemplo para una para insoladora a leds).
- Medidor de inductancia y de capacidad
- Display LCD y teclado
Saludos!
-
- Ethernet
- Radio RF
-
Por cierto picuino... podríamos colaborar en algunas placas, aunque sólo en la parte del esquemático, porque mi "estándar" usa una geometría un poco diferente a la de tu picuino.
Por ejemplo, el shield LC meter está en mi lista. Cuando tenga el esquemático lo publicaré por si quieres aprovecharlo.
-
El estandar de conexión es importante para que la placa sea compatible, pero cuesta muy poco trabajo adaptar un tipo de conector a otro.
El mayor problema consiste en hacer:
Un esquemático que funcione (que esté probado y corregido).
Un firmware que funcione y libre de errores.
En cuanto a colaborar, por mi parte encantado.
Hace ya tiempo construí un medidor LC basado en el 16F628 que funciona fenomenal. El harware está probado y va muy bien. En cuanto al firmware, habría que adaptarle al 18F2550 y añadirle algunas mejoras.
Te dejo el enlace de la página del LC-meter para que me comentes que te parece el esquema:
http://ironbark.bendigo.latrobe.edu.au/~rice/lc/index2.html
Este montaje se adapta bien a valores de LC para radiofrecuencia (valores pequeños con factor Q alto)
Otro montaje que permite medir LC es el montaje que acabo de publicar:
https://sites.google.com/site/picuino/picuino-18f2550/vi-tester
Permite medir capacidad, inductancia, resistencia en serie de un condensador y de una bobina (miliohmios).
Mide bien valores de capacidad e inductancia grandes y puede calcular incluso la corriente de saturación de la bobina.
Esto se adapta muy bien a bobinas y condensadores usados en fuentes de alimentación conmutadas.
Saludos!
-
- Ethernet
- Radio RF
Ethernet: Si alguien colabora con el esquemático y firmware, puedo diseñar el PCB. Se puede adaptar un montaje ya realizado.
Radio RF: ¿Propuestas concretas? ¿Bluetooth? ¿Radiocontrol para maquetas?
Saludos.
-
Yo estoy trabajando en la versión más antigua del primer LC que has puesto que recurre a un LM311: https://sites.google.com/site/vk3bhr/home/lcm1
La única variación que he introducido es sustituir el relé por un switch... cuando lo tenga listo lo publico
El shield Ethernet es un gran problema... no por el hardware, sino por el stack TCP/IP... para mí es muy complicado usar la de Microchip y estoy estudiando otras alternativas (pingüino aún no la tiene lista), como JAL.
En radio RF, yo estoy trabajando sobre el CC1101
-
Estoy programando en C18 para hacer una función de control de PWM y no entiendo la traducción a ensamblador que hace el compilador:
000008 cfd9 MOVFF 0xfd9,0xfe6 void dac_pwm_vo1(byte volt) {
.
.
.
00001c 0efe MOVLW 0xfe WREG += volt;
00001e 50db MOVF 0xdb,0x0,0x0
000020 26e8 ADDWF 0xe8,0x1,0x0
¿Por qué la instrucción en c "WREG += volt;" no se traduce a un simple "ADDWF volt, 0, 0" ?
Saludos.
-
Nunca me fije como trabaja C18 la recepción de parámetros de una función, pero el tema viene por ahí. Lo trabajará con indireccionamiento indirecto :huh:
-
No sólo el parámetro de la función se direcciona de forma extraña, he intentado declarar una variable interna y es todavía peor (lo sustituye por 6 instrucciones!!)
Me gustaría poder hacer la rutina en C para que sea más portable y se entienda mejor, pero se compila con mucho código.
Al final se ha resuelto un poco declarando todas las variables como static, pero no consigo que estén en el Access Bank.
void dac_pwm_vo1(static byte volt) {
static byte loop, sreg;
000008 0100 MOVLB 0x0 loop = 0; // Inicializa variables locales
00000a 6b6b CLRF 0x6b,0x1
00000c 0100 MOVLB 0x0 sreg = 0x80;
00000e 0e80 MOVLW 0x80
000010 6f6c MOVWF 0x6c,0x1
000012 9889 BCF 0x89,0x4,0x0 LATAbits.LATA4 = 0;
000014 9892 BCF 0x92,0x4,0x0 TRISAbits.TRISA4 = 0; // Activa la salida PWM
000016 6ad8 CLRF 0xd8,0x0 STATUS = 0;
do { // Repetir 255 veces:
000018 0100 MOVLB 0x0 sreg += volt; // sumar sreg y volt <<<<<<<<< CODIGO ASM MUY LARGO <<<<<<<<<<<<<
00001a 516a MOVF 0x6a,0x0,0x1
00001c 0100 MOVLB 0x0
00001e 276c ADDWF 0x6c,0x1,0x1
000020 a0d8 BTFSS 0xd8,0x0,0x0 if (STATUSbits.C) { // si hay acarreo
000022 d003 BRA 0x2a
000024 0000 NOP Nop();
000026 8889 BSF 0x89,0x4,0x0 LATAbits.LATA4 = 1; // PWM = 1
000028 d003 BRA 0x30 } else {
00002a 9889 BCF 0x89,0x4,0x0 LATAbits.LATA4 = 0; // en caso contrario PWM = 0
00002c 0000 NOP Nop();
00002e 0000 NOP Nop();
}
000030 0100 MOVLB 0x0 } while (--loop);
000032 076b DECF 0x6b,0x1,0x1
000034 e1f1 BNZ 0x18
000036 8892 BSF 0x92,0x4,0x0 TRISAbits.TRISA4 = 1; // Salida PWM en alta impedancia
000038 0012 RETURN 0x0 }
Esta rutina genera una salida de 0 a 5voltios con frecuencia variable:
volt= 32 PWM=000100000001000000010000....
volt=128 PWM=101010101010101010101010....
volt=192 PWM=110111011101110111011101....
de esta forma la tensión de rizado es mínima y solo depende de la duración del bucle (por eso cuanto menos dure el bucle mejor)
Con el compilador CC5X para el 16F88 la rutina dura 10 ciclos por repetición.
Con el compilador C18 para el 18F2550 la rutina dura 13 ciclos por repetición :?
Con esto me conformo, pero me extraña que el C18 no pueda mejorar los tiempos de un compilador de segunda fila como el CC5X.
Saludos!
-
Estoy trabajando en la placa VI_Tester (https://sites.google.com/site/picuino/picuino-18f2550/vi-tester) y me he encontrado con un problema:
El amplificador operacional LM358 tiene un slew-rate muy lento (tarda 5 us en subir 1.5 voltios y no puedo medir con precisión).
Tengo que sustituirle por otro Op Amp dual que suba más rápido, con Vinput desde 0 voltios, si puede ser con salida rail to rail y que sea fácil de encontrar. Además con encapsulado de 8 pines
He encontrado uno que parece estar bien: TLC272 (http://www.ti.com/lit/ds/symlink/tlc272.pdf)
En una tienda cercana lo venden por menos de un euro.
¿Conoceis alguno similar?
Saludos.
-
Hola picuino, un A.O que suelo usar cuando necesito una alta velocidad de subida es el TLV2772 (http://www.ti.com/lit/ds/symlink/tlv2772.pdf)
TLV2772
High Slew Rate...10.5 V/µs Typ
High-Gain Bandwidth...5.1 MHz Typ
Supply Voltage Range 2.5 V to 5.5 V
Rail-to-Rail Output
360 µV Input Offset Voltage
Low Distortion Driving 600- 0.005% THD+N
1 mA Supply Current (Per Channel)
17 nV/Hz Input Noise Voltage
2 pA Input Bias Current
Characterized From TA = –55°C to 125°C
Available in MSOP and SOT-23 Packages
Micropower Shutdown Mode...IDD < 1 µA
Available in Q-Temp Automotive
High Reliability Automotive Applications
Configuration Control / Print Support
Qualification to Automotive Standards
Saludos!
-
Gracias martincnc,
En la tienda no tienen el TLV2772, pero tienen uno muy parecido que a mí me vale: TLV2472 (http://www.ti.com/lit/ds/symlink/tlv2472.pdf)
Tiene menos slew-rate, pero es suficiente (1.5V/us)
y tiene más corriente de salida (+-30mA)
Saludos.
-
Las capturas de pantalla de la imagen 3D:
(http://i108.photobucket.com/albums/n18/sasmshiel/samshieldesignsblog/PicuinoSMD1.jpg)
Me faltan poner el LED del USB y algunas conexiones todavia y poner la serigrafía, pero por lo menos te puedes hacer una idea.
Un saludo!
¿Qué tal va la placa samshiel_pic ?
Estoy diseñando una placa de expansión con LCD y 4 pulsadores para el puerto RB que le vendría fenomenal a tu diseño (que no tiene teclado ni leds).
Saludos!
-
Todavia no la he montado pero no creo que tarde en cuando la tenga montada no te preocupes que empiezo a cacharrear con ella y ha hacerle módulos :mrgreen: ;-)
-
He diseñado ya el módulo Display LCD con teclado de 4 pulsadores.
Esta tarde lo he montado y mañana haré las pruebas. En cuanto compruebe que funciona, lo publicaré en la web.
El módulo utiliza los 8 pines del Puerto RB (lo que incluye alimentación).
Lo que me hace falta ahora es tener rutinas en C18 para controlar el LCD.
Los pulsadores son fáciles de controlar.
Saludos.
-
Todavia no la he montado pero no creo que tarde en cuando la tenga montada no te preocupes que empiezo a cacharrear con ella y ha hacerle módulos :mrgreen: ;-)
Estoy pensando en cambiar los puertos para añadir un conector macho de paso 2.5 (tipo JST)
Al final quedaría en cada puerto una tira de pines hembra (para poder conectar cables sueltos) y un conector macho para conectar de una sola vez los 8 o 5 cables del puerto (y sin equivocarte con la polaridad)
El conector macho es de este tipo:
(http://www.maaki.com/thomas/sas/jupiter4/jp4_cv/default_connector.jpg)
La hembra para PCB sería esta (pero con 8 pines o con 5 pines dependiendo del conector):
(http://static2.shoptronica.com/133-866-thickbox/cable-conector-jst-xh.jpg)
¿Que opinas del cambio?
Saludos!
-
con esos conectores debes tener cuidado que no se agarren mucho, porque quizas alguno tirando lo arranca de la PCB xD o de poner/quitar mucho se rompa, son cosas que debes pensar bien.
-
con esos conectores debes tener cuidado que no se agarren mucho, porque quizas alguno tirando lo arranca de la PCB xD o de poner/quitar mucho se rompa, son cosas que debes pensar bien.
Muchas gracias por el aviso MerLiNz.
Creo que el tema de los conectores es muy importante en esta placa.
Los conectores hembra que utilizo en el PCB funcionan de lujo: Se conectan con facilidad, hacen buena conexión, son robustos, se pueden conectar cables de forma individual, no son caros, etc:
(http://www.shoptronica.com/img/images/Tira%20de%20pines%20hembra%20torneado%20recto.jpg)
El problema viene con el cable. Los conectores macho son difíciles de fabricar (son muy artesanales), no aseguran que los conectes con la polaridad correcta y, al ser machos, se doblan con facilidad cuando están desconectados:
(https://sites.google.com/site/picuino/imagen/Cable%20macho_480px.jpg)
He pensado alguna vez en los Molex:
(http://www.sigmaelectronica.net/images/CON-MOLEX-8P.jpg)
Puntos fuertes: con polaridad, fácil de conectar, cable fácil de fabricar, cable hembra (no se dobla)
Negativo: Un poco grandes, los pines machos en el pcb se pueden doblar (no están protegidos y si se rompe un pin en el PCB, la has liado).
¿Alguna idea sobre los mejores conectores?
Saludos!
-
¿No te serviría el IDC Box sin traba? En el cable usarías el IDC hembra crimpado. Yo los armo con una morza, nada de pinzas especiales de crimpado.
Ocupa un poco más de espacio, eso si, pero la conexión es segura y el armado es fácil.
-
Es una de las opciones que he pensado.
El problema es que sólo puedo encontrar el de doble fila.
Si utilizas las dos filas, es difícil utilizar ese conector en placas protoboard o PCB de prototipos.
Si sólo utilizas una fila, es un conector demasiado grande.
Lo ideal sería un IDC de simple fila que se pudiera 'crimpar' en cable plano:
(http://www.allproducts.com/manufacture98/donconnex/Product-20091111205210.jpg)
Pero he preguntado por este conector y no es fácil de encontrar en las tiendas (sólo tienen el de doble fila).
Saludos!
-
Todavia no la he montado pero no creo que tarde en cuando la tenga montada no te preocupes que empiezo a cacharrear con ella y ha hacerle módulos :mrgreen: ;-)
Ya he publicado el módulo con Display LCD y teclado de 4 pulsadores:
(https://sites.google.com/site/picuino/picuino-18f2550/lcd_display/Display_LCD_and_Keyboard_800px.jpg)
Placa de expansión LCD y Teclado (https://sites.google.com/site/picuino/picuino-18f2550/lcd_display)
Es un poco grande, pero funciona muy bien.
Saludos!
-
¿Alguien sabe si hay algún estandar para colocar la línea positiva (Vcc) o la negativa (GND) en un conector MOLEX?
Me he dado cuenta que he diseñado la placa de forma que en un lado de la placa el positivo está a la izquierda y en otro lado de la placa el positivo está a la derecha.
Quiero corregirlo y, ya que estoy, prefiero dejarlo lo más estandar posible.
Saludos!
-
Por cierto picuino... podríamos colaborar en algunas placas, aunque sólo en la parte del esquemático, porque mi "estándar" usa una geometría un poco diferente a la de tu picuino.
Por ejemplo, el shield LC meter está en mi lista. Cuando tenga el esquemático lo publicaré por si quieres aprovecharlo.
Hola jfmateos,
Ya tengo el LC meter montado y funcionando:
https://sites.google.com/site/picuino/picuino-18f2550/lc_meter
(https://sites.google.com/site/picuino/_/rsrc/1325604701907/picuino-18f2550/lc_meter/lc_meter_img01_v0.9.jpg)
Estoy realizando el programa y por ahora funciona muy bien. De hecho he aumentado la resolución del programa original y puedo medir variaciones de 0.01 picofaradios!.
El programa de control ya funciona, pero voy a esperar a publicarlo porque aún tengo algún problema con la frecuencia del oscilador de cuarzo (http://www.todopic.com.ar/foros/index.php?topic=37199.0) (me da un error muy grande de 750ppm).
Como se puede ver, he utilizado la primera versión del circuito (con un LM311 en vez del comparador del micro) para que los cables de conexión no introduzcan error y para reducir el número de conexiones.
Esta placa se puede utilizar en cualquier otra placa de desarrollo.
Saludos.
-
Por fin he colgado el programa de manejo del medidor de inductancia y capacidad (LC_Meter) con los ficheros fuentes (en C18):
https://sites.google.com/site/picuino/picuino-18f2550/lc_meter
He tenido muchos problemas para hacer funcionar el programa con el HID Bootloader y al final he desistido.
No se por que razón el LCD y la USART dejan de funcionar correctamente al grabar el programa con HID Bootloader.
En cualquier caso el programa funciona correctamente si se graba con ICSP o con Tiny Pic Bootloader.
para manejar el LC_meter es necesario añadir el LCD con teclado (https://sites.google.com/site/picuino/picuino-18f2550/lcd_display) o una conexión RS232.
Saludos.
-
Fenómeno picuino.
Yo tengo pensado sustituir el relé por un interruptor manual DPDT y, además, añadir un segundo interruptor para la opción de calibrar.
Aún no he tenido tiempo de pasarlo a PCB.
-
Si quieres esperar, estoy preparando una versión que utiliza un transistor mosfet en lugar de un Relé.
Aún tengo que hacer pruebas, pero el comienzo es prometedor.
El mosfet añade una pequeña capacidad y la resistencia en conducción es relativamente alta (1'5 ohmios para el BS170 (http://www.fairchildsemi.com/ds/BS/BS170.pdf)) , pero se puede compensar por programa.
La gran ventaja consiste en que el transistor consume mucho menos que el relé, no afecta a la tensión de alimentación (el relé si afecta) y es muy pequeño.
Otro cambio que estoy investigando consiste en utilizar el comparador del propio PIC.
El resultado sería un shield muy barato y pequeño (5 resistencias, 3 condensadores, 1 bobina, 1 interruptor y un transistor) que se puede conectar a cualquier micro (desde el 16F628 hasta el 18F4550 y más allá)
Saludos.
-
Hay muchos mosfets con menor RDS, yo uso el 2804 para aplicaciones que no pueda tener mucha resistencias (que tiene 2mOhm de resistencia).
-
excelente trabajo picuino, muy interesante, una pregunta ¿donde conseguiste el C18? es que quiero empezar a programar tambien en C18 ya que uso CCS y quiero probar otros compiladores. saludos :mrgreen:
-
La ventaja del BS170 está en que es muy fácil de encontrar en tiendas y es barato.
También es un transistor con muy poca capacidad parásita (esto es importante para no alterar la medida)
Acabo de realizar una prueba midiendo una capacidad de 1500pf:
Conectada a través del transistor BS170 mide : 1454pF
Conectada a través de un cable mide : 1460pF
El error introducido por el transistor es del 0.4%, que se puede compensar por software.
El esquema es:
(https://sites.google.com/site/picuino/lc_meter_simple/LC_Meter_Simple.png)
Saludos.
-
excelente trabajo picuino, muy interesante, una pregunta ¿donde conseguiste el C18? es que quiero empezar a programar tambien en C18 ya que uso CCS y quiero probar otros compiladores. saludos :mrgreen:
C18, mplab (es el IDE o entorno de desarrollo) y archivos de ayuda:
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en010014
Saludos.
-
He publicado una placa de expansión muy simple para medir capacidades e inductancias con la placa de desarrollo Picuino:
https://sites.google.com/site/picuino/lc_meter_simple
Foto de la placa:
(https://sites.google.com/site/picuino/_/rsrc/1328204683342/lc_meter_simple/LC_meter_simple_v10.jpg)
Esquema de la placa:
(https://sites.google.com/site/picuino/lc_meter_simple/LC_meter_simple_Schema_v10.png)
Ya funciona el software y estoy depurándolo. En cuanto funcione suficientemente bien lo publico.
Esta placa tiene menos precisión que la versión con LM311 externo, porque los cables de conexión entre las placas añaden ruido.
La ventaja de esta versión es su simplicidad y bajo precio.
El calibrado se realiza añadiendo una capacidad mediante la conmutación de un transistor mosfet. Funciona bastante bien y creo que puede sustituir con ventaja al relé de la versión anterior.
Saludos.
-
A raiz de otro hilo en el que se hablaba de cables de conexión hembras vendidos por e-bay, pedí 80 cables y ya me han llegado.
80pcs Dupont wire cable 1p-1p pin connector 2.54mm 20cm (http://www.ebay.com/itm/80-pcs-Dupont-wire-cable-Line-1p-1p-pin-connector-20cm-2-54mm-/170790968910?pt=LH_DefaultDomain_0&hash=item27c3ef5e4e)
He puesto los cables a mi placa de desarrollo y ha quedado mucho mejor con todo el colorido. Creo que es la primera foto que hago con la mayoría de los módulos de ampliación conectados y no me he podido resistir a compartirlo.
(https://sites.google.com/site/picuino/picuino-18f2550/Picuino_extensions_1024px.jpg)
Módulos conectados:
Placa de display LCD y teclado de 4 pulsadores
Placa de entradas analógicas con 3 potenciómetros y 3 pulsadores
Placa de control de motores de corriente continua con puente en H
Adaptador de TTL a RS232
Saludos.
-
¡Cómo te diviertes!
-
Gracias Nocturno, la verdad es que sí me divierto manejando los módulos y comprándoles cablecillos de colores. :-)
Lo que no me divierte tanto es diseñar las PCB. Me cuesta un gran esfuerzo diseñar cada una, y en cuanto termino de fabricar la PCB le encuentro errores o mejoras. Nunca termino del todo :z)
Saludos.
-
Supongo que tendras una CNC para hacer los agujeros no?? No me imagino tener que hacer tooooooodos esos agujeros xD, ayer tuve que hace una placa con algunos DIP y se me hizo eterna, pero al fin le coji el truco para que me salgan centrados xD. Suelo hacer casi todo SMD por lo mismo por no tener que hacer agujeros.
-
:D los agujeros los hago a mano y es una de las tareas más relajantes de todas.
Después de diseñar la PCB (muchas horas de trabajo), los agujeros de una placa los taladro en 10 minutos.
Doblar las patillas, y soldar los componentes me puede llevar más tiempo (una o dos horas con las pruebas incluidas)
La placa la he diseñado con agujeros porque pensé que sería más fácil de copiar para el aficionado con pocos conocimientos (filosofía open-hardware)
pero últimamente me estoy planteando diseñar la versión 3.0 en formato smd y mandarla a Olimex.
Saludos.
-
Muy buenas placas! Bien terminadas. Igual por lo que dices, no busques trabajo de diseñador, poco eficiente :D
-
A mi diseñarla me gusta, ademas se me hace muy sencillo, el rutado lo hago manual porque el autoroute es una caca xD, soldar lo hago rapido, pero soldar una PCB sin mascara antisoldante es muy guarro, si no fuese por eso puff xD
-
Muy buenas placas! Bien terminadas. Igual por lo que dices, no busques trabajo de diseñador, poco eficiente :D
Tienes razón que con ese ritmo no me puedo dedicar a ello cobrando.
El caso es que tomé varias decisiones de diseño que me complicaron mucho las cosas:
- Placa de simple cara
- Minimizar los puentes (sólo hay 3)
- Utilizar rutas gruesas para que el PCB sea facil de "planchar" y corregir con rotulador (rutas de 0.050'' y como mínimo de 0.030'')
- Tamaño de pads mayor de 0.080'' para que no haya problemas en el taladrado manual
- Tamaño de placa de 100x52mm para que quepan 3 placas en una PCB de tamaño estandar de 100x160mm para poder fabricar en serie sin desperdicios
En una ocasión tuve que rutar todo de nuevo para poder reducir el ancho de placa en 200milesimas de pulgada.
El resultado es bastante apretado:
(http://sites.google.com/site/picuino/picuino-18f2550/Back_layer_nozone_v21_mini.png)
(http://sites.google.com/site/picuino/picuino-18f2550/Component_layer_v21_mini.png)
Si hago las rutas con 0.015'' a doble cara y en placa grande, en media hora he terminado.
Sin llegar a tanto, voy ha hacer la versión 3.0 en SMD porque la versión Through-hole no parece tener mucho éxito y voy a pensar más en mí, como dice MerLiNz para que no me de algo :z) haciendo tanto agujero y doblando patillas.
Saludos.
-
Porque no haces las placas con una insoladora?? Yo he hecho varias placas muy liosas con este metodo y la verdad es que salen perfectas, sin necesidad de correccion alguna. Yo normalmente uso pistas de 10mils y sin problemas. Ademas con la ventaja que puedes meter pistas entre los pines de los ICs con la ventaja que conlleva. El unico problema de las doble cara son que los agujeros los tienes que estañar por ambas caras y hay veces que por lo que va encima no es facil estañar, es algo que hay que pensar bien antes de diseñarlo.
-
Todas las placas las he hecho con insoladora, pero quería que se pudiera hacer con facilidad con métodos más rústicos.
Intentaba que fuese facil de copiar. El caso es que no veo que haya tenido mucho éxito.
Lo que sí me ayudaría sería saber qué cambios hacer para que más gente quiera copiar la placa.
Ahora creo que uno de los cambios interesantes es hacerla en SMD. El aficionado avanzado puede fabricársela el mismo y el que no sepa, que la pida a un fabricante tipo Olimex.
Si tengo más propuestas o críticas, me serviría para mejorar.
Saludos.
-
Como sabes, hay muchas placas de entrenamiento de este tipo, lo que la gente normalmente hace es comprarlas directamente, pero fabricarlas ellos como que no, el que sabe fabricarse su propia placa normalmente es un usuario avanzado y esto quizas se le quede un poco pequeño.
Tambien la mayoria de gente buscan placas de entrenamiento para, usb, ethernet, can, SD, creo que si lo orientaras a esto quizas atraigas mas publico, tambien podrias vender tus placas ya sea solo impresas y componentes aparte (para gente que quiera o le guste soldar), y tambien ensambladas y listas para usar (para los mas vagos y/o gente que no sabe como hacer una PCB).
Sin contar que los pics 16 y 18 estan muy vistos, es decir, das una patada a una piedra y te salen 200 tutoriales, si lo orientases a pic24, dspic, o pic32 pues atraerias a publico que necesita aprender esto. Otra cosa que llama mucho la atencion es RF, si hicieras una placa con el xbee por su facil uso tambien mucho mas gente estaria interesada.
Lo que no entiendo es como diseñas algo para que la gente se copie xD, son muchas horas de trabajo gratuitas, entiendo que lo quieras llevar a open-hardware pero deberias pensar en sacarle algo de tajada, si vendes una placa tipo desarrollo como las que microchip vende por mas de 100 pavos en la mitad o menos, triunfarias como la coca-cola. Los componentes normalmente son baratos, lo que mas trabajo cuesta es el desarrollo.
-
Como sabes, hay muchas placas de entrenamiento de este tipo, lo que la gente normalmente hace es comprarlas directamente, pero fabricarlas ellos como que no, el que sabe fabricarse su propia placa normalmente es un usuario avanzado y esto quizas se le quede un poco pequeño.
El caso es que hace unos meses pensé que un PIC18F2550 era un procesador muy grande :shock:. Se ve que andaba un poco obsoleto.
Lo que haré será terminar la tercera versión con todas las mejoras en SMD para poder mandarla a fabricar.
Tambien la mayoria de gente buscan placas de entrenamiento para, usb, ethernet, can, SD, creo que si lo orientaras a esto quizas atraigas mas publico, tambien podrias vender tus placas ya sea solo impresas y componentes aparte (para gente que quiera o le guste soldar), y tambien ensambladas y listas para usar (para los mas vagos y/o gente que no sabe como hacer una PCB).
Sin contar que los pics 16 y 18 estan muy vistos, es decir, das una patada a una piedra y te salen 200 tutoriales, si lo orientases a pic24, dspic, o pic32 pues atraerias a publico que necesita aprender esto. Otra cosa que llama mucho la atencion es RF, si hicieras una placa con el xbee por su facil uso tambien mucho mas gente estaria interesada.
He comenzado a desarrollar una placa con dsPIC30 y aún estoy puliendo el Bootloader. Ahora creo que la versión mejorada (siempre me salen mejoras para las placas en cuanto las pruebo) debería ser también SMD.
Antes preguntaré en el foro para mejorarla.
Lo que no entiendo es como diseñas algo para que la gente se copie xD, son muchas horas de trabajo gratuitas, entiendo que lo quieras llevar a open-hardware pero deberias pensar en sacarle algo de tajada, si vendes una placa tipo desarrollo como las que microchip vende por mas de 100 pavos en la mitad o menos, triunfarias como la coca-cola. Los componentes normalmente son baratos, lo que mas trabajo cuesta es el desarrollo.
No es que no quiera ganar dinero con esto. Yo me gano vida por otros medios, pero la electrónica me apasiona y hace tiempo que no toco un autómata o un circuito impreso en el trabajo y quería recuperar mi afición. El caso es que me parecía difícil poder vender una placa por muchas razones. A la larga cualquiera podría copiarla y no tengo ni idea de cómo poner una tienda en internet.
La idea de compartir la placa es para conseguir que más gente se una al proyecto y me eche una mano con las partes que a mí me resultan más difíciles. Por ejemplo en los módulos SD, can, ethernet o RF no tengo ni idea y el USB me cuesta bastante. No me veo a mí solo desarrollando aplicaciones para todos a menos que me dedique años a ello.
El caso es que me cuesta mucho esfuerzo y una de las razones de estar en el foro es porque los comentarios (incluso los críticos) me ayudan a motivarme para seguir.
Saludos.
-
el CAN es muy sencillo, en este foro esta el post mas grande de can que existe en internet :D
en RF el XBEE te facilita muchisimo las cosas, funciona por USART creo, y a base de enviarle comandos haces envios o recepciones.
SD se utiliza por SPI creo, en este foro tienes informacion en un post de suky, creo que es sencillo, mas o menos parecido al escribir en una memoria de las que usa microchip
ethernet si es mas complicado, no porque sea lioso, sino porque quizas es mas largo, yo hace años programaba aplicaciones con sockets y trabajaba a la raiz IP, el caso es que todo se basa en paquetes, rellenas su informacion y lo envias, de todas formas seguro que hay librerias mas simples.
-
¿Qué placa utilizas tú para comenzar nuevos desarrollos? ¿o simulas en Proteus y te lanzas directamente a construir la placa final?
Saludos.
-
normalmente lo que hago es un adaptador tqfp100 a DIP y ahora en una protoboard de estas que se van pinchando cosas voy poniendo ahi los componentes. Mientras tanto voy haciendo todo el esquematico y PCB en el altium, segun se me van ocurriendo cosas voy metiendolas hasta que ya tengo una placa decente, entonces la fabrico y sigo en ella. El proteus hace mucho que no lo uso, normalmente lo uso para algunos calculos con transistores, o algunas ideas que se me ocurran saber si funcionan o no y como responden. Pero pic en proteus hace mucho que no lo uso, mas que nada porque llevo trabajando hace tiempo con el dspic33e y no viene en el proteus.
La mayoria de placas las he ido haciendo de esta forma, o asi, o mediante una protoboard de las que se sueldan, pero ahora con el formato SMD esto ya no lo puedo usar y no me queda mas remedio que recurrir a adaptadores.
Lo bueno de este pic (dspic33e) es que puedo elegir los puertos para los perifericos, asi siempre puedo ir cambiandolo para distribuir todos los componentes sin que haya mucho lio de pistas.
Mira, actualmente estoy trabajando en esta:
(http://img404.imageshack.us/img404/5686/sinttulovk.jpg)
A pesar de ser doble cara por debajo actualmente solo van pistas de +5v y +3.3v tambien el MCLR para el ICSP
-
¡Qué nivel! el dsPIC33 es un micro bastante potente.
¿Qué módulos sueles utilizar con frecuencia? tipo LCD, teclados, sensores, etc. que suelen estar en las placas de desarrollo.
Si tuvieses todos esos módulos soldados en placas y pudieras unirlos con facilidad con cables y conectores estandar, sólo necesitarías conectar en protoboard unos pocos componentes en cada nuevo proyecto.
Una vez desarrollado y probado se fabrica la placa definitiva y a otra cosa.
Saludos.
-
Todavía estoy probando el dsPIC30, pero si mejoro la placa creo que sería más interesante pasar a dsPIC33 ¿Tienen grandes diferencias?
Saludos.
-
Pues las diferencias se podrian mirar en la web de microchip, creo que existia un comparador o algo asi, de todas formas la comparacion sera de perifericos, velocidad, y algunas cosas asi, otra cosa buena es que tienen USB y segun creo estos son los unicos que tienen usb de la serie dspic33.
Lo que mas suelo usar por ahora han sido ADC y frecuencias. LCD uso una GLCD en otra placa, digamos que mi idea es comunicar esta placa por CAN a la placa con la GLCD para mostrar datos, cambiar configuraciones... y a su vez poder tambien usar el USB.
El U3 que ves es un ADS7953, este es el que uso para ADC ya que soporta hasta 5V, algo que no me gusta de los pics de 3.3v es eso, que no puedes usar ADC de 5V, aunque se pueda hacer un divisor resistivo, o algo parecido es mas lioso y menos preciso, por eso me he tenido que buscar la vida.
-
Los tres voltios son lo que me echa para atrás a la hora de utilizar algunos micros grandes.
¿No es más fácil usar I2C o SPI para comunicación entre placas?
¿No tienes un sistema modular de este tipo? :
[Conversor ADC]====Bus paralelo con alim====[Placa dsPIC33 con alimentación y USB]=====CAN====[Display GLCD]======CAN=====[Teclado]
Saludos.
-
El SPI e I2C estan destinados para poca distancia, el sistema que estoy diseñando es para un vehiculo y estos tienen muchisimas fuentes de ruido por lo cual el CAN es el protocolo mejor para esto, ademas mi idea es sacar mas placas e ir conectandolas con el CAN, es mas o menos lo que tu tienes fabricado pero yo unicamente las interconecto todas por CAN (2 cables y punto).
Lo de los 3V el unico problema esta en el ADC pero siempre puedes pillarte un conversor que funcione a 5V como el que yo he elegido, son 1MSPS, 12BIT, 16 canales y conectado por SPI, ademas la parte digital la alimentas a 3v y la analogica a 5v, asi la comunicacion por el spi la estas haciendo a 3v y por otro lado tienes un sistema ADC de 5V. Seguro que habras pensado que no podrias usar un sistema que funcione a 5V con uno de 3.3V, pero si se puede, la mayoria de sistemas te toma los 3V como un 1 logico sin tener que llegar a 5V, y luego para la recepcion siempre puedes usar los pines que toleran los 5V (marcados en negro). Por ejemplo, el transceptor de CAN funciona a 5V, segun vi en los ejemplos de desarrollo de microchip lo conectan directamente y funciona bien.
La diferencia entre usar SPI o I2C y CAN es que en el CAN tienes implementado tanto la parte de hardware, como la parte de software (correccion de errores, prioridades, fallos entre nodos...) es decir, tu envias un mensaje de un nodo a otro y te aseguras al 100% que llegara ya que este lo envia hasta que el otro lo reciba sin tener que hacer sistemas CRC ni nada (todo lo trae integrado), la velocidad maxima es 1mbps mas que suficiente, admite hasta 8bytes por mensaje. Y luego su uso no es muy complicado, con este dspic33 puedo usar el DMA para recibir los mensajes que quiera sin mucha complicacion.
-
El problema del can está en los pequeños micros. Por ejemplo si quieres conectar un módulo LCD al can, tienes que utilizar un micro enorme para las necesidades del LCD sólo para que el micro traiga integrado el CAN.
Claro que a los precios que ahora venden los dsPIC, puede que sea una opción
Saludos.
-
no tiene porke, microchip vende pics de 8bits con can, por ejemplo 18f46k80 (tambien hay otras opciones mas pekeñas), este es el que yo tengo controlando el GLCD. Tambien hay otra posibilidad de pillarse un integrado CAN que funciona via SPI (MCP2515), o tambien tienes posibilidad de un expansor CAN, este funciona como un controlador, es decir, tu le mandas un mensaje de que quieres que ponga el PIN x como 1 logico y asi lo hace, o tambien lleva integrado un ADC con varios canales, por ejemplo imaginate monitorizar un sensor que esta a 20m seria perfecto (son la serie MCP250xx)
-
Un PIC18F66K80 sale por 2.21 Euros en RS.
La verdad es que no es muy caro.
Me está costando acostumbrarme a considerar los PIC18 como micros pequeños.
Saludos.
-
He pedido samples de un PIC18F2550 en formato SOIC y un PIC18F14K80 en formato SSOP para hacer pruebas con SMD.
Por ahora sólo he soldado en SMD resistencias con formato 1206 y no he tenido problemas.
Con el SOIC no creo que tenga tampoco problemas. El SSOP me da más reparos. Con el QFN no me atrevo por ahora.
¿Se pueden soldar con estaño normal o hace falta pasta?
Saludos.
-
Se puede con estaño normal y soldador normal, pero que no te falte el flux y la malla para retirar el sobrante.
-
Las 1206 son mu grandes, pillate 0805 xD no son dificiles de soldar, sin embargo como soldando otra cosa se te llene de estaño es un rollo porque no se puede soldar los 2 sitios a la vez xD
el QFN es mucho mas facil de soldar que un TQFP, cierto que yo aun no he soldado ninguno (tengo aqui los ADS7953 en QFN32 para probar) pero segun he visto videos de youtube el mismo integrado se va solo a su lugar, es decir, le das calor y el mismo se alinea, lo unico que vas a necesitar una estacion de aire caliente, he visto gente que los ha soldado poniendole el soldador debajo, pero eran placas a doble cara conectada la parte de abajo con la de arriba con los agujeros plateados.
Yo de flux para SMD uso el jbc, no es tan bueno como el otro flux que tengo, pero no deja ningun residuo, eso si, no aspires el humo porque te vas a hartar de toser xD
-
El QFN es muy fácil pero sólo si tienes máscara de soldadura; en caso contrario es una tortura.
-
He visto en otro hilo que la máscara de soldadura da bastantes problemas.
No tengo tinta que se cure con UV y no se dónde conseguirla. En las tiendas que he preguntado no tienen.
¿Y el estaño? ¿Puedes preestañar las pistas con hilo de estaño y luego calentar el QFN encima?
Edito: añadiendo flux por supuesto.
Saludos.
-
Las 1206 son mu grandes, pillate 0805 xD no son dificiles de soldar, sin embargo como soldando otra cosa se te llene de estaño es un rollo porque no se puede soldar los 2 sitios a la vez xD
Las 1206 permiten pasar una pista por debajo sin problemas y se encuentran con facilidad en tiendas. ¡Tampoco ocupan tanto!
Ten en cuenta que sólo tengo equipo de aficionado: Soldador JBC de 30W, hilo de estaño-plomo y flux.
Saludos.
-
Se puede con estaño normal y soldador normal, pero que no te falte el flux y la malla para retirar el sobrante.
La malla ¿qué es?
¿Puede ser esto?:
Saludos.
-
;-) Exacto
-
No lo conocía, es genial :shock: .
El desoldador de pera que tengo es un verdadero engorro y tan grande que entra como un elefante en una cacharrería en componentes pequeños o apretados.
Voy a comprar la cinta y como funcione bien, cuelgo el desoldador de pera en e-bay.
Saludos.
-
Las 1206 permiten pasar una pista por debajo sin problemas ...
Me respondo a mi mismo: Utiliza doble cara y no necesitarás pasar pistas entre las resistencias SMD.
Saludos.
-
yo tengo ese mismo soldador pero solo lo uso para cosas que requieren mas tª (dip). Para SMD tengo el JBC 14S de 11W con una punta de 0,5mm (B-03D). Si vas a soldar muchos SMD te recomiendo que te lo pilles, una punta tan fina es perfecto para esto, ademas al ser de 11W no pasa mucho calor a los componentes, yo acabo de soldar ahora un dspic33e a una placa tqfp a dip y me ha resultado bastante mas facil que con el otro soldador grande, unicamente le das un poco de estaño en la punta y vas soldando las patitas rapidamente, casi ni hace falta retirar sobrante. Yo para retirar el sobrante no uso malla, uso un cable de cobre normal y corriente con flux y con esto le saco el sobrante facilmente, con la malla es mas sencillo, pero nunca la he llegado a comprar por que nunca me acuerdo xD
El unico problema que tendras es a la hora de desoldar estos componentes, sin estacion de calor es muy muy dificil sacarlo, sobretodo si es un integrado muy grande.
-
Si lo tengo que desoldar es que está estropeado. Puedo cortar patillas.
Creo que también puedo quedarme con el desoldador de pera por si acaso.
Saludos.
-
Estoy diseñando la placa con el PIC18F2550 en formato SOIC y ¡ la placa sale más grande que con el encapsulado PDIP! :huh: :huh:
Ahora entiendo que los de Arduino mantengan el PDIP. Además es más fácil retirarle si se estropea.
No tengo claro si hacer la placa con el PIC18F2550 en SMD o pasar a SMD sólo las resistencias y demás componentes.
Saludos.
-
mas grande?? Normalmente el PIC en SOIC es algo mas pequeño, ya con eso seria mas pequeño no? XD o es por la colocacion de las pistas?
-
El SOIC es la mitad de largo e igual de ancho. El problema viene al conectar el SOIC al conector SIL para tener acceso a los pines.
Quizás es que estoy utilizando pistas muy anchas (25mils)
Edito: Adjunto imagen de los dos encapsulados uno encima del otro con las pistas desde el SOIC hasta los pines de acceso.
Saludos.
-
He tenido una revelación.
A grandes males grandes remedios, puedo poner los conectores en paralelo:
0 0 - - 0 0
- -
0 0 - - 0 0
- -
0 0 - - 0 0
- SOIC -
0 0 - - 0 0
- -
0 0 - - 0 0
- -
0 0 - - 0 0
- -
0 0 - - 0 0
- -
Es un poco engorroso saber cual es el pin que corresponde a cada patilla, pero los conectores se utilizan poco. Sólo valen para poder conectar otro micro (en este caso no es necesario porque ya está soldado), para puentear las resistencias de protección (que no se debería hacer casi nunca) o para medir tensión en la patilla. Esto último si es más frecuente pero no debe haber mucho problema si añado los números de pin sobre la placa.
También voy a pensarme lo de las resistencias 0805 para que me quepan todas bien.
Saludos.
-
Las resistencias 0805 parece que disipan 0.125W. En mi caso necesito que disipen como máximo 0.112W.
¿No es un poco apurado?
Saludos.
-
Para que parte de la placa son?? Lo digo porque segun los calculos son unos 22mA donde les cae a la resistencia los 5V completos
-
Estoy pensando colocar resistencias de 180 ohmios.
En el peor de los casos la resistencia de un pin de salida del PIC alimentado a 5Vdd y con salida = 0 es de 20 ohmios (medidos, no del datasheet)
En total R= 180 + 20 = 200 ohms
Tensión = 5V
Intensidad = 5/200 = 25mA (El máximo que soporta un pin)
Potencia de la resistencia = 0.025^2 · 180 = 0.113 W
Saludos.
-
yo no pondria los 25mA por pin, a pesar de que sea el maximo, tambien esta el maximo total, si pones varios pines al maximo se achicharra el pic, creo que para el 2550 son 200mA, osea 8 puertos a 25mA. Si acaso los clasificaria de la siguiente forma, lowcurrent y highcurrent, los low que den unos 5mA (perfecto para cualquier señal digital: lcd, spi...) y los high que den esos 25mA, tambien puedes añadir varios con transistores para asi tener 200mA por cada pin, por si el usuario quiere activar un rele por ejemplo.
Por cierto, hoy he estado soldando un QFN32 (no confundir con los XBGA) y son superfacil de soldar, unicamente se me tosto un poco el pcb porque me cole de tiempo, pero es mucho mas facil de soldar que un soic.
-
Gracias MerLiNz, en cuanto me lleguen los integrados te cuento.
En alguna ocasión he quemado un pin por conectarlo sin querer a masa o a Vcc, pero es dificil conectar 8 pines a la vez a Vcc por error y que en todos ellos haya una salida a cero por error (en ese caso el micro se quema y a otra cosa) ten en cuenta que la mayoría de las placas ni siquiera traen esa protección.
La corriente de 25mA se consigue con la salida a cero (Ro_low = 20 ohmios)
Con la salida a uno la impedancia de salida del micro es mayor (Ro_high = 60 ohmios)
y la corriente de salida es menor:
Io = 5V / (180 + 60) = 20.8mA
Saludos.
-
Porque no haces las placas con una insoladora?? Yo he hecho varias placas muy liosas con este metodo y la verdad es que salen perfectas, sin necesidad de correccion alguna. Yo normalmente uso pistas de 10mils y sin problemas. Ademas con la ventaja que puedes meter pistas entre los pines de los ICs con la ventaja que conlleva. El unico problema de las doble cara son que los agujeros los tienes que estañar por ambas caras y hay veces que por lo que va encima no es facil estañar, es algo que hay que pensar bien antes de diseñarlo.
Estoy decidido a comenzar a hacer las placas con SMD a doble cara con insoladora.
Este fin de semana he probado un primer paso diseñando una placa con pistas de 20mils y separación de 15mils y no me han dado problemas.
Voy a intentar la siguiente placa con pistas de 15mils y separación de 10mils.
El enrutado se simplifica muchísimo con pistas pequeñas porque caben por cualquier lado.
Los aficionados avanzados podrán montárse las placas ellos mismos y los que no tengan ganas o conocimientos, que la pidan a un fabricante.
Aquí se me ocurre que podría hacer cierto negocio vendiéndolas por unidades como intermediario (los fabricantes las venden de 5 en 5 como mínimo).
En cualquier caso, con las horas que dedico, debería ganar mucho dinero para que merezca la pena. Esto para mí es un hobby y me sale más rentable dedicarme a otras cosas para ganar dinero. La parte positiva de vender la placa es el orgullo de saber que he hecho una placa que funciona bien y se considera valiosa.
Saludos.