danielje / ABE-Stat

Android project / application wireless interface to ABE-Stat Potentiostat
6 stars 4 forks source link

i2C Issue #6

Open djs8d opened 3 years ago

djs8d commented 3 years ago

I'd messaged you several months back to request some documentation (thanks for providing- it was very helpful!).

I've managed to get a PCB of the Abe-stat and all components soldered on. I've been able to connect to the bluetooth app and complete the initial calibration for the DAC and transimpedance gains. However, I'm having some issues with the i2C bus for calibration of the network analyzer- the existing calibration data when you turn on the app (or directly through the code) returns 48 NaN values. I checked with an oscilloscope on the SDA pin on the ESP 12S- and it is not working correctly but does attempt to send data when connected- (sends logarithmic form rather than pulse form).

With no obvious soldering issues present, my next step was to replace the AD5333 chip to see if it may have been fried previously during testing. Before doing this, one last possibility crossed my mind that I wanted to run by you to see your thoughts. I checked the SDA 12S pinout, and it appears that the ESP 12S's dedicated SDA pin is IO2, but the design files we used in PCB production hook the SDA bus up to GPI04. I consider myself a novice with this stuff, but I believe this would cause the bus to malfunction, although I may be mistaken. Interestingly, GPIO4 would be in the correct position for SDA on an ESP 12E controller, which I saw referenced in a PDF of the wiring in the documentation. However, the 12E has extra pins that don't align with the PCB design... I wondered if you had previously used a 12E during testing and perhaps the design files weren't updated accordingly. Grasping at straws...

In any case, any guidance you could provide would be very helpful. I'm very excited about doing some good research with this board and hope I don't need to resort to using a $10,000 potentiostat! :)

Dan

danielje commented 3 years ago

Hi Dan, I'm just looking at the schematic, it looks like GPIO 04 and 05 are used for i2c (SDA and SDL respectively), pins 13 and 14 on the ESP12S (https://www.elecrow.com/download/ESP-12S_User_Manual.pdf), so I think the layout is correct. I'm looking at the Arduino code now- maybe the default pin assignments for i2c for ESP8266 on Arduino have changed (i.e. line 342) and you'll need to initialize including explicit pin assignments(?) I do recall having difficulty getting i2c to operate- specifically I would switch off power to AD5933 when not being used partially to save battery but also under the presumption that it would just add noise onto the analog circuitry- but when powered off the communication to ADG715 (analog switch array that controls configuration of the network) wouldn't work so configuration changes wouldn't happen; turns out the i2c pins on the AD5933 act like a really big capacitor and make edge transitions really slow when the chip isn't powered (I think maybe what you are describing as "logarithmic" in shape rather than sharp pulses), and so data wasn't communicated reliably. That might explain your observation if AD5933 somehow isn't getting powered- or maybe the same might happen if ADG715 on the same bus isn't powered correctly(?) I hope it works- I've been trying to find time to update everything (to address noise issues, have more consistency in how AD5933 samples signals of different frequencies (i.e. by operating it on an adjustable clock so you consistently get same number of samples at same part of applied cycle), and changing to ESP32 (and getting rid of the extra bluetooth)- hopefully this summer (but been saying that for two years now :-/ If you need a device working I have a small pile of them here...

djs8d commented 3 years ago

Thanks for your insights, quick response, and offer. I would be extremely grateful if you could spare an extra ABE-stat as I'm currently in a bit of a bottleneck for my Ph.D. research and am unsure if and when I can get this ABE-stat working. Please let me know the best email address to reach you and I can send you an appropriate mailing address and we can discuss details off the thread.

I had checked the power supply to the AD5933 and it appears to be fine, but it's a good idea to also check the ADG715- I'll try that tomorrow and will follow up if that is the culprit.

I'm not sure if the ESP8266's default pins have changed or not, but from what I can tell from the link you shared and other online digging I did, it looks like the default pins for i2C currently are 2(SDA) and 14(SCL) while the PCB design is for 4(SDA) and 5(SCL). Maybe I'm totally confused (again- I'm a bit new at this), but I guess that's what I was trying to suggest may be the issue in my first message. I tried updating the code with wire.begin(4,5) but no luck- unsure if there would be any other changes that would be needed additionally though, such as reassigning the default pins to some other function.

Dan

danielje commented 3 years ago

Hi Dan, sorry for slow response- you can e-mail your address to me at danielje@hawaii.edu

danielje commented 3 years ago

FYI, also maybe the default pins assigned for i2c in Arduino depend on which board you declare in the configuration (tools >> board >> ESP8266, I always select NodeMCU 1.0 (ESP-12E Module))- though it does sound more like a hardware issue than software...