🎉 Black Friday is Here! Enjoy Up to 35% Off ~ Offer Ends November 30th!
DriveCell est un appareil petit mais puissant qui vous permet de contrôler facilement les moteurs, les actionneurs et les lumières LED haute puissance pour vos projets de bricolage. DriveCell facilite le contrôle de ces composants, même si vous débutez en programmation ou en électronique.
Dans ce tutoriel, nous expliquerons :
Qu'est-ce que DriveCell ?
Imaginez que vous vouliez fabriquer un petit robot et contrôler la vitesse et la direction de son moteur. Cela peut être complexe pour les débutants et nécessite généralement des modules volumineux. DriveCell simplifie ce processus car :
Comment fonctionne DriveCell ?
DriveCell utilise une puce de pont en H DRV8837 intégrée pour contrôler le flux de courant à travers les broches de sortie, contrôlé par l'état des broches d'entrée :
La puce DRV8837 offre une protection contre les surintensités, un verrouillage en cas de sous-tension et des fonctions d'arrêt thermique, garantissant un fonctionnement sûr.
Premiers pas avec DriveCell
Avant de pouvoir commencer à utiliser DriveCell , vous devez le configurer et le connecter à votre projet. Voici un guide simple pour vous aider à démarrer :
1. Init()
Nous avons d’abord besoin d’un code de configuration de base pour vous permettre de démarrer :
#include <DriveCell.h> // This line includes the DriveCell library
DriveCell myDriveCell(IN1, IN2); // Replace IN1 and IN2 with your specific pins
void setup() {
myDriveCell.Init(); // Initializes the DriveCell
}
Ce code indique au DriveCell de démarrer et de se préparer à contrôler votre moteur ou votre actionneur. La fonction Init s'assure que tous les périphériques nécessaires sont configurés.
2. Impulsion (bool direction, uint8_t ms_duration)
Cette commande envoie une courte rafale de puissance dans une polarité spécifiée, pour dynamiser rapidement l'actionneur et le réteindre.
myDriveCell.Pulse(true, 10); // Short burst for 10 milliseconds
3. Buzz (uint16_t us_buzz)
Cela fait vibrer l'actionneur comme un buzzer. C'est idéal pour créer des sons de retour.
myDriveCell.Buzz(100); // Creates a 100us buzzing sound
4. Tonalité()
Cette fonction émet une tonalité par défaut en faisant vibrer l'actionneur à différentes fréquences enregistrées.
myDriveCell.Tone(); // Plays varying tones
5. Basculer(uint8_t power_percent)
Cette fonction change simplement le sens de rotation à 100 % de puissance, ce qui peut être utile pour inverser le sens de rotation d'un moteur à balais ou créer de simples mouvements de battement.
myDriveCell.Toggle(); // Switches direction
En utilisant le CodeCell ou tout autre microcontrôleur ESP32, vous pouvez également ajuster le rapport cyclique « power_percent ». Pour les actionneurs magnétiques, le « power_percent » contrôle la force magnétique, tandis que pour les moteurs à balais, il ajuste la vitesse.
6. Exécuter(bool smooth, uint8_t power_percent, uint16_t flip_speed_ms)
En utilisant le CodeCell ou tout autre microcontrôleur ESP32, cette fonction vous permet d'inverser la polarité d'un actionneur ou d'inverser un moteur toutes les « flip_speed_ms » au cycle de service « power_percent ». Le réglage de « smooth » sur 1 adoucit le mouvement, ce qui est idéal pour piloter le FlatFlap ou le CoilPad avec des mouvements lents (moins de 2 Hz).
myDriveCell.Run(true, 50, 1000); // Smooth drive at 50% power every 1000 ms
Pour les autres appareils Arduino, cette commande permet au moteur/actionneur d'inverser sa direction (vers l'avant et vers l'arrière) à pleine vitesse. Par exemple :
myDriveCell.Run(500); // Motor changes direction every 500 milliseconds
7. Drive(bool direction, uint8_t power_percent)
En utilisant le CodeCell ou tout autre microcontrôleur ESP32, cette fonction vous permet de contrôler la vitesse et la direction de votre moteur. Vous pouvez faire avancer ou reculer le moteur et ajuster sa vitesse.
myDriveCell.Drive(true, 75); // Moves forward at 75% power
Exemples :
En utilisant l'une de ces fonctions dans une boucle, vous pouvez créer la séquence souhaitée pour votre moteur, votre actionneur ou vos LED haute puissance. Voici un exemple où nous initialisons deux moteurs à courant continu et les pilotons à des vitesses différentes :
#include <DriveCell.h>
#define IN1_pin1 2
#define IN1_pin2 3
#define IN2_pin1 5
#define IN2_pin2 6
DriveCell Motor1(IN1_pin1, IN1_pin2);
DriveCell Motor2(IN2_pin1, IN2_pin2);
uint8_t mode = 0;
uint8_t speed_percentage = 0;
void setup() {
Motor1.Init();
Motor2.Init();
speed_percentage = 80; /* Régler le moteur à 80 % de puissance */
}
boucle vide() {
délai(3000);
mode++;
commutateur (mode) {
cas 1:
/* Avancer */
Motor1.Drive(1, pourcentage_vitesse);
Motor2.Drive(1, pourcentage_vitesse);
casser;
cas 2:
/* Déplacer vers l'arrière */
Motor1.Drive(0, pourcentage_vitesse);
Motor2.Drive(0, pourcentage_vitesse);
casser;
cas 3:
/* Tourner à gauche */
Motor1.Drive(1, pourcentage_vitesse);
Motor2.Drive(0, pourcentage_vitesse);
casser;
cas 4:
/* Tournez à droite */
Motor1.Drive(0, pourcentage_vitesse);
Motor2.Drive(1, pourcentage_vitesse);
casser;
cas 5:
/* Éteignez les deux moteurs */
Moteur1.Drive(1, 0);
Moteur2.Drive(1, 0);
si (pourcentage_vitesse < 95) {
speed_percentage += 5; /* Incrémenter la vitesse */
} autre {
speed_percentage = 50; /* Réinitialiser à 50 % de puissance */
}
mode = 0;
casser;
}
}
Dans l'exemple suivant, nous utilisons le capteur de proximité du CodeCell pour activer les moteurs. Ce capteur agira comme un interrupteur gestuel et s'activera lorsqu'une main se trouvera à moins de 5 cm.
#include <CodeCell.h>
#include <DriveCell.h>
#define IN1_pin1 2
#define IN1_pin2 3
#define IN2_pin1 5
#define IN2_pin2 6
CodeCell myCodeCell;
DriveCell Motor1(IN1_pin1, IN1_pin2);
DriveCell Motor2(IN2_pin1, IN2_pin2);
uint8_t speed_percentage = 0;
bool on_flag = 0;
void setup() {
Serial.begin(115200); /* Set Serial baud rate to 115200. Ensure Tools/USB_CDC_On_Boot is enabled if using Serial. */
myCodeCell.Init(LIGHT); /*Initializes Light Sensing*/
Motor1.Init();
Motor2.Init();
speed_percentage = 100;
}
void loop() {
if (myCodeCell.Run()) {
/*Runs every 100ms - Put your code here*/
if (myCodeCell.Light_ProximityRead() > 3000) {
/*Si un tapotement est détecté, la LED s'allume en jaune pendant 1 seconde*/
monCodeCell.LED(0XA0, 0x60, 0x00U);
Moteur1.Drive(0, 0);
Moteur2.Drive(0, 0);
délai(1000);
sur_drapeau = !sur_drapeau;
}
si (sur_drapeau) {
/*Avancer*/
Motor1.Drive(1, pourcentage_vitesse);
Motor2.Drive(1, pourcentage_vitesse);
} autre {
Moteur1.Drive(0, 0);
Moteur2.Drive(0, 0);
}
}
}
Si vous avez d'autres questions sur le DriveCell, n'hésitez pas à nous envoyer un e-mail et nous serons heureux de vous aider !
Soyez le premier informé des nouveaux projets et bénéficiez d'offres intéressantes !
© 2024 Microbots.