Good Vibrations Engineering Ltd.

Question Answer
2009 - triggering: i was wondering if you had a matlab subroutine that i might be able to use to trigger the vestibulation box.. or the information i might need to write such a thing... what i want to do is load the box up with a waveform and then trigger it from within an experiment being run by matlab...that way i can embed the use of the box in an experimental procedure (designed to look at the effect of vestibulation on music perception). an alternative i am considering is actually hotwiring the red button using a transistor circuit or a relay under computer control If the waveform you want to apply is loaded as a script, then what you need to do to run it is to send the appropriate commands over the serial port to run a script. This involves putting the vesibulator into "Run script" mode, then sending the "Run script" command. Each command has to go into a packet of bytes that are sent to the vestibulator over the serial port. The format is described in detail in the "Low Level Spec" document. Each packet consists of the following bytes ("0x" indicates these are hex, base 16, numbers): 0xAA <1 byte giving the number of data bytes> < bytes...> <1 byte checksum> 0x55 The data bytes consists of, first, 1 byte giving the command type (we call that the command designator), and for some commands some following parameter bytes. What you need are: command to enter run-script mode: command designator is cdgSelectModeRunScr = 0x06 command to run a script at a given address in script memory: command designator is cdgScrRun = 0x12 This is followed by 2 bytes giving the address in script memory of the script you want to run, lo byte first. Probably you'll load this at the default address of 0x0000, so these 2 bytes will both just be 0x00. But you can have multiple scripts loaded in memory at once and select the one you want to run through this command. So the messages would be 0xAA 0x01 0x06 0x06 0x55 to enter script run mode 0xAA 0x03 0x12 0x00 0x00 0x12 0x55 to run the script at address 0000 and these are the bytes you'd need to send down the serial port. Note that the second last byte in each message is the checksum which is the sum, modulo 0x100 of the data bytes in the message. (Hopefully I got them right here!) So if you run a script at a different address the checksum in the second message will be different because the data bytes will be different. You'd probably want to make a little subroutine to calculate that and insert the other bytes in the message given an array of data bytes or something like that. As to how to send these out from Matlab -- Check out for example. We run at 9600 baud, no parity, one stop bit, and use no flow control. Aside from the baud rate, I imagine the rest are the defaults that you'd get with the simplest command to open a port.
2012-timing of commands: there is a 25ms interval to execute a command. I am trying to run several instances of the code below but want to make sure I understand the timing correctly for a part of it. I want to induce a current change for 1s after a 6s delay so that the whole sequence should be 7s. How much time will have elapsed at the end of this script?
I believe that the way it works is that each instruction takes 25 ms, and the count in the delay instruction is in addition to that basic 25 ms. So what will happen is: - the first setAllElectrodes command will change the electrodes to all zeroes "immediately" (as I said yesterday, within a few milliseconds I would think), and by itself will hold them there for 25 ms. - the delay 238 will cause a 25 ms delay due to its basic cycle, then 238*25 = 5950 more. So by now the electrodes will have been set to 0 for 25 (from the setAllElectrodes command) + 25+5950 (from the delay command), so 6000 ms. -the next setAllElectrodes command will change to the values you want and by itself will hold them there for 25 ms - the next delay, if it were 38 not 39, would cause the 25 ms basic cycle plus 38*25 = 950 ms more. So by the end of that command, the electrodes will have been set to the new values for 25 + 25+950 = 1000 ms. - the stop command should then zero the electrodes. The total script will then have run for 7 seconds. So it seems to me that you should change the 39 to 38 in the last delay, but then it should do what you want.
2014 - electrode mounting M B-C used disposable electrodes: 1.25? diameter round carbon-conductor electrodes (9000 series electrodes; Empi Recovery Sciences, St. Paul, Minnesota, USA) and prepped the skin area with alcohol vigorously rubbed into the skin along with conductive gel. While we did note individual differences with regards to the response, all participants reported illusory self-motion when seated with their eyes closed. You can check the paper for details on how we configured the electrodes. In general we varied anode and cathode current across the two mastoids and we placed a ground electrode over the forehead based on similar protocols reported from other labs.
2014 - do I need to attach common, ground electrodes common/ground electrode should be attached, not "must be", -- it's a little subtle. Suppose you have electrode 1 and electrode 2 attached and you command +1 mA out of each. That's 2 mA going in. Somewhere 2 mA has to come out. The purpose of the ground electrode is to pick that up and route it back to the vestibulator so the total current going in balances. If you commanded +1 mA from electrode 1 and -1 mA from electrode 2, then nominally things balance and no current would need to flow into the ground electrode. So you might think you could do without attaching it. However, even if you were always careful to keep the total at zero when you sum all the plus and minus currents, minor tolerance effects between the channels mean things wouldn't *exactly* balance. There might be, say, 0.01 mA of imbalance. That would flow into the ground electrode. If the ground weren't attached in this situation, probably what would happen is one channel would be pushed to its voltage limit trying to fight the other channel over that tiny imbalance. It wouldn't hurt anything, but it just doesn't seem right! So it's best to always connect the ground electrode.
2014 - Galvani's resting placeChurch of Corpus Domini, Bologna Italy. Laura Bassi is also buried there,under the floor, in the middle aisle of the Church. Reference: Frize M. (2013) Laura Bassi and Science in 18th Century Europe. Springer.
2014 - Cable to Electrode connection 50x25x10 mm. block of plastic with small nails through it to join electrode wires into cable. The block of plastic cause it keeps things together, but electrically isolated.
2014- shortcut for setting comm port
  • Find the vestib2p6a.exe program on your computer using the Windows Explorer.
  • Right click on it and select "Create Shortcut". This will make a file called "vestib2p6a.exe - Shortcut" in the same directory (or something like that -- different Windows versions might vary a bit).
  • Drag that shortcut file onto the desktop. You should now have a desktop icon from which to run the vestib program.
  • Right click on the desktop icon and select "Properties".
  • In the properties dialog, the "Shortcut" sheet (which is probably the one when the dialog opened) there is an entry for "Target" which should have the pathname of the vestib2p6a.exe program. Left click on that, go to the end of that string (you can use the End key or the right arrow key). There you can enter the argument that you would enter if you started the program from the command line. So add a space and the port number just as you would if you were starting the program from the command line.
  • Click on the OK button to close the dialog.
  • Now if you start the vestib program by double clicking that desktop icon it should start with the right port.
2015 - more electrode suggestions
  • YorkU, here in Canada, uses electrodes they order from Shoppers Drug mart: 199325-001. They say they're good to 5 mA. But they say using putting a nice even coating of electrode gel (Spectra Gel) over the electrode is critical. Any uncovered spots will cause burns.