Arduino

Les cartes Arduino ont été conçues par la société italienne Smart Projects. Elles sont toutes basées sur la famille des micro-contrôleurs ATMEGA. La plus connue et la plus ancienne est la carte UNO-R3. On trouvera son historique dans cette page Wikipédia.
Son succès est dû à :
  • Son format physique permettant un usage sans soudure. En effet, de simple fils dénudés suffisent à joindre les broches du micro-contrôleur à des composants périphériques.
  • Un logiciel IDE gratuit, intégrant un éditeur de texte pour créer des scripts en langage C, un compilateur C pour produire le code exécutable. Un dispositif de téléversement de ce code dans dans la mémoire Flash du µContrôleur.
  • Le lancement automatique du code
  • La possibilité d'interagir avec un moniteur TTY via une liaison série (clavier + écran).
  • La caractère Open Source des cartes et logiciels fournis
Une autre facilité de la gamme Arduino, le bootloader. Il s'agit de quelques lignes de codes déjà présentent dans la mémoire Flash, permettant le déversemment du code de l'IDE vers la carte. Au prix d'une diminution de le l'espace mémoire (0.5Ko) de la mémoire Flash, le déversemment se fait sans l'aide d'une carte de developpement.
On trouvera sur ce site on trouvera la description des cartes Arduino que j'ai pu expérimenter :



UNO - R3

C'est le modèle emblématique de la famille Arduino. Il a fait le succès de la gamme en permettant la vulgarisation de la programmation et l'usage des microcontrôleurs. Regardons rapidement ses caractéristiques.
micro-contrôleurs ATMega 328P
Tension de fonctionnement 5V
Tensions d'alimentation recommandées 7-12V
Tensions d'alimentation limites 6-20V
Entrées/Sorties digitales (dont 6 sorties PWM)    14
Entrées analogiques 6
Courant max. de sortie par E/S 40mA
Mémoire Flash (programme) 32Ko dont 0.5K pour le bootloader
SRAM 2 Ko
EEPROM 1Ko
Horloge 16MHz

Repassons cette liste ce caractéristiques.

micro-contrôleurs

un micro-contrôleurs est un microprocesseur qui intègre :
  • une unité centrale (CPU).
  • une ROM (mémoire Flash) dans notre cas, d'une capacité de 32Koctets. On y stocke le programme à exécuter. A l'extinction de la carte, le contenu est conservé.
  • une mémoire statique. Le programme y stocke les variables nécessaires au dérourlement du programme. A l'extinction de la carte, le contenu est perdu.
  • une mémoire EEPROM. Le programme y stocke des valeurs nécessaires au dérourlement du programme. A l'extinction de la carte, le contenu est conservé.
  • des ports d'entrées / sorties qui permettent d'aller chercher des informations issues du monde physique extérieur (µcontrôleur); mais aussi de recevoir des données logiques et analogiques.
  • un oscillateur interne pour le cadencement de l'unité centrale. Un oscillateur externe à quartz est possible.
  • des entrées pouvant déclencher des interruptions matérielles.
  • un ou plusieurs ports de communications (séries ou USB par exemple).
  • des Timers permettant de déclencher des interruptions, de compter le temps, etc..

Tension de fonctionnement

Dans la famille des cartes Arduino, les microcontrôleurs fonctionnent soit en 5V, soit en 3.3V.

Tensions d'alimentation recommandées

Si on ne dispose pas d'une alimentation de 5V, les cartes sont équipées de régulateurs qui permenttent d'attaquer les cartes avec une tension pouvant varier de 7V à 12V. Utile par exemple lorsque l'alimentation électrique est une pile de 9V qui se décharge lentement sans effet sur le le bon fonctionnement de la carte.

Tensions d'alimentation limites

Au delà de ces limites, le constructeur ne garantie plus rien.

Entrées digitales

On peut programmer les broches Pi en entrée. A cela peuvent s'ajouter 2 modes : avec ou sans résistance de Pull-Up. Par défaut, une entrée est par défaut en mode Pull-UP, ce qui permet de faire l'économie d'une résistance externe.
Le mode Pull-UP est nécessaire quand l'entrée est attaquée par plusieurs dispositifs en collecteur ouvert.

Sorties digitales (dont 6 sorties PWM)

Les sorties digitales (0/5V) peuvent fournir 40mA chacune.
Parmis les sorties digitales 6 peuvent fournir un signal de type "Modulation de largeur d'impulsion" (PWM). Ce type de signal permet de simuler une sortie analogique égale à la valeur moyenne du du signal. Un filtrage sera peut-être nécessaire pour lisser le signale analogique.

Entrées analogiques

Les entrées analogiques permettent de lire un signal physique traduit par une tension comprise entre 0 et 5V. Celle-ci est transformée en une donnée digitale codée sur 10 bits. Donc la valeur digitale sera comprise entre 0 et 210 - 1 . Donc entre 0 et 1023

Par exemple, supposons qu'un capteur de température délivre de façon linéaire une tension comprise entre 0 et 4V pour une température variant entre -10 et 100°C.
Donc -10°C --> N = 0 et 100°C --> N= 1023 x 4V / 5V = 818. Si N est la valeur lue par le microcontroleur, alors la température sera :
             N x [100°C - (-10°C)]           (N x 110°C)
 Temp(°C) = ----------------------- - 10°C = ----------- - 10°C
                    818                         818
 
Sachant que pour des économies de place occupée en mémoire Flash, c'est une division entière qui sera mise en oeuvre. Dans ce cas l'erreur absolue commise dans cette conversion sera de ~1°C (~1%) . Pour le maximun du convertisseur, on préférera exprimer, le temps des calculs, la température en 1/10 °C (dizième de degrès C). L'erreur sera proche de 11/10°C donc de 0.1% d'erreur absolue.
                N x [1000 - (-100)]           (N x 1100)
 Temp(0.1°C) = ----------------------- - 100 = ----------- - 100
                       818                         818
 

Courant max. de sortie par E/S

Le courant max. des sortie digitales sera < 40mA (chacune) . Cela suffit, par exemple, pour allumer une LED courante. Pour plus de courant, il faudra utiliser un amplificateur de courant (transistor NPN ou NMOS). Il y aura une inversion de polarité à prévoir dans ce cas.

Mémoire Flash (programme)

La mémoire Flash contient le programme à exécuter. Son contenu ne pas être modifier par le programme. C'est lors du téléversement que le contenu est mis à jour. Lorsque la carte est éteinte, le contenu reste présent. Dans le cas du ATmega 128P, la taille de cette mémoire est de 32 Koctets.

SRAM

La SRAM est une RAM. Donc une mémoire dont le contenu est modifiable par le programme (shetch). C'est le lieu des variables, mais aussi de la pile (stack). Le S de SRAM pour Static décrit la technologie de celle-ci. Pour le ATmega 328P, sa taille est de 2 Koctets

EEPROM

Cette ROM conserve les données qu'elle stocke lorsque on éteint la carte. On y place des paramètres utiles au programme chargé. Pour le ATmega 328P, sa taille est de 1 Koctets

Horloge

Cette horloge est un oscillateur qui cadence la logique interne du microcontrôleur. Par exemple pour la carte UNO-R3, elle a une fréquence de 16 MHz. Qulques remarques :
  • Le fabricant du µContrôleur donne une fréquence Max.
  • Si on réduit par 2 cette fréquence, on divise par ~2 la vitesse d'exécution des programmes; mais aussi la consommation de puissance.


Sources et références

[ 1] Une page Wikipédia Arduino

[ 2] Le site officiel Arduino