Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Lévitation magnétique avec Arduino

Composants et fournitures

Arduino Nano R3
Vous pouvez utiliser n'importe quel arduino, mais le shield est fait pour le Nano.
× 1
Électro-aimant 12v 25mm de diamètre.
× 1
Capteur à effet Hall linéaire 49E
N'utilisez pas de commutateur à effet Hall.
× 1
Transistor haute puissance Darlington
TIP 120
× 1
Résistance 1k ohm
× 1
1N4007 – Diode haute tension et courant nominal élevé
× 1
Alimentation 12V 1A
× 1
Planche à pain (générique)
× 1
Interrupteur à bouton-poussoir SparkFun 12mm
× 2
Câbles de raccordement (générique)
× 1

Applications et services en ligne

Arduino IDE

À propos de ce projet

Levitator avec Arduino.

Vous pouvez imprimer le corps en 3D ou non.

https://www.thingverse.com/thing:1392023

  • Facile à imprimer et à monter (juste un peu de colle, pas de vis).
  • Installez simplement le firmware (Levitator.ino) dans la carte arduino.
  • Pas besoin d'ordinateur, juste de l'alimentation 12V, après avoir installé le firmware.
  • Utilisez les commutateurs pour régler la position de l'aimant permanent.
  • Utilisez le moniteur série arduino pour voir la valeur correcte pour vous.
  • Vous pouvez coder en dur la valeur correcte dans votre jouet.

Vous pouvez utiliser une protoboard ou fabriquer votre carte (Arduino Nano).

http://www.thingverse.com/thing:1392530

Ou achetez-en un :

https://oshpark.com/shared_projects/kxH3Ak1b

Attention :

  • Mettez le capteur à effet hall au bas de la pointe (top_sensor.stl) voir les images ;
  • Pour fonctionner correctement, le capteur à effet Hall doit être à au moins 5 mm de distance électromagnétique ;
  • Vous pouvez utiliser d'autres capteurs à effet Hall linéaire (ne pas utiliser le interrupteur à capteur Hall );
  • Utilisez des aimants permanents en néodyme (cela ne fonctionnera pas avec des aimants communs) ;
  • Les objets lourds sont plus stables ;

Voir mes marques dans Thingiverse pour plus de détails et de conseils.

Levitator imprimé en 3D :

https://www.thingverse.com/make:201394

Bouclier pour Arduino Nano :

https://www.thingverse.com/make:201420

C'est facile.

Code

  • Levitator.ino
  • Levitator_PID.ino
Levitator.inoArduino
Code pour le jouet de lévitation magnétique avec Arduino.
Facile (pas de PID)//=========================================================|// Ekobots Innovation Ltda - www.ekobots.com.br |// Juan Sirgado y Antico - www.jsya.com.br |//- -------------------------------------------------- ------|// Programme Magnetic Levitator - 2016/02/06 |// Tous droits réservés 2016 |//=========================================================|int anaPin =1; // Broche analogique Arduino 1;int digPin =5; // Arduino Digital Pin 5; int subPin =7; // Arduino Digital Pin 7; int addPin =8; // Arduino Digital Pin 8; // int anaVal =0; // Valeur de lecture analogique (capteur Hall) ; valeur booléenne digVal =0 ; // Valeur d'écriture numérique (électroaimant) ; // int levVal =228 ; // Valeur de point de lévitation;int dlyVal =250; // Valeur de retard en microsecondes ; //------------------------------------------ ----------------|void setup(){ // Début de l'initialisation du Levitator ; Serial.begin (57600); Serial.println("Levitator par JSyA"); Serial.println("Démarrage..."); // Configuration du mode de travail des broches numériques ; pinMode(digPin, SORTIE); pinMode(sousPin, INPUT_PULLUP); pinMode(addPin, INPUT_PULLUP); // Fin de l'initialisation du Levitator ; Serial.println("Démarré.");}//------------------------------------- --------------------|void loop() { // Lecture du capteur à effet Hall (intensité du champ magnétique); anaVal =analogRead(anaPin); // Augmenter la valeur du point de lévitation ; if (digitalRead(addPin) ==LOW) { levVal++; valeur_log(); retard (250); } // Diminue la valeur du point de lévitation ; if (digitalRead(subPin) ==LOW) { levVal--; valeur_log(); retard (250); } // Vérifier le point de lévitation ; if (anaVal levVal) { digVal =HIGH; } // // Activer/désactiver l'électro-aimant ; // Avec base sur la valeur du capteur et le point de lévitation ; digitalWrite(digPin, digVal); delayMicroseconds(dlyVal);}//------------------------------------------ ---------------|void value_log()// Impression des valeurs analogiques/numériques/de lévitation ;{ // Affiche la valeur du capteur à effet Hall ; Serial.print("anaVal="["); Serial.print(anaVal); Serial.print("]-"); // Affiche l'état de l'électroaimant On=1/Off=0 ; Serial.print("digVal="["); Serial.print(digVal); Serial.print("]-"); // Afficher la valeur du point de lévitation ; Serial.print("levVal="["); Serial.print(levVal); Serial.println("];");}//=========================================================|
Levitator_PID.inoArduino
Code pour le jouet de lévitation magnétique avec Arduino.
Difficile (version PID)//=========================================================|// Ekobots Innovation Ltda - www.ekobots.com.br |// Juan Sirgado y Antico - www.jsya.com.br |//- -------------------------------------------------- ------|// Programme Magnetic Levitator PID - 2016/10/06 |// Tous droits réservés 2016 |//=========================================================|int anaPin =1; // Broche analogique Arduino 1int digPin =5; // Arduino Digital Pin 5int subPin =7; // Arduino Digital Pin 7int addPin =8; // Broche numérique Arduino 8//int anaVal =0; // Valeur analogique digVal =0; // Valeur numérique//int levVal =262; // Valeur de lévitationint dlyVal =10; // Valeur de délai//float timVal =0; // Valeur de temps//-------------------------------------------- -------------|// Valeurs PIDpoint de consigne flottant =0;valeur_mesurée flottante =0;sortie flottante =0;intégrale flottante =0;dérivée flottante =0;erreur flottante =0;erreur_flottante précédente =0;float dt =0,1;float Kp =1,0;float Ki =0,1;float Kd =0,01;//-------------------------- -------------------------------|void setup(){ // Début de l'initialisation du Levitator ; Serial.begin (57600); Serial.println("Levitator par JSyA"); Serial.println("Démarrage..."); // Configuration du mode de travail des broches numériques ; pinMode(digPin, SORTIE); pinMode(addPin, INPUT_PULLUP); pinMode(sousPin, INPUT_PULLUP); // timVal =millis(); point de consigne =levVal; // Fin de l'initialisation du Levitator ; Serial.println("Démarré.");}//------------------------------------- --------------------|boucle vide() // PID{ // Lecture du capteur à effet Hall (intensité du champ magnétique); anaVal =analogRead(anaPin); // Calculs PID valeur_mesurée =anaVal; erreur =point de consigne - valeur_mesurée ; intégrale =intégrale + erreur * dt; dérivée =(erreur - erreur_précédente) / dt; sortie =(-Kp * erreur) + (-Ki * intégrale) + (-Kd * dérivée) ; erreur_précédente =erreur ; // Configuration de la valeur finale digVal +=sortie ; // Vérifier la valeur du point de lévitation ; si (val_dig <0)Val_dig=0 ; si (digVal> 255) digVal=255 ; // Augmenter/Diminuer la valeur pour l'électroaimant ; // Avec base sur la valeur du capteur et le point de lévitation ; analogWrite(digPin, digVal); // Afficher les valeurs du journal pour le débogage ; // if((millis()-timVal)> 500)// {// value_log();// timVal =millis();// } // Augmenter la valeur du point de lévitation; if (digitalRead(addPin) ==LOW) { setpoint++; valeur_log(); retard (250); } if (digitalRead(subPin) ==LOW) { setpoint--; valeur_log(); retard (250); } // Le temps entre les changements d'état de l'électroaimant ; delayMicroseconds(dlyVal);}//------------------------------------------ ---------------|void value_log()// Impression des valeurs analogiques/numériques/de lévitation ;{ // Affiche la valeur du capteur à effet Hall ; Serial.print("anaVal="["); Serial.print(anaVal); Serial.print("]-"); // Affiche l'état de l'électroaimant On=1/Off=0 ; Serial.print("digVal="["); Serial.print(digVal); Serial.print("]-"); // Afficher la valeur du point de lévitation ; Serial.print("setpoint="["); Serial.print(consigne); Serial.println("];");}//=========================================================|

Schémas

IDE frit

Processus de fabrication

  1. horloge IV9 Numitron DIY la plus simple avec Arduino
  2. Surveillance du CO2 avec le capteur K30
  3. Communication sourds-aveugles avec 1Sheeld/Arduino
  4. Contrôler l'accepteur de pièces avec Arduino
  5. Arduino avec Bluetooth pour contrôler une LED !
  6. Capteur d'empreintes digitales capacitif avec un Arduino ou ESP8266
  7. Jouer avec Nextion Display
  8. Bras robotique contrôlé par Nunchuk (avec Arduino)
  9. Lévitation électromagnétique répulsive Arduino