The iLabs Mini is a project to replace the $40,000 HP4155B with a much more limited, but cheaper, $40 device. In the process, we developed a more general device, although this web page still mostly describes it in its parameter analyzer version.
The Mini, in the parameter analyzer version, is made up of two boards. One is a board that takes USB to 8 analog inputs, 8 analog outputs, and a growing number of digital GPIO pins. A prototype PCB has been manufactured and works. A final version of the PCB has been manufactured, but not yet fully assembled or tested. It costs just over $20. The major limitation is speed (in the low kilohertz, rather than megahertz). This is a general-purpose board that can be used as in a variety of experiments (e.g. analog outputs as function generators, and inputs as scope probes). There is a second board, a bit under $20, that uses 4 analog outputs, 8 analog inputs, and depending on version, 4-8 digital pins, to convert this into a 4-port parameter analyzer. This has been tested on a protoboard. A PCB has been manufactured, but not yet tested. Thus far, not much work has been done towards integrating the Mini into the iLabs architecture (this is the current push in further development).
The project has several goals:
- The device will be able to be used for small, low-grade supplements to problem sets. E.g. if a problem set is about analyzing a simple differential pair, at the end, students can
- Right now, each HP4155B is limited to 8 ports. If we want to add new experiments, we must necessarily remove old ones. As a result, people outside of MIT may not necessarily always be able to rely on having the same configuration, and as a result, generally need to coordinate experiments with us. A $40 device allows us to forget about it once it is plugged in, and others can rely on it being there essentially forever.
- We can freely give a $40 device to other schools wishing to create their own iLabs, as well as to interested students. As a result, it can act as a community-building platform.
- The device can also be reprogrammed to act as a simple, low-speed oscilliscope, signal generator, or for other uses.
The major limitations are:
- In designing a $40 device, we could not afford a wall wart, so we are powered off of USB. This limits us to a 5V rail (+-2.5V and ground, if we use it as a double-ended supply). In the current iteration, because the op amps are not rail-to-rail, we have even less swing (this may be fixed in the next version - the current one needed to be built without ordering parts not in stock in our supply room). It is possible to make a trivial modification of the circuit that will allow the use of an external power supply (this involves changing a few resistor values, and connecting the opamps to different power rails).
- The current is limited to about 1-10mA. The DACs and ADCs have 10 bits PowerPoint resolution, and probably less real resolution.
- There is no control over the maximum current, beyond the limit given above (which comes from the maximum output current of the op-amp, going through a shunt resistor for current measure).
- Open and ground connections are implemented as I=0 and V=0. With 10 bit resolution, this gives noticable error, especially in the current case (in the voltage case, we can usually define ground to be "whatever the DAC outputs"). Note that if a connection is always open (voltage-measure), we can just not solder up the relevant SMU, and connect it directly to the DAC.
We have the following resources available:
- The Mini Parts List is available for perusal. Circuit schematics and source will be coming shortly.
- We have the source code for the Mini, as operating in the parameter analyzer mode. mini-param-0.01.tar.gz
- The Mini Commands describe how to talk to the Mini in parameter analyzer mode.
- Be aware that this is source for the prototype on a protoboard, which uses an ATMega32, rather than the ATMega48 in the current PCB version
- We have the source code for the Mini, as operating in scope/signal generator mode. mini-opamp-0.01.tar.gz.
- This code compiles for and runs on the Mini prototype PCB, but has not been tested very much, and may be very low quality.
- It should be rewritten to be entirely interrupt-driven for better perfomance.
- We have the Eagle source for the schematic and board for the prototype PCB. mini-pcb-ver-0.01.tar.gz. This board has two errors:
- The CLR pin on the DAC is wired low, instead of high.
- The CS/LD pin is wired to a pin that on the Mega48 (unlike the Mega32) can only be an input when in SPI mode.
- There are vias under the clock crystals, which the clock crystals may short. Use a piece of electric tape to solve this.
- The USB connector is bigger than indicated in the spec sheet, or in the library file I mooched off the web. Hence, some components either need to be soldered at the very edge of the pads (my quick and dirty solution), or the USB connector should be filed down (better solution)
- To develop the Mini under Debian, you will need the Debian AVR packages
- To program it, the schematic for connecting to a parallel port is here: http://www.captain.at/electronics/atmel-programmer/ (To find it, Google for 'DAPA Programmer'). The Mini includes the protection resistors already.
- We are beginning to create Mini assembly instructions that explain how to get up and running.
The iLab Mini was begun as a maverick project by Piotr Mitros, who was hired primarily to create this Wiki, and help update some of the documentation. It is currently garnering some support from the powers that be, and Piotr is investigating either finding ways to devote more time to the project, or alternatively, pass it along to someone else who can. Right now, there is a team of undergraduates at OAU that is (hopefully) taking over the development of the Mini.
The Mini TODO list remains large.
Piotr, I don't really know how u want the mini driver to look like but i think it can be done faster in borland builder enviroment. You can even create a grfaphical interface. If u think i can help, u can tell me where. i can program the microcontroller virtually now, i mean by running the studio or WINAVR with gcc compile, it's really cool and interesting---Tobi, OAU