Placa de desarrollo USB para PIC16F876A


En esta nota les traeré un proyecto completo que a mi me ha servido para realizar algunos proyectos de forma rápida y sencilla, al igual que para dar cursos de CCS y MCUs.
Se trata de una placa de desarrollo (similar a Arduino) en base a Microchip, en este caso estoy utilizando un 16F876A (porque este micro?, porque tenia muchos, pero sinceramente tendría que actualizarlo al 16F883 o 16F886 que el costo es menor y que poseen mas prestaciones).
La placa al igual que Arduino, posee el microcontrolador, una fuente de alimentación y un puente USB/UART.
El puerto USB se encuentra gobernado por el MCP2200 también de microchip y el mismo posee una salida UART Tx y Rx. 
Para aprovechar este puerto se implementa un Bootloader (programa cargador de arranque que sirve para programar el microcontrolador desde el puerto serie en lugar de los pines dedicados para este uso). 
Al utilizar Bootloader y cargar el programa desde el puerto UART, tenemos la posibilidad de usar el USB tanto como carga de programa como también para un monitor serial (De la misma forma que Arduino). 
La carga del programa se realiza con un programa realizado en Delphi que no es mas que un lanzador del puerto serie virtual y el envió de los datos en hexadecimal (código compilado).
Para que comience la programación debemos presionar el botón Reset de la placa y luego se cargara el programa. 
Esta placa puede ser programada en cualquier lenguaje, ya que solamente necesitamos el .hex para luego cargarlo en la misma. Aunque el microcontrolador requiere una única programación con un programador de microchip para cargarle por única vez el Bootloader en su memoria.

Los fuentes se encuentran disponibles en el siguiente LINK

La placa se alimenta directamente del puerto USB, por lo que no podremos extraer mas de 400mA para el uso de periféricos del mismo. En caso de necesitar mas corriente debemos utilizar una fuente externa y unir las masas.

A continuación dejare el Bootloader para copiarlo desde aquí (el mismo se encuentra a 9600bps), es necesario saber el baudrate ya que cuando descarguemos el driver para el MCP2200 lo debemos configurar a 9600bps.

En este link encontrara el driver para el MCP2200.

  1. :020000040000FA
  2. :0800000000008A150A16882E83
  3. :103D00008A150A16802E8A018A150A16832E00004B
  4. :103D1000031E832E903098008316181598161930BC
  5. :103D2000990083120330FA00113090000C14EC2635
  6. :103D3000EA3A031DAF2EFA01B62EEC26F900E33A5B
  7. :103D40000319B82E7908EA3A0319B62E7908ED3A24
  8. :103D5000031D9D2EE430E7260330FA00EC26900187
  9. :103D600098018316980183128C01832EEB30E52E87
  10. :103D7000EC26F600EC26F500EC26F100FB00EC2624
  11. :103D8000F300F20121308312031376020319D12EBE
  12. :103D900075080339FC00FD000310FC0D20307C0782
  13. :103DA000D22E20308400EC268000F207840AFB0B20
  14. :103DB000D32E72087306E830031DE52EE730E726A0
  15. :103DC000FE260038E4300319E530E7269D2E640016
  16. :103DD0000C1EE72E9900080064007A080319FA2ED9
  17. :103DE0000C1CFA2E1010FA0BF62E00340C103C307E
  18. :103DF0008F0010148C1EEC2E1A0808002130760259
  19. :103E00000319502F831603178C1783120313750899
  20. :103E1000FC3903178D000313760803178F00203039
  21. :103E2000840003137D080319282F831603170C142D
  22. :103E30000000000083120E088000840A0C08800035
  23. :103E4000840A8D0A0313FD03F503F10AF10A112F09
  24. :103E50007108FC00203E84000310FC0C7608031758
  25. :103E60008F000313750803178D0003137C080317D5
  26. :103E70008D0703198F0A03170D0803390319502FF3
  27. :103E800083160C140000000083120E088000840AC0
  28. :103E90000C088000840A8D0A0313F10AF10A3B2FF3
  29. :103EA0007508F7007608F800FB010230F40071088D
  30. :103EB0007B02031801347B08203E84002130780205
  31. :103EC0000317831603196E2F8C1783011E30780297
  32. :103ED0008030031977020318B62F702F8C138301DB
  33. :103EE000770803178D0003137808031D852F04300E
  34. :103EF00077020318852F031783168C1F822F8312D6
  35. :103F000084308D0783011E30862F780803178F00B9
  36. :103F100000088E00840A00088C0083160C155530AA
  37. :103F20008D00AA308D008C140000000083018316E0
  38. :103F300003178C1BBE2F8312031364000D1E9D2FCD
  39. :103F40000D12831603170C110C14000000008312CD
  40. :103F5000840300080E06031DB22F840A00080C0615
  41. :103F60000319B62F8301F40B572F00348312031368
  42. :103F70000230FB07F70A0319F80A552F83120313BF
  43. :103F80000D12831603170C11831203170D08033942
  44. :103F9000033C031DB62F03308D028312031304303C
  45. :103FA000FC00073084020000831603170C14000085
  46. :103FB000000000000000000000000008831203174A
  47. :103FC0000E06031DE82F840A00080C060319EF2FC4
  48. :103FD00083120313FC30F7050630FB02B22F831265
  49. :103FE00003178D0A840A83120313FC0BD32FB62FF9
  50. :084000000200010000000000B5
  51. :02400E00313F40
  52. :00000001FF

Al momento de soldar la placa, debemos tener en cuenta que el MCP2200 viene en encapsulado SOIC y debe soldarse del lado de abajo del mismo (Bottom), se ha realizado asi para usar un PCB de un simple layer.
Podremos ver esto en la vista 3D Top y Bottom.





Algunas fotos de la placa funcionando






6 comentarios:

  1. Respuestas
    1. Hola Ezequiel, como estas?, por el momento te comento que no estoy manufacturando el pcb porque estoy trabajando en una versión 2 que es arduino shield compatible, para poder usar los mismos shields de arduino, ni bien la tenga subo el post y realizare los pcb en una empresa para su comercialización. Estoy estudiando también el tema de migrar el sistema a Pinguino (Es el arduino de Microchip basado en 18F con USB HID, ahorrando el USB Bridge de esta placa), pero eso sera otra version, por ahora estoy desarrollando una que es arduino shield compatible. Es el mismo hard que esta ya que la vengo usando hace un año y anda muy bien solo que con el pinout de los header compatibles. Si te interesa eso te mantengo al tanto! De todos modos lo voy a promocionar (a modo kit) en Facebook y acá mismo. Saludos!

      Borrar
    2. Hola Ezequiel, ya tengo andando el Bootloader para el PIC16F887/886 voy a desarrollar dos placas de desarrollo como esta para el 887 y 886. Ni bien las tenga te aviso. Todas van con Bootloader oficial de Microchip

      Borrar
  2. Excelente, gracias... si vendes el PCB avisame, o el bootloader de donde se puede bajar.. (es libre) gracias

    ResponderBorrar
    Respuestas
    1. Hola, te dejo un link de preview del proyecto, aun no lo tengo 100% disponible al publico, porque esta en fase de testing y no tengo la documentación/tutoriales para acompañar el proyecto (estoy trabajando en eso), pero están listos los Bootloaders, el programa para cargar el micro y el diagrama. Si queres échale un vistaso (actualmente esta andando así pero quiero testearlo un poco mas).
      http://electgplboard.blogspot.com.ar/

      Saludos.

      Borrar
    2. Los PCB, estoy haciendo dos, uno para el 883/886 (que calculo que va a ser para el 886 porque cuesta lo mismo que el 883 y tiene mejoras) y otra para el 887.
      Estoy evaluando del 887 usarlo en encapsulado TQFP para que pueda entrar en el mismo tamaño de placa que el otro (vendría a ser como el modelo MEGA de arduino). A menos que sea una placa diferente que no tenga mucho que ver con la compatibilidad de los shields, y ahí se puede usar el DIP40.
      Como veras, aun esta en parte de desarrollo eso, y a discución. Voy a abrir en el grupo un tema sobre esto para charlarlo mejor. De todas maneras, el sistema ya lo he probado con el 887 (en protoboard) y funciona muy bien.

      Saludos

      Borrar