Voilelec     Retour page précédente
     360 connectés     # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #  Une missive s'envolera dans l'éther...
 

Carte microcontrôleur universelle

   Click  !  Une puisante carte micro


Introduction
Cahier des charges
Description de la petite carte
Le choix du microcontrôleur
Le choix du concept de la carte
Le logiciel de dessin et routeur
Le tirage des typons
Le choix du langage
Compiler le programme
Graver le programme
Conclusion
Liens

Maj : 02/05/12

Abstract :
This is the first page of a great saga. Big steps of this adventure are : Designing, making, and writing software, downloading, testing, expanding hardware, and writing powerful softwares. First applications are devoted to NMEA, Navtex and pilot.

Résumé :
Ceci est la première page d'une grande saga. Les grandes étapes sont : Dessin, réalisation, écriture logiciel, transfert, test, compléments matériels, et écriture de logiciels puissants. Les premières applications sont dédiées au NMEA, Navtex et pilote.

 

Introduction

Cette page décrit une petite carte à microcontrôleur très simple et puissante réalisable par chacun. Le projet sera mené comme un projet industriel, en définissant des jalons avec les documents correspondants. Ce projet se veut pédagogique, il comprendra donc toute une série de choix discutés.
Commençons par une effroyable banalité ! Tous les choix suivants sont totalement subjectifs. Il existe une très grande variété de produits, aucun n'est parfait, tous sont complémentaires. Le meilleur est celui que l'on connaît le mieux, mais il ne faut pas être sclérosé, quand vous en maîtrisez un, essayez-en un autre. Il y aurait énormément à dire sur les avantages et inconvénients de chacun, je tacherai d'être bref !
Ces différents critères de choix sont détaillés en page annexe :
Famille et Microcontrôleur
Montage classique ou CMS
Dessin du schéma
Routage de la carte
Réalisation du typon (masque transparent)
Réalisation du circuit imprimé avec détail des méthodes et choix des outils
Percage du circuit
L'écriture du logiciel, du plus simple (deux lignes, incrémenter un port, boucler) au plus complexe…

Les applications sont illimitées. Je décrirai peu à peu tous les projets évoqués dans mes pages déjà publiées (mais aucune n'est finie) et à venir (il y en a beaucoup plus !). Je me donne moins de dix ans pour terminer cette page.
Je m'efforcerai de m'adapter au débutant qui découvre ce monde hostile, mais attention on y prend goût et après c'est une drogue (si, je me soigne Docteur..). Vous découvrirez la joie sublime de faire clignoter une led après six mois de travail acharné sur votre première carte (Ca donne envie non ?). Si vous avez survécu à ma littérature barbare est dissuasive, bienvenue au club des shootés à l'assembleur…

Vous trouverez la description de quelques projets, utilisant les diverses cartes dans cette page :
Le jargon vous parait obscur ? Les mots principaux sont définis dans la note glossaire :

Cette page n'est plus d'actualité, Voir la page Arduino arduino

  Haut de page

 

 

Cahier des charges

Voici un début de cahier des charges très simplifié :

Le prix fini en ordre de marche de la carte est de l'ordre de 50 euros.

Tout sera réalisable sans problème par un débutant, ce qui interdit les cartes minuscules avec de très petits composants CMS qui sont trop difficiles à implanter si l'on n'a pas la technologie.
La carte sera programmable in situ (par un port USB, flash eprom interne, sans ouvrir la boîte).
C'est une nécessité absolue. Le temps des EPROMS  sur support, à programmer sur un outil externe et définitivement oublié.

La carte sera assez puissante pour faire tourner un noyau temps réel en assembleur et des gros projets en C, comme le Navtex, le système expert pilote automatique, l'exploitation poussée des bus NMEA, le barographe et la majorité des projets décrits dans mes pages.
Cela implique assez de RAM et de zone programmable.

Elle comprendra un maximum de ports logiques et analogiques (convertisseurs numériques –analogiques et analogiques- numériques)

Elle comprendra divers timers indépendants

Elle saura gérer les bus principaux :
I2C  pour les multiples périphériques existants
Port série pour les anciens matériels (et pour le NMEA 183)
Port CAN, pour les applications automobiles et le NMEA 2000
Port SPI pour les multiples périphériques existants
Port USB
Tous ces bus et autres ports ne sont pas forcément dans le microcontrôleur, ils peuvent être ajoutés par des composants externes à la demande, mais plus la carte initiale est puissante, plus elle sera polyvalente.

  Haut de page

 

 

Description d'une petite carte universelle

Quand j'ai mis en ligne cette page en 2000, le microcontrôleur choisi était le Philips P89C51RDIA. Tout ce qui va être dit sur ce composant est adaptable aux composants du moment.
Voici les critères généraux :

Il faut regarder avec soin la référence du composant. Toutes les lettres signifient quelque chose de très précis. Par exemple, pour le P89C51RDIA , RD signifie 64 K de flash et 1 K de ram, IA signifie boîtier PLCC 44 broches.
Il est absolument indispensable de charger un maximum de documentation sur le site du constructeur, l'imprimer et la lire avec soin.
Au début, c'est la panique en voyant la masse de documents à connaitre, mais rassurez-vous cela se décante peu à peu.

Maintenant que vous connaissez le produit nous pouvons rentrer dans le détail.
Pour faire fonctionner le circuit, comme l'explique fort bien Philips, il faut :
Une alimentation 5 volts, la carte comportera un petit régulateur optionnel protégé par diode qui accepte le 12 volts du bord.
Un quartz, toutes les fréquences sont possibles, les logiciels sont paramétrables. Il accepte jusqu'à 30 MHz, la valeur de base sera le classique 11.0592 MHz. Plus il va vite plus il consomme (pas de panique, moins que le démarreur...).
Une adaptation série.   Je propose par exemple une variante de l'ancêtre le MAX232. Il existe aujourd'hui beaucoup mieux. L'idée est que cet adaptateur, sa DB9 et ses condensateurs sont assez gros par rapport au reste. Ils sont donc montés sur un bout de circuit imprimé qui pourra être détaché de la carte et être inclus dans le capot de la prise (liaison à 4 fils).
En ajoutant quelques condensateurs, telle que décrite la carte est déjà capable de tourner. Tous les ports sortent sur des connecteurs en ligne pour être utilisables. Comme elle fait un peu vide, je rajoute deux supports 8 pins optionnels pour des composants I2C, afin de disposer de plus de RAM pour élargir les applications. J'implante l'I2C d'office pour dialoguer avec clavier et afficheurs (c'est du soft !) et du CAN pour les liaisons lointaines silencieuses.
Pour programmer, il faut fournir une tension de 12 volts sur une patte (EA, pin 35). Cette tension peut être prise sur l'alimentation générale.
Les périphériques se brancheront sur les connecteurs, et dans le cas d'applications simples n'utilisant que peu de fils, en les soudant directement sur la carte…

 Haut de page

 

 

Le choix du microcontrôleur

D'autres cartes ont été utilisées par la suite en différentes familles, toutes aussi performantes, en fonction des chips du moment.
La famille AVR est très séduisante, mais il faut aussi s'intéresser aussi aux ARM 7, qui font peur au débutant par leur puissance et possibilités immenses. Ils se trouvent dans tous nos appareils du quotidien.
Je les aime tous, les RISC et les CISC, les petits et les gros. Le passage d'une famille à l'autre est toujours  délicat pendant quelques jours  ou semaines, il faut s'adapter aux terminologies particulières. Comme les langues, plus on en connaît, plus l'adaptation est rapide. Il faudra avoir le livre d'instructions sous le coude en permanence.
J'apprécie les PICS pour les mini montages au hardware très simplifié, sans composants annexes, avec des prix très bas (moins d'un Euro).
J'utilise particulièrement la famille compatible Intel 8051 pour son immense variété et surtout parce que j'ai écrit des dizaines de milliers de lignes sur ces produits, je commence à les avoir en main.
En 2000, je préfèrais le Philips P89c51RDIA pour sa ram de 1k malgré son prix unitaire trop élevé de 17 euros ht ($11 aux US). .
Le seul critère qui ne se discute pas est le choix de la programmation in situ (ISP, In Situ Programming). J'ai développé autrefois beaucoup de cartes qui comportaient une Eprom, effaçable par UV, à changer pour chaque modification. C'est la préhistoire, il faut oublier cela, maintenant tout doit se programmer boîtier fermé, en transférant le nouveau logiciel par le port série. Toute carte doit être conçue pour supporter l'ISP.
Seules les cartes minimalistes (interfaces) peuvent demander à ce que le chip soit sorti pour reprogrammation si les modifications logicielles sont rares. Il est souvent simple en rajoutant un transistor, quelques diodes et résistances, d'intégrer la programmation sur la carte. Cette approche permet d'utiliser des CMS soudés ce qui minimise la taille de la carte et augmente la fiabilité.

Vous trouverez dans une autre page la carte que j'utilisais en 2006 : Carte microcontrôleur AT89c5131a

Une page spéciale est consacrée aux pics :

 Haut de page

 

Le choix du concept de la carte

    Cela vaut-il encore la peine de se faire une carte ?

Dans les premières années des microcontrôleurs, cela était indispensable, les matériels étaient rares et chers. Maintenant il y a sur le marché des milliers de cartes à d’excellents rapports qualité/prix, il vaut mieux travailler le soft que de réinventer l’eau tiède.
Pour des projets très ambitieux, plongez sans hésiter dans du ARM ou sur des petites cartes PC, regardez les formats ITX, pour une centaine d’euros, vous avez la puissance d’un PC avec toutes les interfaces imaginables, impossible d’égaler de tels matériels à ces prix.
Ces cartes sont bien déboguées et disposent d’une énorme collection de softwares et d’outils, en Win CE et Linux. Cela permet de boucler rapidement un projet quelconque. Un programmateur débutant  utilisera  une carte éprouvée, longuement déboguée par des spécialistes.
Si cela devient votre activité professionnelle, il sera temps de concevoir plus tard des cartes spécifiques pour des applications particulières, en particulier en production industrielle pour lesquelles les prix sont tirés en deçà du raisonnable.

 Haut de page

 

Le choix du logiciel de dessin de circuits et routeur

Si vous dessinez votre propre carte, il faudra commencer par apprendre à se servir des outils indispensables.
Le dessin théorique  du se fait avec un logiciel spécialise qui possède les bibliothèques des composants et leurs variantes de boîtier. Il détecte beaucoup d'erreurs et permet d'obtenir des tracés très propres.
J'ai commencé avec les premières versions d'Orcad sous Dos, Windows n'existait pas.  L'outil était simple et suffisant et permettait un travail rapide. Les versions ont évolué sans interruption jusqu'à donner des monstres qui dépassent totalement les besoins amateurs.
J'ai utilisé ensuite Cadstar,  et maintenant un produit beaucoup plus petit et moins cher, Cadsoft  Eagle qui me suffit largement.
Il y a sur le marché une multitude de très bons outils, pour toutes sortes de budgets et de besoin.

Une fois le dessin terminé, il faut maintenant placer les composants sur la carte, c'est le routage.
Un module spécialisé prend la relève et permet le placement des circuits et pistes, partiellement automatiquement, mais en laissant une grande part à la créativité.
Le routage terminé, les documents de réalisation sont imprimés, par exemple des transparents ou typons.

 Haut de page

 

Le choix du tirage des typons et des cuivres

Une simple imprimante à jet d'encre permet de réaliser des typons acceptables.

Une petite boite à lumière avec rampe de tubes est pratique pour insoler le circuit, cela est trop aléatoire en lumière naturelle.
Cela va se faire en insolant une plaque cuivrée photosensibilisée par une résine, avec une boîte à lumière. Elle sera ensuite développée et les pistes de cuivres seront protégées.

Une attaque chimique supprimera le cuivre indésirable.
Après nettoyage, la carte sera prête pour le perçage et la soudure des composants.
La carte étant maintenant finie, il reste à installer un programme qui fonctionne pour la faire vivre.

La gravure des circuits imprimés (appelés aussi "cuivres ") ne demande pas dés le début une cuve à mousse, il est très simple de commencer avec une simple cuvette.

N'oublions pas pour les moins bricoleurs qui n'ont pas su évoluer depuis les années 1980, que quelques petites sociétés font des tirages de prototypes à des prix amateurs, en partant d'un tirage papier, souvent échelle 2 ou 4 (évitez les papyrus).

 Haut de page

 

Le choix du langage

C'est un choix beaucoup plus simple que les autres. Pour la vitesse des routines de bas niveau, l'assembleur qui est au plus près de la machine. Pour les applications générales, moins critiques le C. Les deux seront combinés.
Le mélange des deux langages ne pose pas de gros problèmes, sauf qu'il faut une grande rigueur pour la gestion des variables et des piles qui doivent être bien définies pour éviter tout conflit.

Beaucoup de débutants ont appris le C, ils aimeraient bien écrire en assembleur pour améliorer les performances mais ont peur du monstre et cherchent à transformer automatiquement et sans effort le code C en assembleur.
Cela est-il vraiment possible ?

Cette problématique est développée ici : Choisir entre le C et l'assembleur casm

Et le basic ?

Ce langage très populaire est le favori des débutants, surtout avec le PicBasic de la famille Microchip.
J'en parle dans cette autre page : Carte microcontrôleur AT89c5131a
Les anciennes versions manquaient de rigueur et produisait un code médiocre, les versions récentes sont meilleures. L'inconvénient est que ce langage n'est pas portable, mais le débutant pourra créer rapidement de petites applications sans prétentions. C'est un tremplin pour ensuite passer à autre chose.
Vous trouverez ici une petite application qui exploite le basic : Pilotage d'un récepteur TV avec scanner

Le Pascal
C'est un des langages pédagogique. Il n'est pas utilisé dans l'industrie, le C est plus polyvalent, plus portable et plus riche, la complexité de l'apprentissage est du même ordre. Utilisez le si vous l'avez appris à l'école et que vous ne vouliez pas faire d'effort supplémentaire, mais oubliez le si vous choisissez un langage.

Delphi
Delphi est du Pascal habillé avec un gros environnement de programmation. Ceux qui l'utilisent en sont contents, mais l'ayant peu pratiqué je ne l'aime pas beaucoup, je préfère le C.

Le JAL
C'est un outil exotique particulier, voisin du C et du Basic et d'un abord simplifié pour des débutants. Il produit un code compact, mais malheureusement il ne se compile que sur quelques trop rares circuits de la famille Pic. Cette limitation s'avère trop gênante quand il faut s'adapter à des circuits différents pour chaque projet, c'est la raison pour laquelle je ne le développerai pas. Vous trouverez beaucoup de liens en cherchant " jal compiler ".

Java
Le Java est proche du C, avec une ouverture vers les réseaux. Sur notre petit Pic, aux ressources limitées, il faut l'oublier.
Ne pas confondre évidemment avec Javascript, le langage de script pour html qui n'a strictement rien à voir.

 Haut de page

 

Compiler le programme

Le programme étant écrit dans un des langages, il faut passer par un autre outil qui val le compiler pour créer le fichier final exécutable.
Le compilateur détecte les erreurs de syntaxe et si tout semble bon, génère plusieurs fichiers, dont un LIST qui est très lisible et montre les codes générés avec les commentaires et les étiquettes.
Nous obtenons en finale le fichier du programme,  c'est un fichier binaire qui contient simplement les instructions que comprend le contrôleur.
Le format est en principe  avec  l'extension HEX

 Haut de page

 

 Injecter le programme dans le microcontrôleur

Il ne reste maintenant a graver ce fichier HEX dans la mémoire programme du contrôleur.

Il y a trois possibilités :

À l'ancienne, il existait un circuit externe, l'EPROM programme, qu'il fallait sortir de son support pour la placer sur un matériel spécialise, le programmateur.
Une fois l'opération terminée, l'Eprom était remise sur la carte.  C'est du passé glorieux, cela n'existe plus maintenant.

Microcontrôleur non ISP
Le matériel ne permet pas la programmation in situ, sur la carte. Il faut sortir le composant et faire comme au dessus. Cette méthode est utilisée pour des petits circuits qui ne peuvent se programmer autrement. Cela est peu fiable, les manipulations de circuits cassent ou plient les pattes.

La méthode ISP (In Situ Programming)
C'est celle que l'on privilégie maintenant. Tous les composants sont soudés sur la carte, il existe une prise qui permet de programmer de l'extérieur, en configurant parfois un ou deux straps, directement par USB (ou sur les cartes antique par port série maintenant obsolète).
Le constructeur du microcontrôleur fournit toujours une boîte à outils logicielle, adaptée à son composant pour faire cela très simplement.

 Haut de page

 

Mise à feu

Une fois le programme injecté et le circuit reconfiguré, un reset lance l'exécution, il reste maintenant à chercher les erreurs.
C'est la phase de débogage, d'autant plus lourde que le programme a été mal écrit ou que le circuit comporte des erreurs de conceptions.
Après, ce n'est que du bonheur, quand la première led commencera à clignoter !

Si la carte est pleine d'erreurs de conception ou de montage, le démarrage avec un programme bogué sera difficile !
Il est préférable de séparer les deux étapes et de tester les fonction de la carte avec des programmes minimalistes, ensuite, quand le hardware sera à peu près au point, il sera temps de s'attaquer au vrai programme.

 Haut de page

 

Les techniques

Nous évoquerons quelques techniques et astuces de base pour le programmeur débutant, qui font l'objet de notes séparées quand le sujet est important par exemple :
Utilisation des tables de conversion ou look-up tables pour manipuler des données. Une page est consacrée à cette technique :
Conversion par look-up tables :
Exemple simple de filtrage numérique. Ces techniques sont très utilisées en traitement de signal simple, elles font l'objet d'une page séparée :
Méthode de la pondération temporelle :
Choisir entre le C et l'assembleur casm

 

 

Conclusion

Vous avez cru qu'il y en avait une ? Ce n'est pas pour demain…

L’offre de cartes commerciales, à prix dérisoires, enlève maintenant tout intérêt à la réalisation de sa propre carte, sauf pour ses vertus pédagogiques ou une application très spécifique (miniaturisation). La difficulté est dans choisir une parmi tous les trésors proposés.

 Haut de page

 

Vous trouverez les réponses aux questions que vous vous posez sur l'évolution du projet et le moyen d'obtenir schémas, kits, produits finis, assistance, garde d'enfants à domicile, ratons laveurs, extrême-onction, contrat d'élimination d'ennemis, fourniture de call girls et plus ici :

Du schéma au produit fini ?



 

Les liens microcontrôleurs

Liens supprimés, ce n'est plus un produit d'actualité.

Voir la page Arduino arduino

© Christian Couderc 1999-2012     Toute reproduction interdite sans mon autorisation

Merci aux journalistes qui pillent sans vergogne mon site,
d’avoir la courtoisie d'au moins citer leurs sources…

Page vue   40285   fois       IP : 38.107.179.210

 Haut de page         Dernière retouche le 02 Mai 2012 à 16 h           Retour page précédente

    Voilelec