miércoles, 15 de marzo de 2017

Copiar matrices y listas en python 2.7 (Parte 1)

Como parte de mi aprendizaje en informática me ha tocado acercarme al lenguaje de programación Python, la mayoría de mi experiencia la tengo programando microcontroladores en C, así que este nuevo lenguaje me ha traido algunos problemas para acostumbrarme.

A pesar de que el uso de un intérprete para correr los programas trae muchos beneficios, a veces tendemos a abusar de estos. Para mí un caso en particular fue la copia de listas y matrices.

Listas

A veces se puede tener la mala idea de utilizar la siguiente expresión al querer copiar una lista:

>>> listaA=[1,2,3]
>>> listaB=listaA
>>> print listaA, listaB
[1, 2, 3] [1, 2, 3]

A pesar de que ambas listas tienen los mismos valores, lo que hicimos en este caso no fue copiar, sino, referenciar listaB a listaA. De esta manera al modificar valores en cualquier lista se cambiarán en la otra.

>>> listaB[2]=99
>>> listaA[0]=33
>>> print listaA, listaB
[33, 2, 99] [33, 2, 99]

Podemos ver también que la función id( ) nos retorna la misma referencia. Aunque si eliminamos una lista la otra seguirá existiendo.

>>> id(listaA)
43148296L
>>> id(listaB)
43148296L
del listaA
print listaB
[33, 2, 99]

Hay variadas formas de copiar una lista Python para que al hacer cambios en una no se afecte a la otra. Primero devolvemos listaA a los valores iniciales y luego copiamos.

>>> del listaA
>>> listaA=[1,2,3]
>>> print listaA
[1, 2, 3]
>>> listaB=listaA[:]
>>> listaC=list(listaA)
>>> import copy
>>> listaD=copy.copy(listaA)
>>> listaE=copy.deepcopy(listaA)
>>> listaA[0]=99
>>> print listaA,',',listaB,',',listaC,',',listaD,',',listaE
[99, 2, 3] , [1, 2, 3] , [1, 2, 3] , [1, 2, 3] , [1, 2, 3]

De esta manera, al hacer cambios en listA no afecta a sus copias.

En internet hay más información acerca de cada una de estas funciones. En la siguiente entrada tocaré el tema de las matrices o arrays.

sábado, 30 de enero de 2016

PROYECTO CORTADORA PLASMA CNC

PROYECTO CORTADORA PLASMA CNC

Ultima actualización 04/03/2016

Hace un tiempo comencé a trabajar en la construcción de una máquina de corte plasma CNC, luego de mucho trabajo (entre ello muchas equivocaciones), logré fabricar una que funcione, aún hay que hacerle varias modificaciones para llegar a su operación en un 100%, pero por ahora puede realizar trabajos que no requieran de mucha precisión.

La estructura principal se fabrica con perfiles de “acero estructural” y pensando en un área de corte de 1500x1500 mm.

 
Estructura central de la mesa de corte


 
El control CNC se realiza mediante el software Mach3 operando en Windows 7. Para la comunicación utilizo una tarjeta de puerto paralelo PCI express, en un comienzo para la interfaz entre el PC y los drivers utilicé una tarjeta traída desde China.

La tarjeta falló rápidamente, el principal problema fue en un circuito integrado que hacía de amplificador de las señales del puerto paralelo, era un componente de montaje superficial, por lo que cambiarlo se me hacía muy engorroso. Dado esto preferí diseñar mi propia tarjeta de interfaz con transistores independientes que hacen mucho más fácil la reparación en caso de falla. 

Tarjeta de interfaz, sin terminar.

He subido un video de la operación de la máquina, en este caso fabricaba soportes laterales para estanterías decorativas.

  

La cortadora de plasma es de la marca Gladiator modelo ITEP 8140 es de fabricación china. He logrado cortar planchas de hasta 5mm de espesor, considerando el bajo costo del equipo y la torcha los resultados han sido bastante aceptables.
La cortadora cuenta también con capacidad de soldar con método TIG, por lo que he estado experimentado con este, expondré más sobre los resultados en otra entrada.

Equipo de soldadura/corte plasma ITEP 8140


 La antorcha de plasma es del tipo PT-31, es muy económica en cuanto a repuestos y son fáciles de encontrar, no es una antorcha de alta resolución por lo que a las piezas cortadas se les debe quitar la rebaba. Incluso se pueden encontrar versiones lineales de esta torcha pensadas especialmente para CNC.

Torcha lineal tipo PT-31
A continuación muestro la pieza que se fabrica en el video y la repisa terminada.

Soporte repisa

 
Producto terminado