Instructables

3x3x3 LED cube PIC16872

Picture of 3x3x3 LED cube PIC16872
IMG_0339.JPG
IMG_0344.JPG
IMG_0351.JPG
IMG_0353.JPG
IMG_0354.JPG
IMG_0361.JPG
IMG_0362.JPG
IMG_0366.JPG
IMG_0369.JPG
IMG_0370.JPG
IMG_0371.JPG
IMG_0374.JPG
IMG_0375.JPG
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.
 
natipol132 years ago
bonjour,
je voudrais savoir comment vous avez calculer les résistances R4 à R11 et les résistances sur les base des transistors..car suivant si une, deux,trois ou quatre led sont allumées en même temps, le courant dans les résistances n'est plus le même?!
mon adresse E-mail: natipol13@hotmail.com
merci d'avance
Weepet (author)  natipol132 years ago
@ natipol13

Effectivement, comme vous le dîtes le courant dans les résistances ne sera pas constant dépendamment du nombre de DELs allumées.

Les valeurs des résistances R4 à R11 ont été déterminées un peu arbitrairement.

Il faut prendre en compte la luminosité à laquelle on veut qu'une DEL seule allume, sans qu'elle ne se brise à cause d'un courant trop fort. Donc, selon les spécifications de la DEL, il ne faut pas dépasser un courant limite.

La résistance devrait être en fonction de se courant limite dans une DEL, mais à votre place, j'y irais avec un compris entre la luminosité à une DEL et la luminosité à 3 DELs sans avoir un courant trop élevé.

Pour celles des transistors, c'est surtout des résistances de protection pour limiter le courant qui va sur la base des transistors. Encore une fois, leurs valeurs sont surtout en fonction des spécifications du transistor.

Si vous voulez vraiment ''calculer'' une valeur précise vous pouvez toujours utiliser la loi d'ohms ( V = R * I ).
Weepet (author) 3 years ago
It ''will'' be but for now this is the original version I made.

If it is important you can try Google translate.
UOS3 years ago
Is it possible to have an English version?