miércoles, 27 de abril de 2011

piro sensor


http://www.futurlec.com/PIR_Sensors.shtml
De este tipo de sensores se consigue poca informacion o almenos yo casi no la consigo, su conexion segun lo que encontre es la siguiente (no lo he probado)

El terminal 1 va a 5 voltios
El terminal 2 es la salida
El terminal 3 va a tierra

la terminal 1 se identifica por que el sensor tiene como una pestaña saliente en la cubierta para su indicacion.

Decodificador de tonos conectado al celular

Esta es la direccion donde venden el dispositivo CM8870 que es un decodificador de tonos.
http://www.sigmaelectronica.net/cm8870-p-1415.html
La idea es conectar el manos libres al decodificador de tonos y por medio de los tonos del teclado enviar datos a la plataforma pinguino.
Este es el data del CM8870
http://www.biltek.tubitak.gov.tr/gelisim/elektronik/dosyalar/18/ics8870.pdf
ejemplos en video
http://www.youtube.com/watch?v=3JgrGtE-oHs&feature=related
http://www.youtube.com/watch?v=REASIxCSrwE
http://www.youtube.com/watch?v=HgsCJMyiXXw&feature=related
http://www.youtube.com/watch?v=ysBDURN7xwE&feature=related
Gracias al profesor Javier Cortes de UNIAJC por la informacion suminstrada

Figuras sobre puestas en processing

Este es un ejemplo básico de dibujo de figuras en processing, para mostrar la superposición de figuras según el orden en que se dibujan.
void setup(){
//dimensiones de la pantalla de dibujo size(ancho,alto) 
size(400,400); 
}
void draw(){
  fill(255,0,255);
  ellipse(200,200,400,400);
  fill(0,255,0);
  ellipse(200,200,140,140);
  fill(255,255,0);
  rect(150,150,100,100);
  fill(0,255,255);
  ellipse(200,200,100,100);  
}




void setup(){
//dimensiones de la pantalla de dibujo size(ancho,alto) 
size(400,400); 
}
void draw(){
  //dibuja el cuadro azul
  fill(0,0,255);
  rect(190,0,210,220);
 //dibuja el circulo amarillo
  fill(255,255,0);
  ellipse(110,110,220,220);
 //dibuja el cuadro verde   
  fill(0,255,0);
  rect(0,190,210,210);
 //dibuja el circulo rojo
  fill(255,0,0);
  ellipse(290,290,220,220);  
}

martes, 26 de abril de 2011

Archivos De Pinguino Para Windows

En esta carpeta están los instaladores de Pinguino para windows 7, el Pinguino beta 9-05, processing-1.2.1, algunas imágenes del montaje de la plaqueta, la carpeta Pinguino con processing y algunos manuales (2 hechos por el profesor Julio Fabio De La Cruz y 2 manuales hechos por mi).

Link de descarga de la carpeta http://www.megaupload.com/?d=33QK583X

Si de pronto los links de los archivos que he subido se rompe o no funcionan déjenme un comentario con mucho gusto lo arreglo .

lunes, 25 de abril de 2011

Convertidor de frecuencia a voltaje


Una forma de sensar la velocidad de un motor es utilizando otro motor acoplado a su eje como taco generador, pero esto puede ser engorroso.
Otra forma seria utilizando un convertidor de frecuencia a voltaje, en este caso con un integrado como el LM2907, al motor se le acoplaría un codificador óptico,  para el gráfico que aparece se puede utilizar el CNY70 configurado tal como he explicado en una publicación anterior.
Dejo los enlaces.
http://www.national.com/ds/LM/LM2907.pdf
http://ing-electronik.blogspot.com/2008/09/tacometro-ir.html
http://www.robotroom.com/Maze-Solving-Robot-All-Right5.html
http://www.alanmacek.com/robot/

domingo, 24 de abril de 2011

Microcontroladores o PLC ?

He escuchado varias inquietudes de los estudiantes con respecto a que los micros no tienen uso en ambientes industriales. Hace meses atrás un estudiante me mostró un dispositivo de uso industrial con un pic, el aparato llevaba 15 años operando, de todos modos aquí coloco el siguiente articulo al respecto.
http://www.ingeniosolido.com/blog/2010/10/microcontroladores-vs-plcs-en-la-industria/
http://www.forosdeelectronica.com/f12/estudiar-microcontroladores-plc-39777/index2.html

Ejemplos De Condicionales En Pseint

Ejemplo de menú sencillo.
https://sites.google.com/site/camachomedia/home/archivos/menu00.psc?attredirects=0&d=1
Ejemplo de submenus para cálculos con ley de OHM y Potencia.
https://sites.google.com/site/camachomedia/home/archivos/menu01.psc?attredirects=0&d=1

CNY70 configurado en modo de operación ON - OFF

Este circuito es útil para aquellos que quieran hacer un robot seguidor de linea o un sensor óptico de proximidad.
En mi diseño conecte el ánodo del led emisor a la resistencia de 120 Ohm y el emisor del fototransistor a la resistencia de 20Kohm. La salida la hago por el emisor.
Estos valores pueden variar según el diseño, en mi caso lo probé para el seguidor de linea y con una alimentación de 5 voltios.
Aquí dejo la guía de mi montaje
https://sites.google.com/site/camachomedia/home/archivos/montajecny70onoff.pdf?attredirects=0&d=1
Estos son los enlaces para que complementes mas sobre el funcionamiento y otros montajes
http://www.info-ab.uclm.es/labelec/solar/otros/infrarrojos/sensor_cny70.htm
http://www.micropik.com/pdf/cny70.pdf
http://www.jmnlab.com/cny70/cny_70.html
http://www.madridbot.org/sensores_cny70.htm
http://indianabot.tripod.com/
http://platea.pntic.mec.es/~lmarti2/veloraton/sensoroptref.htm

Puente H con el LM386



Una forma fácil y practica de montar un puente H es utilizando el amplificador de audio LM386, este integrado que esta destinado para el manejo de una carga inductiva como un parlante también puede ser dispuesto para el manejo de una motor.
Aquí esta el enlace de la guía de montaje
https://sites.google.com/site/camachomedia/home/archivos/puentehlm386.pdf?attredirects=0&d=1
Aquí están otros enlaces para una consulta mas detallada
http://www.todomicrostamp.com/pocket_projects.php?proyecto=4
http://proyectoselectronicadearnaldo.blogspot.com/2009/05/lm386-como-puente-h.html
http://fuhrer-luftwaffe.blogspot.com/2009/07/cambio-de-giro-con-lm386.html
http://jorgefloresvergaray.blogspot.com/2009/06/el-lm-386-como-controlador-de-motor.html

sábado, 23 de abril de 2011

Yo no patearía un perrito


http://www.enter.co/software/%E2%80%9Ccompetir-con-microsoft-es-como-patear-un-perrito%E2%80%9D-director-de-linux/
Yo hace rato que no juego con ese perrito al cual se refiere el articulo. Como ejemplo complementario al articulo he colocado un pantallazo de un juego basado en procesamiento de imágenes en el cual estoy trabajando, la resolución es 1280 x 1080, para los que han trabajado en este tipo de procesamiento saben a que me refiero. En el equipo de prueba un CoreI3 El consumo de memoria es del 7,4 % de 3,1 gigas (incluyendo sistema operativo y juego corriendo) y los cuatro núcleos con un consumo menor a 50%.
Para que un perrito si esta cancerbero a disposición.

jueves, 21 de abril de 2011

Explicación LCD y LM35 y conexión a Pinguino


En este enlace se puede descargar la guía de conexión de pinguino con una pantalla LCD.
https://sites.google.com/site/camachomedia/home/archivos/guiapinguinoLCD.pdf?attredirects=0&d=1
La librería para el manejo de la pantalla LCD esta disponible en pinguino 9.04 y pinguino 9.05
Esta guía también explica como funciona la pantalla y puede aplicarse para cualquier otro dispositivo microcontrolado o entorno de programación

Puente H con el L298



Este circuito es muy útil para el control de giro y velocidad de un motor DC. En este caso con el L298
Enlace de descarga del dasheet del L298
http://www.st.com/stonline/books/pdf/docs/1773.pdf
Este es el enlace de la guia de indicaciones del montaje en protoboard.
https://sites.google.com/site/camachomedia/home/archivos/puenteHl298.pdf?attredirects=0&d=1

Archivo para comunicación de pinguino con processing


Para que pinguino pueda entenderse con processing necesita programarse con el siguiente programa con el pinguino IDE.
https://sites.google.com/site/camachomedia/home/archivos/usbprocessing.pde?attredirects=0&d=1
Este es el enlace del creador de la librería pinguino con processing
http://ubaa.net/shared/processing/pinguino/
Este es el enlace donde explico como se instala la librería en processing. En la carpeta guía de instalación esta la explicación.
https://sites.google.com/site/camachomedia/home/archivos/pinguinoconprocessing.zip?attredirects=0&d=1
La guía la elabore utilizando Wink
http://www.debugmode.com/
Estos son algunos vídeos sobre aplicaciones de pinguino con processing
http://www.youtube.com/watch?v=j1sVjgk8Xtc
http://www.youtube.com/watch?v=uU2_B-BDTLE
http://www.youtube.com/watch?v=b9DeM-cbJaQ

Archivo HEX para convertir el microcontrolador en pinguino


Los microcontroladores 18f2550 y 18f4550 de por si vienen en blanco, para convertirlos a pinguino hay que descargarles un archivo .hex este archivo esta en la propia carpeta del instalador del pinguino IDE.
De todos modos aquí dejo el enlace para que descarguen este archivo y puedan programar el micro.
Aquí esta el enlace: Bootloader

Montaje en protoboard del pinguino con el 18f2550


Este es el montaje de la tarjeta, en el caso del conector USB hembra le solde unos terminales para que entrara bien en el protoboard, también sugiero soldarle cables, la cuestión es de que no debe despegarse el conector cuando se conecte al computador.
Este es el enlace para descargar la guia de montaje
https://sites.google.com/site/camachomedia/home/archivos/montaje2550.pdf?attredirects=0&d=1

jueves, 14 de abril de 2011

Manual para Pinguino.IDE Y Manual Para Manejar Pinguino Desde Netbeans

He hecho un pequeño manual para los estudiantes de la Universidad Del Valle Sede Palmira y obviamente para las demás personas que estén interesados en estos manuales del programador Pingüino.IDE para aquellos compañeros que están empezando y que se están interesando en todo este cuento de la tarjeta pingüino, es un manual donde se explican los comandos básicos pero no menos importantes de la programación en Pingüino.IDE.
Además de esto también adiciono otro manual llamado “Manual Para Conexión Netbeans-Pingüino” el cual explica como conectar y manejar la tarjeta pingüino con este programador, Este manual lo hice con el fin de facilitar la realización de una interfaz para aquellos compañeros que saben programar en java y no les queda tiempo para leer los comandos de processing , trate de hacerlo muy fácil de entender y espero que logren conectar sus tarjetas y realizar sus proyectos.
Link descarga desde megaupload http://www.megaupload.com/?d=UV57UJ7C

Si desafortunadamente megaupload desaparecio pero pues para que este trabajo que hice no se pierda lo eh subido a mediafire y aqui esta el link, que pena por la demora pero pues eh estado algo ocupado espero aun te sirva Janman
http://www.mediafire.com/?c0qllo3u01dcy93

miércoles, 13 de abril de 2011

Fractales con rotación HSV


//Autor Ing Carlos Lino Rengifo

float angulo;
float x,y;
int col;
void setup()
{
  size(800,600);
  background(0);
  col= 0;
  colorMode(HSV);
  angulo = 0;
  x=120;
  y=300;
  koch(5,480);
  curvakoch(3);
  curvapeano(3);
 }
void gira(float ang)
{
  angulo+= PI*ang/180;
}
void salta(float xx, float yy)
{
   x= xx;
   y= yy;
}
void salta(float distancia)
{
  float xx = x+distancia*cos(angulo);
  float yy = y-distancia*sin(angulo);
  salta(xx,yy);
}
void traza(float distancia)
{
  float xx= x+distancia*cos(angulo);
  float yy= y-distancia*sin(angulo);
  col = (col+1)%256;
  stroke(col,255,255);
   line(int(xx),int(yy),int(x),int(y));
  salta(xx,yy);
}
void koch(int nivel, float distancia)
{
  if ( nivel == 0)
  {
    traza(distancia);
   }
  else
  {
    koch(nivel-1,distancia/3);
    //salta(distancia/3);
    gira(60.0);

    koch(nivel-1,distancia/3);
    //salta(distancia/3);
    gira(-120.0);

    koch(nivel-1,distancia/3);
    //salta(distancia/3);
    gira(60.0);
    koch(nivel-1,distancia/3);
  }
}
void curvakoch(int orden)
{
  float distancia = (3*height-30)/(2*1.732);
  x= width/2 - distancia/2;
  y= (distancia/3)*1.732/2+5;
  salta(x,y);
  koch(orden,distancia);
  gira(-120.0);
  koch(orden,distancia);
  gira(-120.0);
  koch(orden,distancia);

}
void peano(int nivel, float distancia)
{
  if (nivel == 0)
  {
    traza(distancia);
  }
  else
  {
    peano(nivel-1,distancia/3);
    gira(-90.0);
    peano(nivel-1,distancia/3);
    gira(90.0);
    peano(nivel-1,distancia/3);
    gira(90.0);
    peano(nivel-1,distancia/3);
    peano(nivel-1,distancia/3);
    gira(90.0);
    peano(nivel-1,distancia/3);
    gira(90.0);
    peano(nivel-1,distancia/3);
    gira(90.0);
    peano(nivel-1,distancia/3);
    peano(nivel-1,distancia/3);
   }
}
void curvapeano(int orden)
{
  float distancia = width/3;
  x= width/2-height/2;
  y=width/2;
  salta(x,y);
  peano(orden,distancia);
}

martes, 12 de abril de 2011

Fractales y recursividad

Una de las ventajas del uso de algoritmos recursivos, es la posibilidad de resolver un problema subdividiendo este, en problemas más pequeños, como ejemplo están los fractales que son curvas que repiten su estructura básica de forma infinita, el uso de recursividad hace que el problema de programarlos sea más sencillo que usando algoritmos iterativos.
ma info en wikipedia http://es.wikipedia.org/wiki/Fractal
El siguiente es un ejemplo de código en processing

//Autor Ing Carlos Lino Rengifo

float angulo;
float x,y;
void setup()
{
  size(800,600);
  angulo = 0;
  x=120;
  y=300;
  koch(5,480);
  curvakoch(3);
 curvapeano(3);
 }
void gira(float ang)
{
  angulo+= PI*ang/180;
}
void salta(float xx, float yy)
{
   x= xx;
   y= yy;
}
void salta(float distancia)
{
  float xx = x+distancia*cos(angulo);
  float yy = y-distancia*sin(angulo);
  salta(xx,yy);
}
void traza(float distancia)
{
  float xx= x+distancia*cos(angulo);
  float yy= y-distancia*sin(angulo);
   line(int(xx),int(yy),int(x),int(y));
  salta(xx,yy);
}
void koch(int nivel, float distancia)
{
  if ( nivel == 0)
  {
    traza(distancia);
   }
  else
  {
    koch(nivel-1,distancia/3);
    //salta(distancia/3);
    gira(60.0);
  
    koch(nivel-1,distancia/3);
    //salta(distancia/3);
    gira(-120.0);
  
    koch(nivel-1,distancia/3);
    //salta(distancia/3);
    gira(60.0);  
    koch(nivel-1,distancia/3);
  }
}
void curvakoch(int orden)
{
  float distancia = (3*height-30)/(2*1.732);
  x= width/2 - distancia/2;
  y= (distancia/3)*1.732/2+5;
  salta(x,y);
  koch(orden,distancia);
  gira(-120.0);
  koch(orden,distancia);
  gira(-120.0);
  koch(orden,distancia);

}
void peano(int nivel, float distancia)
{
  if (nivel == 0)
  {
    traza(distancia);
  }
  else
  {
    peano(nivel-1,distancia/3);
    gira(-90.0);
    peano(nivel-1,distancia/3);
    gira(90.0);
    peano(nivel-1,distancia/3);
    gira(90.0);
    peano(nivel-1,distancia/3);
    peano(nivel-1,distancia/3);
    gira(90.0);
    peano(nivel-1,distancia/3);
    gira(90.0);
    peano(nivel-1,distancia/3);
    gira(90.0);
    peano(nivel-1,distancia/3);
    peano(nivel-1,distancia/3);
   }
}
void curvapeano(int orden)
{
  float distancia = width/3;
  x= width/2-height/2;
  y=width/2;
  salta(x,y);
  peano(orden,distancia);
}

Calculo del factorial usando recursividad

El siguiente código usa recursividad como alternativa a la forma iterativa de hallar el cálculo de un numero factorial.

/*************************************************************************
*Autor: *
* Carlos Lino Rengifo
* Usando Parte del codigo del Ing Julio Fabio
* De La Cruz
* *
*Descripcion: *
* Ingreso de datos desde teclado, utilizacion de funciones *
* Calculo del factorial de un numero usando recursividad. *
**************************************************************************/
String sNum="";
String sNum2="1";
void setup (){
size (400,400);
}
void draw (){
background(0);
fill (255,0,0);
text ("Digite un numero",10,20);
text (sNum,10,40);
text (sNum2+"! = "+nCalculoFactoria(int(sNum2)),10,60);
}
/*=========================================================================
Funciones
===========================================================================*/
//Lectura de un valor desde teclado
void keyPressed (){
  if (key=='\n') {
    sNum2=sNum;
    sNum="";
  }else
    sNum=sNum+key;
}
//Calculo del factorial
int nCalculoFactoria(int Numero){
  if (Numero == 1 || Numero == 0){
    return 1;
  }
  else{
    return(Numero*nCalculoFactoria(Numero-1));
  }
}

lunes, 11 de abril de 2011

Modificación de un servo para rotación continua

Aqui estan los enlaces que muestran como modificar un servo motor para rotación continua.
Para operarlos como un motor DC normal, hay que deshabilitar el circuito interno y conectar el motor como si se tratara de uno normal DC.
Para operar el motor DC se necesita un puente H, se puede utilizar el L293 o el L298
Enlaces sobre modificación del servo
http://my.opera.com/gatodrolo/blog/modificar-un-servo-para-conseguir-movimiento-rotativo-continuo
http://www.roboticapy.com/servo2.asp

Fuentes de letras para utilizar en processing

MgOpenModata

Estas fuentes son libres
http://www.wazu.jp/index.html
Estas aparecen en varias categorias de uso
http://es.fonts2u.com/category.html?id=36
Para utilizarlas en processing se guarda el archivo de la fuente en la carpeta data

domingo, 10 de abril de 2011

Calculo de un factorial en processing

Este es un ejemplo de como ingresar valores desde teclado y sobre la utilización de funciones, en este caso una función para calcular el factorial de un numero.


/*************************************************************************
*Autor:                                                             *
*           Julio Fabio De La Cruz Gomez                                 *
*                                                                        *
*Descripcion:                                                            *
*            Ingreso de datos desde teclado, utilizacion de funciones    *
*            Calculo del factorial de un numero                          *
**************************************************************************/
String sNum="";
String sNum2="1";
void setup (){
  size (400,400);
}
void draw (){
  background(0);
  fill (255,0,0);
  text ("Digite un numero",10,20);
  text (sNum,10,40);
  text (sNum2+"! = "+nCalculoFactoria(int(sNum2)),10,60);
}
/*=========================================================================
  Funciones
===========================================================================*/
//Lectura de un valor desde teclado
void keyPressed (){
  if (key=='\n')  {
    sNum2=sNum;
    sNum="";
  }else
    sNum=sNum+key;
}
//Calculo del factorial
int nCalculoFactoria(int Numero){
  int nFactorial;
  int i;
  nFactorial = 1;
  for(i=Numero;i>=1;i--){
    nFactorial = nFactorial*i;
  }
  return nFactorial;
}

Robotica BEAM

Para ultima parte del curso de introducción a la ingeniería electrónica, esta como propuesta la construcción de un robot beam.
Este tipo de robots no utiliza microcontroladores para gobernar su comportamiento, utiliza componentes simples y su contruccion es un muy buen proyecto para los estudiantes de primeros semestres de ingeniería y tecnología que tengan su interés en la robotica.
Aqui dejo algunos enlaces para que se vayan informando de que trata y piensen como pueden hacer su robot.
Definiciones e introduccion a la robotica BEAM
http://www.uco.es/~i02digoe/BEAM%20WEB/BEAM.htm
Un pequeño robot, explicación y circuito
http://www.webelectronica.com.ar/news14/nota08.htm
Pagina con muchos robots
http://www.tombot.net/beamrobots.html
Videos de robots que utilizan un motor para caminar (el que sugiero que realicen)
http://www.youtube.com/watch?v=bxxmN2sQvjk&feature=related
http://www.youtube.com/watch?v=chciyjCAubg&feature=related
http://www.youtube.com/watch?v=L984o5mT9HI&feature=related
http://www.youtube.com/watch?v=Lb7EpbHzcrs&feature=related
Pagina wiki de robotica beam
http://www.beam-wiki.org/wiki/Main_Page
Ejemplos con planos
http://www.beam-wiki.org/wiki/Freeform_Microcore_Walker_Tutorial
http://www.beam-wiki.org/wiki/Andrew_Miller's_2-Motor_Walker_Tutorial
http://www.beam-wiki.org/wiki/UCrawler
http://www.beam-wiki.org/wiki/%22Dummy%22_%26_%22Not_so_Dummy%22_Walkers

miércoles, 6 de abril de 2011

Juego que aplica movimiento parabolico

Este es un juego que realizo un estudiante de segundo semestre de Ingenieria Electronica de la UNIAJC
El juego lo realizo en processing .
Aqui pueden descargar el juego en processing.
https://sites.google.com/site/camachomedia/home/archivos/movparabolico.zip?attredirects=0&d=1
Agradesco a Carlos Andres Betancourt por su colaboración con este juego.
Invito a los demas estudiantes que deseen mostrar sus juegos o aplicaciones en processing me las envien para publicarlas en el blog

martes, 5 de abril de 2011

Flisol Cali

Me gustaria invitarlos a que asistan al flisol aqui en cali. Sera en la universidad libre. Pueden cosultar en este enlace la programacion del evento.
http://flisol.info/FLISOL2011/Colombia/Cali
En la charla 09:00am Software Libre en la UNIAJC / Alexis Ramirez, UNIAJC. Se hablara de pinguino y processing.
Se puede aprovechar y tambien inscribirse en los talleres

lunes, 4 de abril de 2011

comunicacion CDC con pinguino y processing

Este es el enlace original del blog oficial de pinguino
http://jpmandon.blogspot.com/2010/11/pinguino-cdc-and-processing.html

En Linux el modulo RXTXbin no reconoce /dev/ttyACM0 que es como se detecta pinguino con CDC.
Para que la reconozca como dispositivo de comunicación serial se crea un enlace simbólico desde la terminal

sudo ln -s /dev/ttyACM0 /dev/ttyS20

Este es el codigo de que se descarga a pinguino, hice unas modificaciones al original, esta compilado con la version de pinguino beta 9-05



// Pinguino cdc with processing
// Jean-Pierre Mandon 2010
// Modificado por Julio Fabio De La Cruz G


unsigned char i;


unsigned char receivedbyte;
unsigned char rxstr[64];


void setup(){
   for (i=0;i<4;i++){
      pinMode(i,OUTPUT);
      digitalWrite(i,LOW);
   }
}
void loop(){
   receivedbyte=CDC.read(rxstr);
   if (receivedbyte>0)
      rxstr[receivedbyte]=0;
   if(rxstr[0]=='S')
      digitalWrite(0,HIGH);
   if(rxstr[0]=='R')
      digitalWrite(0,LOW);
}



Este es el codigo en processing



import processing.serial.*;

Serial myPort;
String port[];
int i;

void setup(){
   port=Serial.list();
   println(port[0]);
   myPort=new Serial(this,port[0],115200);
}

void draw(){
   for (i=0;i<4;i++){
      myPort.write("S"+str(i));
      delay(50);
      myPort.write("R"+str(i));
      delay(50);
   }
}

void stop(){
   myPort.stop();
}

Pinguino y windows 7

Para los usuarios de windows 7 y vista , ! No instalen asi no mas la tarjeta pinguino!!!, pues se desactivan todos los puertos USB del computador.
Aquí están las indicaciones y el driver para windows 7
http://www.roboops.es/2010/10/13/pinguino-project-beta-9-03-ahora-tambien-en-w7/