Ey guys, after working on this along the afternoon I have solved the issues in our case.
For the future generations that want to integrate Rodeostat in their Arduino based platforms:
The Hardware: As Will has said before, you will need to connect the Arduino to the teensy in one of the possible ways (SoftwareSerial, I2C, SPI, Hardware Serial (like Serial2...)). In our case we have connected it by Hardware Serial, with Serial2 in the pins 26 of the P14 connector (see the schematic that Will attached before, remeber that the arrow in the pcb indicate the first pin of the header) to a TX pin in the Arduino (in our case the TX2 pin in Arduino Mega) and the 31 (also in the P14 connector) to the RX pin in the Arduino. For powering the rodeostat you will also need to connect the ground from teensy (like the one in the P13 or P14 connector) to the ground in Arduino, and 5V of Arduino to the pin 5V in the teensy PCB. This last pin is located under the P13 connector, there are four pins and the sign "5V" are near the internal pin of the PCB but TAKE CARE the 5V pin is the one in front of this, the one near the border of the PCB. That letters lead to an error.
The Arduino software. You could use the one that @HoughA have post before, measuring the voltage between the "DAC BIP" hole in the pcb and a hole connected to ground. The voltage should change between 1 and 0 every second (if you polymeter don´t change this fast, just change the code and set a delay of 5 secs).
Teensy software. First of all, you will need to add this lines to the setup function in the Arduino file (these lines are specific if you are using Serial2 communication, substitutes them for your own system):
You will need also to change the functions that receive the messages from the normal usb serial port, and set them to receive by Serial2 port instead. For doing this just open the files ps_message_receiver.cpp and ps_message_sender.cpp (this one if you want to also receive the response in your arduino instead of your PC) from the potentiostat library and change every line in which you see "Serial." to "Serial2."
If you made only this changes you will have the problem that @HoughA have faced before; Your Arduino and your Teensy only communicates after you send something over the normal Serial port with a PC. This is because we don't have changed the Serial Event handler in the Arduino code. This handler triggers on with a new Serial communication and updates the message data.
This handler function is located at the bottom of your .ino file. Is called SerialEvent and you will need to change it to SerialEvent2 (To handle Serial2 events instead of Serial events).
Sorry for my poor English. Hope this comment has given you a hand.
Thanks, for the suggestions. Just for clarification, I'm using 1WE, 1CE, 1RE (or 1WE - 1 CE/RE) for each rodeostat. For now I'm running each rodeostat in individual beakers.
Anecdotally, I ran the same experiment using a research-grade multi-channel potentiostat (from GAMRY) and didn't see cross-talk in a single beaker. Specifically, I ran high currents using a single Ag/AgCl wire (reference+aux) for each channel. The stability of each cell degraded randomly. Previously, when using a few rodeostats, all WE signals decayed at the same time (suggesting the 3 wires were acting as a shared reference/aux).
Ordered a USB isolator, will wait before splicing my teensy boards. They're cheap enough to replace, but I'd rather not need to if I can help it.
This will give you a development environment which will allow you to program the firmware on the teensy and would be the option you want if you wish to customize the firmware on the teensy in some way.
You should get the best current measurement by selecting the smallest current range which will encompass your data.
In this case the sample rate just determines the rate at which samples are collected and sent to the host PC i.e. the time step between samples. So the scan rate (V/s) is independent from the sample rate. The scan rate is set via the 'amplitude' and the 'period' parameters as follows scan rate = 4 x amplitude/period.
This is a very interesting idea - thanks for sending me a link to the paper. I think this would be a great way to expand the capabilities of the Rodeostat. Perhaps the quickest and cheapest way to try this with the Rodeostat would be be make a little external expansion board which implements the make-before-break multiplexing. The expansion board could connect the Rodeostat's K1 header for the working, counter and reference electrode connections and to the DIO header "P14" for power, ground and digital control signals. I think this would be a pretty easy expansion board to make as there are only a few components required. This way we could test the idea without too much new hardware. I think I will definitely have a go at designing this expansion board. I will send you a schematic when I have something ready.
Unfortunately, we don't have a version colorimeter software which works on Chrome OS.
We do have software for linux. so you could install ubuntu on the Chromebook using crouton https://github.com/dnschneid/crouton This will allow you to run ubuntu while preserving your original Chrome OS system.
Hi...i am a new user here. I don't have much experience but as per my observation the control amplifier will still be running trying to control the voltage between the reference and working electrode, so can disconnect the counter electrode.
The Rodeostat has voltage ranges of +/-1, +/-2 , +/-5 and +/-10V. So it can achieve the voltage you want without modifications.
The standard current ranges are +/-1, +/-10, +/-100 and +/-1000 uA. Which are a bit lower than you are looking for. We have made modified versions with increased current range. The limit on this was about 24mA (24000uA). There is a topic discussing the modifications here Increasing current ranges to detect mA
Yes, I think it is possible to reduce this overcurrent. This is most likely caused by the abrupt change in potential when the cyclic voltammetry test is run with the 'shift' parameter (dimensionless phase shift) set to zero. The cyclic voltammetry test outputs a triangle waveform for the potential and when the 'shift' parameter is set to zero this waveform will start at the minimum voltage as shown in the figure below
This figure shows two cycles of the potential output for the cyclic voltammetry test when shift = 0. At the start of the test the potential abruptly changes from 0V to the minimum value (in this case -0.4V) at the start of the test. This abrupt change in potential can cause a large current.
In order to minimize this current it is possible to adjust the shift parameter so that the waveform starts at 0V and then linearly progresses to the minimum value. An example is shown in the figure below
In this case the shift was adjusted so that the waveform initial goes from 0V to the minimum voltage (-0.4V). The exact value of the shift parameter required to achieve this depends on your minimum and maximum voltages and can be calculated as follows
shift = 0.5*(volt_max/(volt_max-volt_min)) + 0.5
Regarding your second question. There is currently no way to disconnect the counter electrode via the firmware e.g., via some sort of digital switch. However, this is something I would like to add to a future revision of the hardware design. At the moment your best option might be to physically disconnect the counter electrode whenever you remove the reference electrode.
We don't have DPV implemented yet. However, we did just add squarewave voltammetry (SWV). I will be putting up some documentation on the squarewave voltammetry shortly.
I think adding DPV wouldn't be too difficult. I plan to put together some online notes showing how to implement custom tests by modifying the firmware for the teensy. You could have a look at the implementation of the squarewave test in the Rodeostat's firmware here https://bitbucket.org/iorodeo/potentiostat/src as it will be very similay. See the "firmware/libraries/potentiostat" sub-directory. The squarewave test is implemented in ps_squarewave_test.h and ps_squarewave_test.cpp.