WheeStat Software Adjustments

I recently started working with the WheeStat. It’s a nifty little device that uses a custom circuit board attached to a TI Launchpad Tiva-C series board. It certainly seems capable of producing quick voltammograms on an extremely low budget, making it ideal for an educational setting. Although I haven’t worked with the alternatives, it appears similar to the Ardustat or CheapStat. The most appealing aspect in my opinion is that each of these devices is fully open source; schematics, parts lists, and the source code for each of these affordable potentiostats is freely available online. If you want a specific technique or potential program, you can write it. If you want to improve the resolution, you can purchase higher quality components.

After looking into the WheeStat, there’s a couple things that could use a little tweaking. There seems to be an issue with recording a true open circuit potential and timing is calculated using the internal clock of the microprocessor, causing an unexpected slowdown on occasion. The most pressing issue for me right now (and fortunately the easiest to fix) was an unresponsive program after prematurely stopping a chronoamperometric experiment.

If the “Stop” button was pressed after a chronoamperometric run was started, the software would indicate a stopped state, but the WheeStat continued to apply the previous potential. The program would no longer be able to start a new run, forcing the user to close the program and reset the WheeStat (through unplugging and plugging back in). This was due to the way the chronoamperometry experiment was programmed in the firmware. The offending script is below (I removed commented out lines for simplicity):


while(inTime <= readTime){
    Iread = 0;
    time2 = millis();
    inTime = time2-time1;

This is set up as a while loop so that the potential is applied (PWMWrite(signal_pin,pwmRes,dFnl,pwmClock)) and current is read (readCurrent(true)) in increments of runDelay as long as the time that has passed is shorter than readTime (while(inTime <= readTime)), but there appears to be no check to see if the Stop button was pressed in the GUI. The “CV” and “Ramp” techniques appeared to stop gracefully, however. Checking out the code for those techniques revealed this blurb:

  if(Serial.available()>0) {
    sRead = Serial.read();
    if (sRead == '%') {
      runState = false;

If a % character is sent from the connected PC, the potentiostat knows to end the currently running technique (runState = false). I just had to copy this section into the while loop above. I then changed the while condition to:

while(inTime <= readTime && runState == true)

If runState ever becomes false, the while loop exits and the chronoamperometry technique ends gracefully. Writing this now, I see that perhaps using a simple break or perhaps a goto statement would have been more appropriate, but this fix gets the job done. My edit has been merged on GitHub. An issue that still persists, however, is that the array in which all of the data was saved seems to be flushed when the Stop button is pressed. This is a problem in the GUI and will have to be worked out at a later date.

Review: Symmetrization of the Crystal Lattice of MAPbI3 Boosts the Performance and Stability of Metal–Perovskite Photodiodes

The following is my brief review of  Shi, Z.; Zhang, Y.; Cui, C.; Li, B.; Zhou, W.; Ning, Z.; Mi, Q. Advanced Materials 2017, 29 (30), 1701656. published June 12, 2017. DOI: 10.1002/adma.201701656

The authors suggest that a significant contributor to the instability of Pb perovskite solar cells (PSCs) is the imperfect symmetry presented by the most commonly used methylammonium lead iodide (MAPbI3). They note that there is no single A+ that can replace the methylammonium cation (MA+) in order to prepare the ideal cubic perovskite structure, and therefore examine the effect of forming a mixed A+ perovskite. In order to guide their attempts, they estimate the maximum volume each cation ratio (A1-xx) fills and assume that those cation mixtures within the range of 252 ± 3 Å3 will be stable. Despite finding some stable mixtures of MA+, ethylammonium (EA+), and dimethylammonium (DMA+), it appears that this approach has limitations. For example, δ-formadinium (δ-FA+) appears to have a very similar volume to α-FA+, which exists in the stable cubic region according to the volcano plot in Figure 1, yet its absorption edge is much lower and the authors do not explore any FA+ mixtures. This is an unfortunate omission as FA+ is a commonly substituted cation for MA+ in PSCs. Nevertheless, the authors demonstrate some promising results, including an extended lifetime of the perovskites in a humid atmosphere and a decent photoconversion efficiency of 13.2%.

This communication presents an informative approach towards improving the stability of PSCs, which is certainly a step in the right direction; PSCs are currently not commercially viable due to their rapid degradation. To expand on this study, the authors should perform a more rigorous x-ray diffraction (XRD) analysis of their perovskites with exposure to humid atmospheres. It seems that the most important conclusion from this paper is the improved lifetime of the perovskites in ambient conditions, a result the authors attribute to the more cubic structure of their materials. It is therefore imperative that the crystal structure is monitored over time with respect to ambient humidity in order to verify this claim. Additionally, I am interested in seeing the performance of the same mixed cation perovskite used in the preset study in the more traditional architecture, FTO/TiO2/MA0.85EA0.15PbI3/Spiro-OMeTAD, for further comparison.