miércoles, 22 de junio de 2011

Motor a Pasos , Servo y Labview #CPMX3

Como se puede ver en el titulo pues usare, un motor a pasos un servo  y Labview.

La idea es esta con Labview me voy a conectar de manera serial a un µC en especifico un AT90USB162  también lo puedo hacer con un ATMEGA88PA o el ATMEGA8 un poco mas viejo pero pues deben de funcionar. Aquí voy a controlar la posición de ambos del motor a pasos y del Servomotor. pero antes un poco de teoría XD. Un motor a pasos es un motor, sin escobillas y con 2 bobinas el que yo voy a usar,hay dos tipos principales de motores a paso el bipolar y el unipolar la diferencia es que el bipolar tiene 2 bobinas y las bobinas no tiene ningún común y el unipolar tiene también 2 bobinas para cada bobina tiene un común. aquí una imagen.

Imagen obtenida de http://www.todorobot.com.ar/informacion/tutorial%20stepper/stepper-tutorial.htm

Si quieren saber mas sobre los motores a paso chequen ese tutorial de esa pagina la verdad esta muy bien hecho. Motor a Pasos a usar por mi es el PM55L-048-TBE2.

Ahora un poco sobre los servomotores. El servomotor a usar por mi es un servomotor de modelismo los que se usan en los carros, helicópteros, aviones o lanchas de Radiocontrol. Sirven muy bien para aplicaciones de robótica. una de las grandes ventajas de estos motores es que son muy preciosos y ya traen todo, su driver o sea que nada mas necesito conectarlo y decirle en que posición lo quiero y ya. Como toda ventaja también hay desventajas y en este caso es el costo tiene un precio mucho mas elevado. El Servomotor a usar es el HS-805BB de Hitec.

Y pues sobre Labview que les puedo decir es un entorno de programación que utiliza código G que es grafico la verdad es muy sencillo pero es bastante poderoso es usado a nivel internacional para aplicaciones de desarrollo, medición, control, instrumentación, automatización , etc… la verdad es un muy buen software la desventaja es el costo una versión de estudiante nos anda costando unos $ 300 pesos mexicanos pero si queremos usarlo a nivel industrial la versión mas chafa anda costando no menos de $10,000.00 y tiene menos que la versión de estudiante XD. Claro venden la versión de estudiante barata para que cuando salgan los ingenieros les compren el Labview entero pero pues es un software excelente y el soporte que te dan también es excelente tiene de todo.

Bueno ahora si basta de charla y un poco de trabajo. Primero hablare sobre como conectar y como mover el servomotor.

Como se ve en la imagen el servomotor tiene 3 cables uno Negro otro rojo y otro amarillo, pues el negro va a tierra, el rojo va a 5 volts y el amarillo es la señal de control esta va a venir de nuestro µC AT90USB162 o ATMEGA8. Este pin lo vamos a conectar a la salida PWM del Timmer 0 de 16 bits por que uso 16 bits, para que sea mas preciso. El servo funciona con un PWM de 50 hz ósea que le tengo que enviar la posición que quiero cada 20 ms aproximadamente y vamos a variar este PWM para varias la posición se varia entre 0.9 ms y 2 ms esto es le tiempo en alto para que sea de 0 a 180 grados depende de cada controlador de servo pero aquí puedo decir que con 0.9 ms son 0 grados y con 2 ms son 180 grados. Ahora si lo importante, el programa en el µC y en Labview. Primero pues hare el del µC y lo hare en codevision.

Lo primero es abrirlo darle en nuevo proyecto y después seleccionar que es con AT90, ATMEGA, ATINY FPSlIC dar click en OK y no sale una ventana como esta.

Click para ver la imagen en grande

En esta ventana configuramos muchas cosas lo primero es configurar el µC a usar y le frecuencia de trabajo en mi caso es 8 MHz y el µC es el At90USB162 pero si quieren otro pues usen otro  y ya el código seria el mismo y la configuración también. Después en la parte de timers seleccionamos el Timer1 de 16 bits y hay que configurarlo.

Aquí en clock source seleccionamos System Clock.clock values es la velocidad a al que queremos que oscile el timer se requiere un poco de cálculos pero aquí seleccionamos 8000 kHz luego en mode hay varios el que no interesa a nosotros es Ph. correct PWMTop = OCR1A esto que quiere decir que mi timer va a contar de 0 a lo que valga OCR1A y después de OCR1A a 0 esto quiere decir que mi frecuencia va a ser 8000 kHz/(2*OCR1A+1) entonces yo quiero que sea de 50 HZ si despejo eso me queda 8000000, hay que poner ese valor para que la frecuencia del PWM sea de 50 hz pero el problema es que OCR1A solo de 16 bits teniendo como numero máximo 65536 entonces tenemos 2 opciones reducir la frecuencia del sistem clock y hacer cálculos de nuevo o poner a 0CR1A como 65536 y ver que frecuencia nos da yo decidí hacer la segundo quedándome una frecuencia de 61.03 hz que yo se que el servo no va a tener problemas en manejar entonces pues hay que seleccionar la salida en este caso hay que poner en OUTB inverted y en la parte de hasta abajo donde dice COMPA hay que poner FFFF este es el numero hexadecimal de 65536. Ahora hay que configurar la conexión serial hay que ir a la pestaña donde dice USART1.

Aquí hay que seleccionar Reciver  por que vamos a recibir y  seleccionamos 8 data, 1 stop,No parity y en modo asynchronous y en baud rate la ponemos de 9600 y ahora si hay que darle En program –>Generate save and exit.

en este punto nos pregunta si queremos usar el PORTC bit 5 como salida y seleccionamos que si.

Nos genera un código pero aquí no que nos importa es el while (1) aquí vamos a poner todo nuestro código

while (1)
      {
      alto=getchar(); //obtengo el dato del puerto serial
      bajo=getchar(); //obtengo el dato del puerto serial
      OCR1BH=alto;    //lo pongo para la comparación
      OCR1BL=bajo;    //lo pongo para la comparación
      delay_ms(100);  //me espero un tiempo
      }

Aquí cabe mencionar que hay que declarar alto y bajo como char y incluir la librería delay.h


Lo demás lo dejare para las siguientes entradas Risa


Espero y les allá gustado recuerden dudas comentarios, sugerencia, preguntas en fin lo que quieran a @lams_007 o mi correo mecatronicamexicana@gmail.com

jueves, 19 de mayo de 2011

Aumento de Velocidad y Campus Party #CPMX3



Pues bueno hoy traigo buenas noticias ya había estado leyendo un poco y pues creo que por fin Telmex aumentara la velocidad no se si, al doble y por ahí escuche un rumor de que la iba a cuadruplicar siendo los que tiene 5Mb tener 10 Mb o 20 Mb pues la verdad estaría súper bien tener 20 Mb pero eso no creo me imagino que son 10 Mb, pues aquí esta una imagen de por que se que es oficial miren lo que llego a mi casa.

Como ven es una hoja que dice claro que pues no apagues el modem por que según van a darte una aumento de velocidad. La única teoría que leí es que por que así se satura mas el internet en la central de nuestra casa y pues se gestiona mas rápido el dinero para mejorar a la infraestructura necesaria. Suena algo lógico pero con eso de otras compañías ya ofrecen hasta 100 Mb en la opción de ser simétrico o asimétrico pues creo que se les van los clientes y eso n o les conviene XD en fin ojala y lo veamos. y no me parece lógico por que yo se que las líneas están preparadas para mas velocidad ya XD por que lo se por que miren esta imagen.

Si se fijan ahí dice Máximo ancho de banda descendente/ascendente (kbps) y dice 10548 / 1012esto quiere decir que puede con mas pero pues en al parte de abajo lo limitan y pues otra de las cosas ahorita marca 10548 regularmente checo mi modem y lo e visto hasta en 18000 no se de que dependa pero pues lo e visto en 18000 lo malo es que el internet se esta cayendo muy seguido, no se por que tengo dos teorías:

  1. El modem es una cochinada de repente se le va la señal marca error de DSL o falta en PVC en realidad no e checado a que se refiera solo es cosa de apagarlo y prenderlo y ya.
  2. Pues ya están haciendo pruebas para subir la velocidad Risa

Descarto que sea mi línea de teléfono por que pues la acaban de cambiar hace menos de 3 meses.

Cambiando de tema lo mas seguro es que vaya a Campus Party ya que me gane una entrada en @terramexico muchas gracias, iré toda la semana no iré salvo alguna causa de fuerza mayor pero no nos veremos ahí en Campus Party México 2011 espero aprender mucho es una experiencia muy padre les cuento el año pasado fui y la verdad esta indeciso si ir o no y si fui y me la pase muy bien. Por eso voy de nuevo este año de hecho por ahí andan rolando guías para los campuseros a lo que debes de ir preparado, ahorita no las encontré pero creo que están en e blog de www.pelenga.com o en http://usbe.in/ no lo recuerdo. Pues no queda nada mas que decirles que nos veremos en CAMPUS PARTY MEXICO 2011 campuseros y recuerden son  @lams_007.

Pues en otro tema espero hacer una placas fenólicas el tutorial que no mas nada XD este fin de semana las placas van a ser de unos circuitos con interfce I2C uno es para expandir puerto y el otro, son entradas y salidas analógicas ambos son del fabricante NXP (Phillips) los voy echar a volar y les cuento como estuvo al cosa y unos videos les pondré para que los chequen. Los voy a hacer funcionar en un ATMEGA88PA y los voy a programar en Codevision AVR.

Aquí las hoja de datos de ambos.

PCA9554 circuito I2C con entradas y salidas de 8 bits con interrupción

PCA9691 circuito I2C con convertidor A/D y D/A de 8 bits

Este segundo es el interesante haber que se puede hacer con el ojala y hubiera unos con salidas PWM o algo así seria también muy interesante en fin después les cuento y posteo el código y lo explico Risa y la conexión física de como se hace.

Saludos a todos los lectores Risa y pues ya saben para dudas esta mi twitter @lams_007 o envíenme un correo a mecatronicamexicana@gmail.com

Hasta la proxima

miércoles, 4 de mayo de 2011

GPS GSM GM862 Evaluation Board - USB



Pues hoy fue un día provechoso me pidieron que les ayudara con un modulo GPS-GSM-GPRS de sparkfun modelo GM862 Evaluation Kit – USB pues este es usb pero esano es la idea el chavo que me pidió ayuda quería utilizar el micro inter no que trae que utiliza Phython pero que no pudo ni bajar el programa entonces la otra opción era usar un AVR usamos el ATMEGA88PA lo comunicamos de manera serial con USART el modulo recibe comando AT entonces por ejemplo para prender una entrada de propósito general es AT#GPIO=8,1,1 y después hay que enviar retroceso de carro y salto de línea en fin el modulo puede hacer y recibir llamadas, enviar y recibir mensajes, pues la posición de GPS y de mas cosas la verdad es muy interesante aparte tiene protocolo I2C y la idea es conectar un lector RFID con ese modulo y una cámara también todos tiene el Protocolo I2C. Aquí mi opinión yo le dije el RFID con el µC de 8 bits no creo que allá mucho problema pero la cámara si a de estar mas complejo al verdad quizás un µC de16 bits aunque son difíciles de conseguir yo me iría mas por uno de 32 bits un ARM en fin todo este choro para nada XD solo les quería decir si van a usar ese modulo y comunicación serial hay que poner el RX del µC con el RX del modulo y el TX del µC con el TX del modulo ni idea de por que pasa esto  aquí una imagen del modulo.

GPS

Espero y esto le sirva de ayuda mas adelante pues si le sigo ayudando no pudimos obtener la posición GPS del modulo no tengo ni idea por que de hecho no pudimos recibir nada del modulo al µC pero si al hyperterminal mañana o no se que día lo checaremos con un osciloscopio pues ya saben mándeme un corre a lams_007@hotmail.com o un tweet a @lams_007 y ay saben aquí encontraran cosas sobre mecatrónica en México y pues si necesitan ayuda en algo también mándenme un mensaje y con gusto los ayudare, puesto que creo que no sirve de nada saber de algún tema y no compartirlo el conocimiento debe de ser libre Risa a por cierto aqui hay un link con mas paginas donde pueden participar por una entrada para #CPMX3 es un blog esta padre tiene info nueva Risa http://www.pelenga.com/mas-de-100-sitios-donde-puedes-obtener-tu-entrada-gratis-para-cpmx3/

lunes, 2 de mayo de 2011

Campus Party México 2011 #CPMX3



Pues si le platico un poco este es un evento de tecnología que dura 7 días las 24 horas. Un gran atractivo de este es que pues tiene una conexión a internet de muy alta velocidad el año pasado fue de 20 Gbps este año no e visto la velocidad que va a tener pero pues debe ser mayor a la del año pasado en fin pueden buscar o encontrar mas información en la pagina web http://www.campus-party.com.mx/2011/index.html  y pues les dejo un video de campus party que me gusto mucho la música esta muy padre es de TRON

Pues espero y les guste y se animen a ir es un evento que vale mucho la pena yo solo e ido una vez el año pasado y como que no quería ir y la verdad no me arrepiento y quiero volver a ir el problema es el dinero Triste peor pues no se preocupen aun queda mucho tiempo y pues hay muchas comunidades que van a estar regalando la entrada a Campus Party Mexico 2011 menciono aquí varias por si se animan en todas estas pagina regalaran boletos para la entrada yo me apunte en todas a ver si en alguna tengo suerte Risa

http://www.zonadaxion.com/

http://usbe.in/

http://www.pelenga.com/

http://www.g3ekarmy.mx/

http://geekalt42.net/

http://www.twittlax.com.mx/

http://blog.make-a-tronik.com/

http://www.2bgeek.com/

http://www.pacodavid.com/

http://www.geekoteca.com/

http://cinergetica.com.mx/

http://www.warkz.com/

entre muchas otras y pues ya saben estoy aquí} para cualquier duda comentario , etc….

y recuerden escribanme un correo a lams_007@hotmail.com o mándenme algo a mi twitter @lams_007

jueves, 21 de abril de 2011

Ya quedo mi programa

Qué onda como les ha ido. Pues yo pensé que en vacaciones iba a hacer varias cosas pero pues nomas nada jajaja y luego lo peor es que el sábado me voy a desaparecer hasta el jueves saldré fuera iré a Puerto Vallarta pero como todo buen geek me llevare mi compu pero no prometo nada, me la llevo porque necesito trabajar en un reporte sobre mi fresadora CNC que la verdad ya me está preocupando porque tengo todo menos los proveedores no me contestan ni nada. En fin si he trabajado algo no he sido totalmente flojo XD ya les había dicho que ya tenía el DAC funcionando pues ahora creo que ya tengo también funcionando todo mi programa para el µC At90PWM316. Esto es en simulación en AVR Studio 4 pues el programa está hecho en ensamblador y hace lo siguiente básicamente:

  1. Cuento cuantos pulsos ha dado mi encoder con el timer que en este caso se usa como contador por que cuento los pulsos, esto se hace con el timer 1 de 16 bits.
  2. Con el timer de 8 bits creo una base de tiempo cada cierto tiempo voy a checarlo y enviar lo que leo al analógico. ¿Por qué lo hago así? pues es muy simple si lo hiciera uno tras otro como mi µC va a correr a 8 Mhz pues son como 5 instrucciones las que necesito para hacer todo eso entonces como son instrucciones de 1 solo ciclo lo haría 5/8000000 cada segundo y en ese tiempo no creo que del motor ni una fracción de revolución por eso el timer que contara hasta 255 y después ya lo hará pero pues como este timer tiene un preescaler de 8 pues en realidad trabajara a un frecuencia de 1 MHZ entonces seria 255/1000000 dando nos un tiempo de 255 µs cada actualización espero y eso sea más pero puedo jugar con eso en la programación
  3. Y ahora si al final dependiendo del valor que me dio el timer genero una salida analógica proporcional a mi velocidad. Esto se hará como se dijo cada 255 µs

Pues aquí les dejo el código

    .include "pwm316def.inc"

    .ORG 0X0000

    RJMP INICIO

    .ORG 0X0022

    RJMP OVERFLOW

    .ORG 0X00FF

INICIO:LDI R16,0XFF

    OUT SPL,R16

    LDI R16,0X02

    OUT SPH,R16

    LDI R16,0B01001010

    STS ADMUX,R16

    LDI R16,0B11000011

    STS ADCSRA,R16

    LDI R16,0B00000000

    STS ADCSRB,R16

    LDI R16,0B00000011

    STS DACON,R16

    LDI R16,0B00000000

    STS TCCR1A, R16

    LDI R16,0B01000111

    STS TCCR1B,R16

    LDI R16,0X00

    STS TCCR1C,R16

    LDI R16,0B00000000

    STS TIMSK1,R16

    LDI R16,0B00000000

    OUT TCCR0A,R16

    LDI R16,0X02

    OUT TCCR0B,R16

    LDI R16,0X01

    STS TIMSK0,R16

    SEI

SALTO:NOP

    NOP

    NOP

    NOP

    NOP

    NOP

    NOP

    RJMP SALTO

OVERFLOW:

    IN R17,SREG

    PUSH R17

    LDS R17,TCNT1L

    LDS R18,TCNT1H

    LDI R16,0B10000011

    STS DACL,R17

    STS DACH,R18

    POP R17

    OUT SREG,R17

    RETI
Y recuerden enviarmeun correo a lams_007@hotmail.com o a mi
twitter @lams_007 si tiene alguna duda
ya saben estoy aqui para responderlas