I want to be able to simulate analog circuits in matlab, and use an arduino board to interface with actual hardware devices, so that I can apply a given voltage/current to the input electrode of the device and read the voltage/current at the output electrode.
These devices are memristors (nonvolatile resistors whose resistance varies dependent on past activity), and possess the following approximate tolerances w.r.t input:
Current: nothing above 10mA
Voltage: 0 to 1 volts
I'm fairly sure the board can do this.
The resistance of the device is expected to vary between 200k and 6mega Ohms.
Therefore the output current from the device is typically low - in the range +/-8 *10-8 amps.
My main questions are:
Will I be able to sense output accurately in the above range using the board - and what kind of output resolution can I expect?
Would use of an external high-resolution ADC help?
The range of change is about 30:1 so certainly doable with the onboard adc (10-bit resolution).
The issues will be with speed and accuracy requirement, as well as the environment in which the measurements will be made. If the changes in resistance are slow and the environment is clean, you can do that easily with an internal adc.
If the changes are fast, or you need highly accurate measures, use external circuitry + adc.
I will be able to apply an analogue voltage between 0-1V to an electrode connected to a pin of the board.
Having applied the voltage, I will be able to read the corresponding analogue output current/voltage/resistance on another pin, where the current range is +/-8 *10-8
If the above two statements are true, which variant of the board would be most suitable for implementing this? It is important that analogue input and output are possible.
I will be able to apply an analogue voltage between 0-1V to an electrode connected to a pin of the board.
Having applied the voltage, I will be able to read the corresponding analogue output current/voltage/resistance on another pin, where the current range is +/-8 *10-8
If the above two statements are true, which variant of the board would be most suitable for implementing this? It is important that analogue input and output are possible.
Kind regards,
David
Neither of those statements are true with just a basic arduino board. Both generating the analog output voltage and being able to read current or resistance values (voltage my be directly measured if it's within a 0 to +5vdc range) would require external components and/or modules to be realized. Once those external requirements are met then any arduino board could handle the software involved assuming switch speed to change output and detect input changes is not an issue. A project like this is 90% electronics effort and 10% arduino software effort, in my opinion of course.
It is important that analogue input and output are possible.
Analogue inputs are possible only in the range 0 to 5V with a 10 bit precision, that is a maximum reading of 1023 corresponding to 5V giving about a 4.8mV per reading step.
Analogue outputs are not possible. There is a PWM output which when filtered by external components can give you a 0 to 5V signal with 256 steps so each step corresponding to about 19.5mV.
If you only want a small number of discrete 'analog' DC voltage values (and assuming they're all within the 0-5V range) then you could generate them using an R-2R resistor ladder. That would tie up a number of output pins (the number would depend on the number of distinct DC voltages you want to generate) but it would do it simply with minimal external components.