Ce guide explique comment le FlatFlap peut contrôler son mouvement de battement, comment la fréquence et la polarité affectent son mouvement et comment générer ses signaux d'entraînement.
Pour faire bouger le FlatFlap, un courant électrique est appliqué à sa bobine, générant un champ magnétique. En inversant la polarité à une fréquence donnée, on crée un mouvement de va-et-vient répétitif qui fait osciller le volet.
La fréquence de battement peut être contrôlée entre 1 Hz et 25 Hz, ce qui signifie que FlatFlap peut battre entre 1 et 25 fois par seconde, selon le signal d'entrée. Il peut atteindre des fréquences plus élevées, mais l'aimant n'a généralement pas le temps de réagir.
UN Un signal carré est nécessaire pour actionner le clapet FlatFlap. Un pilote en pont en H, comme notre DriveCell, est nécessaire pour alimenter l'actionneur et inverser sa polarité. Les signaux d'entrée du signal carré peuvent être générés à l'aide d'une simple commande digitalWrite() dans Arduino :
#define FLAP_PIN1 2
#define FLAP_PIN2 3
void setup() {
pinMode(FLAP_PIN1, OUTPUT);
pinMode(FLAP_PIN2, OUTPUT);
}
void loop() {
digitalWrite(FLAP_PIN1, HIGH);
digitalWrite(FLAP_PIN2, LOW);
delay(100); // Adjust delay for desired flapping speed
digitalWrite(FLAP_PIN1, LOW);
digitalWrite(FLAP_PIN2, HIGH);
delay(100);
}
Ce code simple crée une oscillation carrée, provoquant un battement continu de FlatFlap. Vous pouvez ajuster le temps de retard pour modifier la fréquence de battement.
La fréquence que vous sélectionnez dépendra des exigences de votre projet :
En ajustant le temps de retard dans le code Arduino, vous pouvez affiner la fréquence pour qu'elle corresponde aux besoins de votre projet.
Plusieurs facteurs influencent l’efficacité du mouvement de battement :
L'exemple de code ci-dessus génère une onde carrée basique qui, comme vous l'avez peut-être observé, commande le volet de manière brutale, selon une approche tout ou rien, ce qui peut être indésirable à basses fréquences. Pour lisser ce phénomène, nous devons utiliser la modulation de largeur d'impulsion (MLI) sur les deux sorties. Cette méthode modifie progressivement l'intensité du champ magnétique, réduisant ainsi les contraintes mécaniques sur l'actionneur FlatFlap.
Cette fonction est gérée automatiquement dans notre bibliothèque DriveCell :
# include <DriveCell.h>
# define IN1_pin1 2
# définir IN1_pin2 3
# définir IN2_pin1 5
# définir IN2_pin2 6
DriveCell FlatFlap1 ( IN1_pin1 , IN1_pin2 ) ;
DriveCell FlatFlap2 ( IN2_pin1 , IN2_pin2 ) ;
uint16_t flap_counter = 0 ;
configuration vide ( ) {
FlatFlap1 .Init ( ) ;
FlatFlap2 .Init ( ) ;
FlatFlap1 . Tone ( ) ;
FlatFlap2 . Tone ( ) ;
}
boucle vide ( ) {
retard ( 1 ) ;
compteur_volet ++ ;
si ( compteur_flap < 2000U ) {
FlatFlap1 . Run ( 0 , 100 , 100 ) ; // Mode onde carrée
FlatFlap2 . Run ( 0 , 100 , 100 ) ; // Mode onde carrée
}
sinon si ( flap_counter < 8000U ) {
FlatFlap1 . Run ( 1 , 100 , 1000 ) ; // Mode d'onde PWM lisse
FlatFlap2 . Run ( 1 , 100 , 1000 ) ; // Mode d'onde PWM lisse
} autre {
compteur_flap = 0U ;
FlatFlap1 . Drive ( 0 , 100 ) ; // Volet Sud à 100 % de puissance
FlatFlap2 . Drive ( 1 , 100 ) ; // Volet Nord à 100 % de puissance
retard ( 500 ) ;
FlatFlap1 . Drive ( 1 , 100 ) ; // Volet Nord à 100 % de puissance
FlatFlap2 . Drive ( 1 , 100 ) ; // Volet Nord à 100 % de puissance
retard ( 500 ) ;
FlatFlap1 . Drive ( 1 , 100 ) ; // Volet Nord à 100 % de puissance
FlatFlap2 . Drive ( 0 , 100 ) ; // Volet Sud à 100 % de puissance
retard ( 500 ) ;
FlatFlap1 . Drive ( 1 , 50 ) ; // Volet Nord à 50 % de puissance
FlatFlap2 . Drive ( 1 , 75 ) ; // Volet Nord à 75 % de puissance
retard ( 500 ) ;
FlatFlap1 . Drive ( 0 , 25 ) ; // Volet Sud à 25 % de puissance
FlatFlap2 . Drive ( 0 , 50 ) ; // Volet Sud à 50 % de puissance
}
}
Comprendre les fonctions :
Init()
→ Initialise DriveCell et configure les broches d'entréeDrive(direction, power)
→ Actionneur de commande :
direction
→ 1
(nord) / 0
(sud)power
→ Intensité du champ magnétique (0 à 100 %)Run(smooth, power, speed_ms)
→ Osciller le FlatFlap soit dans une onde carrée, soit dans une onde PWM plus douce.
smooth
→ 1
(onde pwm) / 0
(onde carrée)power
→ Intensité du champ magnétique (0 à 100 %)power
→ Vitesse de retournement en millisecondes⚠ Remarque : la fonction Run() & Drive()
utilise un Minuterie PWM haute vitesse, la rendant compatible uniquement avec les appareils basés sur CodeCell et ESP32.
Grâce à ces techniques, vous pouvez intégrer FlatFlap à la robotique, à l'haptique et à l'art ! Consultez le dépôt GitHub DriveCell pour plus d'exemples de code et de documentation technique !
Soyez le premier informé des nouveaux projets et bénéficiez d'offres intéressantes !
© 2025 Microbots.