Table des matières:

Servocontrôleur série basé sur Arduino : 6 étapes
Servocontrôleur série basé sur Arduino : 6 étapes

Vidéo: Servocontrôleur série basé sur Arduino : 6 étapes

Vidéo: Servocontrôleur série basé sur Arduino : 6 étapes
Vidéo: Управление 32 сервомоторами с помощью PCA9685 и Arduino: V3 2024, Novembre
Anonim
Servocontrôleur série basé sur Arduino
Servocontrôleur série basé sur Arduino
Servocontrôleur série basé sur Arduino
Servocontrôleur série basé sur Arduino

Il s'agit d'un simple contrôleur série pour plusieurs servos basés sur l'Arduino. (mon premier instructable aussi:))

La plupart du travail consistait à faire parler le logiciel avec l'arduino et à créer un protocole pour que les données soient transmises. En ce qui concerne l'aspect matériel, tout ce que j'ai utilisé était deux servos (servo standard Parallax ici.) Un Sparkfun Arduino ProtoShield et un Arduino Duemilanove avec ATMEGA328, mais la plupart de ces pièces peuvent être remplacées par des articles similaires. J'ai pensé ce projet dans le cadre d'un système RC, mais la mise en place de la communication a pris beaucoup de temps. Si quelqu'un a des améliorations, des idées ou des bugs, n'hésitez pas à commenter. EDIT: J'ai écrit ceci il y a quelque temps, je viens de le publier récemment.

Étape 1: Choses dont vous pourriez avoir besoin…

Choses dont vous pourriez avoir besoin…
Choses dont vous pourriez avoir besoin…
Choses dont vous pourriez avoir besoin…
Choses dont vous pourriez avoir besoin…

Certaines choses dont vous aurez besoin pour construire ceci. 1. Carte Arduino (au choix) 2. deux (ou un) servos 3. fils de connexion 4. Visual Studio 2008 Express -- lien (facultatif) 5. Arduino IDE -- lien Désolé fans de Linux et Apple, mon programme ne fonctionne que sur windows pour l'instant, mais vous pouvez toujours envoyer manuellement des commandes série à l'arduino sans changer le code.

Étape 2: connectez le matériel

Connectez le matériel
Connectez le matériel

Rien de très complexe à cette étape. Connectez simplement un servo à la broche 9 et l'autre à la broche 10.

Étape 3: programmer l'Arduino

Programmer l'Arduino
Programmer l'Arduino

maintenant vous pouvez télécharger le croquis sur l'arduino.

Voici une ventilation simple du code: #include Servo myservo; // crée un objet servo pour contrôler un servo Servo myservo1; int entrantByte = 0, datacount = 0, compteur = 0, prêt = 0; // pour les données série entrantes char data[10]; const char verify[8] = "ma11hew"; commande char[3]; void setup() { myservo.attach(9); monservo1.attach(10); Serial.begin(38400); // ouvre le port série, définit le débit de données Serial.println ("Salut Arduino ici!"); // ajouté pour aider à identifier le port série Cela configure simplement le port série et les servos. int je; for(i = 0; i<180;i++) { monservo.write(i); retard(15); } monservo.write(5); for(i = 0; i<180;i++) { monservo1.write(i); retard(15); } monservo1.write(5); } Mouvement de balayage simple pour vérifier que les servos fonctionnent correctement. boucle vide() { prêt = 0; compteur = 0; while (1==1) { if (Serial.read() != verify[counter]) { break; } if(compteur == 6) { délai(20); command[0] = Serial.read(); commande[1] = Serial.read(); //if (Serial.read() == ((commande[1] * 12) % 8)) // { prêt = 1; //} Serial.println("commande enregistrée"); } compteur ++; retard(2); } cela vérifie la mémoire tampon série pour la chaîne d'autorisation correcte puis récupère deux octets pour la commande. la déclaration if commentée permet une somme de contrôle improvisée mais rendrait difficile l'interfaçage manuel. ready peut être défini sur 0 afin que les commandes ne soient pas analysées, comme dans le cas de données corrompues. //recherche dans les commandes if (ready == 1) { if (command[0] == 'T') { command[0] = 0; Serial.print("commande d'accélérateur sur la broche 9 à: "); Serial.println(map(commande[1], 32, 126, 2, 180), DEC); monservo.write(map(commande[1], 32, 126, 2, 180)); } if (commande[0] == 'S') { commande[0] = 0; Serial.print("commande d'accélérateur sur la broche 10 à: "); Serial.println(map(commande[1], 32, 126, 2, 180), DEC); monservo1.write(map(commande[1], 32, 126, 2, 180)); } } } le reste du code consiste à rechercher command pour les commandes valides (T ou S.) si l'une ou l'autre correspond, il prend l'octet suivant et l'envoie au servo. plus sur la carte (commande[1], 32, 126, 2, 180) plus tard… le code ici est extensible pour tout ce dont vous pourriez avoir besoin (par exemple, lumières, moteurs, IR, etc.) ce code devrait fonctionner correctement sans modifications.

Étape 4: installer le logiciel

Installer le logiciel
Installer le logiciel

J'ai deux manières d'installer ce… programme d'installation nsis: Téléchargez le programme d'installation auto-extractible ci-dessous et exécutez-le. Vous aurez la possibilité d'installer les sources lors de l'installation. le package binaire du programme d'installation installe les dlls c++ de base afin qu'il puisse être exécuté sur un ordinateur sans que visual c++ soit déjà installé. Une fois le programme d'installation terminé, vous pouvez l'exécuter à partir du bureau ou du menu Démarrer. zip way (non vérifié): Téléchargez et exécutez, cela devrait fonctionner. peut être. (L'archive zip a la même structure de dossiers créée par le programme d'installation, sans sources. Je n'ai pas de machine sans studio visuel pour la tester, donc cela peut ne pas fonctionner.)

Étape 5: Utiliser le programme d'interface

Utiliser le programme d'interface
Utiliser le programme d'interface
Utiliser le programme d'interface
Utiliser le programme d'interface

Pour utiliser le programme, sélectionnez d'abord le débit en bauds défini dans le croquis arduino. L'esquisse non modifiée par défaut à 38400 bauds, mais peut être modifiée pour répondre à vos besoins pour des choses comme une liaison radio plus lente. note: les débits en bauds supérieurs à 38400 n'ont pas été très stables, je pense que c'est parce que l'uart se remplit avant que les données puissent être traitées. Ensuite, sélectionnez le port COM à utiliser. le programme par défaut est COM4, assurez-vous de le changer ou le programme plantera. Enfin, cliquez sur Ouvrir. Si tout s'est bien passé, le programme ouvrira le port série sélectionné à la vitesse de transmission sélectionnée. Sinon, le programme plantera probablement avec une exception non gérée. assurez-vous que le port est correct et réessayez. Utilisez les zones de texte pour soumettre des commandes directes à l'arduino. La "map (commande[1], 32, 126, 2, 180)" met à l'échelle toutes les 94 commandes possibles, * espace * à ~, lisible par l'arduino en ASCII à 2 à 180 pour le servo. tout octet inférieur à ASCII 32 (espace) ou supérieur à 126 (~) est défini par défaut sur 63 (?) Les barres de piste offrent une interface plus facile pour les commandes directes. chaque étape envoie une commande série à l'arduino de manière incrémentielle.

Étape 6: Soyez créatif

Faire preuve de créativité!
Faire preuve de créativité!
Faire preuve de créativité!
Faire preuve de créativité!

Pensez à des choses sympas à faire avec ça. Quelques idées: 1. Accélérateur à distance pour une voiture. 2. Support de caméra 3D 3. Rover sous-marin Amusez-vous !!

Conseillé: