Autor Tema: Proyecto POV circular  (Leído 17906 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re: Proyecto POV circular
« Respuesta #45 en: 03 de Octubre de 2014, 22:33:41 »
Bueno, ayer estuve con los alumnos del proyecto y estuvimos viendo el código que debería ejecutar el micro y se nos presentaron algunas dudas.
Primeros los datos:

El LPC1347 posee 2 timer/counter de 16bits y 2 de 32 bits. El micro puede correr (y va a correr) a 72MHz.
Necesitamos 2 timer funcionando constantemente. Uno para medir las RPM del motor y el otro que interrumpe cada vez que hemos avanzado el tiempo correspondiente a la resolucion elegida. Por ejemplo:
Si el motor es de 1500RPM, tenemos 40mseg de período de revolucion y con un timer debemos medir tiempos en ese entorno.
Si la resolucion elegida es de 1° entonces tendremos 40mseg/360° = 111useg para el segundo timer.
El Tick que obtenemos a 72MHz es de 0,0138888 useg. Con el timer de 16bits podemos contar hasta 910 useg, este timer es ideal para usarlo como interrupcion entre "radio y radio". Con el de 32 bits podemos contar hasta 59,65 segundos!!!! por lo que será ideal para contar RPM. Notar que en este micro, de 32bits, usar el timer de 32 bits no implica ningún esfuerzo, al micro le resulta igual usar el de 16 o el de 32 bits. Distinto pasa con un pic de 8 bits usando el timer de 16 bits  ;-). Tambien hay que notar que cuando el motor esta acelerando, el período será bastante mayor a 40mseg y seguramente podremos ir mostrando igual algo.

Bien, la primer cuestion que surge es medir las RPM del motor usando una entrada CAPTURE del TIMER de 32 bits o directamente usar un pin configurado como interrupcion externa (en este micro, podemos elegir 8 cualesquiera pines y configurarlo como interrupcion externa, dandole la prioridad que queramos a cada uno). En el primer caso, no perdemos uno o mas ciclos almacenando el valor del timer al momento de la interrupcion. Usando int externa perdemos unos cuantos ciclos hasta que entra la interrupcion y llegamos a la instruccion que almacena el valor del timer... me parece que lo mejor es usar una entrada CAPTURE, que por hardware nos almacene el valor del timer en el registro CAPTURE asociado. verdad?

Luego estuvimos viendo la forma de corregir las variaciones de velocidad y ahí recrdé lo que habian hablado en el post sobre el GiroPlay y la técnica, creo que de Manolo, para corregir. Básicamente debemos tener un contador de pixel actual y un contador de pixel total en la vuelta anterior. Entonces en la Interrupcion Externa de sincronismo hacemos:

Código: [Seleccionar]
timer = 65535 - (TMR32bits / PIXELES)      // Precargamos el TMR de 16 bits para que interrumpa en cada cambio de pixel
TMR16bits = timer
TMR32bits = 0

cnt_pixel = cnt_pixel_actual
cnt_pixel_actual = 0;

y en la interrupcion del timer de 16 bits haríamos

Código: [Seleccionar]
TMR16bits = timer
cnt_pixel_actual ++

Pulso_Latch_TLC();

Esto es lo que tenía del año pasado, pero al analizarlo, no le encontramos demasiado sentido al contador de pixel total y actual... no recuerdo que tipo de correccion se hacía con esos valores... esta es la segunda duda que nos surgio.

Bien, una vez resolvamos esas cuestiones ya estaremos en condiciones de avanzar con la programacion.

Aún falta decidir donde estará el llamado a la funcion que envía los 4 uint16_t a los TLC... Como el FIFO del SSP es de 8 frames, estimo que lo haremos de forma asincronica en el main, poniendo un dato detras del otro sin hacer demasiadas verificaciones.

Por ahora es lo que tenemos!

saludos!
-
Leonardo Garberoglio

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Proyecto POV circular
« Respuesta #46 en: 04 de Octubre de 2014, 13:51:05 »
Hola Leo,

lo de los tiempos máximos de los Timers 16 y 32; esos valores máximos que diste son con prescaler 1:1. El Timer16 puede contar hasta 2^16 veces más tiempo y el Timer32 hasta 2^32 veces más respectivamente según el valor que le asignes a su prescaler. Claro que a > valor de prescaler < exactitud en la cuenta de tiempo medido.

para corregir el tiempo de refresco de los píxeles, me parece que lo más fácil sería:

Poner a correr el Timer de 32 bits libremente, con prescaler 1:1 o bien el Timer16 con un prescaler 1:100 o simil, aunque perdiendo exactitud en la cuenta del tiempo.
Un sensor hall, barrera u otro que pueda enviarte un pulso por vuelta completa (puede haber más de un sensor por vuelta, a más sensores más rápida la adaptacion a los posibles cambios de RPMs).
Luego se procede a interrumpir al recibir el pulso del sensor de vuelta completa y a dividir el valor del Timer por la cantidad de refrescos por vuelta que quieras realizar en el giroplay, resetear el timer y tomar el tiempo obtenido como base de demora para los refrescos de los LEDs para la vuelta actual.

Si vas a un caso práctico, teniendo un motor de 1600RPM, un Timer32  @ 72Mhz con prescaler 1:1, y 200 refrescos por vuelta (cada 1.8 grados, como muchos de los motores PaP).

Una vez que ocurre la interr ext. Supongamos que el Timer32 posee el valor 2700000 (ideal a 1600RPM).
Procedemos a guardar el valor y a inmediatamente volver a 0 el Timer32 para que comience a contar la nueva vuelta.
Dividimos el valor guardado por 200. Al valor obtenido podemos cargarlo en un Timer16, que permita interr. cada dicho intervalo de tiempo y nos permita enviar los datos a los LEDs.


Al envío de los datos a los LEDs lo podés hacer tanto desde la interr. del Timer16, como desde el main. Cada uno con sus ventajas y desventajas.

Saludos.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re: Proyecto POV circular
« Respuesta #47 en: 11 de Octubre de 2014, 16:42:57 »
Bueno, dejo actualizaciones del proyecto, parte hardware:







Luego monte solo el micro, el cristal, y unos capacitores para conectarme con el IDE de programacion t verificar que esta vez si soldé bien el uC:



segui el consejo de Bruno y solde a mano, bastante flux, pre estañado, limpieza, nuevo flux, posicionado del uc y al tocarlo con el soldador se suelda solo!!!

finalmente el saludo al mundo:


Saludos!
-
Leonardo Garberoglio

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Proyecto POV circular
« Respuesta #48 en: 11 de Octubre de 2014, 16:48:51 »
Ahora si!

A esperar el espectáculo!
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.


Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: Proyecto POV circular
« Respuesta #50 en: 12 de Octubre de 2014, 11:08:18 »
No se ve para nada casero, parece un trabajo muy profesional!
Felicitaciones y éxitos con el proyecto! Espero ansioso los resultados ;)

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re: Proyecto POV circular
« Respuesta #51 en: 12 de Octubre de 2014, 11:19:23 »
Gracias!
La placa es semi casera, semi profesional. Tengo una mini fabrica de impresos (no para terceros, solo para nuestros productos), por lo que alguna máquina tengo... al proceso de fabricacion de esta placa, junto al stencil, etc lo documenté, por lo que despues voy a poner una pequeña guía de como hacer esos impresos... hay productos que son medio caros, pero bue, quizá a alguien le sirva!

Saludos!
-
Leonardo Garberoglio

Desconectado jonathanPIC888

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 306
Re: Proyecto POV circular
« Respuesta #52 en: 12 de Octubre de 2014, 12:26:26 »
Te quedan geniales las placas, muy profesionales !!

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re: Proyecto POV circular
« Respuesta #53 en: 12 de Octubre de 2014, 12:43:10 »
Bueno, el LPC ya habla el idioma de los TLC.... NXP y TI dos potencias!


Saludos!
-
Leonardo Garberoglio

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re: Proyecto POV circular
« Respuesta #54 en: 24 de Octubre de 2014, 21:58:49 »
Bueno, quería mostrarles algunos avances del proyecto.

En la semana los chicos estuvieron trabajando con el enganche de la placa al eje del motor. Tornearon una pieza que se fijará con un prisionero al eje del motor y en la punta tiene rosca de 1/2". Esa rosca servirá para fijar la placa de aluminio, con una tuerca. En la placa de aluminio va montada la batería de LiPo y la placa del POV. Dejo alguna imagen de las piezas:









La parte mecánica esta casi lista.
Con otra parte del grupo estubimos identificando el protocolo del control remoto que usaremos para cambiar de efecto. Es de un televisor tonomac. Despues de mirar un poco en esta página: http://www.sbprojects.com/knowledge/ir/index.php
y de medir los tiempos de la señal que obteníamos con el osciloscopio:



(la cámaa del Moto E es una porquería!)
pudimos concluir que el protocolo es el NEC:
http://www.sbprojects.com/knowledge/ir/nec.php

Pudimos visualizar los bits de la direccion, los bits negados, comando y comando negado. Tambien el repeat al dejar una tecla presionada.

Entonces el trabajo ahora está en hacer una rutina para reconocer comandos del control remoto y en la semana, cuando ya este todo montado, con el motor y sensor de sincronismo/RPM empezar a programar los timer.

Voy a abrir otro post con la pate de decodificacion de la señal del control remoto.

Saludos!
-
Leonardo Garberoglio

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re: Proyecto POV circular
« Respuesta #55 en: 24 de Octubre de 2014, 22:55:38 »
Hola elgarbe, muy lindo va quedando el proyecto, e impaciente y a la espera del curcillo tuyo de como hacer placas PCB's semi-profesionales.

Un saludo.

Atte. CARLOS.

La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.


 

anything