Já andava a ficar preocupado!
Passei praticamente todas as férias sem iniciar um projecto que tenha mesmo intenções de o levar até ao final.
Finalmente a ideia apareceu hoje!
Para quem não sabe, dediquei-me muito tempo à meteorologia (desde já recomento a visita pela comunidade meteopt) e embora tenha ficado com menos tempo para lhe dedicar, continuei sempre com um gosto especial pelos fenómenos atmosféricos.

Assim, o meu próximo projecto será um datalogger de temperatura, que automaticamente grave um número ainda elevado de temperaturas.
Esta ideia já "não é de agora" e já tentei fazer com um cartão MMC/SD. Não tive resultados práticos (problemas com bibliotecas, etc...).
Desta vez vou levar avante a mesma ideia, mas simplificando um pouco mais (ou não... o circuito será mais complexo que antes).

Vou utilizar um MCU menos complexo (a principio um PIC16F88) e usar uma 24AA128, para armazenar todos os dados.
Trata-se de um EEPROM de 128K, dividida em 16 mil endereços de 8bits cada, com comunicação I2C.

Estou à espera das amostras para os testes reais, mas já consegui trabalhar com uma pelo simulador.


O código de teste é super simples.
Apenas enviei um número para um endereço e logo em seguida fui ler o mesmo endereço para ver se o valor era o mesmo.
Simples mas suficiente para o teste. Quanto ao código, não é muito aconselhável que coloque aqui tudo, mas o essencial é este:


void main()
{ long int d;
pic_init();
init_ext_eeprom();
delay_ms(500);
write_ext_eeprom(1, 100);
delay_ms(500);
d = read_ext_eeprom(1);


Então mas depois quando quiser ter acesso aos valores?
Para isso, vou deixar a porta serial livre, e fazer a programação de forma a que ao enviar um comando qualquer, o ciclo pára e é iniciada a leitura da EEPROM e o consequente envio para o computador de todos os dados.


Por ultimo uma análise à quantidade de dados que vou poder armazenar. Ora como quero algum rigor e quero a primeira casa decimal da temperatura, vou guardar 25,6ºC (por exemplo) na forma de 256.
Assim vou necessitar de pelo menos 256+256, ou seja 10bits.
16 000 / 2 = 8 000
Poderei guardar então 8 mil temperaturas, o que é muito mais do que preciso.



Até próximos desenvolvimentos, ou engenhocas ;)

0 Responses so far.

Enviar um comentário