Monday, December 1, 2008
USB Logger using a Vdrive2
I built a simple Data logger using a Vinculum Vdrive2. The logger records two sources of voltages within 0 to 5 volts. An 8 bit entry every second is recorded in a USB stick as a .csv file, suitable for use in Excel.
When I first got my Vdrive2 module, I built an RS232 interface to allow sending commands and viewing the responses with Hyperterm. My schematic of the interface can be found here.
You can update the flash ROM on the module by going to FTDI's website and downloading a FTD file to the memory stick. By changing the name to ftrfb.ftd, the Vdrive2 will detect the file and upgrade itself when powered up. Once this is done, remove the file from the stick before starting again. Otherwise it will try re-flashing the ROM again. When I got the module, it had a pretty old version in it, version 2.08.
Each entry into the USB stick is as follows:
A time stamped number of YYMMDDHHMM,ADC value1,ADC value 2,cr
2 hours worth or 7200 entries are placed in a file with the following date stamp.
How the logger works.
A debug port from the logger allows one to follow the operation in realtime with a PC running Hyperterminal.
The logger uses a DS1307 real time clock for date information. To set the date, a small file is placed on the USB stick. You can use notepad to make this little file. Name it "date.txt"
Using notepad, format the date as follows:
As an example, the time is 2008 on November 24th at 2 pm. 24 hour mode is used. The sequence would be:
When starting up, the little file is read and the date is set. Then the file is renamed to "ndate.txt" to prevent changing the time again. To reset the time, change the file to a new date and rename back to "date.txt". This makes setting the RTC easy.
To prevent loss of data while a file is open, a backup supply is turned on. An opto coupler is used to detect when to start and stop logging. Power to the opto comes from the main source of power. When the power drops off, the file is first closed and backup power is disconnected when done.
My first prototype was built on perfboard with plans to make PC boards in the future (if enough interest is generated). The pic microcontroller is a 16F688 and programmed using Pic Pro Basic. I used Microcode Studio as an IDE and programmed the Pic using the PICkit 1. To do ICSP, I made a little adaptor to bring out the connections from the PICkit 1 to the project. USB stick used with this project was a Kingston Data Traveler DTI/256.
I'm not the best in writing clean programs, but it works. Any suggestion on improvement is welcomed. One idea for improvement is to start getting it to delete the oldest files when the stick gets full. That would require making the memory into a circular buffer. Just haven't figured the file management scheme yet.
Schematic: Vdrive2 Project
Code (8 bit version):
HEX file "1_PERSEC.HEX"
Typical file "08120117.csv"
10 bit version