I wonder if what ever danmertens is trying to turn on and off with the relay is hooked up to the appropriate terminals on the relay. There are three terminals and it can be confusing.
Also thought it was a matter of sinking current not voltage. The spec sheet for the board he is using talks about
12V 16-Channel Relay interface board, and each one needs 15-20mA Driver Current
One of the product reviews said this (for use with a Raspberry Pi)...
This board works well with the Rpi but requires a little thought to implement correctly.
First of all the VCC-JD jumper must be removed to isolate the coil voltage from the signal voltage.
The logic is backwards from what might be expected. When the Rpi GPIO or port expander pin is "off" (sinking voltage) the relay is energized.
The two relay version of this board is easily modified so that when a high is presented, the relay energizes. A trace cut and a couple of jumpers are all that are needed.
Other than that, no other considerations are needed.
There are some that say that another driver transistor is needed to interface this to the Rpi. This is NOT true. Having said that, there is the advantage that the logic is reversed (GPIO Hi=ON) when a transistor is added. One could add a hex inverter like a 74HC540 and do the same thing. The VCC-JD/VCC jumper must be re moved and +5 volts from a separate power supply be fed to VCC-JD. A wall-wart works nicely and maintains isolation.
I recommend that a I2C port expander such as the MPC23107 or MPC23008 be used with this relay board. An SPI bus port expander could also be used (MPC23S17 or MPC23S08) with the Rpi. Utilizing both I2C buses on the RPI, that means that a total of 256 relays can be connected to the Rpi. In addition another 256 relays can be connected via the SPI bus. for a grand total of 512 relays controlled by a single Rpi.