Collegare un interruttore e un MOSFET a un Arduino?

Ho una striscia LED che cerco di accendere con un interruttore magnetico quando si apre una porta. Voglio che i LED si accendano quando apro la porta e si spengano quando la chiudo, che è dove entra in gioco Arduino. Sto usando PWM per la dissolvenza. Posso far funzionare ogni componente separatamente. I LED in dissolvenza funzionano con il MOSFET senza linterruttore. Ho testato lo switch con uscita seriale su Arduino e funziona dissolvendo un singolo LED senza il MOSFET.

Sto usando:

  • Arduino Uno R3
  • Interruttore magnetico
  • MOSFET a canale N IRLB3034
  • Striscia LED bianca da 5 metri
  • Alimentatore 12VDC 30W
  • Resistori da 10k Ohm

La mia configurazione è simile a questa: diagramma della breadboard

Schema: schema

Codice (se aiuta):

const int buttonPin = 2; // the number of the switch pin const int ledPin = 9; // the number of the LED pin // variables will change: int buttonState = 0; // variable for reading the switch status int brightness = 0; int fadeAmount = 5; void setup() { // initialize the LED pin as an output: pinMode(ledPin, OUTPUT); // initialize the pushbutton pin as an input: pinMode(buttonPin, INPUT); } void loop(){ // read the state of the switch value: buttonState = digitalRead(buttonPin); // check if the switch is ON. // if it is, the buttonState is LOW: if (buttonState == LOW) { // fade LED on: analogWrite(ledPin, brightness); if (brightness < 255) { brightness = brightness + fadeAmount; } } else { // fade LED off: analogWrite(ledPin, brightness); if (brightness > 0) { brightness = brightness - fadeAmount; } } delay(30); } 

Ho la sensazione che il problema sia con la massa comune sul MOSFET e linterruttore. Eventuali soluzioni / suggerimenti sono apprezzati.

Commenti

  • sei in grado di accendere il FET tramite il pin D9 continuamente? Senza PWM .. Quando D9 è alto, puoi misurare la tensione tra lo scarico e la sorgente del NMOSFET? Controllare la tensione su D2 quando linterruttore è chiuso e aperto. Misurare la tensione su D9 quando luscita del pin D9 è alta. puoi condividere i dettagli della striscia LED da 5 metri? Come accendi Arduino? Ho la sensazione che il problema sia con la striscia LED da 5 metri …
  • Mi aspetterei R2, vicino al MOSFET, nellordine di 100 ohm. In caso contrario, ‘ si surriscalda. Modificare anche i test minimo e massimo da 255 risp. Da 0 a 250 e 5.
  • Non dici quale problema stai riscontrando. Che cosa fa? | La striscia LED si accenderà in un intervallo di tensione vicino a 12V. cioè probabilmente è spento a circa 9V e acceso a 12V. Quindi se la tensione sulla striscia è analogica a causa di qualsiasi filtro, si accenderà sulla parte finale dellintervallo PWM. Se il circuito è come mostrato, la striscia LED dovrebbe accendersi e spegnersi alla frequenza PWM. Questo DOVREBBE funzionare. Il circuito come mostrato sembra OK e il codice sembra OK, quindi potresti non fare quello che pensi di essere. Controlla tutto. | E cosa fa effettivamente?
  • @Come dice Jippie, il resistore di gate MOSFET può essere piccolo da 100 Ohm o anche 10 Ohm OK. 10k come mostrato probabilmente non è causa di problemi ma è troppo grande.
  • THat ‘ è un FET FANTASTICO. Scheda tecnica qui

Risposta

Penso che dovresti tenere il resistore R2, ma fallo 1k e mettici prima un resistore pull-down di 10k in modo che tutte le cariche immagazzinate nella capacità NMOS Cgate vengano scaricate, ogni volta che cè Z alto al porto D9. Inoltre, non dimenticare mai il resistore che limita la corrente diretta del diodo, che è tipicamente di 20 mA, ma dovresti controllarlo ogni volta nella scheda tecnica. In caso di strisce LED di solito ci sono resistenze interne, ma se stai usando una tensione più alta devi comunque limitare la corrente. Puoi dirci di più sul motivo per cui stai utilizzando PWM non una semplice porta di uscita con un integratore, ad esempio e cosa osservi e misuri esattamente quando accendi-spegni (dissolvenza-on-off) il LED?

schema

simula questo circuito – Schema creato utilizzando CircuitLab

Come rendere il diagramma un po più piccolo?

Commenti

  • ‘ sta pilotando una striscia da 12V con resistenze interne – nessun LED esterno r necessario. ‘ usa PWM perché vuole una soluzione digitale e non analogica.
  • @lalamer Per scalare i diagrammi su ESE devi allargarli, Lo faccio posizionando un punto / segmento / testo a sinistra e / oa destra in modo che rimpicciolisca lintero diagramma, funziona bene.
  • @RussellMcMahon sì hai ragione, questa è una striscia di led e cè una resistenza interna. Ho aggiornato la mia risposta. Grazie per limpegno.

Risposta

Non è necessario il 10KOhm. I MOSFET sono dispositivi controllati in tensione a differenza dei transistor che richiedono corrente controllata. Penso che il tuo problema potrebbe essere nel debouncing dellinterruttore. Probabilmente stai ricevendo dei falsi positivi che potrebbero far andare storto il tuo software. Consiglio di avere una piccola routine di antirimbalzo. Ad esempio, solo se trovi 3 positivi successivi, la pressione dellinterruttore sarà definita un vero positivo o giù di lì.

Commenti

  • Quando lo switch è visto come attivo, esegue unazione e poi ritarda 30 mS prima di ripetere il test, in modo che abbia effettivamente un antirimbalzo di 30 mS.
  • È buona norma avere un resistore in serie al gate per limitare la corrente di spunto. Ricorda che il gate del MOSFET funziona come un condensatore e deve essere caricato / scaricato.
  • Per ottenere ciò, è necessario collegare il gate del MOSFET al gnd (in caso di NMOS). Questo scaricherà rapidamente la capacità del gate del MOSFET. Inoltre, non dovresti mai lasciare un gate fluttuante poiché è suscettibile al rumore e può accendersi causando molti danni. Abbassa sempre il gate NMOS.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *