¿Por qué mi circuito eléctrico para controlar un circuito de 12V (solenoide) con un circuito de 5V (GPIO, Arduino) usando un optocopler y un Mosfet no funciona?

Eso parece dos resistencias de 100 ohmios en serie desde la puerta FET a tierra. Eso es demasiado bajo. La puerta FET no tendrá suficiente voltaje para encenderse.

La relación de transferencia actual del TLP2531 es típica del 30%, el peor de los casos del 7%. El CTR es la cantidad de corriente que puede extraer de la salida, en relación con la corriente en el LED. Tiene una resistencia de 150 ohmios en la línea de LED. El voltaje directo será de alrededor de 1.2V, este es un LED infrarrojo, por lo que tiene aproximadamente 25 mA en el LED. Eso significa que su corriente de salida debe ser inferior al 30% de eso, o estar en el lado seguro menos del 10% – 2.5mA. Por lo tanto, su resistencia desde la puerta FET a tierra no debe pasar más de 2.5 mA a 12 V para asegurarse de elevar el voltaje de la puerta a 12. Dado que es un dispositivo de puerta de nivel lógico, no necesita 12 V en la puerta, y la puerta consume sin corriente, por lo que prácticamente cualquier resistencia de 2.2k a 47k funcionará. Pero 200 ohmios no lo harán.

¿Intentaste acortar ambos terrenos? Si un GND proviene de un puerto USB alimentado por Arduino, y el otro de un transformador reductor conectado a la toma de pared, ¡entonces carecen de una referencia común!
PD: ¡Pensándolo bien, un Opto-acoplador debería descartar el requisito de un terreno común!

Es solo una suposición. Hay algunos problemas con las resistencias pull-up en el MosFet. Es un circuito lineal con ambas resistencias conectadas entre (+) y Gate. Uno debe estar entre el optoacoplador y la puerta, otro entre la puerta y (- / GND).

R2 es probablemente demasiado pequeño. Requiere que el arduino genere 40 mA más o menos … No sé, pero es poco probable que lo haga a menos que tenga algunos controladores robustos en la E / S digital.
R1 es 1K en el esquema pero tiene 200 ohmios. Probablemente demasiado pequeño.
El CTR del opto es muy bajo del 7 al 30%. Si obtiene una unidad de LED de 10ma de la salida de Arduino, solo obtendrá 1 mA aproximadamente en el colector del opto.
1 mA tirando hacia abajo de los 200 ohmios solo va a tirar de aproximadamente .2V del riel de 12V, no lo suficiente como para apagar la puerta MOSFET.
Debe colocarlo por debajo de 2V para cortarlo y más de 4.5V para que maneje un amplificador cuando esté encendido.
Le sugiero que pruebe R2 más como 300 ohmios si el arduino está manejando con 5V y R1 más como 27K ohmios.
entonces la unión colector / puerta se acercará a .4V o menos cuando el LED esté encendido. Eso cortará el MOSFET y apagará el relé.
No especificó la corriente que requiere el relé de 12V, lo cual es importante, esto debería manejar 1A OK, pero debe observar la disipación sin disipación de Q1, a 0.15 ohmios Rdson se disipará 150mW con el relé de 1A elevará la temperatura del Transistor sobre 10C.

Haga una comprobación para ver si el optoacoplador se está impulsando con suficiente corriente para encender y apagar. Además, los optoacopladores tienen una tasa de falla significativa.

Si desea elaborar, escanear y publicar un esquema, puede obtener más ayuda.

No entiendo por qué se usa MOSFET, cuando este circuito se puede construir usando el transistor. Pasé por el enlace arduino del patio de juegos y lo encontré perfecto. Sin embargo, no estoy seguro de por qué esta construcción no funcionó para usted.
Intentaré compartir el esquema con el transistor lo antes posible. Puedo probarlo.

¿Pasaste? Use un nivel lógico FET. Se encienden a voltajes mucho más bajos que los pies regulares. Los pies regulares necesitan alrededor de 8-12v para activarse.