Introduction: 3x3x3 LED Cube PIC16872

Bien qu’en soit il est inutile et à la fois charmant, ce cube permet à son concepteur d’apprendre, de comprendre et de manipuler les bases du langage de programmation «Assembleur» qui lui serviront dans ses cours futurs.

Théorie :

Tout d’abord, ce projet est basé sur le fonctionnement d’un microcontrôleur de la compagnie Microchip de type PIC. Ce dernier est programmé à l’aide du logiciel MPLab qui permet d’élaborer des codes en langage «Assembleur» qui seront ensuite compilés dans le PIC16F872 utilisé.

Pour bien comprendre le fonctionnement du cube référez vous au schéma électronique de la page 4.

Alors, le cube de DELs est construit de façon à ce que les trois rangées horizontales, qui représentent les neuf cathodes de leur DELs respectives, soient branchées à chacune un transistor qui sont à leur tour branché aux broches RC4, RC5 et RC6 du PIC. Ces rangées représentent le chemin que le courant empruntera jusqu’à la mise à la terre lors de l’activation des DELs. Ensuite, il y a neuf colonnes de trois DELs qui sont branchées par l’entremise de résistances aux broches du port B et une à la broche RC7.

Voici un schéma simplifié des DELs :

Colonnes :


Rangées :




Pour que le PIC allume, par exemple la DEL du coin gauche de la rangée du haut, nous devons définir les broches RB7 et RC6 à un état logique de 1 (+5V). Ainsi, le courant circulera dans la colonne RB7, mais fera seulement allumer la DEL du haut, car seulement sa rangée respective a été mise à la terre par le biais du transistor branché à la broche RC6. Pour résumé, une DEL s’allumera seulement si les broches qui contrôlent sa colonne et sa rangée sont définies à +5V.

Il maintenant possible d’allumer une série de DELs de façon à créer des séquences très charmantes. Le PIC possède aussi une fonction pour contrôler le délai entre chaque scintillement de DEL, selon le code et l’oscillateur utilisés sa valeur changera.

Il est aussi adéquat de voir une partie du programme compilé pour comprendre le langage «Assembleur» qui contrôle le microcontrôleur.



Tout d’abord, la première ligne nommée «Tourbillonvertical :» définit le nom de la séquence.

Après, nous devons faire comprendre au PIC que nous voulons utiliser une broche précise. Pour ce faire, il faut d’abord lui dire dans lequel des ports elle est située, «Banksel PORTC» définit celui-ci.

Ensuite, il est possible de mettre une certaine broche du port C à un état logique de 1. Le code «bsf PORTC, 4» (Bit Set File RC4) signifie que le PIC définira la broche RC4 à +5V. Après cette action, la rangée du bas du cube est mise à la terre par le transistor.

Puis, après avoir sélectionné le port B de la même manière qu’à l’étape précédente, il est possible de faire allumer la première DEL du bas de la colonne RB3 avec le code «bsf PORTB, 3».

Un code «call delay» est aussi utilisé pour renvoyer le programme à une séquence qui gère le délai, qui dans le cas présent est de 250 ms.

Après avoir définit les broches RC5 et RC6 à un 1 logique, les trois DELs de la colonne du centre s’allumeront.

De plus, les lignes commençant par «bcf» (Bit Clear File), signifient que le PIC doit redéfinir les broches concernées à un 0 logique.

Il est donc maintenant possible de suivre le code ligne par ligne pour reconstituer la séquence «Tourbillonvertical :». Chaque séquence qui ont été créée et compilée dans le PIC sont fait de cette façon.

Pour facilité la compréhension générale du programme, une séquence générale nommée «main» appelle, avec la fonction «call», chacune des différentes séquences les une après les autres et recommence le tout jusqu’à la fermeture du cube.

Schéma électronique :


(Schéma créé à l’aide de ExpressSCH)




Discussion :

La théorie expliquant bien le rôle du PIC dans le projet, il possible d’ajouter que le cube est alimenté à l’aide d’une batterie 9 volts qui est ensuite régulée à +5 volts, qu’il possède un port à cinq broches qui permet de compiler de nouveaux codes dans le PIC facilement et ce sans ouvrir le boitier du cube et qu’une DEL externe permet de savoir si le compilateur est interagit adéquatement avec le PIC.

La plus grosse difficulté encourue dès le début du projet était le fait que je ne connaissais rien aux microcontrôleurs et au langage «Assembleur». L’apprentissage que j’allais et aussi les DELs qui allaient scintiller me motivaient à apprendre de nouveaux concepts. C’est à l’aide de tutoriels et de forums trouvés sur internet que j’ai pu construire mon projet. Bien qu’énorme au premier coup d’œil, je savais qu’en accomplissant ce projet j’allais en ressortir avec beaucoup d’expériences et de connaissances nouvelles qui me seraient très utiles lors de ma troisième année d’étude. De plus, il y a aussi eu le problème de souder un microcontrôleur, de 28 broches, recyclé, une trentaine de résistances, 27 DELs et pleins d’autres composantes aussi recyclé sur un circuit imprimé qui devaient entrer à l’intérieur d’un boitier de transformateur.

Conclusion :

Pour résumé, ce cube inutile et à la fois charmant utilise le langage «Assembleur» pour faire clignoter des DELs à l’aide d’un PIC16F872. Bien qu’inutile, il m’a énormément appris sur tout ce qui est microcontrôleur et langage de programmation. Il m’a aussi permis perfectionner certaines techniques de montage et de soudure en «surface mount».





En annexe, quelques images de la conception du cube.

Microcontroller Contest

Participated in the
Microcontroller Contest

LED Contest

Participated in the
LED Contest