TODOPIC

Mecatrónica => Robótica => Mensaje iniciado por: CompSystems en 20 de Septiembre de 2015, 01:41:31

Título: Construccion maquina de posicionamiento 2D -3D impresora, cnc, ...
Publicado por: CompSystems en 20 de Septiembre de 2015, 01:41:31
(http://jaimeza.org/ElectronicEngineering/3Dprinter/images/impresora3D_image00.jpg)

La idea de este post nació con la necesidad de dar solución a una pregunta que me hice, de tantos proyectos libres que hay en la red de maquinas de posicionamiento 2D-3D, ¿Cuál escoger o con cual iniciarse?

Por lo tanto pretendo con la ayuda de vosotros o los que ya tiene experiencia en su construcción y programación participar y suministrar la info necesaria para decidir qué tipo de maquina construir y que tipo de componentes escoger, pues soy un nuevo constructor de este tipo de proyectos.


hay un proyecto llamado RepRap (Hardware y Software Libre) que nos puede servir como base, aunque esta enfocado a impresoras3D, se puede usarlo, simplificando o reemplazando componentes como proyecto 2D, por ejemplo maquina perforadora de circuitos impresos o uso similar


Sitio oficial del proyecto RepRap

http://www.reprap.org/wiki/RepRap/es (http://www.reprap.org/wiki/RepRap/es)

INTRODUCCION
La iniciativa de RepPap es crear una máquina de prototipado rápido (3D). Una máquina de este tipo puede fabricar objetos físicos a partir de modelos generados por ordenador: de la misma manera que la impresora de un ordenador permite imprimir imágenes en dos dimensiones en papel, RepRap imprime objetos en 3D a base de plástico, permitiendo la fabricación de objetos rapidos. El proyecto reprap fue iniciado en febrero del 2004 por Andrian Bowyer en Inglaterra, pero actualmente hay personas colaborando en otras partes del mundo.

imagen de una impresora3D super cacera pero parece que funcional
(http://jaimeza.org/ElectronicEngineering/3Dprinter/images/impresora3D_image01.jpg)

Inicio con tres partes electrónicas básicas
I: COMPONENTES ELECTRONICOS


COMPONENTE #1: ¿Que procesador o microcontrolador escoger? Como centro de programación y conexión de periféricos (TARJETAS DE CONTROL, POTENCIA, DISPLAY, ETC).

Pensaba usar el kit del RaspberryPI  (con procesador) pero después de documentarme y ver varios proyectos lo mejor es iniciarse con un ARDUINO, pues el tiempo de poner a punto una maquina impresora 3D, se reduce y se facilita mucha las cosas.
Parece que la mejor opción es el “Arduino/Genuino MEGA 2560”
Sitio web https://www.arduino.cc/en/Main/ArduinoBoardMega2560#
Arduino/GenuinoMEGA2560 está diseñado con un microcontrolador Atmega2560. Con 54 pines de E/S digitales, 14 de los cuales se pueden utilizar como salidas PWM (modulación de anchura de pulso). Además dispone de 16 entradas analogicas, 4 UARTs (conexion serial), un oscilador de 16MHz, una conexión USB, un conector de alimentación, un conector ICSP y un pulsador para el reset.

-------------------------------------------------------------
COMPONENTE #2: Tarjeta de control, hay una tarjeta denominada, (R.A.M.P.S Reprap Arduino Mega Pololu Shield) diseñada para ensamblarse con ArduinoMEGA2560
Mas Info en
http://www.reprap.org/wiki/RAMPS
https://ultimachine.com/ramps-pre-assembled-kit-complete

RAMPS versión HOMEmade vs industrial
(http://jaimeza.org/ElectronicEngineering/3Dprinter/images/RAMPSv1.25_Homemade.jpg)


-------------------------------------------------------------
COMPONENTE #3: DriveRs para los motores paso a paso

hay dos, preferiblemente el DRV8825
A4988 or DRV8825 Stepper Motor Driver Carrier, High Current (md20a)
(http://jaimeza.org/ElectronicEngineering/3Dprinter/images/A4988_or_DRV8825_%20StepperMotorDriverCarrier_image00.jpg)

-------------------------------------------------------------
Vista rápida del centro de control (ELECTRONICA)
(http://jaimeza.org/ElectronicEngineering/3Dprinter/images/centroDeControl_impresora3D_image00.jpg)
(http://jaimeza.org/ElectronicEngineering/3Dprinter/images/ReprapArduinoMegaPololuShield_RAMPS_image00.png)

sitio de la impresora3D fabricada en su mayor parte con componentes reusables y económicos

https://www.flickr.com/photos/ixope

Ampliación a lo anterior, etc, todo es bienvenido

próximamente Componentes mecánicos

Título: Re: Construccion maquina de posicionamiento 2D -3D impresora, cnc, ...
Publicado por: KILLERJC en 20 de Septiembre de 2015, 08:30:28
aguanta 2.5A ese integrado! , me refiero al DRV8825, aunque es el maximo maximo maximo
Yo crei que iba a desaparecer ese integrado cuando lo conectes a uno de esos motores paso a paso

Los pocos recuerdo de drivers de motores PaP que tengo son cuando desarme unas cuantas impresoras matriz a punto, en esta los drivers parecian un TDA ( http://www.nxp.com/packages/SOT411-1.html ), mientras que aca es un SMD, aguantara? a mi me parecen casi el doble o triple de grande el motor con respecto a lo que es el de una impresora.

Yo siempre quise crearme algo asi, sea impresora 3D o como decis algo para agujerear ( no por vagancia si no como un desafio) pero pienso que va a ser algo de tirar y tirar plata el cual no puedo afrontar ahora mismo
Título: Re: Construccion maquina de posicionamiento 2D -3D impresora, cnc, ...
Publicado por: elgarbe en 20 de Septiembre de 2015, 10:02:45
muy interesante!
estuve viendo el post de Ariel en ucontrol y la verdad que se ve muy bien esa máquina y se puede hacer con pocos $, comprando de apoco.
Lo ideal sería contar con un estudio como el que acá ofrece Comp para no perderce en la eleccion de los componentes.

Saludos!
Título: Re: Construccion maquina de posicionamiento 2D -3D impresora, cnc, ...
Publicado por: KILLERJC en 20 de Septiembre de 2015, 10:30:44
Me puse a ver el tema de los motores, puede que encontre un problema.

El modulo que usan es este:
https://www.pololu.com/product/1182

Y en el pin ENABLE tiene una resistencia a GND, un pull-down
Y si observan en el esquematico de la plama RAMPS te encontras con un pull-up en el mismo pin. por que poner un divisor resistivo en una entrada ? por que no dejarlo directamente con solo el pull-down y cuando se requiera inhabilitarlo se pone a 1 ese pin.

Cosas curiosas que se ven.

Estaba viendo el coste que puede llegar a tener, y hay:

100 dolares por los 5 motores, 20 dolares por cada motor
185 dolares el modulo RAMPS, si lo ahces por separado y compras solo los modulos del stteper tal ves llegas a unos 70/80 dolares ( 30 es de los modulitos, imagino que sera menos si es que lo haces sin modulos, pero si se quema uno es mas dificil cambiarlo)
Hasta aca:

200 a 285 dolares Segun como hagas el RAMPS
Imagino que se puede achicar mucho mas si se usa otro micro y no un Arduino, Y conseguir motores en otro lado de una forma mas barata.

Tambien me falta todo el sistema de guias y cuadro para el montaje. Aca en argentina con toda la furia tal ves llegamos a unos 3000/4500 pesos elgarbe para hacer esto :P
Título: Re: Construccion maquina de posicionamiento 2D -3D impresora, cnc, ...
Publicado por: elgarbe en 20 de Septiembre de 2015, 11:45:52
acá hay un cálculo:

http://www.ucontrol.com.ar/forosmf/impresion-3d/armando-una-prusa-i2-dudas-y-problemas/msg86330/#msg86330

por lo que veo hay muchas versiones, pero en principio no sería mucha plata, por lo menos para ir haciéndola de a poco y tratando de hacer la electrónica propia.
El otro día escuchaba de una empresa argentina (unos "emprendedores") que comenzaron con un emprendimiento para fabricar impresoras 3d en argentina y que despues de 3 años, por problemas en las importaciones no pudieron fabricar ninguna. Lo interesante era que tenían más de 200 pedidas!

sds.
Título: Re: Construccion maquina de posicionamiento 2D -3D impresora, cnc, ...
Publicado por: juaperser1 en 20 de Septiembre de 2015, 14:11:46
bueno yo creo que depende de para que se quiera la maquina saldrá mas cara o mas barata dependiendo de la precision.

yo tengo una CNC construida con materiales caseros, mi intención era poder fresas placas con encapsulados smd TQFP, pero con los materiales que utilice no tenia ese precision ni de coña, asi que haciendo los calculos para tener una gran precision, la maquina si que me salia muy cara, y aparque el proyecto.

lo que mas dinero se llevaba eran los rodamientos lineales y los husillos con bolas autolubricadas, que los de calidad son carisimos, el problema de poner un tornillo con tuerca como husillo es que el rozamiento es enorme y coge holgura en poco tiempo.

en cuanto a la electronica, me la hice yo, muy mejorable, por que entre en la electronica hacia bien poco, pero bueno, funcionaba, para los driver de los paso a paso, que eran unipolares de 1,8º por paso u tilice los driver de ST L298. Para el control, un pic, y la lectura de las cordenadas desde un programa en C# comunicacion serial com.

la fuente de alimentacion fue una de ordenador, se acabo jodiendo, ya que no daba tanto para los motores que eran de 2 amperios cada uno.

un saludo
Título: Re: Construccion maquina de posicionamiento 2D -3D impresora, cnc, ...
Publicado por: miquel en 20 de Septiembre de 2015, 14:56:05
Hola  CompSystems!

Tengo una impresora 3D casera y construida a finales del 2014. Esta inspirada en la Prusa3 y su estructura esta hecha en MDF 16mm. Aqui puedes verla:

http://spainlabs.com/foro/viewtopic.php?f=36&t=2857 (http://spainlabs.com/foro/viewtopic.php?f=36&t=2857)

Los materiales los empece a comprar a mitad del 2014 y entonces el dolar estaba "bajito" con respecto al euro y me salio por nos 250 dolares. Casi todos los materiales los compre en Ebay y Aliexpress.

Saludos,

Miquel

Título: Re: Construccion maquina de posicionamiento 2D -3D impresora, cnc, ...
Publicado por: Miquel_S en 20 de Septiembre de 2015, 15:26:21
Hola miquel se ve muy bien hecha tu impresora ¿de donde sacaste el diseño?

Miquel_S
Título: Re: Construccion maquina de posicionamiento 2D -3D impresora, cnc, ...
Publicado por: KILLERJC en 20 de Septiembre de 2015, 15:51:47
Esta MUY buena miquel, me encanto, todo prolijo, es perfecto.

Note que las varillas roscadas arriba no poseen un agarre, es asi o le falta algo?
Título: Re: Construccion maquina de posicionamiento 2D -3D impresora, cnc, ...
Publicado por: CompSystems en 20 de Septiembre de 2015, 16:03:04
Buen diseño de MIGUEL y muy buenas vistas de su construcción  ((:-)), los motores verticales se acoplan directamente a los ejes de giro

comparto tus imágenes acá

(http://jaimeza.org/ElectronicEngineering/3Dprinter/images/vista_chasis_3dprinter_imagen00.jpg)
Título: Re: Construccion maquina de posicionamiento 2D -3D impresora, cnc, ...
Publicado por: CompSystems en 20 de Septiembre de 2015, 17:54:19
Lista de partes mecánicas

(http://jaimeza.org/ElectronicEngineering/3Dprinter/images/componentes_mecanicos_3dprinter_imagen00.jpg)

a:  acople flexible eje Z entre motor y
 Especificaciones:
 cantidad: 2
 Dimensión: 5x5mm

b: Polea GT2  
Especificaciones:
 cantidad: 2
 Dientes: 20
 Espaciado entre dientes: 2mm
 Acople a un eje de 5mm
 Material: Aluminio
 Máximo ancho de correa permitida: 7mm

c: correa GT2, Es menos propensa al ‘backlash‘ debido a cómo la forma redondeada de los dientes engranan con la polea
 Especificaciones:
 cantidad: 1 metro
 Espaciado entre dientes: 2mm
 Ancho correa: 6 mm y es abierta
 Material: caucho neopreno reforzado con fibra de vidrio

d: Rodamiento
 Especificaciones:
 Cantidad: 3
 Dimensión: 4.5 cms

e: Juego de varillas o tornillos roscadas , tuercas y arandelas

2 varillas roscadas M10 de 420 mm x ?mm de longitud galvanizada (se requiere 12 tuercas y 12 arandelas M10 INOX)

4 varillas roscadas M8 de 210 mm x ?mm de longitud galvanizada (se requiere  24 tuercas y 22 arandelas M8 INOX)

2 varillas roscadas M5 de 300 mm x ?mm de longitud en acero inoxidable (se requiere 2 tuercas M5 INOX)

f: Juego de varillas lisas   

2 varillas lisas M8 de 320 mm de longitud

2 varillas lisas M8 de 370 mm de longitud

2 varillas lisas M8 de 390 mm de longitud




-----------------------------------
Para los que nos entramos en el mundo del CAD, un simple CAD por bloques
http://www.neoteo.com/blockscad-aprende-a-modelar-en-3d-estilo-cad/#prettyPhoto

redactando ...
Título: Re: Construccion maquina de posicionamiento 2D -3D impresora, cnc, ...
Publicado por: miquel en 20 de Septiembre de 2015, 18:17:06
Hola!

Miquel_S: el diseño es mio pero inspirado en la Prusa i3, en el foro de RepRap hay mucha informacion de muchas variantes que hay de esta maquina.
La impresora utiliza un juego de piezas impresas (las de color verde) compradas en Ebay y son del tipo boxframe. Utilize MDF para la estructura
por la facilidad de obtenerla cortada a medida. Ademas este tipo de estructura ya la utilize en una mini CNC (inspirada en la Mantis con area de trabajo 150x150mm) y es muy resistente.

 KILLERJC: No le falta nada en la parte superior de las varillas el diseño es asi, supongo que es por lo dificil encontrar varilla roscada de 5mm que sea perfectamente recta, me dio mucho trabajo ponerlas rectas.

Saludos,

Miquel
Título: Re: Construccion maquina de posicionamiento 2D -3D impresora, cnc, ...
Publicado por: KILLERJC en 20 de Septiembre de 2015, 18:37:50
Igual te felicito de nuevo, cuando ves cosas asi, realmente te dan ganas hasta de construirte uno.

Solo tengo 2 preguntas mas que cualquiera me puede contestar obviamente.

Ahi no esta el rollo con el plastico para la extrusora po lo que veo, eso lo tenes aparte?

Y en la foto que puso CompSystems de las de miquel, hay una que esta a la derecha abajo, en el que se ve el cooler del driver de los motores PaP.
Mi pregunta ahi es, el cable rojo que si no me equivoco viene de la tovera(extrusora, no estoy muy bien con los terminos xD) esta desconectado ? O esos son los extremos y yo tal ves me estoy perdiendo de algo?
Título: Re: Construccion maquina de posicionamiento 2D -3D impresora, cnc, ...
Publicado por: CompSystems en 20 de Septiembre de 2015, 18:58:26
no tengo claro la cantidad de varillas lisas y roscadas y sus dimensiones, por favor MIGUEL revisa en el post de encima las partes mecánicas

Gracias
Título: Re: Construccion maquina de posicionamiento 2D -3D impresora, cnc, ...
Publicado por: miquel en 20 de Septiembre de 2015, 20:47:35
Hola KILLERJC!
En un principio el rollo de filamento lo tenia con un soporte en el suelo. Este sistema no era muy practico y lo sustitui por otro montado en la parte superior de la impresora. En estas fotos se puede ver el estado actual:

https://drive.google.com/file/d/0B5bg_pUMLUPkQkJRcjFqa1M3bE0/view?usp=sharing (https://drive.google.com/file/d/0B5bg_pUMLUPkQkJRcjFqa1M3bE0/view?usp=sharing)
https://drive.google.com/file/d/0B5bg_pUMLUPkYXpWU25Oam44MFE/view?usp=sharing (https://drive.google.com/file/d/0B5bg_pUMLUPkYXpWU25Oam44MFE/view?usp=sharing)
https://drive.google.com/file/d/0B5bg_pUMLUPkUFVJSzMxT2V2THc/view?usp=sharing (https://drive.google.com/file/d/0B5bg_pUMLUPkUFVJSzMxT2V2THc/view?usp=sharing)
https://drive.google.com/file/d/0B5bg_pUMLUPkVzNGRG52UkhzcXM/view?usp=sharing (https://drive.google.com/file/d/0B5bg_pUMLUPkVzNGRG52UkhzcXM/view?usp=sharing)
https://drive.google.com/file/d/0B5bg_pUMLUPkU3FmV0MwdXFMNlU/view?usp=sharing (https://drive.google.com/file/d/0B5bg_pUMLUPkU3FmV0MwdXFMNlU/view?usp=sharing)

Tienes razon el extrusor esta sin conectar, es debido a que toda la maquina funciona a 24v y el "chino" se equivoco y me mando el calefactor a 12v y para arrancar la maquina(estaba muerto de ganas)  alimentaba el calefactor a traves de un regulador de 12v montado en una plaquita de CI (una verdadera chapuza), por eso no lo mostre en las fotos originales. En las fotos puedes ver un par de cables verdes a la izquierda que corresponden al calefactor. ¡ El "chino" tardo dos meses en mandarme el calefactor de 24v!!!!!!!!!!!!!!!!

CompSystems: Las dimensiones de las varillas lisas y roscadas dependen de cada maquina y hay muchos tipos diferentes de impresoras Prusa i3. En mi maquina las medidas son:

Eje X 380mm
Eje Y 360mm
Eje Z 340mm

El area de trabajo es de  200x200x150mm y la impresora tiene unas dimensiones exteriores de  432x396x400mm

Saludos,

Miquel



Título: Re: Construccion maquina de posicionamiento 2D -3D impresora, cnc, ...
Publicado por: elgarbe en 20 de Septiembre de 2015, 21:33:33
Comp, veo que los drivers en la RAMPS sugieren los A4988. A mi me interesa fabricar los modulitos con el DRV8825, sabes si son pin a pin compatible? o sea, se puede enchufar cualquiera de los dos en la placa RAMPS sin modificar nada?

Saludos!

Edito:
Comparo esta imagen:
https://www.pololu.com/picture/view/0J1418
con esta
https://www.pololu.com/picture/view/0J4231

y hay pequeñas diferencias. se podrán salvar?

EDITO2: Si, se pueden salvar. Acá esta explicado: https://www.pololu.com/product/2133 abajo de todo.

saludos!
Título: Re: Construccion maquina de posicionamiento 2D -3D impresora, cnc, ...
Publicado por: CompSystems en 20 de Septiembre de 2015, 22:31:21
Esto es lo que encontré

Por qué preferir el Driver DRV8825  frente al A4988?
•Mejor protección frente a incremento de temperatura.
•Puede liberar hasta 1.5A por fase! sin necesidad de disipador ni ventilación. Eso repercute en una vida útil más larga.
•Tiene mayor resolución de micropasos (1/32) frente a sólo (1/16) del A4988
•Ruido: mejor escucharlo que decirlo  
•Los pines son idénticos al driver A4988 por lo que pueden reemplazarlos sin problema para tener un mayor rendimiento.
Título: Re: Construccion maquina de posicionamiento 2D -3D impresora, cnc, ...
Publicado por: elgarbe en 20 de Septiembre de 2015, 22:44:54
gracias!

estaba viendo estos precios:

http://www.aliexpress.com/item/Free-shipping-1pcs-lot-3D-Printer-StepStick-DRV8825-Stepper-Motor-Drive-Carrier-Reprap-4-layer-PCB/32340815037.html?spm=2114.031010208.3.2.c5I66g&ws_ab_test=201526_4,201527_2_71_72_73_74_75,201409_3

y para la RAMPS 1.4:

http://www.aliexpress.com/item/RAMPS-1-4-3D-printer-control-panel-printer-Control-Reprap-MendelPrusa-Wholesale/32459110114.html?spm=2114.031010208.3.18.JNrwBF&ws_ab_test=201526_4,201527_2_71_72_73_74_75,201409_3

no tiene el más minimo sentido intentar fabricar esto.
Ya me pedi las placas, hay que ver si pasan por aduanas, pero por lo que cuestan vs lo que te las cobran en mercado libre, me arriesgo y las pido afuera!!!

saludos!
Título: Re: Construccion maquina de posicionamiento 2D -3D impresora, cnc, ...
Publicado por: KILLERJC en 20 de Septiembre de 2015, 23:02:17

EDITO2: Si, se pueden salvar. Acá esta explicado: https://www.pololu.com/product/2133 abajo de todo.


The SLEEP pin on the DRV8825 is not pulled up by default like it is on the A4988, but the carrier board does connect it to the FAULT pin through a 10k resistor.

Ahi explica por que tenia ese pull-up la placa RAMPS.

Pregunta elgarbe, tuviste suerte con aliexpress al comprar? tengo ganas de comprarme un USB Blaster Clon de Altera, pero no se si pasara, por DX no tengo ningun problema, todo me llego, pero pedi una cosa a ebay y no hubo forma.
Título: Re: Construccion maquina de posicionamiento 2D -3D impresora, cnc, ...
Publicado por: elgarbe en 20 de Septiembre de 2015, 23:32:55

EDITO2: Si, se pueden salvar. Acá esta explicado: https://www.pololu.com/product/2133 abajo de todo.


The SLEEP pin on the DRV8825 is not pulled up by default like it is on the A4988, but the carrier board does connect it to the FAULT pin through a 10k resistor.

Ahi explica por que tenia ese pull-up la placa RAMPS.

Pregunta elgarbe, tuviste suerte con aliexpress al comprar? tengo ganas de comprarme un USB Blaster Clon de Altera, pero no se si pasara, por DX no tengo ningun problema, todo me llego, pero pedi una cosa a ebay y no hubo forma.

yo he comprado unos 20 paquetitos en lo que va del año. me han quedado en aduana (27km de donde vivo) unos 4, de los cuales 2 saque pagando impuestos y haciendo el 4550 y los otros 2 los perdi. los otros 16 (mas o menos) llegaron a  mi casa sin pagar nada. Una vez me llego el touch de la tablet, de 10", un paquete grande que costó USD25 y no me lo retuvieron! uno de los paquetes qu me retuvieron fue un protoboard con un modulito fuente multitension (entrada en 12v y varias salidas, para enchufar en el protoboard) de unos usd4!! no tienen lógica.

Lo que no me llego nunca fue unas cosas de bangood. DX no sé si compré alguna vez. De aliexpress me llegan cosas hasta sin traking...

Saludos!
Título: Re: Construccion maquina de posicionamiento 2D -3D impresora, cnc, ...
Publicado por: CompSystems en 20 de Septiembre de 2015, 23:44:38
una pequeña info sobre el motor paso a paso

(http://jaimeza.org/ElectronicEngineering/3Dprinter/images/Nema17unipolar_bipolar_motor_de_pasos_image00.jpg)

Importante! Tiene el eje con corte tipo D, es decir, que tiene una porción plana donde se ajusta la polea GT2 o un acople y que evita el deslizamiento axial de éste.

El motor NEMA17 de 40mm de largo es perfecto para los trabajos de una RepRap, Prusa Mendel o cualquier otra impresora 3D. Válido para los ejes X, Y y Z, además tiene suficiente torque para hacer funcionar cualquier extrusor con filamentos de 1.75mm y de 3.00mm.

Angulo por paso 1.8°
Rated Voltage 2V
Número de fases 2
Rated Current 1.2A
Resistencia de aislamiento 100MOhms - min
Resistencia por fase  1.7 Ohms ­- 10%  
Aislamiento Clase B  
Inductancia por fase 4.5mH -­ 20%  
Inercia de rotor 57 gr/cm²
Holding Torque 0.4 N m - min
Peso 240 gramos
Detent torque 15 mN m

un vidio
Título: Re: Construccion maquina de posicionamiento 2D -3D impresora, cnc, ...
Publicado por: miquel en 21 de Septiembre de 2015, 04:04:07
Hola!  Aqui teneis la estructura de la impresora en OpenScad:

https://drive.google.com/file/d/0B5bg_pUMLUPkSHpkck94YXBfalk/view?usp=sharing (https://drive.google.com/file/d/0B5bg_pUMLUPkSHpkck94YXBfalk/view?usp=sharing)

Saludos,

Miquel
Título: Re: Construccion maquina de posicionamiento 2D -3D impresora, cnc, ...
Publicado por: CompSystems en 21 de Septiembre de 2015, 16:01:54
gracias miguel,

Desearía en conjunto explorar el código fuente del arduino para el control de estas maquinas, posiblemente tenga este fin de semana los primeros componentes, la idea no solo es "copiar y pegar el código" sino explorarlo par ver como posiciona los motores, etc y de ahí partir para personalizarlo e inclusive mejorarlo
Título: Re: Construccion maquina de posicionamiento 2D -3D impresora, cnc, ...
Publicado por: miquel en 21 de Septiembre de 2015, 16:35:24
Hola CompSystems!

Aqui tienes mi Marlin esta preparado para funcionar con lcd y tarjeta SD :

https://drive.google.com/file/d/0B5bg_pUMLUPkbnRnbWRtNHRnTGs/view?usp=sharing (https://drive.google.com/file/d/0B5bg_pUMLUPkbnRnbWRtNHRnTGs/view?usp=sharing)

Saludos,

Miquel
Título: Re: Construccion maquina de posicionamiento 2D -3D impresora, cnc, ...
Publicado por: elgarbe en 21 de Septiembre de 2015, 22:13:20
Podrían comentar algo de este agregado:

http://articulo.mercadolibre.com.ar/MLA-580068582-controlador-de-impresora-3d-reprap-con-lcd-full-graphics-_JM

saludos!
Título: Re: Construccion maquina de posicionamiento 2D -3D impresora, cnc, ...
Publicado por: miquel en 22 de Septiembre de 2015, 08:06:36
Hola elgarbe!

No tengo experiencia con los controladores Full Graphics, yo utilizo el LCD de 4 lineas, pero por lo que he leido en los foros la gente que lo utiliza esta muy satisfecha.
Lo que creo es que es muy caro el que aparece en el enlace que pusiste(1$Usa > 9,4Pesos). En china esta sobre los 15$USA

Saludos,

Miquel
Título: Re: Construccion maquina de posicionamiento 2D -3D impresora, cnc, ...
Publicado por: CompSystems en 22 de Septiembre de 2015, 17:33:44
recolectando info... hay ucho por digerir  :-)
gracias Miguel por los códigos

les dejo un link de un Tutorial Arduino con motor paso a paso, servomotores, pwm etc

http://www.electroensaimada.com/motor-paso-a-paso.html
http://blascarr.com/control-motor-paso-a-paso/
Título: Re:Construccion maquina de posicionamiento 2D -3D impresora, cnc, ...
Publicado por: CompSystems en 16 de Octubre de 2015, 17:32:57
Realizando un primer montaje de prueba con un chasis de impresora, además e creado mi primer programa en Arduino  :smiley:
 
(http://jaimeza.org/ElectronicEngineering/3Dprinter/images/ejercicio_motor_pasos_arduino_image0.jpg)

En seguida anexo el código fuente elemental para desplazar de un lado a otro el carrete,  agregue un final de carrera para tener una referencia, quiero detectar esta señal como una interrupción IRQ, pero según un sitio web dice que si habilita una interrupción no se puede usar las instrucciones de tiempo como delayMicroseconds(); delay(); etc  :'( http://geekchickens.blogspot.com.co/2014/04/tutorial-de-arduino-desde-0-tutorial-21.html esto es verdad? si es así estoy un poco desilusionado con arduino.

He visto que las impresora 3d tiene varios finales de carrera, para los que han cachareado el código fuente, como detecta el programa el cambio de señal de estos suiches?
Título: Re:Construccion maquina de posicionamiento 2D -3D impresora, cnc, ...
Publicado por: KILLERJC en 16 de Octubre de 2015, 18:27:34
Citar
En seguida anexo el código fuente elemental para desplazar de un lado a otro el carrete,  agregue un final de carrera para tener una referencia, quiero detectar esta señal como una interrupción IRQ, pero según un sitio web dice que si habilita una interrupción no se puede usar las instrucciones de tiempo como delayMicroseconds(); delay(); etc  :'( http://geekchickens.blogspot.com.co/2014/04/tutorial-de-arduino-desde-0-tutorial-21.html esto es verdad? si es así estoy un poco desilusionado con arduino.

No se cual es el codigo de esos delays, normalmente los delays son NOPs ejecutados una y otra ves. Por lo cual no usarian interrupciones. milis() por otra parte SI usa la interrupcion del Timer 1 si no mal recuerdo.
Las interrupciones de los Atmega son incluso mejores que de los PICs, ya que cada modulo tiene su propio vector de interrupcion.

Es decir podes crear una funcion para la interrupcion del Timer ( por ejemplo para el milis() ) y  podes tener tranquilamente una interrupcion externa, con codigos totalmente separados desde el punto de vista del assembler. Si por alguna razon las funciones de Arduino evitan esto ( no creo que lo hagan ) ese es otro tema. El micro es capaz de manejar varias interrupciones y no veo el por que uno deberia desabilitar una interrupcion a favor de otra.

Eso si. OJO!, tu rutina de interrupcion debe durar menos que lo que dura los intervalos de interrupcion de milis() por ejemplo. De todas formas una rutina de interrupcion debe ser lo mas rapida posible. Asi que no creo que exista problema con eso. Si vos tenes funcionando milis() por ejemplo, los milisegundos contados no van a avanzar por que esta atrapado en la interrupcion (generado por la interrupcion externa). Y ese es el principal problema. No podrias usar milis() ni en tu programa principal por que no va a respetar el tiempo, lo cual si por ejemplo sucedio la interrupcion externa y luego la de milis, tal ves cuando pasaron 10ms solo conto 1ms (y tenes problemas si esta basado en tiempo tu programa). Pero, si tu interrupcion es rapida la cual dure menos de 1ms, supongamos 0.5ms lo cual estamos hablando de cerca de 2000 ciclos(instruccion de 1 ciclo) en ASM facilmente a 4Mhz entonces no vas a tener problemas.

Y creo que a lo otro que se refiere la persona del articulo es que ADENTRO de la interrupcion no podes usar delays o milis (por las mismas razones que antes y por obvias razones). Y Por que como dije antes: la interrupcion debe ser lo mas rapido posible.

Lamentablemente no esta muy claro a que apunta o no con esa frase, pero estas son las 2 limitaciones que debes tener en cuenta.
Y esto afecta a cualquier microcontrolador, no solo los Atmega ( Arduino como se quieran llamar )
Título: Re:Construccion maquina de posicionamiento 2D -3D impresora, cnc, ...
Publicado por: CompSystems en 23 de Octubre de 2015, 00:55:45
voy ha necesitar una interrupción para ver el estado de un final de carrera, pero por ahora estoy puliendo mi primer programa

el siguiente código implementa una función llamada runBackAndForth ejecuta la función ir y venir con argumentos velocidad y rotaciones completas de un motor de pasos, el código fue basado en el video siguiente, lo cambie a full-step mode, por facilidad, pero la idea es cambiar los micropasos dentro del código, lo que aun no he comprendido es la fucnion holdHalfCylce(double speedRPS) por favor quien me ayuda documentado esta función para ver que hace cada sentencia

Gracias

próximamente anexare circuito SCH


Código: C++
  1. //Learning how to run a bipolar stepper motor.
  2.  
  3. // Version 0.02 basada en [youtube]https://www.youtube.com/watch?v=PrV-SLxIIFE[/youtube]
  4.  
  5.  
  6. //
  7. //Setup:
  8. //-Power source: 10 V / max 750mA (old mobile phone charger)
  9. //-Motor: 17HS1001-05 stepper motor, bipolar, 4-wire, R/coil 10 ohm, ratings unknown
  10. //-Microcontroller: Arduino MEGA
  11. //-Driver: Pololu A4988 stepper motor driver carrier
  12. //
  13. //Pololu current limiter adjusted with the screw and ref pin value measured to be 0.24 V, which corresponds to 2.5 A/V * 0.24 V = 750 mA (look at the Pololu manual). With this setting, I measured about 500 mA drawn from the power source.
  14. //
  15. //MS1 pin set high (connected to 5 V) to enable half stepping, disconnected results in full-step mode
  16. //
  17. //As suggested by Pololu manual, a capacitor (220uF) is added to the power input.
  18. //
  19. //Rest of the pin setups follow the ones on the Pololu manual page:
  20. //http://www.pololu.com/product/2128 and https://www.pololu.com/product/2133
  21. //
  22.  
  23.  
  24.  
  25.  
  26. #ifndef ARDUINO_BOARDS_H // macro-identificador no está definido?
  27. //#then
  28.   #define ARDUINO_BOARDS_H // definalo
  29.  
  30.   #define Arduino_UNO 0
  31.   #define Arduino_MEGA_2560 10
  32.   #define Genuino_MEGA_2560 Arduino_MEGA_2560
  33.  
  34.   //#define SelectBoard(board) (ARDUINO_BOARD==BOARD_##board)
  35.  
  36. #endif //BOARDS_H
  37.  
  38. // The number of steps in one full motor rotation
  39. const int stepsInFullRound = 200; // full-step mode
  40. // const int stepsInFullRound = 400; // half stepping
  41.  
  42. int statusLED = LOW;
  43.  
  44. void setup() { // put your setup code here, to run once:
  45.   #define ARDUINO_BOARD Arduino_MEGA_2560
  46.  
  47.   #if ARDUINO_BOARD == Arduino_MEGA_2560
  48.     // DRIVER8825 pin conexion to arduino
  49.     #define DRIVER8825_RESET_PIN 52 // Pin 52 connected to RESET pin of DRIVER8825
  50.     #define DRIVER8825_STEP_PIN 50 // Pin 50 connected to STEP pin of DRIVER8825
  51.     #define DRIVER8825_DIRECTION_PIN 48 // Pin 48 connected to DIRECTION pin of DRIVER8825
  52.     #define DRIVER8825_MODE0_PIN 30
  53.     #define DRIVER8825_MODE1_PIN 32
  54.     #define DRIVER8825_MODE2_PIN 34
  55.    
  56.     //
  57.     #define LED_PIN 46
  58.     #define LIMIT_SWITCH_PIN 44 // final de carrera
  59.        
  60.   #else
  61.  
  62.   #endif //BOARDS_H
  63.  
  64.  
  65.   // Set pins
  66.   //pinMode(DRIVER8825_RESET_PIN, OUTPUT);
  67.   pinMode(DRIVER8825_STEP_PIN, OUTPUT);
  68.   pinMode(DRIVER8825_DIRECTION_PIN, OUTPUT);
  69.   pinMode(DRIVER8825_MODE0_PIN, OUTPUT);
  70.   pinMode(DRIVER8825_MODE1_PIN, OUTPUT);
  71.   pinMode(DRIVER8825_MODE2_PIN, OUTPUT);
  72.    
  73.   pinMode(LED_PIN, OUTPUT);
  74.  
  75.   digitalWrite(DRIVER8825_STEP_PIN, LOW);
  76.   digitalWrite(DRIVER8825_DIRECTION_PIN, LOW);  
  77.  
  78.   // Microstep Resolution
  79.   // Full step: low status or disconnected results in full-step mode
  80.   digitalWrite(DRIVER8825_MODE0_PIN, LOW);
  81.   digitalWrite(DRIVER8825_MODE1_PIN, LOW);
  82.   digitalWrite(DRIVER8825_MODE2_PIN, LOW);
  83.  
  84.   // Another
  85.   // MODE0 1 2
  86.   // High Low Low Half step
  87.   // Low High Low 1/4 step
  88.   // High High Low 1/8 step
  89.   // Low Low High 1/16 step
  90.   // High Low High 1/32 step
  91.   // Low High High 1/32 step
  92.   // High High High 1/32 step
  93.  
  94.   digitalWrite(LED_PIN, LOW);
  95. }
  96.  
  97. // Runs the motor according to a chosen direction, speed (rounds per seconds) and the number of steps
  98. void run(boolean runForward, double speedRPS, int stepCount) {
  99.   digitalWrite(DRIVER8825_DIRECTION_PIN, runForward);
  100.  
  101.   for (int i = 0; i < stepCount; i++) {
  102.     digitalWrite(DRIVER8825_STEP_PIN, HIGH);
  103.     holdHalfCylce(speedRPS);
  104.     digitalWrite(DRIVER8825_STEP_PIN, LOW);
  105.     holdHalfCylce(speedRPS);
  106.   }
  107. }
  108.  
  109. // A custom delay function used in the run()-method
  110. void holdHalfCylce(double speedRPS) {
  111.   long holdTime_us = (long)(1.0 / (double) stepsInFullRound / speedRPS / 2.0 * 1E6);
  112.   int overflowCount = holdTime_us / 65535;
  113.   for (int i = 0; i < overflowCount; i++) {
  114.     delayMicroseconds(65535);
  115.   }
  116.   delayMicroseconds((unsigned int) holdTime_us);
  117. }
  118.  
  119. // Runs the motor once in forward direction and once to the opposite direction.
  120. // Holds the motor still for 1 sec after both movements.
  121. void runBackAndForth(double speedRPS, int rounds) { // funcion ir y venir
  122.   run(true, speedRPS, stepsInFullRound * rounds);
  123.   delay(1000);
  124.   run(false, speedRPS, stepsInFullRound * rounds);
  125.   delay(1000);
  126. }
  127.  
  128. void blinkLED(void) {
  129.   statusLED = !statusLED;
  130.   digitalWrite(LED_PIN, statusLED);
  131. }
  132.  
  133.  
  134. // Tests various speeds 2,3 & 4, with 1 to 3 rotations
  135. void loop(){
  136.   blinkLED();
  137.   runBackAndForth(2, 1); // speed 2, 1 rotations
  138.   blinkLED();
  139.   runBackAndForth(3, 2); // speed 3, 2 rotations
  140.   blinkLED();
  141.   runBackAndForth(4, 3); // speed 4, 3 rotations
  142. }
Título: Re:Construccion maquina de posicionamiento 2D -3D impresora, cnc, ...
Publicado por: KILLERJC en 23 de Octubre de 2015, 02:07:24
Como que el programa en si no tiene demasiado secreto. El secreto esta en como calcula eso.. Es decir la primer linea.

Dependiendo de la velocidad que ingrese a la funcion ( la velocidad ES un numero flotante de doble precision de 64bits ) calcula la cantidad de microsegundos que debe esperar para dar medio paso. Por eso el "half", como no posee ningun maldito parentesis... la funcion por el orden de precedencia. seria algo asi:

(((1 / stepInFullRound) / speedRPS) / 2) * 1E6 , o que es igual que hacer:

\frac{1}{2*stepInFullRound*speedRPS} * 1e6

Esto lo probe en C++ en mi computadora, por que el orden de precedencia me confundia. Mas que nada los cast no estaba seguro de como los tomaba. Para valores de velocidad de 100 RPS te da valores muy chicos, tenes que hablar de valores como 0.00002 RPS como para obtener un numero que ya use mas de 16bits

Finalmente eso se va a guardar en un long, un numero entero y sin comas. Si el valor supera los 65535 , que es lo maximo para 16bits y que debe ser el maximo delay que soporta la funcion "delayMicroseconds" entonces calcula por cuanto veces se excedio de ese valor y lo guarda en overflowCount. Supongamos que tenes 100000 (0x186A0) en holdTime_us, entonces overflowCount va a ser 1,  si tenes 280000 (0x445C0) overflowCount va a ser 4. Esto es mas simple de ver en hexadecimal si observas el valor fuera de los 16bits es tu overflowCount...

Finalmente debemos cumplir con ese "resto"  y por eso castea el holdtime_us a 16 bits. Es decir elimina los demas bits y se queda con solo lso 16 bits de menos peso, o por ponerlo de otra forma, lo que no lo hizo con el overflowCount, debe hacerlo aca asi alcanzar el valor del delay
Título: Re:Construccion maquina de posicionamiento 2D -3D impresora, cnc, ...
Publicado por: CompSystems en 23 de Octubre de 2015, 12:03:56
muy bien,  analizando la respuesta de KILLERJC

Código: C++
  1. void holdHalfCycle(double speedRPS) {
  2.   long holdTime_us = (long)( 1.0 / ( (double) stepsInFullRound / speedRPS / 2.0 ) * 1E6);
  3.   int overflowCount = holdTime_us / 65535;
  4.   for (int i = 0; i < overflowCount; i++) {
  5.     delayMicroseconds(65535);
  6.   }
  7.   delayMicroseconds((unsigned int) holdTime_us);
  8. }

segun zator
http://www.zator.com/Cpp/E2_2_4.htm

1: un double tiene 8 bytes 64 bits y el dominio de operacion es 2.23e-308 <= |X| <= 1.79e308,   Precisión científica (15-dígitos),

2: un long tiene 4 bytes 32 bits y el dominio de operacion es -2,147,483,648 <= X <= 2,147,483,647   

segun lo anterior el parametro speedRPS los valores logicos irian entre [0 y 1.79e308], no tiene sentido ingresar valores negativos, ademas C++ no permite restringir  positivamente un double como UNSIGNED LONG

segun entiendo el motor NEMA17 en giro completo requiere 200 pasos, ya que el paso es de 1.8 grados * 200 = 360 grados es decir 1 vuelta, en el codigo original, la variable  stepsInFullRound se define con valor 400 por que el micropaso se definio como HALF

Código: C++
  1. const int stepsInFullRound = 400; // half stepping
  2.   digitalWrite(DRIVER8825_MODE0_PIN, HIGH); // 1
  3.   digitalWrite(DRIVER8825_MODE1_PIN, LOW);  // 0
  4.   digitalWrite(DRIVER8825_MODE2_PIN, LOW);  // 0

Con los valores anteriores y speedRPS=6, expresando la sentencia long holdTime_us = (long)(1.0 / (double) stepsInFullRound / speedRPS / 2.0 * 1E6); como funcion matematica

f(speedRPS,stepsInFullRound)=integerPart(1E6/(speedRPS*stepsInFullRound))

f(6,400)=integerPart(1E6/(speedRPS*stepsInFullRound)) => 208.333333333 => 208

ahora

int overflowCount = holdTime_us / 65535;

208/(2^16-1) => 0.00317 => 0

el ciclo for no se efectúa

  for (int i = 0; i < overflowCount; i++) {
    delayMicroseconds(65535);
  }

solo la siguiente sentencia

delayMicroseconds((unsigned int) holdTime_us);

delayMicroseconds(208) // 208us = 0.000208s

es correcto este calculo?

ahora si speedRPS = 0.019

f(0.019,400) = 65789.4736842 => 65789

65789/(2^16-1) => 1.00387579156 => 1

el ciclo for se efectua una sola vez y hace un retardo de delayMicroseconds(65535); 65535us
mas
delayMicroseconds(65789) // 65789us

en total 131324us verdad? esto es 0.131324s
Título: Re:Construccion maquina de posicionamiento 2D -3D impresora, cnc, ...
Publicado por: CompSystems en 23 de Octubre de 2015, 13:12:05
una nota de https://www.arduino.cc/en/Reference/DelayMicroseconds


Hace una pausa en el programa para la cantidad de tiempo (en microsegundos) especificado como parámetro. Hay mil microsegundos en un milisegundo, y un millón de microsegundos en un segundo.


Actualmente, el valor más grande que va a producir un retraso exacto es 16383. Esto podría cambiar en el futuro . Para retrasos de más de unos pocos miles de microsegundos, debe usar delay() en su lugar.
Título: Re:Construccion maquina de posicionamiento 2D -3D impresora, cnc, ...
Publicado por: KILLERJC en 23 de Octubre de 2015, 13:24:11
Citar
int overflowCount = holdTime_us / 65535;

208/(2^16-1) => 0.00317 => 0

el ciclo for no se efectúa

  for (int i = 0; i < overflowCount; i++) {
    delayMicroseconds(65535);
  }

solo la siguiente sentencia

delayMicroseconds((unsigned int) holdTime_us);

delayMicroseconds(208) // 208us = 0.000208s

es correcto este calculo?

ahora si speedRPS = 0.019

f(0.019,400) = 65789.4736842 => 65789

65789/(2^16-1) => 1.00387579156 => 1

el ciclo for se efectua una sola vez y hace un retardo de delayMicroseconds(65535); 65535us
mas
delayMicroseconds(65789) // 65789us

en total 131324us verdad? esto es 0.131324s

El primer calculo si. el segundo NO, el segundo con tus pasos (copio y pego y le cambio los valores ) quedaria:
(En negrita lo corregido)

ahora si speedRPS = 0.019

f(0.019,400) = 65789.4736842 => 65789

65789/(2^16-1) => 1.00387579156 => 1

el ciclo for se efectua una sola vez y hace un retardo de delayMicroseconds(65535); 65535us
mas 65789 - 65536(esto es 2^16) = 253
delayMicroseconds(253) // 253us


La suma total de ambas es 65788, un delay de 65535 y otro de 253 ( se pìerde 1 us por cada for, ya que no llega a 65536
Título: Re:Construccion maquina de posicionamiento 2D -3D impresora, cnc, ...
Publicado por: CompSystems en 23 de Octubre de 2015, 13:50:32
ok, ósea que la siguiente sentencia
delayMicroseconds((unsigned int) holdTime_us);

seria equivalente matemáticamente como

delayMicroseconds(holdTime_us - 2^16);
Título: Re:Construccion maquina de posicionamiento 2D -3D impresora, cnc, ...
Publicado por: KILLERJC en 23 de Octubre de 2015, 13:54:57
no, seria el equivalente a :

delayMicroseconds((unsigned int) holdTime_us);  ==
delayMicroseconds( holdTime_us & 0xFFFF );

Por eso mismo te decia que es mas facil verlo en hexadecimal, 65789 = 0x100FD , o separado en 16 bits 0x1 00FD , 0x1 es el for y 0x00FD (253) es tu "resto" de los 65535 (menos 1 obviamente)

Ojo esto es un aproximado ya que se divide por 65535 y no por 65536, pero es mas simple de verlo asi. Si queres que sea exacto deberia haber realizado:

delayMicroseconds( holdTime_us % 65535 );

Peeeero, es mas rapido lo primero. Es mas, es totalmente malo dividir asi (como lo hizo esa persona)...en terminos de eficiencia.
Título: Re:Construccion maquina de posicionamiento 2D -3D impresora, cnc, ...
Publicado por: CompSystems en 25 de Octubre de 2015, 16:24:43
ok, gracias KILLERJC

Un amigo de Chile muestra en su video como Enderezar varillas roscadas de un eje Z RepRap Prusa

El dice: Tener varillas roscadas perfectamente rectas podría ser una parte crucial de su impresora 3D. En este vídeo os muestro un método para hacer eso. Los resultados son bastante buenos.

Título: Re:Construccion maquina de posicionamiento 2D -3D impresora, cnc, ...
Publicado por: CompSystems en 10 de Noviembre de 2015, 10:44:28
Continuando con el proyecto, aun sobre una protoboard y con partes recicladas de una impresora

En las pruebas que estoy actualmente realizando, tengo 2 motores, a veces solo funciona uno a la vez y el otro motor cuando no trabaja genera un ruido (me parece que también una leve vibración), entonces decidí deshabilitarlo por software (pin ENABLE del DRIVER8824-5 ). Mientras este PIN esta en HIGH deshabilita el funcionamiento del DRIVER por ende (libera el eje del motor), cuando pasa a LOW (habilita el funcionamiento del DRIVER ).

Se anexa código simplificado al anterior (adaptado de un tuto en francés), usa el pin ENABLE, lo que no logro es poner en practica los pines RESET y SLEEP, ¿Cual es la función de estos pines cuando se llevan a LOW? no observo ningún efecto sobre el motor

 digitalWrite( pinSleep  , LOW);  //
 digitalWrite( pinReset  , LOW);  //
 

Código: C++
  1. // Un tutoriel http://wiki.mchobby.be/index.php?title=DRV8825
  2. // Ou Acheter un StepStick DRV8825
  3. // http://shop.mchobby.be/product.php?id_product=454
  4. //
  5. // Microcontroller: Arduino MEGA
  6. // DRV8825
  7. #define pinEnable  52 // Activation du driver/pilote
  8. #define pinMode0   50 //
  9. #define pinMode1   48 //
  10. #define pinMode2   46 //
  11. #define pinReset   44 //
  12. #define pinSleep   42 //    
  13. #define pinStep    40 // Signal de PAS (avancement)
  14. #define pinDir     38 // Direction
  15. #define pinFAULT   36  
  16.  
  17. #define ENABLE_ HIGH
  18. #define ENABLE_INVL !HIGH // inverse logic
  19.  
  20. #define DISABLE_ LOW
  21. #define DISABLE_INVL !LOW // inverse logic
  22.  
  23. void setup(){
  24.   Serial.begin(9600);
  25.   Serial.println("Test DRIVER8825");
  26.  
  27.   pinMode( pinEnable, OUTPUT );
  28.   pinMode( pinMode0,  OUTPUT );
  29.   pinMode( pinMode1,  OUTPUT );
  30.   pinMode( pinMode2,  OUTPUT );
  31.   pinMode( pinReset , OUTPUT );
  32.   pinMode( pinSleep , OUTPUT );
  33.   pinMode( pinDir   , OUTPUT );
  34.   pinMode( pinStep  , OUTPUT );
  35.  
  36.   digitalWrite( pinMode0, LOW );
  37.   digitalWrite( pinMode1, LOW );
  38.   digitalWrite( pinMode2, LOW );
  39.   //digitalWrite( pinFAULT, LOW );
  40. }
  41.  
  42. void loop(){
  43.   int i = 0;
  44.   // Al inicio y fin el motor debe estar libre
  45.   Serial.println("eje del motor libre (no activo)");
  46.   digitalWrite( pinEnable, DISABLE_INVL ); // HIGH: logique inversée
  47.   delay( 5000 );
  48.   Serial.println("eje del motor bloqueado (funcionamiento)");
  49.   digitalWrite( pinEnable, ENABLE_INVL ); // LOW: logique inversée
  50.  
  51.   digitalWrite( pinDir   , HIGH); // Direction avant
  52.   digitalWrite( pinStep  , LOW);  // Initialisation de la broche step
  53.  
  54.  
  55.  digitalWrite( pinReset  , HIGH);  //
  56.  digitalWrite( pinSleep  , HIGH);  //
  57.  
  58.   // Avance de 200 pas
  59.   for( i=0; i<200; i++){
  60.     digitalWrite( pinStep, HIGH );
  61.     delayMicroseconds( 2000 );
  62.     digitalWrite( pinStep, LOW );
  63.     delayMicroseconds( 2000 );
  64.   }
  65.  
  66.   // deshabilitar temporalmente
  67.   Serial.println("eje del motor libre (no activo)");
  68.   digitalWrite( pinEnable, DISABLE_INVL ); // HIGH: logique inversée
  69.   delay( 3000 );
  70.   Serial.println("eje del motor bloqueado (funcionamiento)");
  71.   digitalWrite( pinEnable, ENABLE_INVL ); // LOW: logique inversée
  72.  
  73.   digitalWrite( pinDir, LOW); // Direction avant
  74.   // Refaire 200 pas dans l'autre sens
  75.   for( i=0; i<200; i++){
  76.     digitalWrite( pinStep, HIGH );
  77.     delayMicroseconds( 2000 );
  78.     digitalWrite( pinStep, LOW );
  79.     delayMicroseconds( 2000 );
  80.   }
  81.  
  82.  
  83.   Serial.println("eje del motor libre (no activo)");
  84.   digitalWrite( pinEnable, DISABLE_INVL ); // HIGH: logique inversée
  85.  
  86.   Serial.println("Fin de programme");
  87.     // Fin et blocage du programme
  88.   // Presser [reset] pour recommander
  89.   while( true );
  90. }
  91. }

He notado que si, desconecto la fuente de alimentación y muevo el carro del motor, se iluminan los LEDs pilotos del proyecto, el motor funciona como un dinamo, puede ser peligroso y dañar el sistema de control
Título: Re:Construccion maquina de posicionamiento 2D -3D impresora, cnc, ...
Publicado por: CompSystems en 30 de Mayo de 2016, 01:17:04
Un link importante:

http://manualsupervivenciamaker.com/manual/puesta_en_marcha_y_calibracion_de_una_impresora_3d.html

http://www.inventable.eu/2010/12/01/como-proyectar-una-plataforma-movil-con-un-motor-paso-a-paso-segunda-parte/