We answer questions!

This week we are debuting a new Newsletter format called "We answer questions!" As the name suggests, we are sharing (anonymously of course) a few questions we have received over the last month along with our responses. As these are general technical questions relating to our open hardware products, we think other people out there might be interested in the responses too! Questions are submitted via our email: info@iorodeo.com or via our website Contact Form.  

Question 1 - New Rodeostat ItsyBitsy Performance

"I am interested in using the ItsyBitsy M4 Express Board. However, I would like to know, in the new version compared to the old version, is the operational software still the same? How about the performance? Is it similar?"

For the most part the Rodeostat with the Itsy Bitsy M4 Express has the same functionality as the Rodeostat with the Teensy 3.2. It uses the same firmware (slightly modified),  the same python API and the same Web App. The biggest difference is that the Rodeostat with the Itsy Bitsy M4 express is not able to support the multiplexer expansion kit. This is due to the Itsy Bitsy M4 not having sufficient IO to interface with the expansion kit. One of the primary reasons for adding a new version of the Rodeostat is due to the Teensy 3.2 availability issues. The manufacturer of the Teensy, PJRC, is currently unable to get the MK20 microcontrollers for the Teensy 3.2 from NXP. There may be a small batch of Teensy 3.2's available in April and Sept 2023, but it is not clear how many and whether we will be able to get any. Because of this we decided to create a modified version of the Rodeostat which uses the Itsy Bitsy M4 express.  

In porting the firmware to Itsy Bitsy M4 express we had to make some minor modifications. This consisted of changing the pin mapping to accommodate the new microcontroller. These changes are mostly confined to ps_pin_map.h. There were also some changes due to differences in timer operation between the two microcontrollers. None of these are changes that you would notice as a user of the system unless you are customizing the firmware. Also, the firmware now supports both Teensy 3.2 and Itsy Bitsy M4 express. The board you are targeting is selected using a #define in ps_hardware_defs.h  To build the firmware for the Teensy 3.2 #define  DEV_BOARD_TEENSY and to build the firmware for the Itsy Bitsy M4 #define DEV_BOARD_ITSY_BITSY.  

In terms of microcontrollers, the MK20 on the Teensy and the ATSAMD51 on the Itsy Bitsy are pretty similar.  The ATSAMD51 on the Itsy Bitsy M4 is a bit faster running at 120MHz whereas the MK20 on the Teensy 3.2 is running at 72MHz. The ATSAMD51 also has more flash (512KB) and RAM (192KB) vs the MK20 which has flash (256KB) and RAM (64KB). On the other hand the Teensy exposes more digital IO from the MK20 than the Itsy Bitsy does from the ATSAMD51. This enables the Teensy to support the Multiplexer expansion board where the Itsy Bitsy M4 cannot. Another difference is that the analog inputs on the Teensy (MK20) are 16-bit and the analog inputs on the Itsy Bitsy M4 (ATSAMD51) are 12-bit. However, in practice you won't see much of a difference between the two. This is because in practice while analog inputs in the MK20 are 16-bit in practice you can really only use the highest 12 or 13 bits.  So the overall resolution is about the same.

Question 2: Rodeostat FeatherWing & Bluetooth Compatability

"I would like to know which Adafruit Feather Bluetooth Board do you suggest so I can avoid compatibility issues"

The Rodeostat FeatherWing needs an analog output on pin A0 to control the output voltage of the potentiostat. This limits its use with some of the bluetooth feathers such as the nRF52 etc. as they don't have any analog outputs. Boards using the M0 (SAMD21) and M4 (SAMD51) microcontrollers have analog outputs - so these are good bets. It looks like Adafruit has at least one bluetooth feather based on the M0 which should work -  the Adafruit Feather M0 Bluefruit LE https://www.adafruit.com/product/2995.  

Note, the analog output on M0 is only 10-bit. So you have 1024 values. Over the 3.3V this would put your output voltage resolution at about 3mV. This should be usable. The M4's have 12-bit analog outputs which give you slightly higher resolution. Unfortunately I couldn't find a Feather has the M4 and bluetooth. That said you might be able to pair an M4 feather with Bluetooth module - e.g. https://www.adafruit.com/product/2479.

Question 3: Rodeostat Serialport-bridge Issue

"I'm running Serialport-bridge on my computer, I connected the USB cable to the potentiostat and to the USB port, go to http://stuff.iorodeo.com/apps/rodeostat/ but when I switch on the connect to serialport-bridge, no serial port appears. Please let me know what to do."

If you are using the Chrome browser, note there is a new flag which can prevent the serialport-bridge from communicating with the web app software. You can change the value of this flag here (chrome://flags/#block-insecure-private-network-requests). On the page change "Block insecure private network requests" from "Enabled" to "Disabled". This will allow the web app software to communicate with the serialport-bridge. Note, you will need to restart chrome - all running chrome browser windows -  after making this change in order for the change to take effect.

Also, note that all of the communication between the web app and the serialport-bridge is local to your computer. The web app software is just javascript which runs in your browser, there is no communication with a remote server or anything like that. The purpose of the serialport-bridge is to enable the javascript running in your web browser to communicate with the USB/Serial ports on your computer. In the future we plan to remove the serialport-bridge requirement altogether as there is a new WebUSB API specification which allows for direct access of the USB/Serial ports from web browsers so there would be no need for the serialport-bridge.  

Question 4: Increasing the Rodeostat current range

"I understand that the maximum current Rodeostat can supply is ±1mA. I would expect the Rodeostat be saturated but the IV curve is showing a minimum and maximum of ±0.35mA. I have trouble understanding this. If I want to increase the current range of Rodeostat to ±10mA, how should I modify the circuit? I should mention that I am applying an AC potential of 500Hz addition to the CV. I modified the firmware a little so that it would output a CV together with the AC at the DAC output. In your opinion, would that be the reason why I am getting a lower current even though the op amp can supply ±10mA?"

Yes the maximum current for the Rodeostat is ±1mA. I'm not sure why you are getting max/min of ±0.35mA. However, if this is happening when operating at currents above/below the min/max current ranges then odd things can happen. For example, the output voltage of the transimpedance amplifier can sag when attempting to source more current than it is capable. The op amp used for the transimpedance amplifier should be capable of ±10mA  so I wouldn't think this would happen at 4mA. So maybe something else is going on. There is software lowpass filter applied to the current samples in the firmware. I guess I'm wondering if this could be the issue -  considering that you have such a high frequency signal (500Hz).   The parameters for the lowpass filter are set in ps_constants.cpp on line 192.

// Lowpass filter paramters {cutoff freq (Hz), initial value, order}
const LowPassParam CurrLowPassParam = {200.0, 0.0, 2};  

The first argument is the cutoff frequency of the filter in Hz which by default is 200Hz.  You might try bumping this up to 2kHz or so get rid of any attenuation in the current measurements at 500Hz.

To increase the current range of the Rodeostat above ± 10mA would require a minor hardware change. To add a higher current range channel you would need to change the feedback resistor used in the transimpedance amplifier for that channel. You are also limited by the maximum current of the op amp used for the transimpedance amplifier. The typical value for this op amp is 40mA, but I wouldn't count on it. Manufacturing variations suggest the maximum it can range from 10mA to about 60mA. So 10mA is probably the highest you can go. If you try to go past the maximum it isn't a disaster as the op amp can handle a continuous short circuit on the output, but as I mentioned above you the output voltage of the op amp will start to sag.

Have a question for us? Send an email to info@iorodeo.com or use our Contact Form: https://iorodeo.com/pages/contact