Cubo de LEDs de 4x4x4, controlado por el microprocesador TM4C123GH6PM, de Texas Instruments. Se muestran detalles acerca del diagrama eléctrico, interfaz de hardware y software.
3. O 5 efectos programados, más un modo
automático que junta todos los efectos.
O Botón para cambiar efectos.
O Potenciómetro para configurar la
velocidad del efecto en curso.
Especificaciones
5. Hardware
O Microcontrolador Tiva C Series
TM4C123GH6PM, de Texas Instruments.
Cuenta con el procesador ARM Cortex M4,
de 80MHz de frecuencia, registros de 32bits,
también cuenta con 256 kBytes de flash,
además de una unidad de
punto flotante.
6. O Se utiliza el Convertidor Analógico-Digital
(ADC) del micro, para leer el voltaje que
proporciona el potenciómetro.
O Se utiliza, además, contadores, que son
periféricos con los que cuenta el micro.
Hardware
7. Hardware
O Los LEDs están conectados por los ánodos en una columna, y
por las cátodos para constituir un piso.
O Cada LED cuenta con un transistor conectado a su ánodo
(columna), y otro a su cátodo (piso).
RLED00
10
RBCOL00
1.5k
PINCOL00
Q57
PN2907A
LEDCOL00
QP10
PN2222
RBPISO
470
PINPISO
VCC
0
RLED01 10
RBCOL01
PINCOL01
Q58
PN2907A
LEDCOL01
8. O Para encender un LED, se debe saturar el transistor
columna: el pin conectado a la base debe proveer un voltaje
de nivel BAJO, pues es PNP, por el emisor fluye la corriente
de la fuente, y va por el colector, pasa por la resistencia, llega
al LED
hasta encontrar la tierra. La tierra es
referenciada por el transistor de piso,
el cual se debe saturar con un
voltaje de nivel ALTO en su base,
entonces, la corriente que fluye desde el
LED, viene por el cátodo y va al emisor,
que finalmente está a tierra.
Funcionamiento
9. Limitaciones
O La potencia está limitada por la potencia
máxima que puede entregar el
microcontrolador.
O La estructura del cubo limita la variedad
de efectos realizables (aunque se puede
remediar por software).
10. O El código está hecho en lenguaje C.
O Los registros de datos de los puertos de salida son de 32
bits, contados de derecha a izquierda, indicando que el n-
ésimo bit corresponde al pin n-ésimo del puerto en
cuestión.
O Se configuran los puertos del micro para utilizarlos como
salida. Básicamente, se “escriben” en las direcciones de
los registros de propósito general, un número de 32 bits,
que contendrá un 1 en una determinada posición,
especificando un voltaje HIGH de salida, o un 0 en caso
contrario. Por ejemplo:
GPIO_PORTB_DATA_R = 0x00000003; (...00000011)
Indica que al pin 0 y al pin 1 del puerto B, se le asignarán un
voltaje HIGH.
Software
11. O Por ello, el código cuenta con funciones que
simplemente cambian los valores de los registros de
datos de los puertos, que a un lenguaje de bajo nivel
serían funciones que “encienden” o “apagan” un LED.
Simplemente asignan 1s (unos) o 0s (ceros).
void encender_led_piso1_col01(void)
{
GPIO_PORTA_DATA_R |= 0x04;
GPIO_PORTE_DATA_R &= ~0x10;
}
void apagar_col01(void)
{
GPIO_PORTE_DATA_R |= 0x10;
}
Software
12. O Timers: se los utiliza para producir retardos entre el
encendido y apagado de cada LED, para que así se
puedan generar los efectos. En el código se encuentra
una función que recibe como parámetro la cantidad de
tiempo a esperar, y en base a eso, genera el retardo
correspondiente, automáticamente, ya que es un
periférico del micro, al cual se lo configura previamente
para que cuente un tiempo que es múltiplo del periodo del
micro (inverso de la frecuencia de operación),
O ADC: De acuerdo al número que devuelve el ADC, que a
su vez, recibe el voltaje proporcionado por el
potenciómetro, lo que se hace con ese número es
cambiar el tiempo que se retarda entre el encendido y
apagado de cada LED, causando esto una transición
“más rápida” en el efecto de encendido.
Software
13. O Ejemplo de una parte del código, para generar un
efecto.
encender_led_piso1_col00();
if(boton_apretado){
return;
}
Retardo_Timer0A(3);
apagar_col00();
encender_led_piso1_col01();
Retardo_Timer0A(3);
if(boton_apretado){
return;
}
apagar_col01();
Software
14. O Filtrado por software de rebotes al presionar el
botón.
Todo botón de por sí, tiene rebotes al momento de
pulsarlo, y al momento de soltarlo. Esta situación
puede generar problemas minuciosos y sensibles en
tareas donde se requiere precisión.
Los Timers tienen la capacidad de que, cada que
termine el conteo periódico, se “atiende” a la fuente de
interrupción (si está configurada), y luego vuelve a
contar.
Software
15. Software utilizado para
programación
O Keil uVision 4 – IDE (Integrated Development
Environment)
Solución completa de desarrollo de software para
microcontroladores basados en ARM e incluye todos los
componentes que se necesita para crear, construir y depurar
programas (debug) y aplicaciones a ser cargadas, soporte para
dispositivos Cortex-M, incluyendo la nueva arquitectura ARMv8-M.
Incluye compiladores de C / C++ con ensamblador, enlazador.