Aumentare corrente di sink/source mantenendo la possibilità di pin bidirezionale

Ciao a tutti,
Sapete qualche modo per aumentare la corrente di sink/source mantenendo la possibilità di leggere dal pin?
Ad un certo punto devo leggere dal pin (il solito che scrive) ma quando devo scrivere ho bisogno di una corrente maggiore (sui 50mA)

Ciao

Forse non ho capito, mettiamo che aggiungi il classico TR per aumentare la corrente in uscita, chi ti impedisce di continuare a leggere quel pin?

Ok, metto il transistor collegato con la base sul pin (emettitore comune), in questo modo sul collettore riesco ad avere una corrente maggiore
Ma quando leggo il pin? Leggerei tramite la base? :fearful:

Modifichi in runtime il pinmode da input a output?

Modifichi in runtime il pinmode da input a output?

Si e purtroppo è così per forza, non posso cambiare questo aspetto ed il pin è il solito

Non leggi dalla base. Il problema é che l'uscita esterno che vuoi leggere con l'entrata Arduino pilota la base del transistore.

Ciao Uwe

No way quindi?

Funziona se metti un tre-state-gate tra pin Arduino e transistore e un secondo tra Arduiono e uscita da leggere, ma Ti serve un altro pin per selezionare se il gate é tristate o no. È piú semplice se usi un 595 o un port expander per aumentare il numero di pin.
Ciao Uwe

Tu hai due necessità:
1 - pilotare qualcosa con il pin X con corrente > 40mA
2 - alternativamente leggere lo stato di qualcosa collegata al pin X

il punto 1 lo risolvi col classico transistor pilotato tramite una R mettendo il pin in OUTPUT/HIGH
quando metti il pin in INPUT e hai su di esso uno stato LOW il TR resta interdetto e lo stato lo leggi; se ho ben capito Uwe sostiene che se a questo pin mandi uno stato HIGH ti pilota il TR che va in conduzione. Potrebbe aver ragione, allora io farei in modo che il TR venga pilotato solo se la tensione ha una soglia di almeno 4,7V, cioè lo piloto mettendo uno zener da 4,7V in serie alla R di base (pin-A_zener_K-R-Base), e poi userei un piccolo partitore sulla sorgente che devo leggere per far sì che l'HIGH sia di livello inferiore, p.es. 3,6V.
Seconod me funziona senza alcun problema.

Se metti uno zener da 4,7V in serie tra uascita e base sevono 5,5V per far incominciare acondurre il transistore.

Credimi, usa dei pin diversi per l' uscita e per l' entrata.
Tutto il resto non funziona o é troppo complicato.
Ciao Uwe

Purtroppo ci sono diversi problemi:

  1. Lo zener introduce una capacità parassita elevata => voglio leggere segnali con fronti veloci come SPI => problema
  2. Voglio leggere segnali sia a 5V che inferiori nel caso il tutto girasse in standalone a 3.3v, come dimensiono lo zener?

uwefed:
Tutto il resto non funziona o é troppo complicato.

Mi sa che devo gettare la spugna.. troppi compromessi
Peccato però..

Sì, ok Uwe, lo zener deve essere dimensionato circa Vcc-0,7, il partitore in modo che quando gli applichi la soglia massima, fornisca una tensione inferiore a quella nominale di zener.
Nel tuo caso lo zener in serie sul ramo che pilota il TR quindi secondo me non introduce assolutamente nulla.
Una prova ti costa 3 minuti, falla e buonanotte.

uwefed:
Tutto il resto non funziona o é troppo complicato.

Quoto al 100% :slight_smile:

flz47655:
voglio leggere segnali con fronti veloci come SPI => problema

Infatti la SPI ha due pin, uno per l'input e l'altro per l'output. Tutte le altre soluzioni come one-wire e two-wire sono notevolmente più lente.