Autor Tema: "giroscreen" matriz de leds esferica  (Leído 5034 veces)

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

Desconectado sergiopic

  • PIC10
  • *
  • Mensajes: 31
"giroscreen" matriz de leds esferica
« en: 30 de Mayo de 2009, 17:06:39 »
hola amigos  :-/


mi proyecto solo es una replica de lo que ya esta hecho pero pues io quiero experimentar haciendolo jejeje :mrgreen:

pues mi proyecto consiste que  tengo que hacer una matriz de leds giratoria esferica  de 1X80 para lo cual mi mejor pic que tengo seria un 16f877a , la cuestion esta en que utilizar para controlar tantos leds , habia propuesto antes un driver que es el MAX6957 (PDIP) que controla 20 a 28 puertos (depende del encapsulado ) y se maneja por trasmision SPI el problema esta en los registros de configuracion que no he podido hacerlo funcionar  :( :x.

mi alternativa:
usar un stp16cp05 (SOIC) el cual es un chip que controla 16 puertos de serie a paralelo igual que el max6957 pero con la diferencia de que este no necesita registros de configuracion .

o en su defecto usar algun shift-register de alta velocidad lo cual seria lo mismo que el stp16cp05 que ya tengo  para probar

el control de velocidad de motor sera regulado por otro pic 16f628 que estara regulando las revoluciones por minuto de la matriz giratoria (yo se se puede hacer con el mismo pic pero tendria que rehacer el mecanismo que ya esta hecho  ),el motor es de AC y se realizara la etapa de potencia para controlar su velocidad .

he empezado el codigo en microbasic y en proton (en cualquiera de los 2 no hay problema), el control de velocidad ya esta hecho, mas adelante adjuntare su programa y esquema.
 lo que si he tenido problemas es en el control de los drivers de leds , no he tenido experiencia con ellos  asi que tengo algunas dudas en cuanto a la trasmision SPI de estos drivers ( stp16cp05) para conectar 5 en modo esclavo para asi controlar  80 leds.
claro que he leido los datasheets pero en este momento  estoy haciendo una pcb de pruebas para el driver ya que viene en encapsulado soic-24,mañana realizare pruebas ;mi duda es que este driver su frecuencia maxima de trabajo es de 30 MHZ (mi pic puede con eso???. si puede , depende del oscilador?) quisiera que me ayudaran en esta parte del control de los leds ya que el barrido sera por  medio del giro de la matriz y pues en eso no hay mucho problema solo seria calcular la velocidad (se supone constante )en que los leds cambian de un pixel a otro  osea 5mmy ese tiempo se usaria para el encendido de de leds.

aqui les dejo un ejemplo de lo que pretendo hacer si no me pude saber explicar.


Desconectado QIQE

  • PIC18
  • ****
  • Mensajes: 335
Re: "giroscreen" matriz de leds esferica
« Respuesta #1 en: 30 de Mayo de 2009, 18:45:17 »
Yo en ocasiones donde he necesitado multiples salidas he empleado un 74hc595, poniendo diez en serie lograrías tus 80 leds y si eliges hc es de alta velocidad supongo que lograrías mucha más velocidad que con SPI
Muchas gracias por vuestro tiempo.

Saludos desde valencia!!!

Desconectado sergiopic

  • PIC10
  • *
  • Mensajes: 31
Re: "giroscreen" matriz de leds esferica
« Respuesta #2 en: 01 de Junio de 2009, 02:55:57 »
bueno porfin tube resultados con un driver el stp16cp05 que es un shift-register el problema esque cuando le mando un dato por ejemplo $10 lo hace tambien en los 8 puertos sobrantes no se si me explico mas u menos seria asi:

%0001 0000 0001 0000 esto es lo que hace el driver
%0000 0000 0001 0000 esto es lo que deveria de hacer
me he fijado en el datasheet de este chip y tiene 16 ciclos de reloj y con el osciloscopio del proteus me han salido solo 8 ,la programacion la hice en proteus y mikrobasic obteniendo los mismos resultados,se que el error esta en el modo de mandar los datos pero lo unico que se me ocurrio en mikrobasic fue mandar 8 y luego los otros restanter para asi obtener lo que quiero .no hay alguna forma de mandar los 16 bits con 16 ciclos de reloj almismo tiempo. qui dejo 2 imagenes por si no me supe explicar bien.

y asi es como deve de ser:


Código: [Seleccionar]
program stp16cp05

DIM DAT,DAT2 AS BYTE

sub procedure datadriv(dim DATA1,DATA2 as byte)
  CLEARBIT  (PORTD,0)  ' activar latch enable
  SETBIT    (PORTD,1) 'desactiva out enable
  SPI_WRITE (DATA1)    'manda los datos lsb
  SPI_WRITE (DATA2)     ' manda los datos msb
  SETBIT   (PORTD,0)  ' desactivar el latch enable
  CLEARBIT (PORTD,1)  'activa out enable
end sub


main:
 TRISC=0
 TRISD=0
 portD=0
 portC=0

Spi_Init
 delay_ms(50) ' Una pausa

K:
 FOR DAT=0 TO 7 ' Datos de d8 a d15
  FOR DAT2=0 TO 7 'datos de d0 a d7

  datadriv(DAT,DAT2) ' escribir datos
  DELAY_MS(50) ' pausa
  NEXT DAT2
 NEXT DAT
goto k
end.

si pudieran explicarme se les agradece de antemano


Desconectado sergiopic

  • PIC10
  • *
  • Mensajes: 31
Re: "giroscreen" matriz de leds esferica
« Respuesta #3 en: 02 de Junio de 2009, 01:31:52 »
bueno porfin tuve una forma de mandar los datos de 8 en 8 lo que me implica que es mas programaciòn   ya que no pude mandar 16 ciclos de reloj de una sola vez jejeje pero bueno.esta semana pretendo terminar el control de velocidad de giro de motor  
aqui esta el codigo de pruebas del stp16cp05 el driver que usare, es solo una secuencia de encendido de los 16puertos
(codigo en proton)
la configuracion de puertos esta asi porque tambien utilizo el hardware SPI pero con mikrobasic

Código: [Seleccionar]
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : Sergio Anttonio Plata Paez                        *
'*  Notice  : Copyright (c) 2009 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 31/05/2009                                        *
'*  Version : 1.0                                               *
'*  Notes   :es solo una secuencia de leds en los 16 pines      *
'*          :de salida del stp16cp05 por medio de SPI           *
'****************************************************************
DEVICE 16F877A
DECLARE XTAL 20
SYMBOL DATIN = PORTc.4      ;etiqueto el pin de entrada de datos del pic
SYMBOL DTOUT = PORTc.5      ;etiqueto el pin de salida de datos del pic
SYMBOL CLK   = PORTc.3      ;etiqueto el pin de salida de reloj
SYMBOL LATEN = PORTd.0      ;etiqueto el pin de enable del latch
SYMBOL OUTEN = PORTd.1      ;etiqueto el pin de enable de salida del latch

DIM DTA AS byte             ;defino el tamaño de las variables
dim lat as byte
TRISc = %00010000           ;configuro puertos
trisd = $00
PORTc = $00
portd = $00
INICIO:

FOR DTA = 0 TO 7

lookupl Dta,[$01,$02,$04,$08,$10,$20,$40,$80],lat    
HIGH OUTEN                           ;desactivo el pin salida del driver
LOW  LATEN                           ;activo el pin de latch del driver
SHOUT DTout,CLK,mSBFIRST,[lat]       ;mando el primer byte de datos
SHOUT DTout,CLK,mSBFIRST,[lat]       ;mando el segundo byte de datos
HIGH LATEN                           ;desactivo el latch del driver
LOW OUTEN                            ;activo la salida de datos del driver

DELAYMS 50
NEXT DTA

goto inicio
END


« Última modificación: 02 de Junio de 2009, 02:37:23 por sergiopic »