Appropriation du réel

Durée estimée

Pour cette première partie (montage, découverte du programme, test et première mesure), compter 20 minutes.

Réalisation du montage

Câblage de la breadboard

  • Mesurer la résistance étalon à l'aide d'un ohmmètre et noter sa valeur.

    • De préférence, prendre une résistance dont la tolérance est de 1 % (dernier anneau marron)

  • Placer la résistance étalon et le dipôle à tester en série.

  • Alimenter l'association de dipôles entre GND et 5 V de la carte Arduino.

  • Relier les entrées analogiques A0, A1 et A2.

  • Relier la carte Arduino à l'ordinateur par le port USB.

Communication entre l'ordinateur et la carte Arduino

MéthodeEnvironnement Python

L'élève récupère dans son espace personnel et ouvre le fichier mesure_R.py. Ce programme peut être ouvert dans l'environnement Python, par exemple EduPython.

1
# Créé par Gilles Claudel, le 21/11/2018 en Python 3.4
2
from commandesPython import Arduino
3
import time
4
import os
5
	
6
def fichMes(ref, i, u, nb):
7
    os.makedirs("dispersion",exist_ok=True)
8
    fichier = "dispersion/fichier_R" + ref + "_n" + str(nb) + ".txt"
9
    mes_mesures = open(fichier, "w")	#création ou écrasement d'un fichier ouvert en écriture
10
    j = 0
11
    mes_mesures.write("R (ohm)\n") #entête du fichier de mesure
12
13
    while j < nb:
14
        R.append(u[j]/(i[j]/1000))
15
        mes_mesures.write(str(R[j])+"\n")	#Saut de ligne avec \n
16
        j = j + 1
17
18
    mes_mesures.close()	#fermeture du fichier texte
19
    return(0)
20
21
k=0
22
u=[]
23
i=[]
24
R=[]
25
26
port = "COM3"			#à modifier si besoin
27
ard = Arduino(port)		#La classe Arduino permet de communiquer via le port série avec le micro-contrôleur
28
29
#On teste les saisies et on vérifie si ce sont bien des nombres
30
print("Ce programme va réaliser n mesures de u et i pour accéder à la résistance R du dipôle.")
31
dipole = input("Donner un identifiant au fichier de sauvegarde.\n")
32
33
while True:
34
    try:
35
        r = float(input("Valeur de la résistance étalon pour la mesure de l'intensité ?\n"))
36
        break
37
    except ValueError:
38
        print("Entrez un nombre.")
39
40
while True:
41
    try:
42
        n = int(input("Nombre de mesures ?\n"))
43
        break
44
    except ValueError:
45
        print("Entrez un nombre entier.")
46
47
time.sleep(0.5)
48
49
#On admet que la lecture des trois entrées analogiques et leur conversion prend 50ms
50
print(n,"mesures vont être effectuées pendant environ",n*0.05,"secondes")
51
52
while k < n:
53
    sensorU2 = ard.analogRead(0)	#La lecture d'une entrée analogique et sa conversion A/N : ce n'est pas instantané
54
    time.sleep(0.001)
55
    sensorUr = ard.analogRead(1)
56
    time.sleep(0.001)
57
    sensorGND = ard.analogRead(2)
58
    time.sleep(0.001)
59
60
    u.append(((sensorU2-sensorUr)/1023.0)*5.0)      #u en V : u = u_2 - u_r
61
    i.append(((sensorUr-sensorGND)/1.023)*5.0/r)    #i en mA : i = u_r / r
62
63
    k = k + 1
64
65
ard.close()		#Après n mesures, on libère le port de communication
66
67
# Message de fin d'exécution
68
file = "dispersion/fichier_R" + dipole + "_n" + str(n) + ".txt"
69
print("Ouvrir le fichier",file,"dans Geogebra.")
70
71
#
72
# Travail de l'élève
73
# - représenter la dispersion des valeurs de R dans Geogebra
74
#
75
76
# Création du fichier texte de mesures pour une 1re exploitation dans Geogebra
77

Il s'approprie, avec l'aide du professeur, les actions réalisées par le programme.

  • ouverture du port série de communication

  • les paramètres personnalisables de la mesure : les input()

    - identifiant du fichier de sauvegarde : dipole

    - valeur de la résistance étalon pour la mesure d'intensité : r

    - nombre de mesures : n

  • mesure des entrées analogiques : analogRead()

  • remplissage des tableaux i et u avec conversion : \(0 \rightarrow 0\;V\) et \(1023 \rightarrow 5\;V\)

  • fermeture du port série

Conversion analogique numérique

Les valeurs des tensions analogiques évoluent entre 0 et 5 V. Le CAN est sur 10 bits. Donc les valeurs numériques stockées sont entre 0 et 2^10 - 1 = 1023.

Test du programme

ComplémentCréer un fichier de mesures

A la fin du programme Python, ajouter une ligne faisant appel à la fonction fichMes avec les arguments suivants :

  • dipole et n pour nommer le fichier de mesure : fichier_R1000_n50.txt

  • i et u pour calculer R avec le rapport u[k]/i[k] pour k variant de 0 à n-1.

1
fichMes(dipole, n, i, u)

RemarqueDossier mesures

Un sous-dossier "dispersion" sera créé à la première exécution du programme dans le dossier accueillant mesure_R.py.

ExempleExécution du programme

Choisir une résistance étalon de \(1000 \;\Omega\) pour mesurer la résistance d'un dipôle ohmique dont la valeur de référence est \(R_{th}=1 \;k\Omega\).

Exécuter le programme avec 500 mesures.

Ouvrir le fichier fichier_R1000_n500.txt dans le tableur de Geogebra (si dipole = 1000).