Articles tagués “pic

Ma première carte électronique !

J’ai profité du weekend prolongé du 11 Novembre pour enfin terminer ma première carte électronique ! Je veux dire ma carte à moi, de A à Z, du prototypage à la soudure finale en passant par le routage. C’est un peu étonnant pour un ingénieur en électronique (et informatique industrielle) de formation mais je n’avais encore jamais suivi la chaîne entière. J’avais fait plein de schémas de carte lors de mes études, fabriqué puis soudé des composants sur des PCB que je n’avais pas conçus pour mes loisirs mais je n’avais jamais fait moi-même le routage d’une carte. Ici, j’ai tout fait. J’ai reçu le PCB nu fin octobre et j’ai profité de ce long weekend pour souder mes composants et faire une version beta du software qui va dessus. Quel plaisir quand après une après-midi, tout fonctionnait ! Il faut dire que ce projet traîne depuis un moment. J’avais commencé la conception et le prototypage du montage en juillet ou août 2012, j’avais ensuite appris à me servir de Kicad pour faire le schéma électronique correspondant et enfin, en septembre 2012, j’avais fait le routage de la carte. J’avais avancé lentement, à coup de quelques soirées par ci par là, c’était bien. Et là ça a été le drame. J’ai eu 2 mois de vacances, un nouveau travail très prenant et j’ai rangé mon projet dans un tiroir. Je ne l’ai repris qu’en août 2013… Et vraiment de manière très occasionnel… Pas facile de se replonger dedans un an plus tard. J’ai réappris à me servir de Kicad et j’ai largement modifié le routage de la carte pour en réduire la surface. Ça aura été long mais très intéressant et je recommande à tout bricoleur en électronique de faire un jour le chemin complet du schéma papier à la carte finale 🙂

La carte est relativement simple. Elle est centrée sur un microcontrôleur PIC18 qui contrôle 3 LED ainsi que 3 afficheurs 7 segments et possède 3 entrées via des boutons poussoirs. Elle est alimentée via un régulateur de tension 5V. Je ferai(s ?) quelques articles sur le sujet pour parler des différentes étapes de la fabrication de cette carte : prototypage du montage, schéma électronique, association des empreintes, routage du PCB, fabrication de celui-ci, soudage des composants et software « final ». On parlera de Kicad, de PIC, d’électronique, de C18 et MPLAB (mes amis…), de github. Pour faire les choses dans le désordre, je vais partir de la fin : le soudage des composants sur le PCB nu et le test de la carte. En gros, l’étape où tu sais si ton travail va être récompensé ou s’il faudra se remettre au travailler.

Lorsque j’ai eu terminé le routage de ma carte (début octobre), j’a choisi de faire fabriquer mon PCB sur le site Etronics de Dan. Ce site m’avait été recommandé par un ancien collègue de Saunier Duval et c’était un bon conseil. Le service a été très bon, avec un échange de mail très cordial, un envoi express et un PCB nickel et bien emballé. Vous pouvez cliquer sur les photos ci-dessous pour les voir en grand. Pour commencer, le PCB nu :

PCB_1

J’ai sorti mon fer à souder et mes composants et j’ai attaqué l’assemblage final au son du dernier album de Red Fang :

PCB_poste_travail

PCB_2

PCB_bazar

PCB_done

Samedi soir, après une après-midi à respirer les douces vapeurs de l’étain en fusion, tout fonctionnaitJ’ai croisé les doigts à chaque étape car si quelque chose ne fonctionnait pas, il fallait savoir si c’était un problème de soudure ou de composants défaillant, de PCB mal conçu ou de schéma mal recopié depuis le prototype (qui a priori marchait bien). J’ai donc soudé et testé bloc par bloc :

  • l’alimentation et vérifier au voltmètre que le régulateur donnait bien 5V en sorti.
  • le PIC et le connecteur ISP et vérifier que mon programmateur PICkit3 arrivait bien à se connecter.
  • une LED et l’allumer
  • les afficheurs 7 segments et afficher le même digit simultanément
  • les boutons et valider le déclenchement des external interrupts

J’ai pour cela réutilisé des bouts de codes écrits lors du prototypage et aussi les embryons de bibliothèques écrits cet été.  Le dimanche a été consacré à faire marcher ces embryons de bibliothèques, une grande partie ayant été écrit à l’aveugle, sans testé sur hardware. Il a notamment été question de faire correctement fonctionner le multiplexage des afficheurs en utilisant le TIMER0 et son interruption pour passer d’un afficheur à l’autre. En fin de journée, j’avais une version fonctionnelle mais au rendu un peu moche. Encore un peu de code et j’en aurais terminé !


Le compilateur C18 et le mélange déclarations / code

Dans un précédent article, je parlais des message qu’émettait gcc lorsqu’on mélangeait déclarations et code. Quand ce n’est pas bon, il est gentil et met un message d’erreur clair, limpide, explicite. Certains compilateurs ne sont pas comme ça. Je viens de l’expérimenté avec cette crevure de C18, le compilateur de Microchip pour PIC18.

Voici un code source qui ne compile pas :

void SEVSEG_set_value(SEVEN_SEG_t *ssd, unsigned char new_value)
{
	ssd->value = new_value;
	unsigned char translated_value = translate(new_value);
	IOPORT_write(ssd->value_port, translated_value);
}

Et qui émet une erreur intéressante :

E:\...\seven_seg.c:89:Error: syntax error

Gné ? Interchangeons deux lignes…

void SEVSEG_set_value(SEVEN_SEG_t *ssd, unsigned char new_value)
{
	unsigned char translated_value = translate(new_value);
	ssd->value = new_value;
	IOPORT_write(ssd->value_port, translated_value);
}

Oh dis donc ! Plus d’erreur !

Je vais étriper ce compilateur…


Utiliser le Pickit3 dans une machine virtuelle depuis Mac OS X

Quoi de plus classique que d’utiliser des micro-contrôleurs PIC de Microchip quand on bricole une petite carte électronique ? Et quoi de plus normal que de choisir le programmateur Pickit3 puisqu’il n’est pas cher et supporte de très nombreuses références de la marque ?

pickit3

Je possède un Pickit3 et je l’utilise avec MPLAB 8 qui n’est disponible que sous Windows. Je ressort donc périodiquement mon PC portable du placard pour coder et programmer mes puces. Mais, cette solution n’est pas pleinement satisfaisante. Je possède un iMac avec un grand écran et tout le confort moderne, pourquoi m’embêter à ressortir un ancien PC portable avec un petit écran ? Il y avait bien la solution MPLAB X mais il y aurait fallu reconfigurer mes projets existants et j’ai eu d’assez mauvais retours sur cet IDE, notamment au niveau du débogueur. Il me fallait trouver une solution efficace.

J’ai récemment acquis un oscilloscope USB et j’ai spontanément tenté de le faire fonctionner dans une machine virtuelle  (VM, virtual machine) avec comme invité Windows 7 et hôte Mac OS X Lion, grâce à VirtualBox. Ça a été un jeu d’enfant de le brancher à l’iMac, de le passer à ma VM et de l’utiliser dans le Windows 7 invité.

Captain Obvious m’a alors mis une tape derrière la tête : pourquoi n’ai-je jamais eu l’idée de faire la même chose avec mon programmateur de PIC ?!

Passer le Pickit3 à la VM a été un poil plus compliqué qu’avec l’oscilloscope. En effet, un périphérique ne doit pas être utilisé par le système hôte pour pouvoir être passé au système invité. Hors, si Mac OS X laissait l’oscilloscope tranquille, il prenait la main sur le Pickit3 (sans doute à cause des drivers des différents programmateurs installés avec MPLAB X). Je donne ci-dessous la procédure reconstituée après quelques tentatives :

  1. Brancher le Pickit3.
  2. Lancer VirtualBox.
  3. Aller dans la configuration de la VM (il faut peut-être qu’elle soit éteinte).
  4. Cliquer sur l’icône « Ports » puis aller dans « USB ».
    Je ne sais pas si cela est nécessaire mais j’ai activé le contrôleur USB 2.0 EHCI. VirtualBox n’étant pas à jour, j’ai installé l’extension pack comme il me l’a alors demandé. Les guest additions mis à jour devront être installées au redémarrage de la VM.
  5. Choisir « Ajouter un filtre depuis un périphérique » (icône USB avec un + vert).
  6. Choisir le Pickit3.
  7. Quitter la configuration et lancer la VM.
  8. Une fois Windows démarré, débrancher puis rebrancher le Pickit3.
  9. Une pop-up classique de Windows en cas de branchement d’un périphérique s’affiche.
  10. Victoire !

Configuration de Virtual Box pour le Pickit 3

Tout est dans le débrancher / rebrancher. Lors d’une première tentative, je ne l’avais pas fait et quand je souhaitais passer le périphérique à la machine invité, son nom était grisé, indiquant que cela n’était pas possible. Lors de cette première tentative, j’avais également suivi ce tutoriel qui précise pourtant bien qu’il faut débrancher / rebrancher le périphérique… Si jamais vous avez des soucis en ayant suivi les étapes que je donne, essayez ce tutoriel.

Bonne programmation !

Mise à jour du 23 février 2014 : j’ai eu un petit soucis cette semaine avec ce même Pickit et cette même machine virtuelle. Je pouvais correctement le passer à la machine virtuelle mais le Windows invité ne le reconnaissait pas et me donnait à coeur le refrain « ce périphérique n’a pas été correctement installé ». La veille, j’avais fait des mises à jour du système. J’ai fini par devoir faire une mise à jour de Virtual Box puis réinstallé et Guest Additions pour refaire fonctionner le tout.


Concevoir un site comme celui-ci avec WordPress.com
Commencer