Hardware utilities for projects using Microchip PIC controllers
Hulpschakelingen voor het ontwikkelen en debuggen van kode voor Microchip PIC processoren.
PIC-microprocessors deden hun intrede bij de bouw van mijn muzikale robots zowat sedert het prille begin van de 21e eeuw. Waren dat in het eerste decennium vooral 8-bit types, dan kwamen daar zowat sedert 2010 ook 16-bit types bovenop. Het ontwikkelen van kode ('firmware') voor de besturing van deze robots is altijd een tijdrovend werk waar telkens weer een schier onoverzienbaar aantal tests mee gemoeid is. Het uitvoeren van die tests op de robots zelf is geen goed idee. Niet alleen omdat het kostenplaatje erg hoog kan oplopen wanneer iets in de firmware misloopt -solenoids die in rook opgaan, voedingen die naar de eeuwige jachtvelden verhuizen, slagvelden bezaaid met mosfets om nog maar te zwijgen van de gesneuvelde microprocessorchips zelf...- maar ook omdat het schrijven en ontwikkelen van kode nu eenmaal niet optimaal en zeker niet komfortabel kan gebeuren in de werkplaats waar de robots gebouwd en ontwikkeld worden. Die machines zijn bovendien ook veel te zwaar en te groot om ze naar het kantoor of het elektronisch labo te verplaatsen.
Vandaar de nood aan losse testschakelingen waarmee de werking van de kode kan worden geverifieerd en getest lang voor ze op de robots wordt losgelaten. Voor elk type microprocessor waarvoor we kode ontwikkelden, bouwden we dan ook testschakelingen op, voorzien van LED's op zowat alle uitgangen. Ook voorzagen we in toegankelijke kontakten zodat elke pin van de processor op de oscilloskoop kan worden bekeken. Onze Tektronix TDS2024C oscilloskoop wist zich dan ook een vaste plaats te verroveren op ons buroblad. Een header voor de zespolige ICD programmer - wij gebruiken steeds de Pickit 3 programmer van Microchip- is vanzelfsprekend ook voorzien. Ook voor een kleine geschikte voeding vonden we wat plaats en tenslotte, ook nog MIDI in- en uitgangen met DIN konnektors. De ingangen laten toe de te implementeren kommando's naar de processor te sturen en de uitgangen zijn vooral bedoeld voor meer komplekse debugging. De PIC kan alle denkbare meldingen via de mdi uitgang naar de PC terugsturen, waar ze kunnen worden bekeken met eender welk low-level MIDI terminal programma (MidiHack bvb.) Naast de DIN konnektors voorzagen we ook twee driepolige Weidmueller headers waarop zowel het midi signaal als de voedingsspanning en massa kunnen aangesloten worden. Dit verzekert uiteraard kompatibiliteit met de konnektors en de aansluitschemas die we in zowat al onze robots toepasten.
Hier geven we de schakelschemas voor de diverse boards evenals een PCB ontwerp (op 200%) en een foto van de opgebouwde schakelingen. De afmetingen van elk bordje zijn telkens 100 mm x 80 mm, overeenkomstig een halve eurocard printplaat.
As soon as we started using Microchip PIC-microcontrollers in our musical robots, we badly needed tools for code develpment and testing. We say badly, because testing firmware on the actual robot it is intended to be used for, more often than not leads to burned out solenoids, dying mosfets, exploding microprocessors.... Hence the need for test-board equiped with LED's on all useable outputs and easy ways to monitor each pin on the oscilloscope, an permanently installed item on our desktop. All boards have a power supply (5V -2A) of their own and are equiped with standard DIN midi-connectors for input and output. The midi-output in particular comes in very handy to debug and monitor certain variables whilst the firmware is running. The 3-pole Weidmueller conectors guarantee compatibility with he connectors used on almost all of our robots.
The designs we give underneath are far from original but nevertheless extremely handy. Without these circuit boards we most certainly would never have been able to finish functional firmware for by now 76 musical robots, some of then using up to 20 microprocessors.
All PCB's are 100 mm x 80 mm (half eurocard) and the films shown here are at 200% of real size and thus have to be reduced for production.
The PIC programmer we use is Microchip's Pickit3. Here is the manual.
1. For 8-bit types such as 18F2525 I/SP (28 pins through hole)
Circuit:
PCB:
Single sided PCB.
Picture:
2. For 8-bit types such as 18F4xxx (40 pins through hole, 5 V powered)
Circuit: PCB:
Single sided PCB.
3. For 16-bit types such as 24FxxxMC202 (28 pins through hole, 3V3 types)
Single sided PCB.
Circuit:
Board:
Wie een inzicht wil krijgen in de kode die we voor inmiddels meer dan tweehonderd chips ontwikkelden, kan steeds ons PIC-programmeerdagboek raadplegen. Het omvat links naar de source kode voor alle PIC processoren in de robots en andere randapparatuur die we ooit ontwikkelden. De compiler die we tegenwoordig gebruiken is de schitterende Proton+ Basic compiler. Voor de Pickit3 programmer gebruiker we de programmeeromgeving van MPLAB (Microchip).
Vroegere ontwerpen
De hierboven beschreven ontwikkelbordjes zijn de nieuwste versie van eerdere schakelingen. Zo hadden we voor de 8-bit types lange tijd een bordje opgebouwd op gaatjesprint: Dit bord had echter geen eigen voeding en evenmin standaard DIN konnektors, waardoor het gebruik ervan toch steeds met een kleine wirwar van draden gepaard ging. De ZIF-sockets zowel voor 28-polige als voor 40-polige chips waren wel een pluspunt. Ook voor de 16 bit types hadden we een bordje ontworpen, maar dit beschikte niet over een ZIF-socket, waardoor na verloop van tijd wel menige PIC-controller een poot is kwijtgespeeld. Hier is de overigens weinig originele schakeling en het printplaatontwerp: Het opgebouwde printje zag er zo uit:
Godfried-Willem Raes
Ghent, december 26th 2020
naar index Godfried-Willem Raes