Utilizando componentes de NXT con un Micro controlador (3 / 6 paso)

Paso 3: El Motor

NXT el motor es una pieza muy bonita de hardware y también es bastante fácil de usar. Cuenta con un motor de DC de 9V con una caja de cambios y un codificador de doble con una resolución de aproximadamente 1 grado.

Los pines 1 y 2 son los cables para el motor DC.  Se aplica un potencial y las vueltas del motor.  Cambiar pernos y el motor gira al revés.  Es así de simple.  Utilizar un puente H para esto.

El codificador es casi tan simple.  El pin 3 es tierra y Pin 4 Vcc (5V).  Éstos suministran energía al codificador.  Pin 5 y 6 Pin son las dos salidas del codificador.  En caso de que alguien está familiarizado con doble codificadores, aquí es cómo funcionan:

Conectado a la caja de cambios motor en algún lugar es un codificador que tiene un montón de ranuras radiales en el mismo.  Vuelve con el resto de la caja de cambios.  Se colocan dos sensores infrarrojos que las ranuras radiales y radios también puede romperán y restauración los rayos directamente, causando alternando 1 y 0.  Por lo tanto, cuando el motor está girando, ya sea línea leerá 101010101010 a una tasa determinada por la velocidad del motor.  Esto es útil para el control de velocidad y traducción.  El más 1 y de 0, cuanto más lejos te has ido.  Cuanto más rápido cambia, cuanto más rápido vas.
Así que ¿por qué necesitamos dos codificadores?  Para determinar la dirección.  Porque se compensan los dos sensores IR, ellos habían salida de un patrón que es específico a la dirección de la rotación.  Si el motor gira una forma, la salida (Pin 5 Pin 6) 11, 10, 00, 01, repetición.  Si el motor gira al revés, el patrón se invierte: 11, 00, 01, 10, repetición.  Mirando el patrón, puede determinar la dirección de la rotación.  Conseguiría específico acerca de las agujas del reloj y en sentido contrario, pero depende de cómo aguantan el motor y es muy fácil de descifrar su propio a través de la experimentación.

Codificación de la estampilla básica para utilizar el codificador:
Para determinar la velocidad del motor, utilizar la función count.  Simplemente contar el número de impulsos de cualquiera de los pines del codificador durante un periodo de tiempo y obtendrá un número proporcional a la velocidad del motor.

CUENTA Pin5, 100, velocidad

Para esperar un cierto número de ciclos, utilizo un comando PULSIN dentro de un bucle for.  La PULSIN hace el BS2, espere el próximo pulso del codificador antes de proceder al siguiente paso del bucle.  Este código esperará números pulsos.  La variable "variable" no es importante, pero también podría utilizarse para determinar la velocidad en teoría.

PARA i = 1 a n
PULSIN Pin5, 1, variable
SIGUIENTE

Determinación de la dirección es un poco más complicada.  Tengo el sello de esperar a que el codificador alcanza un paso específico en el ciclo como 11 utilizando un if instrucción en un bucle.  Una vez alcanzado el paso, verificar para ver que paso viene siguiente (en este caso, ya sea 10 o 01) usando un par de if declaraciones en otro bucle.  Dependiendo del paso que viene a continuación, puede determinar cómo el motor está girando.

También es posible utilizar este método para medir pasivamente el desplazamiento absoluto del motor.  Un sentido de giro se sumará a la dislocación, mientras que el otro sentido de giro se resta.  De esta forma, si se empieza en 0, el motor un cierto ángulo y a lo nuevo, debe volver a 0 en lugar de la distancia recorrida.  Este código comprueba la dirección una vez por ciclo y agrega o resta 1 de desplazamiento por consiguiente.  Trabaja a velocidades de rotación moderadas, pero no a altas velocidades debido a la velocidad del reloj de la marca.

pin5 PIN 1
Pin6 PIN 0
DISP VAR palabra

Loop1:
IF pin5 = 1 y pin6 = 1 entonces dirección ' espere 11 paso de codificador
GOTO loop1

Dirección:
IF pin5 = 0 entonces cw ' ver que pin va bajo primero para determinar la dirección
IF pin6 = 0 entonces ccw
Dirección GOTO

CW:
DISP disp = 1 ' en este ejemplo, he hecho negativo positivo y en sentido contrario las agujas del reloj.
DEBUG? disp
GOTO loop1

CCW:
DISP = 1 disp
DEBUG? disp
GOTO loop1

Traté de escribir código para hacer esto sobre una base paso a paso para que en vez de esperar 11 a venir, comprobaría dirección a cada paso 4 veces la exactitud.  Desafortunadamente, el sello no funciona lo suficientemente rápido como para eso.  Un microcontrolador más rápido podría ser capaz de manejarlo.  Aquí está el código, pero otra vez sólo funciona a velocidades muy bajas.

En primer lugar, el código establece que paso el codificador es a partir de y se dirige a la subrutina correspondiente a ese paso.
Desplazamiento comienza en 1 debido a un error de alambrado inherente.
Cada subrutina mira lo que era el paso anterior.  Si el paso anterior fue CCW de este paso entonces el motor girar CW y se añade 1.  De lo contrario, CCW es predeterminado y se restará 1.  (Error de alambrado se produce aquí, pero no es demasiado importante)
A continuación, la subrutina espera para el siguiente paso y luego va a la subrutina correspondiente a ese paso.
Funciona muy bien en teoría pero hay muchos comandos para cada paso para que el BS2 no puede manejar lo suficientemente rápido.

un PIN 0
b PIN 1
LASTA VAR Bit
lastb VAR Bit
DISP VAR palabra
DISP = 1

ENTRADA de un
ENTRADA b

LASTA = un
lastb = b

IF a = 1 entonces a1
Si b = 1 entonces S01
GOTO S00

a1:
Si b = 1 entonces S11
GOTO S10

S01:
DISP = 1 disp
Lasta IF = lastb y 1 = 1 entonces disp disp = 2
DEBUG? disp
LASTA = 0
lastb = 1
S01Loop:
IF a = 1 y b = 1 entonces S11
IF a = 0 y b = 0 entonces S00
GOTO S01Loop

S11:
DISP = 1 disp
Lasta IF = 1 y lastb = 0 entonces disp disp = 2
DEBUG? disp
LASTA = 1
lastb = 1
S11Loop:
IF a = 1 y b = 0 entonces S10
IF a = 0 y b = 1 entonces S01
GOTO S11Loop

S10:
DISP = 1 disp
Lasta IF = lastb y 0 = 0 entonces disp disp = 2
DEBUG? disp
LASTA = 1
lastb = 0
S10Loop:
IF a = 1 y b = 1 entonces S11
IF a = 0 y b = 0 entonces S00
GOTO S10Loop

S00:
DISP = 1 disp
Lasta IF = lastb y 0 = 1 entonces disp disp = 2
DEBUG? disp
LASTA = 0
lastb = 0
S00Loop:
IF a = 1 y b = 0 entonces S10
IF a = 0 y b = 1 entonces S01
GOTO S00Loop

Artículos Relacionados

Makey Makey Micro controlador

Makey Makey Micro controlador

Mientras la lluvia de ideas para nuestra noche Makey Makey de construir en el asilo de Phoenix, no estaba viniendo para arriba con una aplicación asesina. Todo eso cambió cuando en una caminata con la Sra. Zoid. Vi algo en el canal que me llamó la at
Control de un Robot NXT con Android y HTML5

Control de un Robot NXT con Android y HTML5

el objetivo de este proyecto es conectar un viejo Android smartphone (por ejemplo, HTC Magic) a un robot de Lego NXT, con el fin de conseguir que un robot de cámara WIFI GPRS UMTS disponible mundial.La forma más fácil de monitorear su hogar desde cua
Caja de la decisión libre de micro controlador

Caja de la decisión libre de micro controlador

Este es un cuadro que toma la decisión al azar sin el uso de micro controlador inspirado en primera versión por victor y segunda versión por victor pero esto es diferente de ellos y barato y simple pero real ver video trabajandoPaso 1: Cómo hice esto
Sistema de reservas de autobús inteligente con tornillo micro-controller

Sistema de reservas de autobús inteligente con tornillo micro-controller

Hola hay colegas inventores,Deseo que me compartir algunas experiencias y mi equipo ganó al crear un proyecto de sistema de bus inteligente de reserva, que me llevó a utilizar un Arduino y el sorprendente regulador micro del perno.¿Por qué?Mientras q
Utilizando Shift Register 74HC595 con ULN2803, UDN2981 y BC327

Utilizando Shift Register 74HC595 con ULN2803, UDN2981 y BC327

Hola, todos!En muchas situaciones en tus proyectos con microcontroladores puede utilizar un registro de desplazamiento como 74HC595 directamente con LED y pantallas, pero si revisas la hoja de datos, verá necesita tener cuidado con la corriente máxim
Hidroponía con Edison el controlador Intel

Hidroponía con Edison el controlador Intel

Crear una IoT activado controlador de hidroponía con el Edison de Intel durante el IoT Hackathon de BostonNuestro objetivo:Dentro de un hackathon de 36 horas para construir un controlador a utilizar con nuestro anterior instructable (hidropónico gran
Tanque Robot: Conducir un tanque con motores y controladores con el Kinoma crear

Tanque Robot: Conducir un tanque con motores y controladores con el Kinoma crear

Hemos construido un mini tanque y controladores que utilizan dos dispositivos de Kinoma cree que comunican a través de CoAP (Protocolo de aplicación limitada). Las manijas giran potenciómetros que la tensión que generan. Los cambios de tensión se tra
Potencia su ladrillo de Mindstorms NXT con un adaptador de pared de 9V.

Potencia su ladrillo de Mindstorms NXT con un adaptador de pared de 9V.

Para este día de fiesta, Yo compré una viejo segunda mano Mindstorms NXT para jugar con. Sólo parecía más divertido que gasto mi dinero en fuegos artificiales y el alcohol.A jugar con él, me di cuenta de que usted puede ir a través de un buen montón
Utilizando un Arduino Uno R3 como un controlador de juegos

Utilizando un Arduino Uno R3 como un controlador de juegos

ACTUALIZACIÓN de 2016: yo ya no proporcionará soporte en la sección de comentarios. Este es un método anticuado y obsoleto que tiene muy pocas razones para utilizar. Mantenerlo sólo con fines de información.Naturalmente, la ONU no soporta nativamente
Cómo reparar una dreamcast con puertos de controlador muerto

Cómo reparar una dreamcast con puertos de controlador muerto

este instructable muestra cómo abrir su dreamcast y reemplazar un quemado hacia fuera resistente. Miré siempre donde se encuentra la manera de arreglar esto y podía solamente encontrar un atajo fácil rápido que podría destruir el sistema en el largo
Ballshooter Autónoma de NXT con NXTcam

Ballshooter Autónoma de NXT con NXTcam

este es mi robot que está programado para caza y matar a su enemigo jurado, una taza de plástico roja es la ballshooter construir desde el mindstorms NXT 2.0 set pero con un poco añade en el NXTcam de Mindsensors.com es una cámara especial para el la
Alimentar un robot Lego NXT con un taladro barato batería / acumulador

Alimentar un robot Lego NXT con un taladro barato batería / acumulador

uno de los aspectos más importantes y caros de diseñar un robot móvil, es encontrar el correcto acumulador que permite largos periodos de funcionamiento autónomo. Acumuladores más son acumulador muy costosas y modernas tecnologías, como LiPos (soport
Montaje eje de Sachs Vintage, utilizando componentes de Archer de Sturmey

Montaje eje de Sachs Vintage, utilizando componentes de Archer de Sturmey

un problema con las bicicletas vintage es la falta de repuestos. La bicicleta es un gran modelo de los años 70 mira compré un tiempo atrás tiene tres velocidades buje Sachs con un freno de contrapedal (Niza), pero lamentablemente le faltaba el víncul
Configuración de un reloj de tiempo Real (RTC) con un Micro Arduino Pro

Configuración de un reloj de tiempo Real (RTC) con un Micro Arduino Pro

Para un montón de proyectos, necesita saber el tiempo real. Siendo precisos segundos, la hora del día o la fecha del mes, un Módulo de reloj de tiempo Real RTC es la respuesta a esa necesidad.Con bajo consumo de energía, avanzadas de precisión y cali