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.
A visionner à la maison, en amont de l'activité.
Communication entre l'ordinateur et la carte Arduino
Méthode : Environnement 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.
# Créé par Gilles Claudel, le 21/11/2018 en Python 3.4from commandesPython import Arduino
import time
import os
def fichMes(ref, i, u, nb):
os.makedirs("dispersion",exist_ok=True)
fichier = "dispersion/fichier_R" + ref + "_n" + str(nb) + ".txt"
mes_mesures = open(fichier, "w") #création ou écrasement d'un fichier ouvert en écriture
j = 0
mes_mesures.write("R (ohm)\n") #entête du fichier de mesure
while j < nb:
R.append(u[j]/(i[j]/1000))
mes_mesures.write(str(R[j])+"\n") #Saut de ligne avec \n
j = j + 1
mes_mesures.close() #fermeture du fichier texte
return(0)
k=0
u=[]i=[]R=[]port = "COM3" #à modifier si besoin
ard = Arduino(port) #La classe Arduino permet de communiquer via le port série avec le micro-contrôleur
#On teste les saisies et on vérifie si ce sont bien des nombresprint("Ce programme va réaliser n mesures de u et i pour accéder à la résistance R du dipôle.")
dipole = input("Donner un identifiant au fichier de sauvegarde.\n")
while True:
try:r = float(input("Valeur de la résistance étalon pour la mesure de l'intensité ?\n"))
breakexcept ValueError:
print("Entrez un nombre.")
while True:
try:n = int(input("Nombre de mesures ?\n"))
breakexcept ValueError:
print("Entrez un nombre entier.")
time.sleep(0.5)
#On admet que la lecture des trois entrées analogiques et leur conversion prend 50msprint(n,"mesures vont être effectuées pendant environ",n*0.05,"secondes")
while k < n:
sensorU2 = ard.analogRead(0) #La lecture d'une entrée analogique et sa conversion A/N : ce n'est pas instantané
time.sleep(0.001)
sensorUr = ard.analogRead(1)
time.sleep(0.001)
sensorGND = ard.analogRead(2)
time.sleep(0.001)
u.append(((sensorU2-sensorUr)/1023.0)*5.0) #u en V : u = u_2 - u_r
i.append(((sensorUr-sensorGND)/1.023)*5.0/r) #i en mA : i = u_r / r
k = k + 1
ard.close() #Après n mesures, on libère le port de communication
# Message de fin d'exécutionfile = "dispersion/fichier_R" + dipole + "_n" + str(n) + ".txt"
print("Ouvrir le fichier",file,"dans Geogebra.")
## Travail de l'élève# - représenter la dispersion des valeurs de R dans Geogebra## Création du fichier texte de mesures pour une 1re exploitation dans GeogebraIl 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
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.
Remarque : Ce que l'élève n'a pas à faire
Test du programme
Complément : Cré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.
fichMes(dipole, n, i, u)
Remarque : Dossier mesures
Un sous-dossier "dispersion" sera créé à la première exécution du programme dans le dossier accueillant mesure_R.py.
Exemple : Exé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).

