Corrente errata bjt

Buonasera a tutti. :slight_smile:
Avrei un problema sull'uso di un transistor modello 2N2222A, tipo NPN. Vorrei realizzare un circuito comandato dalla scheda Arduino dove vorrei ottenere attraverso il BJT, una tensione Vout 5V-0V come alimentazione di una seconda parte di circuito, a seconda dello stato di OUTPUT del pin di Arduino collegato alla base. Cercando in rete ho trovato la classica configurazione con due resistenze una alla base e una al collettore. Per ottenere questa tensione di alimentazione in uscita ho trovato il seguente metodo: dimensiono opportunamente le due resistenze di base e collettore, ottenendo una corrente costante in uscita all'emettitore. Infine se metto una resistenza del valore opportuno tra l'emettitore e massa otterrei la mia tensione di uscita 5V-0V. Il mio problema è che la corrente non è quella desiderata. Chiamando Rb la resistenza sulla base e Rc quella sul collettore le dimensiono nella seguente maniera:
Rc=(Vcc-Vcesat)/Ic;
Volendo una corrente (per il momento non importa il valore della corrente) di circa 25mA e con Vcesat=0.3V, trovo un valore di Rc di 188ohm che approssimo con una resistenza da 220ohm. Facendo poi:
Rb=(Vi-Vbesat)/Ib;
Assumendo Ib=0.5mA e Vbesat=0.6V, trovo un valore di Rb di 8.8Kohm che approssimo con 10Kohm.
Con questi valori dovrei ottenere una corrente sull'emettitore di circa 21-22mA ma invece mi risulta di circa 0.5mA.
Le mie domande sono:

  • Perchè il valore di corrente sull'emettitore viene così diverso? Ho sbagliato il dimensionamento delle resistenze?
  • Per ottenere questa tensione di alimentazione di un circuito secondario 0-5 volt a comando è corretto la configurazione che ho descritto o c'è un modo migliore? Ho visto che in altri testi prendono la tensione di alimentazione che mi serve dal collettore ma nel mio caso a seconda dello stato HIGH-LOW del pin di comando, la tensione sul collettore varia tra 4.97V e 5V.
    Spero di essere stato chiaro se no ditemi che spiego meglio ciò che voglio realizzare.
    Vi ringrazio,
    saluti,
    Marco

Buonasera,
essendo il tuo primo post nella sezione Italiana del forum, nel rispetto del regolamento di detta sezione (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie. :slight_smile:

Guglielmo

Buongiorno, ti ringrazio per la precisazione e chiedo scusa per la mancanza. Ho creduto male che non servisse avendo già scritto precedentemente nel forum inglese. Comunque provvedo subito a sistemare il guaio. :slight_smile:
Nel frattempo attendo supporto :slight_smile:

Qualcosa non torna nella descrizione. Uno schema sarebbe stato meglio. In particolare non mi è chiaro perché ci sia una resistenza di collettore visto che stiamo parlando di un carico da alimentare.

Sbagli in 2 fondamentali concetti:
I Transistori BJT lavorano in corrente. Detto grossolanamente: Una corrente sulla Base regola la corrente tra collettore e emettitore.
Per cosa Ti serve Rc? perché 25mA?
Il guadagno é variabile sia tra transistore e transistore che varia anche con la corrente di collettore.

Ciao Uwe

Vi allego la foto della configurazione che ho trovato ed impostato. Mi sono rifatto semplicemente ad un documento trovato in rete che ne comprendeva anche il dimensionamento in relazione alle specifiche volute. Precisava appunto di scegliere una corrente di base che superasse il valore minimo di saturazione, e come corrente di collettore quella desiderata. All'emettitore teoricamente dovrei ottenere come corrente la somma delle due. In questo modo si potevano dimensionare le due correnti. Se però la configurazione o il modo di procedere è sbagliato, se mi potete indirizzare al meglio.
Vi ringrazio intanto,
Marco

circuitoBJT.PNG

Marcoozmg:
All'emettitore teoricamente dovrei ottenere come corrente la somma delle due. In questo modo si potevano dimensionare le due correnti.

I calcoli mi sembrano corretti, ma per un funzionamento on/off preciso la corrente di base deve essere molto maggiore, almeno un paio di mA. L' hFE è molto variabile con le condizioni di utilizzo (30..300).

Piuttosto non ho ancora capito dove andrebbe il carico, visto che nella configurazione emettitore comune il carico è la resistenza di collettore stessa.

Ok, quindi intanto dici di alzare la corrente di base. Perché come dicevo, dai conti mi dovrebbe risultare in uscita al'emettitore una corrente di circa 22mA invece si aggira sui 0.5mA.
La mia idea, vedendo altre configurazioni in rete, sarebbe di mettere un'ulteriore resistenza (Chiamiamola Re) tra emettitore e massa ottenendo una certa tensione (Immagine allegata "ResistEmettitore". Questa tensione mi alimenterebbe un carico messo in parallelo alla resistenza Re. Il concetto è sbagliato? O in questo caso devo togliere le resistenze Rc come nell'immagine? In altre configurazioni ho visto invece che si prende questa tensione di alimentazione al collettore ma nel mio caso la tensione tra stato ON e OFF varia di 0.03V. Ti allego anche un esempio di questa seconda configurazione.

ResistEmettitore.PNG

VoutCollettore.png

Mi sembra che valuti le tensioni ma non le correnti richieste dal carico.

Mi spiego: il circuito con la resistenza di collettore non fa altro che cortocircuitare a massa il collettore quando il transistor conduce. Ma quando non conduce il carico è semplicemente alimentato attraverso quella resistenza (serie resistenza e carico) e non collegato a 5V.

La versione "migliore" finora è quella con la Re senza Rc. In tal caso il transistor effettivamente "alimenta", fornisce cioè tutta la corrente che il carico richiede. Però non funziona come interruttore, ma lavora in regime lineare, fornendo una Vu pari a Vb-Vbe (circa 4V).

L'unico modo corretto per alimentare un carico (che richiede corrente) con un capo a massa, è collegare il carico al collettore di un transistor PNP come nel thread mosfet a 3.3V

Capito il discorso. Allora spiego interamente il mio problema così caso mai trovo una soluzione ideale. Nel caso mi dici se devo aprire un nuovo topic. In pratica io devo far girare uno step motor in entrambe le direzioni. A casa ho a disposizione uno step motor unipolare BYJ48 con il driver apposta. Per farlo diventare bipolare ho troncato la connessione comune. Per pilotarlo in entrambi i versi ho notato che alimentando uno solo dei due collegamenti centrali dell'induttore gira in un verso, se alimento entrambi gira nell'altro verso. Allora ho pensato di lasciare un collegamento sempre alimentato a 5V, e l'altro gli tolgo o gli do 5V in base al verso in cui lo voglio far girare attraverso il BJT. L'idea mi pareva valida, ma sto avendo appunto questi problemi. Rifacendomi al tuo discorso, non ho una massa a cui collegare il mio carico e questo era il mio motivo per cui volevo un'alimentazione da 5V ON/OFF. Ho i 4 cavi che mi danno gli step, e il cavo comune che ho splittato in due alimentazioni.

Che casino stai facendo?
Usa il driver che Ti hanno fornito coni il motore e basta.

Per primo non funziona usare quel unipolare in bipolare perché ha collegato i comuni dei 2 avvolgimenti insieme e poi non Ti porta nessun vantaggio usarlo come bipolare anzi hai bisogno di altri integrati per pilotarlo.

Con un BJT NPN non puoi pilotare un carico sul positivo.

Ciao Uwe

Ciao, il driver lo sto già usando ma il motore gira in una sola direzione e non nell'altra, sia che io usi la libreria Stepper sia che mi crei gli step autonomamente. Questo è causato dal fatto che i due comuni sono collegati insieme. Per poterlo far andare in entrambi i versi ho dovuto separare fisicamente sulla schedina i due collegamenti comuni. In questo modo solo uno dei due comuni è collegato all'alimentazione del driver e il motore gira in un verso. L'altro comune non è collegato a niente. Nel momento in cui, attraverso un filo esterno, gli dò a mano 5V anche all'altro comune, il motore gira nell'altro verso. Volevo riprodurre quest'effetto in modo comandato da un'uscita digitale e pensavo che un transistor facesse al caso mio.
Ho trovato dei tutorial su youtube che usano il motore che ho io e tranciano il collegamento comune dello step ma poi lo collegano ad un driver arduino particolare per comandare gli step motor, in questo modo gira in entrambi i versi. Ma possibilmente non vorrei dover acquistare questa scheda driver.
Qualche consiglio/idea/suggerimento sul come ottenere il comportamento che ho descritto?
Dato che è un progetto per un esame non sarei interessato a fare ulteriori acquisti onerosi, in particolare non voglio cambiare step motor dato inoltre che è stata già costruita ad hoc la base su cui va montato.

Il motore con il driver in configurazione originale funziona.
Non so come lo piloti.
Fai vedere lo sketch con cui non funzionava e descrivi come hai collegato il driver a Arduino..
Ciao Uwe

Ciao allora lo sketch è il seguente:

#include <Stepper.h>
#define STEPS 4096
Stepper stepper(STEPS, 3 , 4, 5, 6);

void setup() {
  Serial.begin(9600);
}

void loop() {
  for (int i=0;i<100;i++){
    stepper.step(1);
    delay(100);
  }
  delay(1000);
  for (int i=0;i<100;i++){
    stepper.step(-1);
    delay(100);
  }
  delay(1000);
}

Riguardo la connessione hardware è il classico step motor BYJ48 con driver che allego un immagine.
I 5 cavi dello step sono collegati in modo univoco al driver. Il driver è alimentato dai 5V e dalla massa. In più i 4 cavi di input li collego a 4 pin digitali direttamente.
Quando i due comuni dello step erano collegati insieme, che stesse agendo .step(1) o .step(-1) il motore girava sempre nella stessa direzione.

stepMotor.jpg

prova a cambiare così

Stepper stepper(STEPS, 3 , 5, 4, 6);

Io ti devo fare una statua. Funziona. Per una cazzata. Ti ringrazio davvero tanto. Semplice ed efficace.
Grazie e ancora grazie :slight_smile: :slight_smile:

Comunque se tu avessi descritto subito il probema e non chiesto un aiuto su una soluzione che ti sembrava utile non avremmo avuto bisogno di 14 risposte prima di risolvere il problema.
Ciao Uwe

brunello22:
prova a cambiare così

Stepper stepper(STEPS, 3 , 5, 4, 6);

mannaggia alle copie clone cinesi :slight_smile: ce n'è ormai una marea e tutte hanno questo piccolo e apparentemente insolubile problema :slight_smile:

Grazie a tutti del supporto. Si Uwe, potevo risolvere il problema alla radice direttamente. Sarà per il prossimo problema, che di sicuro ne troverò qualcuno. :slight_smile:
Un saluto,
Marco