transistor npn come switch per pulsante lettore mp3

Ciao a tutti, sto cercando di comandare i pulsanti di un lettore mp3 tramite un transistor npn, la cosa è già stata fatta come testimonia questo topic: Hacked mp3 player (basically an $8 waveshield) - Audio - Arduino Forum

Questa è la situazione in cui mi trovo

  • Se unisco manualmente i fili 1 e 2, il pulsante viene attivato.
  • Il transistor è un PN3904 NPN.
  • Ho provato ad utilizzare il transistor per accendere e spegnere un led e funziona correttamente.
  • Il lettore mp3 viene alimentato a 3.3 volt tramite arduino.

Non capisco perché il transistor non riesce ad "unire" i due fili quando viene attivato, notate qualche errore nel circuito? qualche idea in merito?

Grazie per l'aiuto!

2 grossi errori:

  • Il transistore ha bisogno di una resistenza sulla base senó mette in corto l' ucita del Arduino. Metti un 1kOhm.
  • Devi rispettare la polaritá del Transistore. Devi collegare l' emettitore al piedino del pulsante che é a massa e il collettore al piebino che ha una tensione positiva. Se vuoi simulare piú di un pulsante i pulsanti devono essere collegati a massa e non usare una resistenza pulldown. In questo caso devi usare dei optocopler al posto dei transistori.
    Sei sicuro che iil lettore MP§ non consuma troppa corrente?

Ciao Uwe

Grazie per la risposta,
Per la resistenza sulla base ho usato il pin 13 (ho sbagliato a collegare il pin nella figura :sweat_smile: ).
La polarità del transistore era ok, il problema forse è proprio che il lettore mp3 consuma troppa corrente: ho provato ad alimentare il lettore mp3 tramite la sua porta usb, e non tramite Arduino, e in quel caso il transistor funziona, e riesco a simulare lo switch.

La batteria che utilizzava il lettore mp3 è una batteria da 3,7 volt (il lettore può essere alimentato o tramite la batteria ricaricabile, o direttamente tramite la presa usb, quello che ho fatto inizialmente è dissaldare la batteria e collegare il lettore al pin da 3,3 di Arduino e alla terra).

Secondo voi il problema è che il lettore mp3 assorbe troppa corrente oppure può esserci qualche altra variabile che mi sfugge?

Ricapitolando:

  • lettore mp3 alimentato autonomamente (tramite presa usb) -> transistor funziona e simula lo switch
  • lettore mp3 alimentato tramite i 3,3 volt di arduino -> il transistor non funziona

Grazie per l'aiuto

cark:
Grazie per la risposta,
Per la resistenza sulla base ho usato il pin 13 (ho sbagliato a collegare il pin nella figura :sweat_smile: ).

Hai sbagliato perché il PIN 13 non ha resistenza. Mettine una da 1kOhm.

cark:
La polarità del transistore era ok, il problema forse è proprio che il lettore mp3 consuma troppa corrente: ho provato ad alimentare il lettore mp3 tramite la sua porta usb, e non tramite Arduino, e in quel caso il transistor funziona, e riesco a simulare lo switch.

La batteria che utilizzava il lettore mp3 è una batteria da 3,7 volt (il lettore può essere alimentato o tramite la batteria ricaricabile, o direttamente tramite la presa usb, quello che ho fatto inizialmente è dissaldare la batteria e collegare il lettore al pin da 3,3 di Arduino e alla terra).

Secondo voi il problema è che il lettore mp3 assorbe troppa corrente oppure può esserci qualche altra variabile che mi sfugge?

Ricapitolando:

  • lettore mp3 alimentato autonomamente (tramite presa usb) -> transistor funziona e simula lo switch
  • lettore mp3 alimentato tramite i 3,3 volt di arduino -> il transistor non funziona

Grazie per l'aiuto

Non so risponderti perché dovrei avere lo schema elettrico del lettore MP3 per poterti dire qualcosa.
Potrebbe essere un problema di massa comune quando usi i 3,3V.

Ciao Uwe

Scusa, ma mi sfugge un po la logica dell'usare un transistor come pulsante, pilotato da un pulsante ... :roll_eyes:

O intendi poi collegarlo ad un circuito differente ?

Il pulsante è quello del lettore mp3, voglio simulare la pressione per poter dire ad Arduino: "Manda in play la traccia audio" senza dover fisicamente premere il pulsante, ma al verificarsi di un evento x scatenato da un sensore. Il pulsante non è realmente come quello in figura, ma è come questi nell'immagine:

P.s. immagine presa da questo tutorial: Simple Mp3 Player Hacking - Roi

Ho fatto dei piccoli passi avanti. In pratica ho due situazioni:

  1. Se il lettore mp3 è alimentato tramite la sua presa usb, tutto funziona correttamente.

  2. Se il lettore mp3 è alimentato tramite i 3,3 volt di Arduino, allora quando simulo la pressione di un pulsante è come se si premesse il tasto next. Lo stesso effetto (passare alla traccia successiva) lo ottengo se unisco manualmente il negativo o il positivo di due diversi pulsanti del lettore. Quindi quando il lettore è alimentato tramite Arduino è come se le due parti del pulsante, collegate dal transistor, diventassero entrambe positive o entrambe negative.

Posto lo schema delle due situazioni:

1 - alimentazione tramite usb

2- alimentazione tramite Arduino

Come è possibile che alimentando il lettore tramite Arduino cambi la polarità di una parte del pulsante? (non cambiano entrambe perché ho provato ad invertirli ma non ha funzionato).

I tasti non sono riferiti verso massa.
Devi usare al posto dei transistori dei optocoppler.
Ciao Uwe

Ho risolto!!!

Quando il lettore mp3 è alimentato tramite Arduino, il transistor non deve essere collegato a terra. Non ho capito benissimo il perché dal punto di vista teorico :P.

Questo è il circuito funzionante:

  • Il transistor è un PN3904 NPN.
  • la resistenza è di 10 k.

Questo è il codice (premendo il tasto p si simula la pressione del pulsante collegato al transistor):

int pin = 4;

void setup(){
  
  pinMode(pin, OUTPUT);
  Serial.begin(9600);
  Serial.flush();
  
}//setup

void loop(){
  
  if(Serial.available() > 0){
    
    int val = Serial.read();
    Serial.println(val);
    
    if(val == 112){
      
      pressButton();
    
    }//if valore
    
  }//if seriale
  
}//loop


void pressButton(){
  
  Serial.println("Play / Pause");
  digitalWrite(pin, LOW);
  delay(200);
  digitalWrite(pin, HIGH);
  delay(200);
  digitalWrite(pin, LOW);
  
}//pressButton

Questo: Simple Mp3 Player Hacking - Roi è il tutorial da cui ho preso spunto.

Grazie a tutti per l'aiuto :wink:

Se per collegare a terra intendi collegare l'emettitore a massa, allora potrebbe essere un problema legato allo stato indefinito del pin collegato alla base. Metti una resistenza da 10K tra la base e massa per far sì che il transistor, senza segnale dall'Arduino, non conduca.