sábado, 17 de noviembre de 2018

Arduino CNC con piezas de DVD recicladas. Programa Benbox

Página principal


Arduino
CNC con piezas de DVD recicladas
programa Benbox
Parte 3

En la primera parte de este montaje había realizado un CNC con un lenguaje propio. PARTE1
En la segunda parte de montaje, realizo una sencilla interface gráfica con Gambas (Visual Basic para linux). PARTE2
En esta tercera parte mostraré como utilizar el CNC con un programa comercial llamado Benbox.
Existen multitud de páginas donde se puede descargar el programa.
Se ha utilizado principalmente para crear dibujos y letras con láser, funciona con muchos KIT chinos.
El programa Benbox solo funciona en Windows o en una máquina virtual con VirtualBox.
http://www.holdme.cn/thread-1566-1-1.html
https://mega.nz/#!u8RnBDRa!G39BvWg0dSnv0Iwr49dDxI_rFS3fQuSBxM0wBUSxZcQ
Lo primero que debemos es cargar el firmware en el arduino nano que nos trae el módulo.
Debemos seleccionar NANO(328p)/LX-Nano, el puerto correspondiente COM3...COM4 y pulsar OK.
En alguna ocasión no me ha funcionado a la primera.


Debemos configurar algunos parámetros del dispositivo, en mi caso lo he dejado de la siguiente manera.
En Speed he puesto 2000, pero en algunos casos puede ser mayor o menor.
Se puede ajustar la altura del rotulador con las opciones Pen Up y Pen Down .


Como mi placa es un poco peculiar debo cambiar los pin de conexión de los ejes X e Y.
Cada uno deberá poner los suyos. Lo normal para la mayoría de la gente será:
X_STEP=2 , X_DIR=5, Y_STEP=3, Y_DIR=6.
En PPM deberemos poner los pasos de cada eje.
En mi caso tiene diferente paso, he puesto 25.9 en eje X y 15.9 en eje Y.
El servo se encuentra en el pin 11 del arduino.




Ajuste de la posición del servo.



El resultado a diferentes velocidades.

AVISO. Después de bastantes pruebas he detectado que los motores se calientan.
Aunque funcione bastante bien, recomiendo que la alimentación de los motores solo se realice cuando se tenga que imprimir, de otra manera se calentarán los motores sin necesidad.
De lo descubierto con el calentamiento de motores se deduce que este programa no está diseñado para funcionar con los controladores de los motores paso a paso que tengo.

En la cuarta entrega de está serie de artículos sobre CNC (plotters), explico como utilizar el programa Inkscape para crear ficheros con extensión ngc que pueden ser impresos con un programa bastante extendido llamado GRBL. Los resultados son inmejorables y con bastante calidad.

VIDEO DE FUNCIONAMIENTO


Saludos.
Juan Galaz


Bibliografía:
PARTE1
PARTE2
http://www.holdme.cn/thread-1566-1-1.html
https://mega.nz/#!u8RnBDRa!G39BvWg0dSnv0Iwr49dDxI_rFS3fQuSBxM0wBUSxZcQ
https://www.instructables.com/id/Configurando-La-Grabadora-Laser-Benbox-DIY/#CTDIJIHITCH84HX
http://www.electronoobs.com/eng_impresoras_eleksmaker_2.php

https://www.doovi.com/video/how-to-make-homework-writing-machine-at-home/sUdAwUOaPX0
https://www.luisllamas.es/motores-paso-paso-arduino-driver-a4988-drv8825/
https://es.aliexpress.com/item/3DV4-CNC-Shield-V4-engraving-machine-Nano-3-0-with-USB-A4988-Reprap-Stepper-Drivers-for/32809568484.html
http://wiki.keyestudio.com/index.php/Ks0096_keyestudio_CNC_Kit_/_CNC_Shield_V4.0_%2B_Nano_3.0%2B3pcs_a4988_Driver_/_GRBL_Compatible
http://osoyoo.com/2017/04/07/arduino-nano-cnc-shield-v4-0a4988/

martes, 13 de noviembre de 2018

Arduino CNC con piezas de DVD recicladas. Interface realizada con Gambas. Parte 2

Página principal


Arduino
CNC con piezas de DVD recicladas
Interface realizada con Gambas
Parte 2


En la primera parte de este montaje había realizado un CNC con un lenguaje propio. PARTE1
En esta segunda parte de montaje, realizo una sencilla interface gráfica con Gambas (Visual Basic para linux).
El tener que introducir todas las líneas una por una de forma manual , puede resultar agotador.
Con este programa se simplifica la realización de texto y líneas.
El programa  es sencillo, solo dispone de 4 líneas de palabras y 3 rectángulos para imprimir.
Se puede cambiar las coordenadas y su tamaño.
Las letras solo tienen una resolución 5*8  en forma de línea, no es mucho pero para este CNC sirve.
Como ejemplo la letra N tiene la siguiente descripción:
78, 0, 0, 0, 0, 0, 0, 7, 0, 7, 4, 0, 4, 0, 4, 7
78- Código Ascii de N
0,0,0 reservados
línea de 0, 0 al 0, 7
línea de 0, 7 al 4, 0
línea de 4, 0 al 4, 7

Como no quería complicarme mucho, solo he realizado las letras en mayúsculas.


Interface gráfico.

Recomiendo no ajustar mucho los elementos a los márgenes, puede no pintar bien los extremos debido a un ajuste preciso del CNC.

Para una tercera parte mostraré como utilizar el CNC con programa comercial bastante mas potente.



VIDEO DE FUNCIONAMIENTO

PROGRAMA GAMBAS



Saludos.
Juan Galaz


Bibliografía:
PARTE1
https://www.doovi.com/video/how-to-make-homework-writing-machine-at-home/sUdAwUOaPX0
https://www.luisllamas.es/motores-paso-paso-arduino-driver-a4988-drv8825/
https://es.aliexpress.com/item/3DV4-CNC-Shield-V4-engraving-machine-Nano-3-0-with-USB-A4988-Reprap-Stepper-Drivers-for/32809568484.html
http://wiki.keyestudio.com/index.php/Ks0096_keyestudio_CNC_Kit_/_CNC_Shield_V4.0_%2B_Nano_3.0%2B3pcs_a4988_Driver_/_GRBL_Compatible
http://osoyoo.com/2017/04/07/arduino-nano-cnc-shield-v4-0a4988/

viernes, 9 de noviembre de 2018

Arduino CNC con piezas de DVD recicladas Parte 1

Página principal


Arduino
CNC con piezas de DVD recicladas
Parte 1


En este montaje voy a realizar un CNC con arduino y piezas recicladas de un DVD.
Para decir la verdad, es mas un plóter que un CNC de fabricar piezas, pero el mecanismo es el mismo.
Antes de nada,debo decir que no pretendo enseñar nada, existen numeroso manuales que lo explican mucho mejor de lo que yo pudiese explicar.
En esta primera parte he creado yo mismo todo el programa del arduino , creando mi propio lenguaje de control del CNC. Hubiese sido fácil montar el circuito he instalar los programas que existe ya hechos, y ver como funciona el CNC. Yo pretendo hacer todo desde cero, para así comprender todo mejor.
Empecemos por el principio, existe multitud de videos en internet donde se muestra como fabricar cnc con piezas de DVD.
https://www.doovi.com/video/how-to-make-homework-writing-machine-at-home/sUdAwUOaPX0
Solo con escribir en un buscador las palabras : cnc - dvd - arduino, os saldrá cientos de enlaces.
Un lugar que está muy bien explicado el funcionamiento de los motores paso a paso es:
https://www.luisllamas.es/motores-paso-paso-arduino-driver-a4988-drv8825/
Hace unos meses había pedido por internet un módulo controlador de motores paso a paso , pero no me decidía a probar el circuito, hasta está semana que me sentía con fuerzas.
https://es.aliexpress.com/item/3DV4-CNC-Shield-V4-engraving-machine-Nano-3-0-with-USB-A4988-Reprap-Stepper-Drivers-for/32809568484.html


Tiene todo lo necesario para monta el CNC, un arduino nano y tres A4988 para controlar los motores paso a paso.
Por el precio de 8,6€, creo que no se pueda pedir mas.
Había realizado algún montaje con el chip L293d, pero con estos módulos A4988 el circuito está mas conseguido, e incluso se puede controlar la intensidad que podemos mandar al los motores.
Existen algunas páginas donde explica el funcionamiento del módulo:
http://wiki.keyestudio.com/index.php/Ks0096_keyestudio_CNC_Kit_/_CNC_Shield_V4.0_%2B_Nano_3.0%2B3pcs_a4988_Driver_/_GRBL_Compatible
http://osoyoo.com/2017/04/07/arduino-nano-cnc-shield-v4-0a4988/
Pero después de un montón de pruebas, descubrí que en este modelo de placa estaban cambiados los pin de conexión de los módulos A4988.
Debiéndose configurar de la siguiente manera:
#define EN1  8
#define X_DIR     2       //X axis   direction control of stepper motor
#define Y_DIR     3       //y axis   direction control of stepper motor
#define Z_DIR     4       //z axis   direction control of stepper motor
#define X_STP     5       //x axis  stepper control
#define Y_STP     6       //y axis  stepper control
#define Z_STP     7       //z axis  stepper control
Que cada uno mire su configuración de placa, a mi me costo tiempo descubrir el motivo de que no me funcionase.

Esquema de la placa, puede no coincidir en alguna conexión con el modelo que tengáis vosotros.

Para este montaje solo se utiliza los controladores de los ejes X e Y, además del pin 11 para conectar el servo que maneja el rotulador.
Debemos tener una alimentación entre 7.5 y 12V para alimentar los motores de paso a paso. El servo se alimenta de los 5V del propio arduino.

Detalle del módulo.

En la parte mecánica se encuentra las dos piezas de dos DVD reciclados, unidas entre si por la parte del lector mediante pegamento térmico.

Detalle de la unión de los dos mecanismos.

Una vez unido los dos mecanismos reciclados procedentes de DVDs, me di cuenta que el tornillo de arrastre tenía diferente paso.
El uno tenía 260 pasos y el otro 160 para recorrer todo el trayecto, fue un detalle del cual no me dí cuenta hasta que lo tuve montado.
Para este montaje da igual la precisión, no cambia nada el proyecto, lo único es que debemos tenerlo presente en la programación.


Detalle del mecanismo del pintado.

El mecanismo de control del mecanismo de pintado es sencilla.
El tapón de un rotulador cortado a modo de guía pegado al servo.
El mecanismo de un compás que atrapa al rotulador.
Una goma elástica que mantiene la tensión con el rotulador, y una pajita y un alambre que hace de transmisión del servo al rotulador.
El rotulador utilizado es un STABILO, el mejor que he encontrado.
Si tiene algo de holgura se coloca un pequeño canutillo hecha con otra pajita de mayor tamaño.
Existe otro problema en este CNC, no existe detector de final de recorrido. Cuando se alimenta por primera vez el CNC no sabe en que posición está. Si utilizamos la orden de reset el mecanismo intentara ir todo lo que pueda a la posición de cero, pero al existir una especie  de embrague  puede quedar  desajustado, como  indico en la foto.

Tuve que tomar una decisión, si utilizamos el comando reset, perdemos 15 vueltas en cada eje.
Existe otro método, el manual, arrastrar manualmente a los puntos iniciales 0,0.
Ahora con el comando SET0 hacer este punto como punto inicial 0,0 .

Terminada la parte mecánica, la mas fácil, nos toca el programa en el arduino.
El planteamiento es la de un CNC que recibe ordenes desde un terminal serie, o desde un programa.
He creado un lenguaje de ordenes que entiende el CNC, y estas son las ordenes que comprende el CNC.

Orden
Acción
CNC
El CNC responde OK
GOTOX
Mueve el lápiz a la coordenada X
GOTOY
Mueve el lápiz a la coordenada Y
GOTOXY
Mueve el lápiz a la coordenada X,Y
PAINT 1/0
1 baja el lápiz, 0 sube el lápiz
RESET
Intenta colocar el cursor al punto inicial, de pierde 15 pasos.
SET0
El punto actual lo toma como punto 0,0
LINE x,y,xx,yy
Baja el lapiz , dibuja la línea, al finalizar sube el lapiz.
LINEC x,xx,y,yy
Es como LINE, pero debemos bajar el lapiz para pintar,sirve para linea continuadas.
STEPX+1
Incrementa en un paso el eje X.
STEPY+1
Incrementa en un paso el eje Y.
STEPX-1
Decrementa en un paso el eje X.
STEPY-1 Decrementa en un paso el eje Y.



Las ordenes se pueden escribir en mayúsculas o minúsculas, el programa transforma todo en mayúsculas.
Solo puede existir un espacio o coma entre cada parametro de una orden, de otra forma no entendará la orden.
Si se escribe cualquier otro comando, devolvera ERROR.
Como el arduino del CNC no tiene demasiado buffer, debemos esperar un END de la anterior orden antes de mandar la siguiente orden al CNC.
Existe una rutina en el dibujado de una línea, que busca el punto mas cercano al actual para el inicio de la línea, ayuda mucho en la velocidad de pintado de línea.

Si queremos mandar una orden, desde el propio terminal del arduino se manda la orden. Ejemplo  line 10,10,200,150 .
He creado un programa que manda una serie de ordenes desde un fichero, de esta forma es mucho mas fácil realizar ordenes sucesivas.
Todo está realizado en Linux en la distibución Debian 9.4 .

En la parte segunda de este montaje realizo un pequeño programa en Gambas que facilita la creación de letras.


VIDEO DE FUNCIONAMIENTO

PROGRAMA ARDUINO

PROGRAMA LINUX


Saludos.
Juan Galaz


Bibliografía:
https://www.doovi.com/video/how-to-make-homework-writing-machine-at-home/sUdAwUOaPX0
https://www.luisllamas.es/motores-paso-paso-arduino-driver-a4988-drv8825/
https://es.aliexpress.com/item/3DV4-CNC-Shield-V4-engraving-machine-Nano-3-0-with-USB-A4988-Reprap-Stepper-Drivers-for/32809568484.html
http://wiki.keyestudio.com/index.php/Ks0096_keyestudio_CNC_Kit_/_CNC_Shield_V4.0_%2B_Nano_3.0%2B3pcs_a4988_Driver_/_GRBL_Compatible
http://osoyoo.com/2017/04/07/arduino-nano-cnc-shield-v4-0a4988/

viernes, 19 de octubre de 2018

Problemas que te pueden pasar después de instalar Debian 9


Página principal

Problemas que te pueden pasar después de instalar Debian 9




Debian 9.3 no funciona con adaptadores externos de USB Wifi.
Lo primero debemos estar seguro que hemos instalado los firmware. Por defecto en Debian no instala los firmware (ubuntu instala todos), debemos instalarlos previamente los paquetes mediante Synaptic.
Solución:
Añadir en /etc/NetworkManager/NetworkManager.conf 
 [device]
wifi.scan-rand-mac-address=no

Hago reiniciar las redes con:

/etc/init.d/network-manager restart
/etc/init.d/networking restart

Ahora funciona, ya puedo probar todos mis adaptadores USB-WIFI


En el caso que tengáis varios linux en diferentes particiones, os pasará un error en la próxima vez que entréis en la otra distribución.
Esto es debido que el linux cuando se instala, formatea por defecto la partición de intercambio swap. Pero resulta que le cambia la identificación de nombre, que es como reconoce linux las particiones. Al reiniciar el primer linux, no encuentra el nombre partición que dio el, y se pasa 1:30 minutos pensando.
Este es el sintoma:
ERROR de Running /scripts/local-premount 
Running /scripts/local-premount ... Begin: Waiting for suspend/resume device ... Begin: Running /scripts/local-block ... done.
Running /scripts/local-block ... done.
Running /scripts/local-block ... done.
Running /scripts/local-block ... done.
Running /scripts/local-block ... done.
Running /scripts/local-block ... done.
Running /scripts/local-block ... done.
Running /scripts/local-block ... done.

Gave up waiting for suspend/resume device.

La forma de arreglarlo siendo root es mediante la orden:
update-initramfs -u
 
o
update-initramfs -u -k all

Probar una u otra y ahora lo normal es que se arregle.
Yo también cambio el fichero /etc/fstab , quito la etiqueta y lo sustituyo por la referencia directa,lo prefiero.

# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sdb5 during installation
/dev/sdb5 / ext4 errors=remount-ro 0 1
# swap was on /dev/sda9 during installation
/dev/sda9 none swap sw 0 0
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0


La tarjeta gráfica que tengo:
VGA compatible controller: NVIDIA Corporation C61 [GeForce 7025 / nForce 630a] (rev a2)
En principio Debian 9.x instala por defecto el controlador libre nouveau.
Pero resulta que no es demasiado estable con aplicaciones 3D, y lo normal es que se cuelgue.
Debemos instalar el controlador propietario de Nvidia.
echo -e "blacklist nouveau" > /etc/modprobe.d/fbdev-blacklist.conf
echo -e "options nouveau modeset=0" > /etc/modprobe.d/modesetting.conf

echo "deb http://deb.debian.org/debian stretch main contrib non-free " >> /etc/apt/sources.list
echo "deb-src http://deb.debian.org/debian stretch main" >> /etc/apt/sources.list
apt-get update
apt-get install nvidia-detect
apt-get install linux-headers-$(uname -r) nvidia-legacy-304xx-driver
Reiniciamos el ordenador y se soluciona los cuelgues.


El entorno de escritorio PLASMA (KDE) , no funciona o funciona raro.
Resulta que el entorno gráfico utiliza muchos efectos en 3D, y mi tarjeta no es muy compatible con el OpenGL, el resultado es el mal funcionamiento de PLASMA.
La solución es cambiar el Método de renderizado a Xrender.
Desde otro entorno de escritorio, por ejemplo MATE, entrar en el:
  • Centro de control.
  • Preferencias del sistema KDE.
  • Tema espacio de trabajo.
  • Compositor.



Ahora podremos entrar en PLASMA.
Debemos ser honesto, por lo menos en KDE se puede cambiar la forma de renderizado para hacerlo por software. En Gnome no he podido deshabilitar la aceleración gráfica por hardware, por lo que no he podido hacerlo funcionar (me parece increíble hasta donde llego Gnome). :(

Saludos
Juan

martes, 16 de octubre de 2018

Caja de tienda con lector de código de barras

Página principal


Gambas
Caja de tienda
con
lector de código de barras


Teniendo un lector de código de barras, se me pasó por la cabeza hacer una registro de caja de tienda.
Para una fácil realización del programa, lo he realizado en Gambas (V.Basic para Linux).
El programa debía almacenar productos con los códigos de barras, nombre del producto y precio.
Cuando se lee el código de barras, busca en su registro el correspondiente código, si existe añade el precio al ticket. Si no existe el código, abre un dialogo para dar de alta el producto.
También tiene un registro de los movimientos, para una posible revisión.
El registro de los diferentes productos se realiza en un fichero de tipo *.csv , el cual puede abrirse con un editor de textos  o con una hoja de cálculo. Tener cuidado en no introducir ENTER sin motivo, da error al cargar el programa.

Si tenéis que imprimir etiquetas de código de barras os recomiendo ver el artículo:
http://seta43.blogspot.com/2018/10/crear-etiquetas-de-codigo-de-barras-con.html

El programa es simple, y cumple su función, no pretendo nada mas.





VIDEO DE FUNCIONAMIENTO





PROGRAMA



Saludos
Juan Galaz

Bibliografía:

http://seta43.blogspot.com/2018/10/crear-etiquetas-de-codigo-de-barras-con.html

miércoles, 10 de octubre de 2018

Arduino Sensor de temperatura Modelo KNEISSEL 433MHz

Página principal

Arduino
Sensor de temperatura
Modelo KNEISSEL
433MHz
xsetaseta@gmail.com

Continuando con el proyecto de receptores de sensores comerciales externos , ahora nos toca el modelo KNEISSEL.


El programa se basa en el anterior, lo único que cada fabricante codifica los datos de forma diferente.
En este caso la onda de  datos mandados tienen este formato:

Como vemos los bit mandados son 24.
En este modelo se mandan los grados divididos, por una parte los decimales y por otro los grados.

El arduino transforma estas ondas en datos decimales que son mandados al PC por medio del interface  serie mediante el USB.
Datos transmitidos :   1,22,2,196,24
Datos:
  • 1-canal.
  • 2-grados.
  • 3-decimal.
  • 4-El primer byte mandado.
  • 5-bits recibidos, deberán siempre ser 24.


Realizado en Gambas (Visual Basic para Linux)

Dispongo de dos sensores y no he podido comprobar si realmente están bien programado la detección de canales.
Lo curioso es que no existe un conmutador para cambiar el número de canal.
Para este modelo solo he realizado el programa en Gambas.

PROGRAMA


Hasta pronto.
JUAN GALAZ

Bibliografía:

receptores de sensores comerciales externos
setacom.html
hantek.html
https://fetzerch.github.io/2014/11/15/reveng433/
https://es.aliexpress.com/item/1pair-2pcs-433mhz-rf-transmitter-and-receiver-kit-For-Wireless-Power-switch-socket-remote-control-LED/32311933574.html?spm=a2g0s.9042311.0.0.lWlrua

domingo, 7 de octubre de 2018

Arduino Sensor de temperatura Modelo prinston 433MHz

Página principal

Arduino
Sensor de temperatura
Modelo prinston
433MHz
xsetaseta@gmail.com

Continuando con el proyecto de receptores de sensores comerciales externos , ahora nos toca el modelo prinston.


El programa se basa en el anterior, lo único que cada fabricante codifica los datos de forma diferente.
En este caso la onda de  datos mandados tienen este formato:

Como vemos los bit mandados son 36.
Los primeros 14 bit contienen codificación propia y estado de batería.
los siguientes 2 bit corresponden al canal,
La temperatura son los siguientes 12 bits,
Y el porcentaje de humedad utiliza 8 bits.

El arduino transforma estas ondas en datos decimales que son mandados al PC por medio del interface  serie mediante el USB.
Datos transmitidos :    Canal,02,Grados,00232,Humedad,024,Control,9003


Realizado en Gambas (Visual Basic para Linux)


Con las librerías wxwidgets en Windows y Linux.

PROGRAMA


Hasta pronto.
JUAN GALAZ

Bibliografía:

receptores de sensores comerciales externos
setacom.html
hantek.html
https://fetzerch.github.io/2014/11/15/reveng433/
https://es.aliexpress.com/item/1pair-2pcs-433mhz-rf-transmitter-and-receiver-kit-For-Wireless-Power-switch-socket-remote-control-LED/32311933574.html?spm=a2g0s.9042311.0.0.lWlrua