Carte d'extension maison pour PICÉE
Développer
Ma première carte d'extension, comportant 4 afficheurs 7 segments pilotés par un ULN2803A sur le PortB, les anodes quand à elles l'étant par le PortA (RA0...RA3).
J'y ai rajouté un octuple dip switch pour positionner à l'état haut chacun des 8 bits du PortB, et un quadruple dip switch, qui me permet lui de mettre en/hors service les commande d'anodes, bien pratique lors du développement, surtout lorsqu'il y a des conflits d'entrées/sorties.... Cà s'est déjà vu...
Bon, en même temps, c'est une carte proto, hein !!!
Mais bon, çà prend du temps à câbler, mine de rien...
ICD2 Programmer & Debugger
Je reprends ici le montage conçu et fabriqué par Chapslab.com pour lequel j'ai légèrement redessiné le PCB afin de pouvoir l'intégrer dans un boitier HAMMOND réf. 1591 , plus facile à se procurer que celui proposé à l'origine. Cela nécessite cependant quelques découpes dans les angles de la carte afin de pouvoir l'intégrer dans son coffret.
J'ai écrit cet article en accord avec son auteur, que je remercie vivement pour sa gentillesse ainsi que sa disponibilité.
Introduction
Schéma de la carte de développement ProtoPic2840
Cette carte s'inscrit en prolongement de la carte PICÉE.
On peut distinguer les différents sous-ensemble qui la composent, tous encadrés. Le transistor et la résistance cerclés de rouge sont une modification que j'ai apportée après avoir réalisé la carte, et sont reliés à la ligne RA4. En effet, ceci est nécessaire, étant donné que le port du processeur est à collecteur ouvert. Le schéma en lui-même n'appelle pas d'autre commentaire, ce n'est que de la circuiterie...
compte tenu du prix de revient (n'étant pas équipé pour cela, j'ai fait réaliser la gravure de la carte chez UTIL'POCKET pour un peu moins de 30€ port compris...), je n'ai pu m'offrir le luxe de trous métallisés, encore moins de sérigraphie. Ceci implique la présence de très nombreux VIA (liaison permettant la connexion d'une face à l'autre...). D'autre part, les pistes sont fines (20mil = 0,508mm), sauf pour les alimentations VDD & GND qui font 40mil (1,016mm). Les pastilles quant à elles font 60mil (1,524mm) de diamètre, perçage à 0,8-1mm selon les cas. Ils n'y a donc guère de marge d'erreur ! Un bon fer à souder équipé d'une panne très fine est chaudement recommandé. Entrainez-vous avant, d'autant que certaines pins des supports tulipe servent également de VIA...
Il est à noter que j'ai de nouveau routé la carte rien que pour vous, afin d'y faire figurer la modification concernant le transistor et sa résistance sur la ligne RA4 (T1 & R38). Vous n'aurez ainsi pas besoin de les monter comme je l'ai fait, côté soudures (bottom side)...
Une fois terminée, cette nouvelle carte vous procurera sûrement pas mal de satisfaction, et cela à un coût tout à fait raisonnable. Elle ne peut pas bien sûr rivaliser avec la HP488 ou encore la EasyPic7, mais le public visé n'est pas non plus le même. Ces 2 cartes sont surtout destinées au monde de l'éducation. A partir de la ProtoPic2840, il n'y a guère de limitations, si ce n'est peut-être l'IDC2 (programmateur/debugger pour les microcontroleurs PIC de chez Microchip) ?
Carte de développement ProtoPic2840
ou encore l'EasyPIC7 de mikroElektronika, extrêmement complète (trop peut-être ?)... par exemple... il en existe bien d'autres...
La carte dont j'avais besoin, je l'ai conçue moi-même. Elle a les dimensions du format "Europe" (100x160mm), et peut recevoir l'ensemble des familles 8-bit de Microchip en 28/40 pins, et j'en ai dénombré quelques 127 ! de quoi déjà pour bien commencer à jouer... J'ai volontairement délaissé le support 18 pins car il existe déjà sur PICÉE. Inutile donc de le placer à nouveau !
Hormis donc ces 2 supports 28/40 pins, j'ai doublé celui de 40 grâce à des barrettes tulipes de 20 pins, permettant d'envisager une évolution future. Les 5 ports alimentent chacun une batterie de Leds de couleur différente (rouge pour les MSB, jaune pour les LSB), et communiquent avec le monde extérieur grâce à des connecteurs HE10 mâles (2x5), permettant d'y connecter par exemple des modules (fort nombreux...) compatibles avec la carte EasyPIC7. J'ai en effet respecté le brochage de leur connectique. Les Leds de chaque ports peuvent être à tout moment isolées grâce à des cavaliers de codage, au nombre de 5. En outre, une isolation totale du port A est possible à l'aide d'un commutateur Dip-switch, indispensable notamment lorsque l'on travaille en mode analogique sur ces voies. L'impédance générée par les Leds et leurs résistances de polarisation fausseraient les mesures. La platine reçoit bien évidemment un bouton poussoir de Reset, ainsi qu'un support de quartz et un potentiomètre ajustable permettant le réglage de la fréquence de l'oscillateur RC (11Hz à 1KHz → valeurs relevées à l'oscilloscope ). Le tout étant paramètrable grâce à des cavaliers de codage. Ajoutons à cela une Led (verte) permettant de visualiser la présence du +5V, et une autre (rouge) matérialisant le mode de programmation via la ligne MCLR (mode ICSP).
Une petite chose qui a son importance... cette carte ne dispose pas d'alimentation embarquée et pour cause... elle est destinée à être enfichée grâce à un connecteur DIN41612 à 32 contacts dans celui de la carte de développement PICÉE pour laquelle j'ai déjà écrit un petit article. C'est un choix qui m'est personnel, c'est sûr, les raisons en étant l'économie de composants, et de place sur la carte proto. Et comme de plus je n'utilise pas le 16F84A en même temps que le 16F877A, pourquoi doubler des circuits qui peuvent resservir ? c'est cela aussi, l'évolutivité. Par contre, je l'ai un peu modifiée car, d'origine, son afficheur LCD était piloté en 8-bit (sur le port B donc...), et les lignes de commandes RS et E étaient tirées du port A. J'ai donc effectué une petite modification sur la carte PICÉE, consistant à ramener les lignes de commande sur le port B, les data circulant dorénavant sur 4-bit. Et me voici pour trois fois rien avec une carte compatible E-Blocks ! L'ensemble est alimenté par un bloc secteur à découpage de 12V/1,2A PSS1212, et la prise DB9 reliée à mon PC au travers d'une interface PCMCIA/RS232 permet la programmation ICSP (In-Circuit Serial Programming) du processeur.
Si toutefois vous désiriez la réaliser sans pour autant déjà posséder PICÉE, cela est possible car, puisque communicante, cette carte peut bien sûr recevoir une extension RS232 sur son port C, et après avoir programmé un bootloader dans votre PIC , il ne vous manquera plus qu'une alimentation de +5V pour la faire fonctionner. Vous voyez que son champ d'utilisation est assez large.
La nappe souple que vous pouvez voir, c'est un petit accessoire bien pratique qui permet de raccorder un port à une plaque de développement sans soudure (breadboard), sur laquelle j'ai câblé un capteur de température DS1821 de chez DALLAS. Une petite merveille !
Le seul semi-conducteur présent est le micro-contrôleur (PIC16F877A), pas de quoi s'affoler, donc...
Pour sélectionner le mode 4-bit de l'afficheur LCD, rien de plus simple... j'ai utilisé des barrettes sécables qui réhaussent judicieusement celle existante sur la platine PICÉE. Dès lors, les bits D0...D4 ne sont plus utilisés. Pas la peine de faire plus compliqué !
Voilà , maintenant, il ne reste plus qu'à la programmer...
Accéder aux schéma & typons (Ech 1:00)
Schéma de la carte de développement PICÉE modifiée
Maquette de développement PICÉE (Elektor)
Expérimenter
J'ai mis longtemps à me décider, mais c'est cette carte à base de PIC16F84 de l'écurie de Microchip que j'ai choisie. Elle dispose de tout ce qu'il faut pour commencer à jouer, dont un afficheur LCD (2x16 caractères rétro-éclairé), d'un superbe connecteur 32 pins pour communiquer....., de quelques switch et Leds de visualisation des bits de chacun des 2 Ports (Port A sur 5-bits, Port B sur 8-bits). Grâce à son convertisseur DC/DC embarqué qui fabrique le +13V indispensable pour programmer, cette carte est très confortable d'utilisation.
Ce montage a été développé à l'école Ludwig Geissler de Hanau (RFA) en veillant plus particulièrement aux aspects « didactique » et « méthodique ». cette mono-carte est utilisée depuis plusieurs années déjà , avec un succès qui ne s'est jamais démenti dans différentes classes et cours techniques consacrés aux développements à base de microcontrôleurs. Pour un investissement de l'ordre de 100€ (circuit imprimé 'Elektor' compris en octobre 2012) cette mono-carte constitue, pour le radio-amateur et/ou l'électronicien engagé, une excellente plate-forme pour donner forme à ses propres idées et réaliser ses propres développements.
Schéma
Principe de fonctionnement
Le montage repose sur un microcontrôleur 8-bits PIC16F84 de l'écurie Microchip pouvant fonctionner avec une fréquence d'horloge de 20MHz maximum. Il intègre une interface sérielle disponible sur le connecteur K2, au travers d'un tampon de protection constitué par IC4. Pour générer la tension de programmation de +13V, on fait appel au convertiseur DC-DC IC2 dont la mise en/hors fonction est commandée par le switch S1. Lorsqu'il est fermé, la tension VPP est disponible en broche 2 du TL497. En outre, il permet grâce à un état bas de basculer le tampon IC4 afin d'assurer la communication série avec un PC. Lorsque S1 est ouvert, le connecteur K2 se trouve isolé du reste du circuit.
Un état bas sur la broche 3 de IC4.A permet de bloquer T2 via T1, et ainsi la tension VPP devient disponible sur la broche 4 de IC3. La LED D21 sert à indiquer que la carte se trouve, lorsqu'elle est allumée, en mode de programmation...
Les 2 signaux de programmation sériels DATA et CLOCK arrivent alors, via les étages de commande IC4.C et IC4.D, aux entrées RB6 et RB7 du contrôleur. L'étage de commande IC4.B fournit à l'interface les données lors de la lecture du contrôleur. L'étage IC4.A sert au pilotage, selon le cas, de la tension continue de programmation ou de la réinitialisation du contrôleur (reset).
Les LED D8 à D20 visualisent l'état logique de chacune des lignes des ports RA et RB du microcontrôleur.
Les boutons-poussoirs S5 à S7 constituent une sorte de mini-clavier. Une action sur les boutons-poussoirs S6 et S7 se traduit par l'application d'un niveau haut (un « 1 ») sur les lignes de port RA0 et RA1 respectivement. Le bouton-poussoir S7 remplit la même fonction pour les 2 lignes à la fois, en raison de la présence d'une fonction de « porte OU câblée » (wired OR port) que constituent la paire de diodes D3 et D4. Le décodage des actions sur ces touches est l'affaire du logiciel.
La visualisation de modes de fonctionnement se fera par le biais d'un affichage LCD alphanumérique à 2 lignes de 16 caractères (MOD1). Ce module fait appel à un contrôleur HD44780 de chez Hitachi.
Le pilotage de l'affichage se fait par le biais des lignes de validation E (Enable) et de sélection de registre RS (Register Selection) qui attaquent les lignes de port RA2 et RA3. L'entrée de lecture/écriture RW (Read/Write) du module est forcée en permanence à la masse (GND), vu que l'on n'a besoin que très exceptionnellement du mode de lecture (Read).
Toutes les lignes du contrôleur ainsi que la tension d'alimentation disponible au niveau du jack d'alimentation sont reportées vers une embase à 32 contacts du type DIN41612. Ceci permet une connexion aisée de montages personnels réalisés sur une platine d'expérimentation à pastilles dotée d'un connecteur 32 broches mâle adéquat à notre mono-carte PICÉE.
L'alimentation de la mono-carte se fait par le biais d'un adaptateur secteur externe dont la sortie vient s'enficher dans le jack d'alimentation K1. La plage des tensions admissibles fournies par l'adaptateur va de 7 à 12 V. Le régulateur de tension intégré IC1 régule à +5 V la tension d'entrée. La LED D22 signale la présence de la tension d'alimentation.
Adaptation de la carte pour E-Blocks
J'ai également procédé à la modification de ma carte pour l'adapter au système E-blocks, et pour ce faire, j'ai ajouté 2 cavaliers (S11 et S12) qui permettent de commuter du système d'origine au système compatible E-Blocks. En effet, sur le schéma d'origine, la commande de l'afficheur LCD se fait en mode 8-bit, et utilise les 2 Ports A et B du micro-contrôleur :
- RA2 : E
- RA3 : RS
- RB0..RB7 : D0..D7
La correction effectuée avec les 2 cavaliers supplémentaires ainsi que quelques coupures et straps sur le circuit imprimé permettent de libérer le Port A, et de commander l'afficheur LCD en mode 4-bit :
- RB2 : E
- RB3 : RS
- RB4..RB7 : D4..D7
Sur le schéma apparaît aussi une seconde modification sur la partie Oscillateur RC, il s'agit de la valeur du condensateur C7 (100nF) que j'ai passé à 22pF de façon à pouvoir l'utiliser dans la plage de fréquence suivante : 1,6MHZ<Fosc<5MHz, assez pratique pour débugguer...
Schéma modifié pour l'adaptation E-Blocks
[Edit du 3 août 2015] :
Avec l'avénement des nouvelles machines dépourvues d'interfaces tant sérielle RS232 que PCMCIA, il ne m'était plus possible de programmer les PIC's et j'ai donc effectué une autre modification sur ma carte, l'adjonction d'un connecteur ICSP. Ceci me permet de l'utiliser à nouveau avec l'aide de mon Programmateur/Debuggueur ICD2.
Schéma modifié pour l'adaptation d'une connexion ICSP
Logiciel de programmation
Il faut disposer, pour le développement de programmes en assembleur, d'outils de programmation additionnels, comme MPLAB sous Windows, ou encore Piklab sous Linux. Vous pouvez télécharger Piklab directement sur le site du développeur , ou encore si vous êtes sous Ubuntu l'installer à l'aide de Synaptics par exemple.
Pour programmer vos applications dans le PIC16F84, ICPROG.EXE permet lui aussi de travailler confortablement. Lors de l'installation du matériel, la mono-carte PICÉE s'identifie comme programmateur JDM . Sous Linux et en ligne de commande, il existe PicProg ou encore si vous êtes sous Ubuntu l'installer à l'aide de Synaptics par exemple.
Visitez le site du développeur pour connaître les commandes à utiliser.
Bibliographie
L'article consacré par Elektor dans sa revue n° 284 en février 2002 :
Mono-carte à PIC16F84
Lien de téléchargement de la revue complète :
https://www.elektor.fr/pdf-download-fr-02-2002
Lien pour commander le circuit imprimé :
https://www.elektor.fr/picee-development-system