No passado dia 19 dei mais um passo num hobby já com alguns anos e que por falta de tempo ainda não tinha conseguido concretizar.
Para quem não sabe, eu sou radioamador desde 2011. Em Portugal a legislação dita que se faça exame para categoria 3, onde a estação de amador (CR7) apenas deve ser usada para radio-escuta e permanecer nessa categoria por 2 anos (até um máximo de 5 anos, após isso o CAN caduca). Após esse período, o amador por ir novamente à ANACOM realizar exame para a categoria 2 e quando aprovado poderá então usar a sua estação de rádio (CS7) para transmitir em quase todas as bandas de amador destinadas para o efeito. Um ano após estar em categoria 2, o amador pode ir novamente realizar exame para categoria 1 (CT7).
A comunidade está a decrescer muito e isso deve-se bastante à legislação actual e ao custo dos exames, pois cada exame custa 50€. Se a este valor juntar-mos a perda do dia de trabalho, os custos de viagem, os custos de alimentação, etc... ainda custa bastante.
Bem, mas lamentos à parte, 4 anos depois de ter realizado exame para categoria 3, lá fui em direcção à ANACOM, junto com a minha namorada (actual CR7AML) e com o amigo Luís Garcia (actual CT7AEL), realizar exame e obter aprovação para subida deixando de ser CR7AEK e passando a CS7AEK.

PS: infelizmente em todo o distrito de Castelo Branco sou, actualmente, o único CS7 e desde 2009 (ano em que entrou em vigor a actual legislação) apenas 6 pessoas (do distrito) realizaram exame para radio amador, sendo que 3 delas são CR7...

Link's que vale a pena ver:




73 51
CS7AEK

Na imagem em baixo está representado um fluxograma básico do funcionamento do programa que corre no microcontrolador.
Uma breve descrição:
* O sistema é inicializado;
* A ADC é configurada;
* Entra no estado zero;
Aguarda alteração de estado, que será obtida na interrupção do botão. O botão deverá ser clicado para começar a leitura;
* Após o botão ser clicado a primeira vez, é enviada uma mensagem de inicialização.
* Aguarda novamente pelo botão, para dar inicio ao envio de valores;
* Quando o botão é clicado, entra no estado 2, estado de envio de valores, como pode ser visto na interrupção do timer;
* Se o botão for clicado novamente, entra no estado de pausa, estado 3, onde fica a aguardar novamente por um novo clique, que forçará novamente a entrada no estado 2;
* São feitas sucessivas leituras do byte de configuração da ADC e verificado o bit "RDY", para saber se os bytes da conversão foram actualizados;
* Quando se obtém uma nova leitura, os valores de ganho e ADC são alterados pelos mais recentes;
* É feito o ajuste do ganho do PGA (ver parte anterior) e é calculado o valor de corrente em uA;
* Em seguida a variável global é actualizada e contém o valor de corrente mais recente, pronto a ser utilizado quando ocorrer a interrupção do timer;
* O ciclo repete novamente;


No terminal, o utilizador pode ver algo como na imagem seguinte.

Hoje ao saber que a Philae tinha contactado novamente a Rosetta, encontrei esta sequência de vídeos.
Sinto-me tão burro por não conhecer isto ainda (primeiro video de 2013) e por os estar a ver pela primeira vez, mas por outro lado sinto que acabei de ver os melhores vídeos de sempre.
Por favor, vejam isto!!!
Para quem mal conhece a missão, esta é uma óptima oportunidade.













A comunicação utilizada pela ADC é I2C, em que neste caso o MCU é o mestre e a ADC é o escravo. Mais informações e detalhes sobre I2C podem ser encontrados AQUI.
O endereço da ADC será o 0x68, pois "Adr0" e"Adr1" por opção minha vão ficar ligados a GND, ou seja em low state.
0x68 == 0b01101000

Para proceder à configuração da ADC, basta enviar o comando de escrita (ultimo bit do endereço == 0) com o endereço 0x68 e em seguida enviar o byte de configuração.
Este pode ser visto na pagina 18 do datasheet.
Para a aplicação pretendida, o primeiro byte de configuração enviado é 0b10010100.
Após isto a ADC fica pronta a fazer amostragens de forma automática, recorrendo ao oscilador interno. A periodicidade de amostragens será de 16.6mS (1/60Hz).
O programa a correr no MCU fica a fazer leituras constantes ao byte de configuração (enviado o comando "read" após o endereço 0x68) para fazer verificação do bit "RDY". Como mostrado na parte anterior (AQUI) quando enviado o comando de leitura, a ADC retorna 3 bytes: 2 primeiros referentes à conversão e o ultimo referente ao byte de configuração (que contém o bit de estado "RDY").
Assim que esse bit mudar de estado e passar a "0", zero, significa que os primeiros 2 bytes já recebidos, correspondem a uma nova conversão.
A próxima verificação feita é a do ganho do PGA. De acordo com o seu valor a interpretação do valor medido, da ADC, terá de ser diferente também. Na parte anterior este procedimento já foi explicado e o bloco em baixo penso que se "auto-explica"...
 switch (gain)  
 {  
   case 0:               //ganho 1  
     if(adc < 1023)  
       MCP3428_config(3);     //ganho 8  
     else if(adc < 2047)  
       MCP3428_config(2);     //ganho 4  
     else if(adc < 4095)  
       MCP3428_config(1);     //ganho 2  
     uA_temp = 12.327 * adc;  //valor de calibração - fluke 724
     pga_gain = 1;  
     break;  
   case 1:                //ganho 2  
     if(adc >= 8191)  
       MCP3428_config(0);      //ganho 1  
     else if(adc < 2047)  
       MCP3428_config(3);      //ganho 8  
     else if(adc < 4095)  
       MCP3428_config(2);      //ganho 4  
     uA_temp = 12.389 * adc;   //valor de calibração - fluke 724  
     pga_gain = 2;  
     break;  
   case 2:                //ganho 4  
     if(adc >= 8191)  
       MCP3428_config(1);      //ganho 2  
     else if(adc < 4095)  
       MCP3428_config(3);      //ganho 8  
     uA_temp = 12.518 * adc;   //valor de calibração
     pga_gain = 4;  
     break;  
   case 3:                 //ganho 8  
     if(adc >= 8191)  
       MCP3428_config(2);      //ganho 4  
     uA_temp = 12.644 * adc;   //valor de calibração
     pga_gain = 8;  
     break;  
 }  
Por fim é actualizada uma variável global com o valor da corrente medida em uA. Essa variável contem sempre o valor válido mais recente e é expectável que seja actualizada a 60 vezes por segundo.
Um timer com interrupções a 50Hz (20mS), ligeiramente mais lento que a actualização da ADC para haver margem na alteração de ganhos do PGA, dá a ordem de partida dos dados (via USART) para o computador.
Os dados são então visualizados num terminal como mostra a imagem:

Assim se concluo mais um parte, mas as seguintes já vêm a caminho ;).

A sonda Philae acordou e saiu do modo de hibernação.
Entrou em hibernação em Novembro de 2014, após a aterragem no asteróide não ter corrido como esperado e ter ficado num zona sem luz solar. Isso impedia de recarregar as baterias e continuar devidamente a missão.
Ontem, dia 13 de Junho pelas 22:38 CEST, 21:38 hora portuguesa, a sonda "falou" durante 85 segundos com a equipa na Terra, através da Rosetta.
Agora a equipa espera que a sonda volte a entrar em contacto para descarregar os dados acumulados durante os últimos dias.