À l’aide de composants de NXT avec un Micro contrôleur (3 / 6 étapes)

Étape 3: Le moteur

Moteur le NXT est un très beau morceau de matériel et est aussi assez facile à utiliser. Il dispose d’un moteur à CC 9V avec une boîte de vitesses et un encodeur double avec une résolution d’environ 1 degré.

Les broches 1 et 2 sont les fils pour le moteur à courant continu.  Appliquez un potentiel, et le moteur tourne.  Broches de l’interrupteur et le moteur tourne l’autre sens.  C’est aussi simple que cela.  J’ai utiliser un pont en H pour cela.

L’encodeur est presque aussi simple.  Broche 3 est au sol et Pin 4 Vcc (5V).  Ces alimenter l’encodeur.  Broche 5 et 6 de Pin sont les deux sorties de l’encodeur.  Dans le cas où quelqu'un n’est pas familier avec les encodeurs doubles, voici comment ils fonctionnent :

Attaché à la boîte de vitesses moteur quelque part est une roue codeuse qui a un tas de fentes radiales dedans.  Il tourne avec le reste de la boîte de vitesses.  Deux capteurs infrarouges sont placés tels que les fentes radiales et les rayons sinon briser et rétablir le faisceau IR, causant l’alternance de 1 et de 0.  Ainsi, lorsque le moteur tourne, soit ligne lira 101010101010 à un taux déterminé par la vitesse du moteur.  Ceci est utile pour le contrôle de vitesse et de la traduction.  Les plus de 1 et de 0, le plus loin vous êtes allé.  Plus vite il alterne, plus vite vous allez.
Alors pourquoi avons-nous besoin deux encodeurs ?  Pour déterminer la direction.  Parce que les deux capteurs IR sont compensés, ils ont sortie un modèle qui est spécifique au sens de rotation.  Si le moteur tourne une façon, ils seront sortie (broche 5 Broche 6) 11, 10, 00, 01, répéter.  Si le moteur tourne à l’inverse, la tendance est inversée : 11, 01, 00, 10 à répétition.  En regardant le modèle, vous pouvez déterminer le sens de rotation.  J’obtiendrais spécifique sur vers la droite et vers la gauche, mais cela dépend de comment vous tenez le moteur et est vraiment facile à comprendre sur votre propre par expérimentation.

Le timbre de base pour utiliser le codeur de codage :
Pour déterminer la vitesse du moteur, j’utilise la fonction count.  Tout simplement compter le nombre d’impulsions de la part des broches encodeur pour une période de temps et vous obtiendrez un nombre proportionnel à la vitesse du moteur.

COMTE Pin5, 100, vitesse

Pour attendre un certain nombre de cycles, j’utilise une commande PULSIN à l’intérieur d’une boucle for.  Le PULSIN rend l’attente BS2 pour l’impulsion suivante de l’encodeur avant de passer à l’étape suivante de la boucle.  Copiez le code suivant attendra n impulsions.  La variable « variable » n’est pas importante, mais il pourrait également être utilisée pour déterminer la vitesse en théorie.

POUR i = 1 à n
PULSIN Pin5, 1, variable
PROCHAINE

Déterminant de direction est un peu plus complique.  Je n’ai le timbre de patienter jusqu'à ce que l’encodeur a atteint une étape spécifique du cycle tel que 11 en utilisant un if instruction dans une boucle.  Une fois que l’étape a été atteinte, je vérifie pour voir quelle étape vient suivante (dans ce cas, soit 10 ou 01) à l’aide d’une paire de fi des déclarations pour une autre boucle.  Selon quelle étape vient ensuite, vous pouvez déterminer la manière dont le moteur tourne.

Il est également possible d’utiliser cette méthode pour mesurer passivement le déplacement absolu du moteur.  Un sens de rotation s’ajoutera le déplacement, tandis que l’autre sens de rotation se soustraire.  De cette façon, si vous commencez à 0, tourner le moteur un certain angle et remettez-la en, vous devriez retourner à 0 au lieu de la distance parcourue.  Copiez le code suivant vérifie la direction une fois par cycle et puis ajoute ou soustrait 1 de déplacement en conséquence.  Il fonctionne à des vitesses de rotation modérées, mais pas à des vitesses élevées en raison de la vitesse d’horloge de ce timbre.

pin5 PIN 1
pin6 PIN 0
DISP mot VAR

loop1 :
IF pin5 = 1 AND pin6 = 1 THEN direction ' attendre 11 étape encodeur
GOTO loop1

Direction :
IF pin5 = 0 THEN cw ' voir quelle broche va bas tout d’abord pour déterminer la direction
IF pin6 = 0 THEN ccw
Direction de GOTO

CW :
DISP = disp + 1 ' dans cet exemple, j’ai fait dans le sens horaire négative positive et dans le sens anti-horaire.
DÉBOGUER? disp
GOTO loop1

CCW :
DISP = disp-1
DÉBOGUER? disp
GOTO loop1

J’ai essayé d’écrire du code pour ce faire sur une base progressive afin qu’au lieu d’attendre 11 à venir, il vérifierait la direction à chaque étape pour 4 fois l’exactitude.  Malheureusement, le timbre ne court pas assez vite pour cela.  Un microcontrôleur plus rapide pourrait être en mesure de le gérer.  Voici le code, mais encore une fois il ne fonctionne qu’à très basse vitesse.

Le code établit d’abord, quelle étape commence sur l’encodeur et il ordonne à la sous-routine correspondant à cette étape.
Déplacement commence à 1 suite à une erreur inhérente fencepost.
Chaque sous-routine ressemble à ce qui était l’étape précédente.  Si l’étape précédente était CCW de cette étape, puis le moteur tourné CW et 1 est ajouté.  Dans le cas contraire, CCW est par défaut et 1 est soustrait.  (Erreur Fencepost se produit ici, mais n’est pas trop important)
Ensuite, la sous-routine attend la prochaine étape et se dirige ensuite vers la sous-routine correspondant à cette étape.
Il fonctionne très bien en théorie, mais il y a trop de commandes pour chaque étape la BS2 il ne peut pas traiter assez rapidement.

un PIN 0
b broche 1
Lasta Bit VAR
lastb Bit VAR
DISP mot VAR
DISP = 1

ENTRÉE un
ENTRÉE b

Lasta = un
lastb = b

IF a = 1 THEN a1
IF b = 1 alors S01
GOTO S00

a1 :
IF b = 1 alors S11
GOTO S10

S01 :
DISP = disp-1
Lasta IF = 1 AND lastb = 1 THEN disp = disp + 2
DÉBOGUER? disp
Lasta = 0
lastb = 1
S01Loop :
IF a = 1 et b = 1 alors S11
IF a = 0 et b = 0 alors S00
GOTO S01Loop

S11 :
DISP = disp-1
Lasta IF = 1 AND lastb = 0 THEN disp = disp + 2
DÉBOGUER? disp
Lasta = 1
lastb = 1
S11Loop :
IF a = 1 et b = 0 alors S10
IF a = 0 et b = 1 alors S01
GOTO S11Loop

S10 :
DISP = disp-1
Lasta IF = 0 AND lastb = 0 THEN disp = disp + 2
DÉBOGUER? disp
Lasta = 1
lastb = 0
S10Loop :
IF a = 1 et b = 1 alors S11
IF a = 0 et b = 0 alors S00
GOTO S10Loop

S00 :
DISP = disp-1
Lasta IF = 0 AND lastb = 1 THEN disp = disp + 2
DÉBOGUER? disp
Lasta = 0
lastb = 0
S00Loop :
IF a = 1 et b = 0 alors S10
IF a = 0 et b = 1 alors S01
GOTO S00Loop

Articles Liés

Facile à construire à analyseur d’oxygène à l’aide d’un Micro contrôleur Arduino Compatible

Facile à construire à analyseur d’oxygène à l’aide d’un Micro contrôleur Arduino Compatible

En tant que bâtisseur de gadgets et un plongeur j'ai essayé de construire un analyseur d'oxygène pour un peu maintenant. Le gros problème est que plus des microcontrôleurs ne peut pas lire le mv qui met le capteur. J'ai joué avec amplificateurs opéra
Robot de réservoir : Conduire un char avec moteurs et contrôleurs propulsés par la création de Kinoma

Robot de réservoir : Conduire un char avec moteurs et contrôleurs propulsés par la création de Kinoma

Nous avons construit un réservoir mini et contrôleurs à l'aide de deux dispositifs de Kinoma Create qui communiquent sur CoAP (protocole d'Application limité). Les poignées de rotation potentiomètres qui influent la tension de sortie. Les variations
Comment réparer une dreamcast avec ports de contrôleur dead

Comment réparer une dreamcast avec ports de contrôleur dead

cette instructable vous montre comment ouvrir votre dreamcast et remplacer un brûlé résistant. J'ai regardé jamais où les trouver comment réparer cela et je pourrait trouver seul un rapide raccourci facile qui pourrait détruire le système à long exéc
Contrôleur d’Aquarium LED sans fil avec étincelles. CORE IO à TechShop

Contrôleur d’Aquarium LED sans fil avec étincelles. CORE IO à TechShop

Ici, je suis à TechShop avec un micro contrôleur incroyable de Spark.io appelé « Noyau ». J'avais l'intention d'utiliser un Arduino pour contrôler mon aquarium d'eau salée récif quand un ami m'a montré le coeur. Ce petit micro-contrôleur puissant est
Comment faire pour mesure courant CA à l’aide de capteur à effet Hall avec Arduino ou autres microcontrôleurs commune

Comment faire pour mesure courant CA à l’aide de capteur à effet Hall avec Arduino ou autres microcontrôleurs commune

S'il vous plaît voir une nouvelle approche plus simple iciObjectif : Ce Instructable montre comment faire une boîte d'interface qui, lorsque raccordé à une rallonge, permet de microcontrôleurs communs comme l'Arduino à mesure AC courant comme un sign
Contrôleur de « Tampon » à l’aide de la table de mixage de lumière de couleur

Contrôleur de « Tampon » à l’aide de la table de mixage de lumière de couleur

ce Instructable enseigne comment un contrôleur embarqué de base peut être programmé pour contrôle LED (des couleurs primaires) telle que la lumière rouge, vert et bleu peut être mélangée pour créer une gamme complète de couleurs. Les effets optiques
Contrôleur de développement faible coût picLink RS232 avec ADC

Contrôleur de développement faible coût picLink RS232 avec ADC

PICLink RS232 contrôleur embarquéLe module de régulateur de PICLink RS232 permet n'importe quel fervent de microcontrôleur unefacile à construire le module mini-micro-contrôleur. Ce microcontrôleur estICSP (en circuit série) programmable et fournit s
Contrôler un Robot NXT avec Android et HTML5

Contrôler un Robot NXT avec Android et HTML5

le but de ce projet consiste à connecter un vieux smartphone Android (p. ex. HTC Magic) à un robot Lego NXT, afin d'obtenir un robot de caméra WIFI GPRS UMTS disponible global.La meilleure façon de surveiller votre maison où que vous soyez dans le mo
À l’aide de Zen Toolworks CNC avec graveur Laser

À l’aide de Zen Toolworks CNC avec graveur Laser

Ce Instructable de Zen Toolworks va couvrir comment utiliser votre machine Zen Toolworks CNC avec un kit de graveur laser de Jtech Photonics.Matériel nécessaire :Machine de Zen Toolworks CNC. Nos kits complets se trouvent sur notre site WebJtech phot
Commander Lego NXT avec wiimote

Commander Lego NXT avec wiimote

jamais vouloir construire votre propre véhicule RC ? Maintenant vous pouvez. Votre commande en de sa conception et aussi simple d'utiliser un Legos, parce que c'est des Legos. Tout ce dont vous avez besoin est un Lego NXT, un ordinateur avec un dongl
À l’aide d’un bureau à distance avec TeamViewer

À l’aide d’un bureau à distance avec TeamViewer

Comment configurer Remote Desktop à l'aide de TeamViewerBeaucoup d'utilisateurs jugent amusant si nous pouvons relier à n'importe quel ordinateur de bureau à distance, mais ont du mal à cause de toutes les choses dures, qu'ils doivent faire.Mais il e
Contrôleur MIDI avec claviers

Contrôleur MIDI avec claviers

Aujourd'hui, nous construisons la touche 400 contrôleur MIDI à l'aide d'un Arduino et ordinateur claviers !Pour les producteurs de musique consciente budget là-bas, ce projet est un excellent moyen de construire un peu coûteux de contrôle des stupéfi
Affiche de LED avec contrôleur de ATtiny45

Affiche de LED avec contrôleur de ATtiny45

Mon lycée a un programme où les étudiants peuvent tuteur des autres étudiants. Je me suis impliqué comme un tutoré, puis un tuteur par les pairs. Tout le monde que j'ai appris a trouvé le programme vraiment utile, alors j'ai décidé de promouvoir le p
Comment construire un Arduino WiFi 4 x 4 avec contrôleur Android

Comment construire un Arduino WiFi 4 x 4 avec contrôleur Android

voitures RC peuvent être WiFi voitures...?Voitures RC sont cool, mais les voitures RC à bas prix ont une portée limitée et seulement peuvent être contrôlées avec le contrôleur spécifique fourni avec la voiture.J'ai acheté une jeep RC, équipée de 4 ro