• Nenhum resultado encontrado

Relativamente ao tipo de conecção entre os transceivers e dado que esta é half-duplex, tem de existir algum mecanismo que altere o modo de funcionamento do transceiver quando se pretende que funcione como receptor ou como emissor. As alterações a efectuar existem quer ao nível do hardware, quer ao nível do software. De forma a possibilitar uma mudança de modo de funcionamento, ligaram-se pinos de I/O às alimentações de alguns módulos de hardware, desta forma é possível ligá-los ou desligá-los, consoante a função que se pretende realizar (transmitir ou receber dados). Este mecanismo permite, não só alterar o modo de operação do transceiver, mas também optimizar o seu consumo, reduzindo-o a um mínimo. Na gura 5.6 é possível ver um esquema simplicado das ligações que foram feitas com esse objectivo, assim como os dois modos de funcionamento do transceiver e os respectivos módulos utilizados.

CAPÍTULO 5. SOFTWARE DESENVOLVIDO

Para congurar o transceiver no modo emissor é necessário congurar o módulo output com- pare em modo PWM, activar a função de input change notication no pino designado e ligar o amplicador sintonizado, alimentando as resistências que polarizam o transístor. O comparador interno do microcontrolador e o opamp utilizado para amplicar o sinal desmodulado encontram- se desligados, permitindo uma redução no consumo.

Para congurar o transceiver no modo receptor é necessário ligar o opamp (LMH6646), que amplica o sinal desmodulado e o comparador interno do microcontrolador. Os módulos necessá- rios no modo emissor devem ser desligados, nomeadamente o comparador de saída e o amplicador sintonizado. O funcionamento do comparador e respectivo módulo gerador da tensão de referência já foi explicado na secção 4.1.5, tornando-se apenas necessário explicar sucintamente o algoritmo desenvolvido, que permite de forma automática, a alteração da tensão de comparação em função do valor médio do sinal desmodulado (lido numa entrada de ADC). A gura 5.7 resume o software implementado para congurar o comparador e o módulo que gera a tensão de referência a utilizar nas comparações.

Figura 5.7: Fluxograma de conguração do comparador e do módulo gerador da tensão de refe- rência

CAPÍTULO 5. SOFTWARE DESENVOLVIDO A função de conguração começa por inicializar variáveis, onde x e y são arrays de inteiros com 16 posições que contém os níveis de tensão de saída do módulo em formato digital com resolução de 10 bits, para permitir uma comparação directa com o valor lido na ADC. O array x possui os valores referentes à gama de variação que oferece maior intervalo entre níveis, mas menor resolução (CVRR=1). O array y possui os valores referentes à gama de variação que oferece maior resolução (CVRR=0).

Após inicializar as variáveis é feita uma leitura na ADC (average level) e armazena-se o resul- tado em Vref. De seguida é efectuada uma subtracção entre Vref e o primeiro valor armazenado

no array x. Como se trata da primeira iteração, este é o valor mínimo, portanto armazena-se o módulo da subtracção na variável min. A operação de subtracção entre Vref e os valores ar-

mazenados em x é repetida até chegar ao m do array, mais 15 vezes portanto. Sempre que se verique a condição dada pela equação 5.1, signica que existe uma tensão de comparação mais aproximada do valor lido na ADC, portanto armazena-se o novo valor na variável min e guarda-se a posição que esta ocupa no array em indx.

abs(Vref − x[i]) < min (5.1)

Finalizadas as iterações referentes ao array x reinicia-se o processo, agora em relação ao array y, alterando a variável min e indy sempre que se encontre uma tensão de comparação mais próxima do valor médio do sinal desmodulado. Este algoritmo simples permite aproximar, o mais possível, a tensão de comparação do valor médio do sinal, em função dos níveis de saída disponíveis no módulo gerador de tensão, optimizando desta forma o funcionamento do comparador.

Para congurar o módulo com a tensão de referência determinada, basta fazer corresponder o seu registo de conguração (CVRCON) com o valor armazenado no array CVRCONx ou no CVRCONy (16 variáveis com congurações pré-denidas, uma para cada valor de tensão de saída possível), sendo que a posição requerida é igual ao índice armazenado em indx ou indy respectivamente.

A conguração do comparador propriamente dita, passa simplesmente pela escrita do valor 0x0512 no registo CMCON, que permite que este funcione com os parâmetros denidos na secção 4.1.5.

Relativamente à activação e desactivação de módulos, para mudança de modo de funciona- mento ou simplesmente para poupar energia, esta é feita com recurso aos registos TRIS e PORT correspondentes, para os módulos de hardware e com recurso a registos especícos para cada módulo interno do microcontrolador. Desta forma, é possível, após efectuar um estudo relativo aos tempos de activação e desactivação dos módulos de hardware implementados, desenvolver um protocolo que possibilite uma redução do consumo do transceiver, onde este permanece durante largos intervalos de tempo num estado de baixo consumo (deep-sleep), saindo dele apenas para receber ou transmitir informação.

CAPÍTULO 5. SOFTWARE DESENVOLVIDO

De forma a fornecer algum tipo de indicação, útil para efeitos de debugging numa fase inicial da implementação ou para determinar, de um modo mais ou menos grosseiro, o alcance do transceiver, ligaram-se três leds a pinos de I/O do microcontrolador. Numa fase nal do projecto poder-se-ão utilizar os leds para outros ns, como indicadores de bateria fraca, de recepção de mensagem ou de indicador de nível de sinal.