1- Contexte
Il existe de nombreuses situations où il est nécessaire de savoir où se trouve le point de départ du déplacement d'un objet.
Par exemple sur l'imprimante 3D où la fraiseuse à commande numérique, il faut savoir où se trouve l'origine de l'axe X, Y et Z.
Pour ces 2 machines, il existe une fonctionnalité qui permet de lancer le déplacement des axes afin de déterminer les points d'origine :
- sur la fraiseuse à commande numérique ce sont des capteurs à effet hall qui sont utilisés,
- sur l'imprimante 3D se sont des fin de course classiques.
D'autres objets utilisent par exemple des fourches optiques afin de déterminer le bord d'une feuille par exemple dans une imprimante jet d'encre, ou encore pour déterminer la position de la cabine d'ascenseur sur le projet de maquette d'ascenseur du laboratoire.
Pour notre projet il faut trouver un moyen de déterminer l'origine de notre engrenage de sortie.
2 Comparaison de solutions techniques
Compléter le tableau suivant afin de pouvoir argumenter sur le choix d'une solution technique.
Solutions techniques | Principe de fonctionnement | Avantages | Inconvénients |
Fourche optique |
|||
Capteur effet hall |
|||
fin de course |
3 Test de fonctionnement sur la maquette
Plan de câblage
Les 4 fils du moteur sont reliés par l'intermédiaire d'une carte de puissance sur les entrées 17-5-18-19.
Pour le capteur qui permet de détecter l'origine, le choix s'est porté sur un capteur à effet hall essentiellement à des fins pédagogiques compte tenu des possibilités d'applications variées.
Sur la maquette, le circuit du capteur à effet hall est équipé en plus du capteur, d'une led qui peut être allumée par programmation lorsque l'aimant est en vis à vis du capteur :
- le capteur en broche 35 -> A renseigner dans le début du programme ci-dessous
- la led en broche 12 -> A renseigner dans le début du programme ci-dessous
Maquette du moteur pas à pas
Voici la maquette du moteur pas à pas où l'on peut observer la led qui indique l'origine du disque :
Compléter le code du programme de détection d'origine
Copier/coller le code suivant : ATTENTION il ne fonctionne pas.
Il manque des éléments de code !
from machine import Pin, ADC, SoftI2C
from time import sleep
import ssd1306
#--initialisation afficheur
i2c = SoftI2C(scl=Pin(22), sda=Pin(21))
oled_width = 128
oled_height = 64
oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c)
#---initialisation paramètres moteur pas à pas-----------
#Déclaration des sorties
IN1 = Pin(17,Pin.OUT)
IN2 = Pin(5,Pin.OUT)
IN3 = Pin(18,Pin.OUT)
IN4 = Pin(19,Pin.OUT)
#Définition des séquences de commande
pins = [IN1, IN2, IN3, IN4]
#sens anti-horaire
sequence1 = [[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]]
#sens horaire
sequence2 = [[ ],[ ],[ ],[ ]]
#---initialisation paramètres origine-------------------
cptHall = ADC(Pin( ))
#full range 3.3V
cptHall.atten(ADC.ATTN_11DB)
led = Pin( , Pin.OUT)
hallMax=0
hallMin=1200
#faire un tour complet
for t in range(2050):
for step in sequence1:
for i in range(len(pins)):
pins[i].value(step[i])
sleep(0.001)
sleep(0)
#origine()
hallValue = int(cptHall.read()/10)
print(hallValue)
if hallValue>hallMax:
hallMax=hallValue
posMax=t
if hallValue<hallMin:
hallMin=hallValue
posMin=t
origineValue=int((hallMax+hallMin)/2)
origineDecal=int((posMax-posMin)/2)
#retour origine
for t in range(2050-(posMin+origineDecal)):
for step in ??:
for i in range(len(pins)):
pins[i].value(step[i])
sleep(0.001)
sleep(0)
#arrêt complet du moteur
for i in range(len(pins)):
pins[i].value(0)
sleep(0.001)
#affichage led 0.5s et afficheur
oled.text('Origine prise !', 0, 20)
oled.show()
led.value(1)
sleep(0.5)
led.value(0)
#efface l'écran
oled.fill(0)
oled.show()
Ligne 21 : compléter le contenu du tableau pour que le moteur tourne dans le sens horaire, compte tenu de ce qui est proposé pour le sens anti-horaire.
Ligne 23 : mettre le numéro de broche du capteur à effet hall
Ligne 26 : mettre le numéro de broche de la led du circuit du capteur à effet hall
Ligne 50 : écrire le nom du tableau à la place des point interrogation qu'il faut utiliser pour tourner dans le sens horaire
Test du programme sur la maquette
a- Activer le grapheur : menu Affichage
b- Lancer le programme et observer sur le grapheur l'évolution du signal qui correspond au niveau du champ électromagnétique.
c- Compléter alors le schéma ci dessous pour vous permettre de faire la capture d'écran pour la trace écrite.
Ne pas chercher à Valider - tous les capteurs ont des valeurs différentes !
ATTENTION : Pour relancer une autre fois le programme, il ne faut pas que l'aimant soit sur son origine
TOUTES LES LEDS du moteur pas à pas doivent être éteintes pour faire tourner à la main le grand engrenage
d- Le message sur l'afficheur à la fin du programme ne s'affiche que 0,5s. Modifier la durée pour voir le message 4s.
e- Le led doit s'éteindre au bout de 2s et le message doit s'éteindre au bout de 5s. Modifier le programme en conséquence.