Table des matières:

Minuterie Stepper Pomodoro : 3 étapes (avec photos)
Minuterie Stepper Pomodoro : 3 étapes (avec photos)

Vidéo: Minuterie Stepper Pomodoro : 3 étapes (avec photos)

Vidéo: Minuterie Stepper Pomodoro : 3 étapes (avec photos)
Vidéo: 3 Hours Countdown Timer Flip Clock 🎵 / +Ambient🧘‍♀️+ Bells🔔 2024, Juillet
Anonim
Image
Image
Étape 1: circuit de soudure et de connexion à l'extérieur du conteneur
Étape 1: circuit de soudure et de connexion à l'extérieur du conteneur

Le Stepper Pomodoro est une minuterie de bureau pour aider à gérer sa liste de tâches quotidiennes en divisant chaque période de travail en segments de 30 minutes. Cependant, contrairement à une minuterie Pomodoro normale, cela ne vous rend pas anxieux en affichant le temps restant. Au lieu de cela, il affiche l'heure approximative via laquelle des trois cadrans est en marche. En n'affichant pas l'heure exacte, cela vous permet de vous concentrer sur la tâche à accomplir, plutôt que de vérifier constamment votre temps restant. Ce Pomodoro est parfait pour ceux qui ont besoin d'une structure légère et discrète pour la gestion de leurs tâches.

Outils

• Fer à souder

• Pince à dénuder

• Découpeuse laser (ou ponceuse selon la façon dont vous souhaitez créer les cadrans de la minuterie)

• Perceuse (j'ai utilisé une perceuse à colonne pour percer des trous assez grands pour les cadrans)

Matériaux

• 1 Arduino Uno

• 1 planche à pain demi-taille

• 3 ponts en H (j'ai utilisé le DRV8833, un bouclier moteur m'aurait fait gagner du temps et des maux de tête)

• 3 moteurs pas à pas (j'ai utilisé des moteurs pas à pas NEMA 17)

• 1 bouton

• 1 résistance de 220-1K ohm (toute dans la plage est bonne)

• Adaptateur AC/DC (j'ai utilisé un 12V, probablement trop gros pour cette quantité de steppers)

• Répartiteur de puissance

• Câble USB A-B

• Fils de la planche à pain

• Soudure

• Matériaux pour le conteneur de la minuterie

• Acrylique pour cadrans

• Des clous ou des épingles en métal servant de bras fixe à la minuterie

Étape 1: Étape 1: Souder et connecter le circuit à l'extérieur du conteneur

Pour cette étape, j'ai commencé par souder tous mes ponts en H (si vous achetez le blindage du moteur, vous ne devriez pas avoir besoin de les souder. Une fois que vous avez un pont en H pour chaque pas à pas, vous pouvez vérifier comment vos pas à pas sont câblés.

Les NEMA 17 sont ce qu'on appelle des moteurs pas à pas bipolaires, ce qui signifie qu'ils ont deux (plutôt qu'un) ensemble de bobines dans le moteur qui changent de polarité pour permettre un mouvement précis du moteur. Les steppers bipolaires ont normalement quatre fils et les steppers polaires en ont normalement six, ce qui complique un peu les instructions en ligne. Cependant, vous pouvez attacher un multimètre à deux fils et voir s'ils sont connectés ou non. Les steppers NEMA 17 ont leur ordre de fil dans l'ordre des couleurs ROUGE, JAUNE, GRIS, VERT, le rouge et le gris étant la première paire polaire et le jaune et le vert étant la deuxième paire polaire. Si, à un moment donné, le stepper commence à trembler au lieu de terminer le mouvement attendu, il y a de fortes chances que vos fils ne soient pas correctement polarisés par rapport à leur jumeau ou que l'un d'eux soit déconnecté. Chaque stepper est contrôlé via quatre broches de sortie qui se connectent aux ponts DRV8833 H. L'ordre de câblage pour l'entrée du DRV8833 est: IN1, IN2, Power, Ground, IN3, IN4. À des fins de sortie, le NEMA se connecte simplement aux quatre des six broches du milieu dans l'ordre suivant: ROUGE, GRIS, JAUNE, VERT. Maintenant, connectons l'alimentation. J'ai mes NEMA sur les ports numériques 2 à 13.

Pour alimenter cela, j'ai acheté un adaptateur 12V AC/DC avec répartiteur pour pouvoir alimenter à la fois l'Arduino et tous les steppers. AVERTISSEMENT: ne connectez pas vos fils d'alimentation et de terre de l'Arduino déjà alimenté par le port à la maquette recevant l'alimentation directe de l'AC/DC. Il fera frire votre planche. De l'adaptateur 12V branché au mur, une partie du séparateur est allée directement au port de l'Arduino et l'autre au positif et au négatif de la planche à pain.

Enfin, il est temps de brancher le bouton. Un côté du bouton aura besoin à la fois de l'alimentation (avec notre résistance épissée) ainsi que de la broche de sortie soudée (cela peut également être fait à partir de la planche à pain). L'autre broche sera notre terre. Ces trois fils doivent être branchés sur: Alimentation avec résistance à 5 V, sortie à A0 et terre à terre, le tout sur la carte Arduino Uno elle-même.

À partir de là, nous devrions pouvoir essayer de contrôler les steppers à l'aide de ce code de test de stepper de base trouvé ici. Cette explication sur Arduino.cc fournit également une explication plus approfondie des steppers bi/unipolaires si vous en avez besoin. Passons maintenant au code du Pomodoro !

Étape 2: Étape 2: Télécharger le code et l'adapter à vos besoins

Étape 2: Télécharger le code et l'adapter à vos besoins
Étape 2: Télécharger le code et l'adapter à vos besoins

Vous trouverez ci-dessous le code de mon Pomodoro avec bouton, afin de le personnaliser selon votre configuration, suivez ces étapes:

1. Définissez le nombre de pas par révolution de votre type de stepper personnel (les NEMA 17 en ont 200 et il est répertorié dans l'entier constant appelé stepsPerRevolution).

2. Définissez l'emplacement de saisie de votre bouton dans le bouton Pin de l'appelant entier constant.

3. Définissez l'endroit où votre arduino doit sortir pour commander les pas à pas (ces parties peuvent varier le plus entre les types de ponts en H, car beaucoup ont des bibliothèques différentes qu'ils utilisent).

4. Réglez la vitesse du pas à pas en tr/min dans le.setSpeed (j'ai le mien réglé sur 1 tr/min en tournant dans le sens des aiguilles d'une montre et 30 tr/min dans le sens inverse des aiguilles d'une montre).

5. Définissez combien de fois vous voulez que chacun de vos steppers tourne avant de continuer (mes steppers comptent dix minutes, ils tournent donc dix fois à 1 RPM).

6 Définissez combien de temps vous souhaitez qu'il tourne vers l'arrière.

#comprendre

const int étapesParRévolution = 200; // définition de la constante du nombre de pas dans chaque révolution complète de mes moteurs pas à pas

const int buttonPin = A0; // définition de la constante de mon entrée de bouton

Stepper firstStepper(stepsPerRevolution, 2, 3, 4, 5); // initialise la bibliothèque pas à pas sur certaines broches

Stepper secondStepper(stepsPerRevolution, 6, 7, 8, 9); Stepper thirdStepper(stepsPerRevolution, 10, 11, 12, 13); Stepper firstStepperBack(stepsPerRevolution, 2, 3, 4, 5); // réinitialise la bibliothèque pas à pas sur ces broches pour pouvoir réinitialiser le rpm pour l'alerte que le temps a expiré Stepper secondStepperBack(stepsPerRevolution, 6, 7, 8, 9); Stepper thirdStepperBack(stepsPerRevolution, 10, 11, 12, 13);

int minutesCounter = 0; // int comptant les révolutions complètes des steppers

int timerState = LOW; // l'état actuel de la minuterie pomodoro (HIGH = on, LOW = off/reset) int buttonState; // la lecture actuelle de la broche d'entrée int lastButtonState = HIGH; // la lecture précédente de la broche d'entrée

// les variables suivantes sont des variables longues non signées car le temps, mesuré en millisecondes, // deviendra rapidement un nombre plus grand que ce qui peut être stocké dans un int. non signé long lastDebounceTime = 0; // la dernière fois que la broche de sortie a été basculée unsigned long debounceDelay = 50; // le temps de rebond; augmenter si la sortie scintille

void setup() {

pinMode(boutonPin, INPUT_PULLUP); // définit la constante du bouton comme entrée

firstStepper.setSpeed(1); // définit la vitesse à 1 tr/min pour compter 10 minutes par seconde pas à pasStepper.setSpeed(1); ThirdStepper.setSpeed(1); firstStepperBack.setSpeed(30); // définit la vitesse à 30 tr/min pour alerter que le temps a expiré après que Pomodoro ait terminé secondStepperBack.setSpeed(30); troisièmeStepperBack.setSpeed(30);

Serial.begin(9600); // démarre le moniteur série avec un débit de 9600 bauds

}

boucle vide() {

// lit l'état du commutateur dans une variable locale: int lecture = digitalRead(buttonPin);

// vérifie si vous venez d'appuyer sur le bouton

// (c'est-à-dire que l'entrée est passée de LOW à HIGH), et vous avez attendu // assez longtemps depuis la dernière pression pour ignorer tout bruit:

// Si le commutateur a changé, à cause du bruit ou d'un appui:

if (reading != lastButtonState) { // réinitialiser la minuterie anti-rebond lastDebounceTime = millis(); } if ((millis() - lastDebounceTime) > debounceDelay) { // quelle que soit la lecture, elle est là depuis plus longtemps // que le délai anti-rebond, alors prenez-le comme l'état actuel réel:

// si l'état du bouton a changé:

if (reading != buttonState) { buttonState = lecture;

// ne bascule l'activation de la minuterie que si le nouvel état du bouton indique qu'il a été enfoncé

// appuyez une fois pour allumer, appuyez à nouveau pour éteindre if (buttonState == LOW) { timerState = !timerState; Serial.print("L'état de la minuterie est "); Serial.println(timerState); } } }

if (timerState == HIGH) {

Serial.println("Le minuteur Pomodoro a commencé"); if (minutesCounter < 11) { //si la deuxième valeur actuelle est différente de la valeur précédente, alors firstStepper.step(stepsPerRevolution); // tourne pas à pas 200 pas/1 tour minutesCounter++; Serial.print("minutesCounter est "); Serial.println(minutesCounter); }

if (11 <= minutesCounter && minutesCounter < 21) { //si la seconde valeur actuelle est différente de la valeur précédente, alors secondStepper.step(stepsPerRevolution); // tourne pas à pas 200 pas/1 tour minutesCounter++; Serial.print("minutesCounter est "); Serial.println(minutesCounter); }

if (21 <= minutesCounter && minutesCounter < 31) { //si la deuxième valeur actuelle est différente de la valeur précédente, alors thirdStepper.step(stepsPerRevolution); // tourner le stepper 200 pas/1 rev minutesCounter++; Serial.print("minutesCounter est "); Serial.println(minutesCounter); }

if (31 <= minutesCounter && minutesCounter < 1031) { //si la seconde valeur actuelle est différente de la valeur précédente alors firstStepperBack.step(-1); // fait reculer le stepper d'1 pas dans la séquence pour qu'il apparaisse comme si tous s'exécutent simultanément secondStepperBack.step(-1); troisièmeStepperBack.step(-1); Compteur de minutes++; Serial.print("minutesCounter est "); Serial.println(minutesCounter); } } else { Serial.println("Le minuteur Pomodoro est éteint"); } // enregistre la lecture. La prochaine fois dans la boucle, // ce sera le lastButtonState: lastButtonState = read; }

Étape 3: Étape 3: Contenir les Steppers et Arduino si vous le souhaitez

Étape 3: Contenez les Steppers et Arduino si vous le souhaitez
Étape 3: Contenez les Steppers et Arduino si vous le souhaitez
Étape 3: Contenez les Steppers et Arduino si vous le souhaitez
Étape 3: Contenez les Steppers et Arduino si vous le souhaitez
Étape 3: Contenez les Steppers et Arduino si vous le souhaitez
Étape 3: Contenez les Steppers et Arduino si vous le souhaitez

J'ai choisi de créer une forme parallélogramme pour mon horloge. Cette forme et les choix de matériaux du chêne rouge ont été inspirés par les meubles modernes du milieu du siècle. L'une des parties avec lesquelles j'ai eu le plus de difficulté a été d'équiper les steppers de cadrans à travers leurs hublots pour être vus.

Conseillé: