En este capítulo no vamos a explicar ningún módulo interno del microcontrolador de la familia PIC, sino que vamos a usar un dispositivo externo y aplicar los conocimientos ya expuestos. En este caso, vamos a mostrar como trabajar con un Zumbador o Buzzer PASIVO.
Un zumbador o buzzer es un dispositivo externo que emite sonidos, no podremos reproducir música por ejemplo, solo tonos. Ahora bien, existen dos tipos de buzzer:
· Buzzer ACTIVO: Esta clase de zumbador, emite sonido cuando lo conectamos directamente a la fuente de alimentación.
· Buzzer PASIVO: En cambio, esta clase de zumbador, solo emite sonido si lo excitamos mediante un tren de pulsos.
El ejemplo que vamos a presentar aquí, consiste en un Buzzer PASIVO, y el programa que vamos a desarrollar consistirá en hacer sonar tres Beep, cada tres segundos.
Bien, el microcontrolador elegido en esta ocasión es el PIC18LF4550, y usaremos el módulo interno Timer1 para que supervise dos acciones:
· Acción 1: Generar retraso de tres segundos.
· Acción 2: Generar tres Beep.
En realidad, configuraremos el módulo Timer1 en modo timer de 16-bits y que produzca una interrupción cada, aproximadamente 50 ms, usaremos una variable contador para ajustar los tres segundos deseados. Una vez haya transcurrido los tres segundos, empezaremos a emitir los tres beep.
El resto del tiempo, el microcontrolador PIC18LF4550 estará en modo IDLE ( bajo consumo ).
El material que vamos a necesitar y su función, es la que se muestra a continuación:
· PIC18LF4550: Microcontrolador para este programa.
· Protoboard: Donde insertaremos nuestros componentes.
· PICKIT 3: Programador y depurador necesario para programar el código.
· Transistor NPN: Un transistor NPN de propósito general, en nuestro caso C9013.
· Resistor 220 Ω: Se conectará al pin RD2 ( tres de pulsos ) y a la base del transistor NPN.
· Resistor 4.7 kΩ: Un resistor que irá conectado entre los pines #MCLR y VDD.
· Buzzer Pasivo: Un zumbador del tipo PASIVO que irá conectado su pin positivo a la fuente de alimentación y el pin negativo al pin colector del transistor.
El firmware es el que se muestra a continuación:
/**
* @file main.c
* @author Manuel Caballero
* @date 14/3/2015
* @brief Archivo principal.
* \copyright
* AqueronteBlog@gmail.com
*
* Este archivo es propiedad intelectual del blog Aqueronte,
* cuya direccion web, es la siguiente:
*
* http://unbarquero.blogspot.com/
*
* Se permite cualquier modificacion del archivo siempre y cuando
* se mantenga la autoria del autor.
*/
#include < xc.h >
#include < stdint.h >
#include "variables.h"
#include "functions.h"
#include "interrupts.h"
/**
* \brief void main( void )
* \details Este programa consiste en mostrar como funciona un Buzzer o
* zumbador PASIVO.
*
* En este caso, el programa consiste en hacer sonar el buzzer PASIVO
* mediante tres Beep breves cada aproximadamente, 3 segundos.
*
* Se usará el módulo Timer1, 16-bits, para gestionar tanto el
* tiempo 3 segundos deseado como los tres Beep del buzzer PASIVO.
*
* El microcontrolador estará en modo bajo consumo Idle hasta que
* no se produzca una interrupción del Timer1.
*
*
* \author Manuel Caballero
* \version 0.0
* \date 14/3/2015
* \pre Este firmware está probado para el PIC18LF4550.
*
* \pre MPLAB X IDE v2.35.
* \pre Compiler XC8 v1.33.
*/
void main( void ) {
uint8_t var3seg = 0; /**< Variable contador que junto al Timer1 nos permite contabilizar 3 s */
uint8_t var3beep = 0; /**< Variable contador que junto al Timer1 nos permite realizar tres Beep */
conf_CLK (); // Configura Relojes
conf_IO (); // Configura I/O
conf_TA1 (); // Configura Timer1
INTCONbits.PEIE = 1; // Peripheral Interrupt Enable
ei (); // enable interrupts
do{
SLEEP(); // uC modo IDLE
if ( var3seg == 60 && var3beep < 6 )
{
// Tres Beep cada 3 segundos
LATDbits.LD2 = ~LATDbits.LD2;
var3beep++;
}
else
{
if ( var3beep > 5 )
{
// Reset variables ( vuelta a empezar! )
var3beep = 0;
var3seg = 0;
}
var3seg++;
}
} while ( 1 );
}Como vemos, el ejemplo es bastante simple, se recomienda bajar los archivos disponibles más abajo para indagar entre sus librerías y leer sus funciones de manera más detallada.
Un vídeo que demuestra lo explicado anteriormente se presenta a continuación:
Os pongo a vuestra disposición el programa en lenguaje C (XC8 y CCS) para que lo podáis descargar y probar:
| Microchip PIC: PIC18LF4550 + Zumbador Pasivo + Beep | |||||||||||||
| Compilador XC8 | Compilador CCS | ||||||||||||
| C | C | ||||||||||||
|
| ||||||||||||
· NOTA 1: Lo comentarios están en formato doxygen. Aunque no se entrega dicha documentación ya que el MPLAB X no tiene ningún pulgin capaz de trabajar con dicho formato.






0 comentarios:
Publicar un comentario