Está en la página 1de 3

PRÁCTICAS ELECTRÓNICA DEL AUTOMÓBIL

Manuel Moreno/ Emili Lupon, primavera 2005.

SESIÓN 8. RADIOFRECUENCIA

Trabajo previo:

- Lea detenidamente las transparencias de teoría sobre Radiofrecuencia.,


preparadas por el prof. Lupon (accesibles en la página web de la asignatura).
- Lea detenidamente el “datasheet” del “transceiver” nRF401 de Nordic
“datasheetnRF401rev1_6.pdf” (accesibles en la página web de la asignatura).

Conocimientos teóricos:

- Funcionamiento de una resistencia NTC


- Conversor Analógico/Digital del PIC18F458.
- Programación mediante interrupciones y polling
- Utilización de Timers y retardos
- Utilización de la UART del PIC18F458
- Radiofrecuencia

Recomendaciones:

- En la medida de lo posible, utilice variables globales


- Documente cada línea de programa para futuras referencias.
- A la hora de programar el microcontrolador es importante asegurarse de escoger
un oscilador de alta frecuencia (opción “oscillator = HS”) y deshabilitar el
“WatchDog Timer”, para evitar “resets” indeseados del microcontrolador.

E8.1. Escriba un programa en lenguaje C que envíe por la UART del PIC18F458 hacia
el transceiver nRF401 de Nordic un mensaje cada segundo con los datos adquiridos
(temperatura NTC y tensión de alimentación) por el conversor A/D del
microcontrolador. El mensaje tendrá que contener 4 bytes de datos (2 bytes de
temperatura y 2 bytes de tensión de alimentación). Se enviará primero el byte más
significativo (MSB) de cada variable y después el byte menos significativo (LSB),
utilizando el formato Motorola. Importante, cada grupo tendrá un identificador propio
para el mensaje (desde el 0x01 hasta el 0x06). Como preámbulo se recomienda utilizar
el carácter 0x55 seguido del carácter 0xFF. Tras el preámbulo se enviará el identificador
de la placa (0x01-0x06). Finalmente se enviarán los 4 bytes de datos, junto con un byte
de checksum afirmado y un byte de checksum negado. El checksum se debe calcular
con todos los bytes de la trama recibida.

Preámbulo Ident. Datos Temperatura Datos V aliment. Detección de errores


0x55 0xFF 0x01- MSB LSB MSB LSB Checksum Checksum
0x06 Temp. Temp Valim. Valim. afirmado negado
Formato de trama para cada nodo.
E8.2. Escriba un programa en lenguaje C para que el microcontrolador PIC18F458 sea
capaz de leer los mensajes que llegan por el enlace de radiofrecuencia vía el transceiver
nRF401 de Nordic. Si el identificador coincide con la dirección de la placa, se
decodificarán los 2 bytes de control (el primer byte de control será el 0x77), y se actuará
según la siguiente tabla:

2º Byte Control Actuación


‘A’ Complementar estado LED amarillo
‘B’ Complementar estado LED verde
‘C’ Complementar estado Ventilador
‘D’ Complementar estado Resistencia Calentamiento
‘E’ Desactivar todos los actuadores

Preámbulo Ident. 1º Byte de Control 2º Byte de Control


0x55 0xFF 0x01- 0x77 Según tabla
0x06
Formato de trama.

ANEXO. UTILIZACIÓN DEL TRANSCEIVER nRF401 de Nordic

Para utilizar el transceiver nRF401 de Nordic es necesario controlar una serie de señales
digitales de control del módulo y la UART del microcontrolador PIC18F458. Se
recomienda añadir las siguientes definiciones de hardware en el código C.

#define CS LATCbits.LATC4 // (0) -> 433,93 MHz (1) -> 434,33 MHz
#define POWER_UP LATDbits.LATD3 // Enable de la placa de RF
#define TXEN LATDbits.LATD2 // Enable Tx (1), Rx (0)

La línea de control CS permite seleccionar la frecuencia del enlace RF. La línea de


control POWER_UP permite cambiar de modo de trabajo del módulo RF. Si
POWER_UP es igual a 0, el módulo está en stand-by (bajo consumo). Si POWER_UP
es igual a 1, el módulo está habilitado para recibir o transmitir dependiendo de la línea
de control TXEN. Si TXEN vale 0, el módulo está en modo recepción. Si TXEN vale 1,
el módulo está en modo transmisión.

Es necesario configurar los puertos del PIC18F458 para que las líneas de control CS,
POWER_UP y TXEN sean pines de salida. Se recomienda utilizar la siguiente
configuración:

// CONFIGURACIÓN DEL PIC, PUERTOS Y PERIFÉRICOS

PORTC = 0x00;
PORTD = 0x00;

CMCON = 0x07; // Comparadores OFF, para disponer de puertos totalmente digitales I/O
TRISA = 0xFF; // Entradas
TRISB = 0b11111000; // Entradas, excepto RB2 = TX-CAN, Leds (RB0-RB1)
TRISC = 0b10000000; // Salidas, excepto RC7 = RX-UART
TRISD = 0b11110011; // Entradas, excepto RD2 (TXEN), RD3 (POWER_UP)
TRISE = 0xFF; // Entradas
Módulo RF401 en modo transmisión

Es necesario, tal y cómo dice el datasheet del módulo nRF401 de Nordic, realizar los
siguientes pasos, antes de entrar en el bucle infinito de control:

// Inicializar Módulo RF nRF401 de Nordic (Transmisión)


CS = 0; // Canal 1 de RF (433,93 MHz)
POWER_UP = 1; // Activar placa RF (salir del modo stand-by)
Delay1KTCYx(15); // Retardo 3 ms antes de activar la transmisión
TXEN = 1; // Activar transmisión
Delay1KTCYx(5); // Retardo 1ms antes de enviar datos

Una vez inicializado el módulo, sólo es necesario emplear la UART para transmitir
caracteres. Se recomienda utilizar 8 bits de datos y 19200bauds.

Módulo RF401 en modo recepción

Es necesario, tal y cómo dice el datasheet del módulo nRF401 de Nordic, realizar los
siguientes pasos, antes de entrar en el bucle infinito de control:

// Inicializar Módulo RF nRF401 de Nordic (Recepción)


CS = 0; // Canal 1 de RF (433,93 MHz)
POWER_UP = 1; // Activar placa RF
TXEN = 0; // Activar recepción
Delay1KTCYx(25); // Retardo 5ms antes de recibir datos

También podría gustarte