Paso 4: Notas de diseño de Software
El código .ino para este proyecto se desarrolló con "codebender" en https://codebender.cc/. "Codebender" es una nube basado en IDE (entorno de desarrollo integrado) que es libre de usar, tiene excelente depuración y detecta automáticamente tu arduino.
Las constantes de escala y CWR utilizadas en el código se determinan por:
- las dimensiones del robot,
- la especificación del motor,
- y su opción de "modo paso a paso".
Especificaciones del motor
Los "motores de pasos de 28BYJ-48-5V" utilizados en este proyecto tienen un "ángulo de paso" de 5,625 grados / 64 y un "cociente de variación de velocidad" de 1/64. Esto se traduce en 4096 pasos posibles para una vuelta del eje de salida, pero asume que usted está usando una técnica llamada "mitad-paso a paso".
Cómo motores de pasos de trabajo
Los "motores de pasos de 28BYJ-48-5V" tienen cuatro bobinas con un núcleo de hierro con forma que contiene ocho polos. Cada uno de los cuatro pedazos de poste son desplazados que hay 32 postes espacian 360/32 = 11,25 grados apartes.
Si nos energizan la bobina (paso) uno a la vez (pasando de onda), o dos bobinas a la vez (versión completa), el rotor le hará una completa revolución en 32 pasos. Puesto que el engranaje interno es 64/1, una vuelta del eje de salida requiere pasos de 2048.
Medio-paso a paso
Este robot utiliza mitad de escalonamiento.
Mitad-caminar es una técnica por el que se crean los semitonos energizando alternativamente una sola bobina y dos bobinas adyacentes, duplicando así el número de pasos de 32 a 64 para una vuelta del rotor. Este es el equivalente de 64 polos espacian 360/64 = 5,625 grados separados (ángulo de paso).
Puesto que el engranaje interno es 64/1, una vuelta del eje de salida requiere 4096 pasos.
Los patrones binarios para lograr caminar media están documentados en las funciones de rotate() {...} y move() {...}.
ESCALA
ESCALA calibra movimiento adelante y atrás del robot.
Asumiendo un diámetro de 65 mm, entonces el robot moverá hacia adelante (o atrás) PI * 65/4096 = 0.04985 mm por paso. Alcanzar 1 mm por paso (Inkscape usa mm para su ' coordina) debemos utilizar un factor de escala de 1/0.04985 = 20.0584. Esto significa que el número de pasos necesarios para viajar entre dos puntos cualesquiera es "distancia * escala".
CWR
El CWR (círculo-diámetro al cociente del diámetro de la rueda) se utiliza para calibrar el ángulo de rotación del robot. Un CWR alta ofrece mayor resolución y el error acumulado mínimo, pero la pega es que tardará más tiempo para el robot de vuelta.
Suponiendo que las ruedas del robot son espaciaron 130 m m separado y luego las ruedas deben viajar PI * 130 = 408,4 mm para el robot girar 360 grados. Si el diámetro de cada rueda es 65mm y una vuelta de una rueda moverá el robot PI * 65 = 204,2 mm alrededor del círculo. Para que las ruedas recorrer la distancia de círculo completo debe girar a la 407.4/204.2 = 2.0 (dos veces).
Esto se traduce en un CWR de 2 y una resolución de 360/(CWR*4096) = 0,0439 grados por paso.
Para mayor precisión la escala y el CWR deben tanto usar tantos decimales como sea posible.
El intérprete GCODE
El robot sólo responde a los comandos de Inkscape a partir de G00, G01, G02 y G03.
Ignora cualquier F (velocidad de avance) y Z (posición vertical) códigos como el robot sólo puede viajar a una velocidad, y la pluma es siempre para el código G00 y hacia abajo para todos los otros códigos. El yo, y también se omiten los códigos J ("biarc") al trazar curvas.
El código sin usar M100 se utiliza para el "menú" (M Menu).
Extra T-se han añadido códigos para propósitos de la prueba (T Test)
El código de mi intérprete fue inspirado por https://github.com/MarginallyClever/gcodecncdemo