The temperature sensor I chose for this logger (MAX30205) outputs sensed temperature in two bytes. Those are in two's complement format, with each LSB representing 0.00390625°C. Instead of transforming the data to temperature, I believe it's best to store the original two bytes and do the transformation after retrieving the data.
According to the project's requirements, I need to sense temperature every 10 minutes and store it for 180 days. This comes to a total of 6*24*180=25920 records or 51840 bytes. Memory chip capacity is always listed in bits, so the requirement is for 414720bits or 405kbits.
The logger can use either SPI or I2C to communicate with the memory chip, but SPI would make PCB routing easier as on the Atmega328PB the SPI pins are opposite the I2C pins, which is how I'd like the chips to be arranged.
Back on mouser.com, I select the "Memory" category and select all capacities larger than 405kbits. Oddly, there's a 440kbits entry but that's for a configuration memory family and it isn't cheap, so I don't include it and go straight for 512kbit and larger.
Once this filter is applied, I order the results on the pricing column. The first listing is a 512kbit SPI chip from Adesto at €0.272. That's a SOIC8 chip, which is not very small and may be problematic for a tiny logger. Three entries down I see the same device in a TSSOP8 package, which is roughly half the size. That's small enough and easy to route for a two-layer prototype PCB, and it's priced at €0.315, only four cents over the cheapest option.
This is a great memory chip, easy to use and program for, and the memory can be written to byte by byte, which is perfect for low-power logging of two bytes every 10 minutes. With a 350nA power-down mode, it also fulfils the project's ultra low power requirement.
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.