OpenStim is a set of open-source hardware and software designed to administer transcranial direct current stimulation for less than $50.
Recently, an error was discovered in the documentation page describing the commands for setting the stimulation polairty. The documentation originally indicated that setting operating_power to a positive number would set the output from W6 as the anode. This is not correct for the most recent version of OpenStim and has been corrected. Note that the correct cofngiuration is:
If operating power is set to a positive number the output from the digital potentiometer (W6) should be the cathode
If operating_power is set to a negative number, W6 should be the anode
- Hardware costs less than $50 and can be built in a few hours
- Supports tDCS, tACS, and tRNS
- Automatic double-blinding and support for data logging and sham trials
- Safety features--ramping, automatic shutdown on error detection, real-time current monitoring, self-diagnostics, sensor calibration
- Reconfigurable via imprint files
- Automatically detects potential issues in stimulus configuration
For me, 90% of a project is getting started. Thus, I'm grateful to the author for posting his work. Thank you and "E" for effort. The good news is, at 5V, this project is pretty safe unless lighting strikes. I had to work pretty hard making my electrodes conductive enough to achieve 1.5 mA. Hair, bone, scalp, brine, etc... is not really all that conductive. I maxed out at ~1.9 mA, so even if this code is completely faulty, I doubt there is much danger. Which is GREAT because the code is delusional... A schematic that looks like it was drawn by a drunken 5th grader sets the tone. For starters, a 17 ohm current sense resistor will barely yield 2 bits of precision neglecting A/D conversion noise. The author casts this value into a 32-bit floating point precision control loop updated 500 times/sec! It's nuts. The value sent for display on the PC has been averaged over ~125 samples, so the steady graphs displayed are heavily filtered versions of the actual current signal and suggest a precision far beyond the input measurement. It's the "pink noise" version of tDCS. Maybe it's even more effective... who knows? Another issue is that the variable resistor IC is hooked up incorrectly. The datasheet states that if you wish to use the wiper to A terminal resistor ladder, you should tie terminal B to the wiper, which was not done. I must be in the "keep it simple" camp. Usually, I'm dumbfounded by code bloat. The "firmware" of this project is nearly 1000 lines, all standing on the shoulders of a 2-bit input measurement... I didn't bother with the PC code, but I did learn that there's a language called "Processing." Lord, deliver us from MIT's Media Lab... Here's what I did: 1) Changed the current sense resistor to 100 ohms for a couple more bits of precision. 2) Rewired the variable resistor to use the WB terminals. Higher values mean more resistance, so your code will look more logical. 3) Threw out the OpenStim firmware and PC code. 4) Rewrote the firmware in under 100 lines. 5) Added a small button speaker that sounds a middle tone when your current target is reached, a low tone if you lose electrode conductivity, and a high tone at the end of a 20 minute session. 6) Keep it simple
Ok, guys. While I appreciate your effort in making the program available, the information here is very misleading. The project is in ALPHA version, and it is UNSAFE. When you start the software it says "not for use on any living organism". This should be written in bold red letters everywhere. The code is messy to the point of being unreadable (no classes? WTF guys?). There is almost no information available online and no discussion, except for a few rather useless posts on reddit. I bought the components, assembled the circuit and started the software. It doesn't work (stuck at Checking device connection). This isn't what makes me angry. What makes me angry is that there is no discussion place where I could collaborate with other people interested in this. The is no github repository so that I could improve the software if and when I find the bugs. The source code is 3-4 years old, with no updates. At this point this project is more harmful than useful. It attracts tDCS enthusiasts, who are then destined to get frustrated and lost, since there is no community around the project and no support. You have to understand, this isn't something that everyone can immediately try on their computer and if it doesn't work, then whatever, I only spent like half an hour. This required people to buy some equipment and invest quite a bit of time, especially for people not very experienced in EE and CS. The commitment is quite big, but it all falls in vain. And I do not judge you, I understand that it is a side project, you played with it, made it available and probably forgot about it. But as it stands, I will reiterate, it does more harm than good.
Great project, thank you for your hard work, No recent updates? Any initial trials rezults yet? Good luck
Is there a way of running this on a mac?
Figured it out. The files the program calls for are .imp file type. The default files targeted are .bmp files. As usual, operator error! - mitch