Club robotique de Sophia-Antipolis

Accueil > POBOTpedia > Programmation > Apprendre à coder > Les micro-contrôleurs > Les micro-contrôleurs sans ta mère > Les tout premiers pas

Les tout premiers pas

Un chenillard à base d’ATmega8

lundi 21 novembre 2005, par Eric P.


Toutes les versions de cet article : [English] [français]

Nous y voici : première confrontation avec la création d’une carte à base de micro-contrôleur.

On va faire simple, en faisant ce qui pour l’électronicien est l’équivalent du "Hello world" de l’informaticien. J’ai nommé la LED clignotante.

Matériel de base

  • un ATMEL (ce sera un ATmega8, car c’est le plus petit que mon revendeur de composants préféré avait en stock
  • les composants qui vont autour (la liste complète suivra)
  • une plaque d’expérimentation sans soudure, vu qu’on va modifier et re-modifier le bidule après
  • un environnement de développement pour AVR, comme par exemple :
    • tout simplement avr-gcc pour les Linuxiens (que vous trouverez sans problème dans votre dépôt de paquets d’installation favori),
    • son homologue WinAVR (http://winavr.sourceforge.net/) pour les Windowsiens,
    • et pour les OSXiens, j’en sais rien
       [1]
  • un câble ISP (voir les articles Garder le contact et In Situ Programming)

Le schéma

Schéma électronique

Il n’y a pas de magie : tout cela sort plus ou moins des datasheets et notes d’application diverses.

Alimentation

Le montage étant alimenté directement en 5V depuis mon alim de labo, je n’ai pas mis de régulateur en amont. Les capas C1 et C2 servent au filtrage de cette alim, pour éliminer ce qu’on pourrait ramasser comme parasites sur le câble entre l’alim et le montage.

Si vous pensez alimenter ce montage à partir d’une pile 9V par exemple, ou d’un pack d’accus, jeter un oeil à cet autre article.

Les sorties

Il y a une LED et sa résistance (R3) par pin du port D, ce qui en fait donc 8 au total.

Le calcul de R3 est le suivant :

tension de sortie du port5V
chute de tension de la LED1.8V
intensité dans la LED10mA

ATTENTION : ne pas dépasser 20mA grand maximum comme consommation sur les pins de sortie de l’Atmel. Donc éviter les LED forte puissance ici...

Un coup de loi d’Ohm donne donc R3 = (5 - 1.8) / 0.01 = 320 Soit 330 en prenant la valeur normalisée immédiatement supérieure

Le connecteur de programmation

ISP est le connecteur pour la programmation ISP (In-Situ Programming). Son brochage correspond au câble dont je dispose (à adapter donc selon votre matériel, en fonction de la disposition des signaux utilisés)

Découplage des alimentations

C5 est un condensateur de découplage, destiné à élimiter les pertubations HF générées par toutes ces puces. La recette de cuisine enseignée par mon maître et à appliquer pour ce type de filtage est : "placer une capa de 100nF entre le Vcc et la masse du circuit, en se mettant le plus près possible de la puce concernée".

L’oscillateur à quartz

C3, C4 et Q1 constituent le circuit oscillateur à quartz externe qui définit la cadence de l’horloge de base du micro. Le quartz choisi ici est un 8MHz. La valeur des capa (33pF) est définie par le datasheet du micro. Ces trois composants doivent être placés au plus près possible du micro.

Le circuit de reset

R2 et C6 servent à bloquer le reset lors de la mise sous tension du micro, afin d’éviter les ratouilles. Le fonctionnement de ce circuit est simple :

  1. lors de la mise sous tension, C6 est déchargée
  2. elle va se charger au travers de R2, et donc la tension appliquée à l’entrée /RESET va d’abord être nulle, puis augmenter au fur et à mesure que la capa se charge, pour atteindre 5V lorsque la charge est complète (puisqu’il n’y a alors plus de courant circulant dans R2).

L’entrée /RESET déclenche un reset du micro lorsqu’elle est à un niveau bas. Par conséquent, on aura ici un effet de "libération" retardée du micro lors de la mise sous tension, ce qui permet d’attendre que la tension soit correctement établie et stabilisée avant de lâcher le fauve (c’est comme pour les fusées spatiales russes). Que les puristes me pardonnent cette description un peu imagée, mais je pense ne pas avoir trop trahi la réalité scientifique.

Remarque : la notation /RESET signifie que l’entrée est active lorsque son état est à 0 (le "/" veut dire NOT).

Voilà, on a fait le tour. Patrick avait raison : y’a pas de quoi en faire un fromage !!

La réalisation

On peut voir la plaque d’expérimentation avec les quelques puces qui se courent derrière.

J’ai un peu craqué pour le chenillard, et ai soudé les LEDs et leurs résistances sur une plaquette proto. Je me suis dit que ça pourrait toujours servir de circuit témoin pour d’autres montages.

Le code

Deux versions du code ont été écrites :

Version de base

Source : version basique
Makefile

Cette version est dénommée "Petit Padawan A Peine Sorti de l’Oeuf", qui se contente de gérer les délais à grands coups de boucles d’attentes. Il est clair qu’il ne faut absolument pas utiliser ce genre de méthode (sauf si c’est pour faire un chenillard) car le micro ne peut rien faire d’autre pendant ces boucles d’attente.

Version évoluée

Source : version avancée
Makefile

C’est la version "Anakin Adolescent". Elle utilise les timers/compteurs de l’Atmel et exploite les interruptions associées pour cadencer le défilement des LEDs. C’est la voie du côté clair de la Force.

Les sources étant abondamment commentés, je vous laisse le soin de les étudier directement.

La conclusion

Mission accomplie chef !! (private joke)


Liste des composants

- Etiquette -- Valeur -
C1 100nF
C2 10µF
C3 33pF
C4 33pF
C5 100nF
C6 1µF
IC1 ATMEGA8-16P
LED1 LED standard
Q1 8MHz
R2 10kOhm
R3 330 Ohm
SV1 connecteur HE10 par exemple

Portfolio


[1vous avez noté ? J’ai fait des rimes ;)

Un message, un commentaire ?

modération a priori

Attention, votre message n’apparaîtra qu’après avoir été relu et approuvé.

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.