Systèmes numériques, électronique et communications

Étiquette : Arduino

Thermoduino, un thermomètre Arduino

C’est un TP de BTS SN (Systèmes numériques) 1° année. C’est le premier TP avec l’Arduino. Il s’agit de réaliser un thermomètre avec Arduino. Pour cela, nous allons modéliser un capteur de température réalisé avec une thermistance CTN puis calculer et afficher la température mesurée ! Le cahier des charges est le suivant :

Réaliser un thermomètre Arduino avec affichage de la température sur la liaison série.

Plage de température : -20°C à 50°C

Précision < +/- 1°C

La thermistance

Pour réaliser notre capteur, nous avons utilisé une thermistance. Nous avions au lycée un petit stock de thermistance 4,7 kΩ. La loi de variation de la résistance RTH (la résistance de la thermistance) en fonction de la température est donnée ci-après :

RTH = R0 e B(1/T -1/T0)

avec R0 = 4700 Ω et B = 3980 K-1 et T0 = 298,15 K

C’est assez facile à tracer avec un tableur. Voilà ce que ca donne entre -20°C et 50°C avec un point tout les 5°. J’utilise LibreOffice : efficace, gratuit et libre !

Caractéristique thermistance R en fonction de T°C
Caractéristique R(T) de la thermistance 4.7 k

C’est une CTN (résistance à coefficient de température négatif) cela signifie que lorsque la température augmente, la résistance diminue. Remarquez qu’à la température ambiante (25°C), la résistance a une valeur de 4700 Ω.

Le capteur

L’Arduino sait mesurer des tensions, pas des résistances. Il est donc nécessaire de transformer la variation de résistance en variation de tension. Pour cela, on réalise un pont diviseur en y associant une résistance de 4,7 kΩ conformément au schéma suivant.

Capteur de température diviseur de tension thermistance résistance
Capteur de température à thermistance

Calculons Vt, la tension fournie par le diviseur de tension :

Vt = Vcc. RTH / (RTH+R1)

Lorsque la température est basse, la résistance est haute, la tension est élevée (proche de 5V). Lorsque la température est haute, la résistance est faible, la tension est basse (proche de 0V). À la température de 25°C, la thermistance a une résistance de 4,7 kΩ et la tension est à Vcc/2.

Avec le tableur, nous pouvons maintenant tracer la courbe Vt(T°C), c’est-à-dire la tension fournie par le capteur en fonction de la température.

Caractéristique Vt(T) du capteur de température à thermistance
Caractéristique Vt(T°C) du capteur à thermistance

Entre -20 et 50°C, la tension Vt varie entre 4,5V et 1,2V.

Maintenant, ne perdons pas de vue notre objectif, ce qui nous intéresse, c’est de connaitre la température à partir de la mesure de Vt. En fonction de la tension mesurée, quelle température dois-je afficher ? C’est donc la courbe inverse qui nous intéresse soit T°C(Vt) :

Caractéristique T(Vt) du capteur à tehrmistance
Caractéristique T(Vt) du capteur à thermistance

Si la tension mesurée est égale à 2,5V, c’est que la température est à 25°C. Si par exemple, la tension mesurée est à 3,5V, la température est alors de l’ordre de 7°C.

Modélisation

La question est la suivante : à partir de la mesure de la tension, comment mon Arduino va déterminer la température. Comment l’Arduino peut-il reconstituer la courbe Vt(T°C) ? Il nous faut modéliser cette courbe.

Modèle linéaire

Demandons à notre tableur de calculer une courbe de tendance qui approxime la caractéristique T(Vt). Sur LibreOffice : clic droit sur la courbe puis « Insérer une courbe de tendance ».

Caractéristique du capteur et modélisation par courbe de tendance linéaire
T(Vt) et courbe de tendance linéaire

L’équation fournie par le tableur est (avec arrondi) :

T(°C) = -20,1 Vt + 75,69

C’est l’équation d’une droite.

Facile maintenant pour l’Arduino de calculer la température avec cette formule magique. Mais la courbe linéaire ne « colle » pas parfaitement avec la courbe réelle. En analysant les résultats donnés par le tableur, on constate une erreur de température comprise entre -4°C et +2 °C. On ne respecte pas notre cahier des charges puisque nous voulions une erreur inférieure à 1°C !

Modèle du second degré

On demande maintenant à notre tableur de calculer une courbe de tendance polynomiale de degré 2.

Caractéristique du capteur et modélisation par courbe de tendance polynomiale de degré 2.
T(Vt) et courbe de tendance de degré 2

L’équation fournie par le tableur est :

T(°C) = -0,82.Vt2-15,22.Vt+69,4

C’est mieux mais l’équation ne colle pas encore parfaitement à la courbe. On constate une erreur comprise entre -2.6°C et + 2°C. On ne respecte toujours pas le cahier des charges ! Il faut trouver autre chose !

Modèle du troisième degré

On demande maintenant à notre tableur de calculer une courbe de tendance de degré 3.

Caractéristique du capteur et modélisation courbe de tendance de degré 3
T°C(Vt) et courbe de tendance de degré 3

T°C = -1,634.Vt3 + 13,66.Vt2 – 54.93.Vt +102,43

Le modèle colle maintenant parfaitement à la courbe.

On constate maintenant une erreur comprise entre -0,6°C et +0,5°C. Notre cahier des charges est respecté. Notre Arduino pourra maintenant calculer précisément la température en fonction de Vt.

Le programme

Le programme est réalisé à partir de l’exemple AnalogReadSerial. Voici un exemple d’implémentation avec le rendu sur le terminal :

Code arduino thermomètre  et visualisation mesure température
Code Arduino et visualisation sur terminal Arduino

Le TP complet

Comment on le fait alors notre thermomètre ? Le TP complet est disponible si dessous. Enjoy !

Fabriquer un thermomètre avec un Arduino et deux composants de fond de tiroir ? Précis au degré près ? Facile !

Et qui on est, hein ?

Une IHM avec une MAE !

IHM ? MAE ? Késaco ?

Nous allons voir ici comment mettre en œuvre une interface homme-machine (IHM) à l’aide d’une machine à états (MAE). La solution est implémentée dans un Arduino Uno.

Dans nos projets et mini-projets de BTS SN, nous avons souvent besoin de mettre en œuvre des interfaces homme-machine simples. Bien souvent, on utilise un petit écran LCD avec deux lignes et quelques boutons-poussoirs.

Pour bien gérer les différents menus et la navigation entre ceux-ci, rien de mieux qu’une machine à états ! C’est une méthode rigoureuse et efficace.

Ici nous allons le mettre en œuvre sur une carte Arduino, mais la méthode est transposable à n’importe quelle autre plateforme ou microcontrôleur.

Un minuteur Arduino

Au cours de ce TP, nous allons réaliser un minuteur en utilisant un Arduino et un shield LCD-RGB Adafruit. Cette carte comprend un afficheur 2 lignes de 16 caractères et 6 boutons poussoirs (←;↓;↑;→;Sélection; et un bouton Reset).

Minuteur Arduino

Dans ce TP, nous allons implémenter les menus d’affichage de ce minuteur. Ces menus s’enchainent selon le diagramme d’état suivant.

Le codage se fait en utilisant une structure switch – case. Le switch se fait sur la variable d’état.

Le document complet est ici :

En bonus, les étudiants peuvent coder le minuteur complet, mais c’est un peu plus long. Et ça fonctionne !

C'est fini
C’est fini !

Et qui on est, hein ?

Aux origines d’Arduino…

Carte Arduino

Cet été, je suis rentré de Corse en passant par l’Italie. Nous avons choisi de passer par le Val d’Aoste et le tunnel du Mont-Blanc. La route passait par Ivrea (Ivrée en français). Je me suis dit que c’était l’occasion d’un pèlerinage arduinesque… Oui, la fameuse carte Arduino a ses origines dans le coin. C’est une longue histoire…

Ivrea

Ivrea est une petite ville dans le nord de l’Italie. C’est dans le Piémont, pas bien loin de Turin (Torino). La ville d’Ivrea marque l’entrée de la vallée d’Aoste. Ivrea est connu pour être le berceau de la société Olivetti.

Olivetti, ca ne dit pas grand chose aux jeunes d’aujourd’hui, mais pour les boomers comme moi, Olivetti, c’était d’abord des machines à écrire.

Machine à écrire Olivetti

C’est sur une machine comme celle-ci que j’ai tapé avec deux doigts mon rapport de projet en Terminale F3 ! C’était en 1984. (Ohlala, presque 40 ans !).

Deux ans après, je voyais pour la première fois un IBM-PC, c’était un Olivetti !

Une petite carte

En l’an 2001, s’est ouvert à Ivrea une école nommée IDII : Interaction Design Institut Ivrea. Si j’ai bien compris, il s’agissait d’une école financée par Olivetti et Telecom Italia qui dispensait une formation à bac+2 orientée design et technologie.

https://en.wikipedia.org/wiki/Interaction_Design_Institute_Ivrea

C’est dans cette école qu’intervenait Massimo Banzi, un prof d’élec un peu fou génial (comme tous les profs d’élec, non ?). Massimo a eu l’idée de développer pour ces étudiants une petite carte électronique facile à programmer et à mettre en œuvre. Aidé par quelques collègues, le projet open-source s’est rapidement développé et à un moment donné, il a fallu donner un nom à ce projet…

C’est qui cet Arduino ?

Autour de l’an 1000, Arduin, un nobliau d’Ivrée (Arduino d’Ivrea en italien) a très brièvement régné sur l’Italie.

https://fr.wikipedia.org/wiki/Arduin_d%27Ivr%C3%A9e

À Ivrea, c’est la vedette locale, un peu comme Napoléon à Ajaccio. Et donc, la rue principale d’Ivrea s’appelle la Via Arduino, et dans cette rue, il y a le bar Arduino.

Comme Massimo et ses amis allaient boire des bières au bar Arduino, ils ont appelé leur projet Arduino.

Un pèlerinage arduinesque

C’est avec ces informations que je me suis rendu à Ivrea, à la recherche du bar Arduino.

La via Arduino est assez facile à trouver. C’est une longue rue piétonne qui traverse la vieille ville.

Via Arduino à Ivrea

Et finalement, j’ai bien trouvé le bar Arduino. C’est à vrai dire une cafétéria qui ressemble à une librairie. Aucune mention de la carte Arduino.

Pas de chance, c’était fermé. De toute manière à 10h du matin, c’était trop tôt pour la bière.

Un peu plus bas, nous avons dégusté un très bon expresso. Ristretto !

Et qui on est, hein ?

Electronique embarquée Arduino, mbed, PSoC

Retrouvez ici des TP sur de l’électronique embarquée Arduino, PSoC, Mbed etc…

PSoC

Avec mes collègues du BTS Systèmes électroniques du lycée Cabanis, nous nous sommes lancés il y a quelques années avec nos étudiants, sur un projet PSoC(1). Le document présenté ici est un document de débutant à l’usage des débutants : PSoC pour les nuls en quelque sorte. Il peut y avoir des erreurs ou des imprécisions, merci de me le signaler en utilisant les commentaires de ce site. J’ai laissé ce document ici, mais nous n’utilisons plus PSoC1. Nous utilisons PSoC5. Voir ci-après.

PSoC 5

Le PSoC 1 évoqué ci-dessus commence à vieillir. Place à PSoC 5LP ! Voici un TP incluant des tutos (de moins en moins guidés), permettant de prendre en main le kit de développement PSOC5 CY8C-KIT050 et le logiciel PSoC Creator. Ce document s’adresse à des débutants (étudiants de BTS SN en milieu de première année).

Arduino

J’ai commencé à entendre parler d’Arduino en 2010. J’ai essayé, j’ai « bidouillé » avec, et j’ai trouvé cela très bien : c’est simple, c’est pas cher et on peut développer très vite des choses avec des étudiants de BTS Systèmes électroniques. Une petite présentation de Arduino.

Créer une classe pour Arduino

Un TP assez simple pour créer et utiliser une classe pour Arduino (une « librairie » comme disent abusivement mes étudiants). Au niveau matériel, on peut difficilement faire plus minimaliste : une carte Arduino et basta. On utilise la led de l’Arduino ! C’est librement adapté d’un document Arduino « Library Tutorial ».

Serveur Web embarqué mbed

Un TP pour mettre en œuvre un serveur web embarqué autour d’un circuit mbed. Ce serveur permet d’allumer des leds ou de lire une entrée analogique. Ce TP permet aussi d’aborder en « live »  html et javascript.

© 2023 Louis Reynier

Theme by Anders NorenUp ↑

Cookie Consent Banner by Real Cookie Banner