Ce principe fonctionne bien en théorie mais en pratique c'est plus complexe malheureusement, même si le Arduino sait combien de pas il faut pour revenir à la position initiale.
En cas d'effort mécanique ou si le disque rencontre un résistance, des pas du moteurs peuvent sauter idem lors d'une accélération trop rapide. Le Arduino n'a aucun moyen de s'en rendre compte. En cas de coupure d'alimentation le Arduino perd sa capacité à retrouver la position de départ car quand l'alimentation va revenir tout va redémarrer de zéro et si le disque était dans une certaine position, celle-ci est perdue.
Tu as raison de te poser cette question car c'est un des principaux problèmes de l'électronicien "la condition de démarrage".
- Si tu choisis de te passer d'un capteur de position alors il te faut lister tout ce qui peut arriver et qui te ferait perdre cette information, pour y palier. Par exemple, mesurer la tension d'alimentation et prévoir un gros condensateur en guise de réservoir d'énergie pour qu'en cas de coupure de courant, le Arduino ait le temps de sauvegarder la position du moteur (le nombre de pas depuis le début) pour qu'au prochain démarrage il fasse un décompte de ce nombre de pas afin de faire revenir le moteur à son origine. Concernant les loupés du moteur donc du nombre de pas, il n'y a pas de solution. Tout ceci demande la mise en place d'une électronique pas forcément simple à dimensionner sans compter qu'on peut se heurter a des problèmes de taille comme l'inertie de la pièce reliée au moteur qui n'est plus alimenté. Et si jamais tout est hors tension et que quelque chose fait que le disque tourne encore, même pas longtemps ? Comment savoir où est ce qu'il s'est arrêté ?
- Si tu prends un capteur de position, tu t'affranchis de tous ces problèmes (c'est le cas dans toutes les imprimantes a jet d'encre entres autres, au démarrage de l'impression elles vont au point zéro via des capteurs de position)
Partager