TODOPIC

FORO TÉCNICO => Foro Técnico => Mensaje iniciado por: Marttyn en 30 de Junio de 2022, 14:42:44

Título: Dos uC compartiendo Vdd, que ocurre?
Publicado por: Marttyn en 30 de Junio de 2022, 14:42:44
Buenas!
Llevo un rato rascandome la cabeza, no soy capaz de solucionar un problema "simple" de electronica. A ver si vosotros me podeis echar una mano.
Supongamos la siguiente situacion: tengo 2 microcontroladores independientes, cada uno con su fuente de alimentacion. Uno alimentado a 3v y otro alimentado a 3.7v.
En vez de tener GND como referencia comun, tiene Vdd unidos 3v <-> 3.7v
Los GND son independientes.
Si conecto un pin I/O de un uC al otro, es posible que uno pueda leer el estado de un pin del otro?
Algo asi:
  - Tienes que ingresar para ver archivos adjuntos -

Podria hacer la prueba empirica, pero quiero saber la teoria detras de esto.
Como lo veis?
Gracias y un saludo!
Título: Re:Dos uC compartiendo Vdd, que ocurre?
Publicado por: Marttyn en 30 de Junio de 2022, 15:34:53
Os pongo en antecedentes, hay un microcontrolador que controla un LED. Este LED tiene conectado su positivo a la bateria directo (+3.7v), y el negativo del LED al microcontrolador que con un 0 lo enciende y con un 1 lo apaga.
Lo que quiero hacer es intercalar otro microcontrolador (uC2) entre el LED y el microcontrolador original (uC1). Mi uC2 tiene una bateria propia, y solo se puede conectar al enchufe donde va el LED, por lo que solo dispone de el positivo (+3.7v) y la señal del uC1.
El LED se conectaria a uC2. Cuando uC1 envie un 0, el uC2 lo lee y activa el LED, pero uC2 tambien tiene que poder encender el LED en otros momentos.
Por eso necesito usar Vdd como referencia, ya que es el unico punto que puedo poner en comun. O no?

Si usar el Vdd comun no fuese una opcion, se me ocurre otra solucion aun mas loca:
  - Tienes que ingresar para ver archivos adjuntos -  

Que ocurre en este caso? Esto es lo que creo yo:
Cuando uC1 envia un 1 por su pin GP1, el pin GP2 del uC2 lee 0, ya que la referencia de uC2 seria el Vdd del uC1
Cuando uC1 envia un 0 por su pin GP1, el pin GP2 del uC2 lee 1, ya que es como si estuviesen compartiendo GND

Estoy diciendo algo muy disparatado? En mi cabeza tiene sentido  :mrgreen:
Título: Re:Dos uC compartiendo Vdd, que ocurre?
Publicado por: DominusDRR en 30 de Junio de 2022, 15:45:33
Los microcontroladores (no sé si todos) tienen diodos de protección en sus terminales de entrada. como esta imagen.

(https://www.digikey.com/~/media/Images/Article%20Library/TechZone%20Articles/2012/April/Protecting%20Inputs%20in%20Digital%20Electronics/article2012-protecting-inputs-in-digital-fig5.jpg)


Eso te puede ayudar a comprende que pasa y responderá tus preguntas.
Título: Re:Dos uC compartiendo Vdd, que ocurre?
Publicado por: Marttyn en 30 de Junio de 2022, 16:34:37
Gracias por el dato! Pero no resuelve mis dudas  :-)
Un empujoncito?
Título: Re:Dos uC compartiendo Vdd, que ocurre?
Publicado por: DominusDRR en 30 de Junio de 2022, 16:55:17
Gracias por el dato! Pero no resuelve mis dudas  :-)
Un empujoncito?

Con los diodos vas a tener el siguiente circuito equivalente.

(https://pbs.twimg.com/media/FWhmehtX0Ag1hma?format=png&name=small)

Suponiendo que el MCU de la izquierda, su terminal se comporta como salida proporcionando 1 lógico y le otro MCU su terminal se comporta como entrada, puede ver que puede leer el 1 lógico del otro microcontrolador. (Voltímetro indica donde deseamos conocer el voltaje)

(https://pbs.twimg.com/media/FWhnEjaX0AMBssj?format=png&name=small)

Ahora suponiendo que el MCU de la izquierda pone su terminal en cero lógico, el circuito es un poco más complejo de comprender.

(https://pbs.twimg.com/media/FWhnUb7WIAEAb6M?format=png&name=900x900)

Aquí sólo tienes que aplicar la ley de Kirchhoff que dice que la suma de todos los voltajes debe ser cero, es decir:

3V - 3.3V - Vx = 0 ((Vx es el voltaje que queremos conocer en el pin de entrada del MCU de la derecha)

De aquí Vx es igual a -0.3V, lo que activaría al diodo de protección inferior y el microcontrolador lo interpretaría como cero lógico.


Título: Re:Dos uC compartiendo Vdd, que ocurre?
Publicado por: tsu_electronica en 30 de Junio de 2022, 21:10:26
en teoría debe de funcionar, así como dice el colega dominusddr hay que tener en cuenta las corrientes que va a consumir el pic cuando accione su pin, solo checa que en ningún momento se ponga vdd y gnd ya que seria corto como estas poniendo en tu primera imagen el voltaje común en vez de tierra y tal vez en la simulación si funciona pero en la realidad puede que no o el segundo micro haga cosas extrañas por el tiempo de encendido y el programa pero seria checar la hoja de datos del pic para saber esos datos pero en lo personal no creo que lo haga pero la electrónica tiene muchos misterios y tal vez si funcione.
Título: Re:Dos uC compartiendo Vdd, que ocurre?
Publicado por: gustavopic en 01 de Julio de 2022, 01:03:42
Una porqueria el usar +vcc como común, tenes que pensar “al revez” .
He visto gente  que lo hace, calculo es solo practicarlo… pero “que ganas”!!!!
3 v  y  3,7 v …
( escribi mal, me cuesta muchísimo ) :
Cualquiera que mande un 1 estara mandando Vcc y como están unidas, se supone ambos verán eso : vcc .

Pero cuando el de 3 v le mande un cero a el de 3,7 v este de 3,7 v vera 0,7 v ( el de 3,7 v esta esperando 3,7 v menos que el +vcc )

Cuando el de 3,7 v le mande un cero a el de 3 v este vera 0,7v negativos, y ahí estaan esos diodos internos ayudando .

Me parece una porquería trabajar asi, pero es lo que es, hay que solo acostumbrarse….
encima, hay que pensar si en algo mas podra molestar..... en fin.
Título: Re:Dos uC compartiendo Vdd, que ocurre?
Publicado por: gustavopic en 01 de Julio de 2022, 01:15:25
Os pongo en antecedentes, hay un microcontrolador que controla un LED. Este LED tiene conectado su positivo a la bateria directo (+3.7v), y el negativo del LED al microcontrolador que con un 0 lo enciende y con un 1 lo apaga.
Lo que quiero hacer es intercalar otro microcontrolador (uC2) entre el LED y el microcontrolador original (uC1). Mi uC2 tiene una bateria propia, y solo se puede conectar al enchufe donde va el LED, por lo que solo dispone de el positivo (+3.7v) y la señal del uC1.
El LED se conectaria a uC2. Cuando uC1 envie un 0, el uC2 lo lee y activa el LED, pero uC2 tambien tiene que poder encender el LED en otros momentos.
Por eso necesito usar Vdd como referencia, ya que es el unico punto que puedo poner en comun. O no?

Si usar el Vdd comun no fuese una opcion, se me ocurre otra solucion aun mas loca:
  - Tienes que ingresar para ver archivos adjuntos -  

Que ocurre en este caso? Esto es lo que creo yo:
Cuando uC1 envia un 1 por su pin GP1, el pin GP2 del uC2 lee 0, ya que la referencia de uC2 seria el Vdd del uC1
Cuando uC1 envia un 0 por su pin GP1, el pin GP2 del uC2 lee 1, ya que es como si estuviesen compartiendo GND

Estoy diciendo algo muy disparatado? En mi cabeza tiene sentido  :mrgreen:

haaagg.... me mareaste, de verdad, no se por que puedes si unir los + y no el comun o masa.
si te entiendo  que  estas usando 2 micros distintos, con baterias distintas...
he visto tantas, pero tantas veces que usan OPTO ACOPLADORES al reverendo dope, y aca, donde si podrias simplificarte la vida, ni lo nombran .

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
estoy leyendote, tu ejemplo:
el uC1 activa el led o lo apaga ( obvio dando +3,7v o dando masa) .
dices que en algun momento puedes queerer activar ese mismo led  pero con el otro uC y eso no puedes, por que no puedes  mandar un cero de activacion  de el led  a el mismo punto donde el otro micro esta mandando un 1 .
ahi tienes un problema, usas vcc como comun o uses masa como comun.
te estas liando  mal...
 

aca esta tu solucion:
Os pongo en antecedentes, hay un microcontrolador que controla un LED. Este LED tiene conectado su positivo a la bateria directo (+3.7v), y el negativo del LED al microcontrolador que con un 0 lo enciende y con un 1 lo apaga.
Lo que quiero hacer es intercalar otro microcontrolador (uC2) entre el LED y el microcontrolador original (uC1). Mi uC2 tiene una bateria propia, y solo se puede conectar al enchufe donde va el LED, por lo que solo dispone de el positivo (+3.7v) y la señal del uC1.
El LED se conectaria a uC2. Cuando uC1 envie un 0, el uC2 lo lee y activa el LED, pero uC2 tambien tiene que poder encender el LED en otros momentos.
Por eso necesito usar Vdd como referencia, ya que es el unico punto que puedo poner en comun. O no?

Si usar el Vdd comun no fuese una opcion, se me ocurre otra solucion aun mas loca:
  - Tienes que ingresar para ver archivos adjuntos -  

Que ocurre en este caso? Esto es lo que creo yo:
Cuando uC1 envia un 1 por su pin GP1, el pin GP2 del uC2 lee 0, ya que la referencia de uC2 seria el Vdd del uC1
Cuando uC1 envia un 0 por su pin GP1, el pin GP2 del uC2 lee 1, ya que es como si estuviesen compartiendo GND

Estoy diciendo algo muy disparatado? En mi cabeza tiene sentido  :mrgreen:

si te comprendo bien, el led esta afuera, y se conecta  la placa de el uC1 a rtavez de un conector.
vos te quers "colgar " de ese conector, para no meter mano en la placa , eso es ??
me parece que si , y te vas a encontrar con dilemas.

queres poder leer con el otro micro que pasa con el micro 1  me parece que necsitas o lo de hacer el comun ( feo ) o usar un opto, pero la macana es que no podes ( no sabes si se puede )  colgar mas carga de esa salida ( de el micro 1 ) ....
a su vez, decis que queres controlar a el led desde uno o de el otro micro y eso no podes hacerlo, a menos que hagas un circuito, algo que te permita manejar a un solo led de 2 lugares distintos ( 2 optos o 2 transistores )...
.

al final, en tu "idea loca" si podes acceder a el negativo de el uc1 , confirma eso , asi es todo , pero todo mas facil.
haces negativo comun y todo mas facil, mas  claro mental.
igual , encsitas un esquema , 2 T imagino, por que no poes prender el led desde el uc 2 si el uc1 lo tiene como apagado.
pero lo importante es acceder a el negativo, asi los unis y no el +vcc y de ahi en mas es todo mas simple para la cabeza.

revisalo, puedo estar equivocado :





 
Título: Re:Dos uC compartiendo Vdd, que ocurre?
Publicado por: remi04 en 01 de Julio de 2022, 04:12:20
Lo que dice gustavopic es la forma más simple de hacerlo.

 Y si los puertos usados en ambos uc para manejar el led fuesen del tipo Open Drain, se puede incluso evitar los dos diodos schotkly.
Título: Re:Dos uC compartiendo Vdd, que ocurre?
Publicado por: Marttyn en 01 de Julio de 2022, 15:47:56
Gracias por todas las respuestas!
Despues de intentar entender todas las posturas me he lanzado a hacer pruebas.
Ambas soluciones propuestas en mis dos primeros posts funcionan. Pero curiosamente, el LED no brilla con toda su intensidad cuando es activado por el uC2, mientras que si es activado por el uC1 si brilla bien.
Debe haber algun tema de voltajes por ahi que tengo que intentar analizar.

PS: Si, ya se que si pudiese poner GND comun seria todo mucho mas sencillo... pero lamentablemente no puedo :(
Título: Re:Dos uC compartiendo Vdd, que ocurre?
Publicado por: gustavopic en 01 de Julio de 2022, 16:28:03
y... era esperable, estas "justo" , el led con esos 3,7v prende bien, pero con 3 v ya no.

fijate si podes hacer que el uC2 active un transistor y este active a el led, pero con la misma masa de el uC1

es solo idea, la fig. 2 o 3  :
Título: Re:Dos uC compartiendo Vdd, que ocurre?
Publicado por: gustavopic en 01 de Julio de 2022, 16:48:17
PD: decis que tu idea funciona...
pero me vas a decir que probaste hacer que el uc2 active a el led  mientras el uc1 tiene su salida como "desactivado"????
Título: Re:Dos uC compartiendo Vdd, que ocurre?
Publicado por: Marttyn en 04 de Julio de 2022, 07:36:03
Gracias Gustavo, no era problema de que 3v sea poco, sino de que estaba activando el LED desde un uC y desactivandolo desde el otro, por lo que estaba encendiendo "la mitad" :D
Lo he corregido y parece que esta funcionando bien usando esta solucion:
 
El uC2 de la izquierda lee el estado de su pin A2
El uC1 principal es el de la derecha. Y con su pin A1 controla cual es la referencia del uC2. Cuando este saca 1 por A1, pone la referencia a 1, por lo que el pin del uC2 lee 0.
Pero cuando pone el pin a 0, tambien pone la referencia del uC2 a 0, y entonces el uC2 lee 1 por el pin A2.
Título: Re:Dos uC compartiendo Vdd, que ocurre?
Publicado por: Leon Pic en 04 de Julio de 2022, 09:39:45
(http://www.todopic.com.ar/foros/index.php?action=dlattach;topic=51232.0;attach=32332;image)

Esto es el equivalente a poner ambos GND en común de fuentes diferentes.
El circuito es equivalente, pero el flujo de corriente me parece que debería ser inverso (los 0,7V de diferencia). Por lo tanto, deberías adecuar las tensiones; como pasa cuando pones dos fuentes de diferentes valores, pero con GND en común.

 
Título: Re:Dos uC compartiendo Vdd, que ocurre?
Publicado por: Leon Pic en 04 de Julio de 2022, 09:44:15
(http://www.todopic.com.ar/foros/index.php?action=dlattach;topic=51232.0;attach=32333;image)

Para este caso, no pasa nada. Al no tener una referencia en común, y por lo tanto, al no quedar cerrado el circuito, no hay flujo de corriente.

Es como tomar dos pilas. De una pila tomar el positivo, y de la otra pila, tomar el negativo. Ambas pilas no están conectadas entre si. Esto queda como un circuito abierto y por lo tanto, no hay flujo de corriente.
Título: Re:Dos uC compartiendo Vdd, que ocurre?
Publicado por: gustavopic en 04 de Julio de 2022, 22:29:59
Gracias Gustavo, no era problema de que 3v sea poco, sino de que estaba activando el LED desde un uC y desactivandolo desde el otro, por lo que estaba encendiendo "la mitad" :D
Lo he corregido y parece que esta funcionando bien usando esta solucion:
- Tienes que ingresar para ver archivos adjuntos -  
El uC2 de la izquierda lee el estado de su pin A2
El uC1 principal es el de la derecha. Y con su pin A1 controla cual es la referencia del uC2. Cuando este saca 1 por A1, pone la referencia a 1, por lo que el pin del uC2 lee 0.
Pero cuando pone el pin a 0, tambien pone la referencia del uC2 a 0, y entonces el uC2 lee 1 por el pin A2.

no puedo ver el dibujo, .. no soy socio de el club  :lol:

se ve que estos micros tienen limitaciond ecorrietne en sus entradas, que no pasa nada si  haces eso .