Rotabators¶
Batteur musical électromécanique piloté en réseau wifi.
Parts¶
Composants | Quantité | datasheet | Fichiers de Fab | Fichiers de CAO | Prix | Image |
---|---|---|---|---|---|---|
Corps-pile | 1 | 23-03-07_2706-Rotabators-001-Corps-V2-piles003.stl | ||||
Hélice-Hammer | 1 | 23-06-13_2706-Rotabator-Hélice001.stl | ||||
Corps-moteur | 1 | 23-03-07_2706-Rotabators-001-Corps-V2-piles003.stl | ||||
Capot-piles | 2 | 23-03-07_2706-Rotabators-001-Capot-piles.stl | ||||
CAD | 1 | 23-06-14_2706-Rotabator.FCStd | ||||
ESP32 DevKit Lipo | 1 | |||||
accéléromètre ADXL345 | 1 | |||||
ventouses | 2 à 3 | |||||
Batteries 18650 | 4 | |||||
moteur pas à pas | 1 | Nema-17 | No |
Code informatique¶
Accéléromètre MPU9250¶
https://invensense.tdk.com/wp-content/uploads/2015/02/PS-MPU-9250A-01-v1.1.pdf
Communication Max-MSP / esp32¶
Communication par protocole osc
exemple de lib pour esp32:
test 01: 23-02-24, code: https://github.com/madskjeldgaard/esp32-receive-osc-simple, Communication OK en wifi par le réseau local entre Max-MSP et l'esp32
Driver moteur¶
Elements utilisés: -Alim 24V
-Arduino UNO
-Driver DRV8825
-Ventilateur 24V type blower
-Condensateur 100µF
-Moteur pas à pas 12V
On a effectué le câblage ci-dessous:
DRV8825 | Connexions |
Enable | GND |
M0,M1,M2 | Pas cablés |
Reset | 5V |
Sleep | 5V |
Step | Digital 3 Arduino Uno |
Dir | Digital 2 Arduino Uno |
GND | GND |
Fault | 5V |
2A,1A,1B,2B | Moteur pas à pas |
GND MOT | GND |
VMOT | Alim externe |
Lien du dépot git :
Pour ce qui est de l'alimentation nous avons pour l'instant une alimentation 24V mais nous l'avons pris par dépit les autres que nous avons essayé n'étant pas assez stable vu que nous devions utiliser des pins intermédiaires. Par la suite nous allons donc revenir sur l'alimentation qui a été imprimé en 3D pour le projet une fois que la version sera stable.
Nous avons rencontré des problèmes avec les moteurs pas à pas vu que ceux-ci n'était pas clair avec quelle câble rejoignait lequel nous avons donc eu plusieurs courts circuits qui ont eu pour effet de faire chauffer énormément la plaquette ou était placé le driver, pour éviter les surchauffes nous avons donc choisit de câbler le pin fault du driver et d'installer un ventilateur.
Vmax moteur = 260µs par pas
Accéléromètre et Arduino UNO¶
Le but de l'accéléromètre pour notre projet est de mesurer la vitesse de rotation du moteur pas à pas. Pour cela nous avons utilisé un MPU-9250 (https://invensense.tdk.com/wp-content/uploads/2015/02/PS-MPU-9250A-01-v1.1.pdf).On a donc effectué le câblage ci-dessous:
MPU9250 | Arduino UNO |
GND | GND |
VCC | 5V |
SCL | A5 |
SDA | A4 |
On devra recevoir des valeurs relatives. On a ajouter 1,25 à la valeur AccelZ pour avoir les valeurs aux normes (-11 -> -9).
Pour cela on a utilisé une librairies "MPU9250.h" (lien de téléchargement de la lib en .zip http://robojax.com/learn/arduino/robojax-MPU9250-master.zip)
et un code qu'on a trouvé sur le net (http://robojax.com/learn/arduino/?vid=robojax-MPU9250) puis on a juste pris la partie qui nous intéresser qui est l'accéléromètre. Les valeurs qu'on recevait en moyenne étaient de AccelX:0.03 , AccelY:-0.10 , AccelZ:-9,89 .
Solénoïde et Arduino UNO¶
Pour utiliser le solénoïde nous allons avoir besoin d'utiliser un transistor une diode et une résistance de 220ohms, ici nous allons utiliser un tip120 car il peut gérer des tensions jusqu'à 60V, il faut maintenant que nous choisissions une alimentation mais attention celle-ci doit être adapté a vôtre solénoïde, le nôtre a besoin de 12V(JF-0530B).
Câblage:
Code:
https://git.cohabit.fr/boutrie.eytan/Rotabator/src/branch/Solenoide/Rotabator.ino
Communication ESP et moteur pas à pas¶
Nous avons réutiliser des morceaux de codes fournis via la librairie OSCMessage et dans l'exemple de ce dépot(https://github.com/madskjeldgaard/esp32-receive-osc-simple), après avoir fais fonctionner la LED de nôtre carte pour vérifier la communication il ne nous restait plus qu'à réadapter le code avec le moteur pas à pas.
Le code du maître va simplement envoyé un paquet UDP a la fréquences que l'on souhaite, la librairie que nous utilisons permet de transmettre des entiers des flotants ainsi que du texte, nous avons néanmoins seulement besoin d'envoyé des entiers, nous envoyons des 0 puis des 1.
Le code de l'esclave va avoir un peu plus de travail puisqu'il va devoir recevoir les paquets et les reécrire dans un objet de la classe OSCMessage pour que l'on puisse lire le contenu du paquet, il ne nous reste plus qu'a lire le premier bit du paquet pour savoir si il s'agit d'un 0 ou d'un 1 et écrire le pin step en fonction de ça.
Code Esclave:
https://git.cohabit.fr/boutrie.eytan/Rotabator/src/branch/Esclave
Code Maître:
https://git.cohabit.fr/boutrie.eytan/Rotabator/src/branch/Maître
Potentiomètre avec le moteur pas à pas¶
Nous avons utilisé un code sur le net pour effectuer la partie manuel de la rotation du moteur pas à pas. Celle-ci permet à que plus la valeur du potentiomètre est élevée plus le moteur accélère et plus elle est basse plus le moteur deccelère. Voici le cablâge qu'on a utilisé pour cette partie :
Code Potentiometre + stepper motor:
https://git.cohabit.fr/boutrie.eytan/Rotabator/src/branch/Potentiometer_+_stepperMotor