Tilslutning af en switch og en MOSFET til en Arduino?

Jeg har en LED-strip, som jeg prøver at tænde med en magnetkontakt, når en dør åbnes. Jeg vil have, at lysdioderne lyser, når jeg åbner døren og slukker, når jeg lukker den, det er her Arduino kommer ind. Jeg bruger PWM til fading. Jeg kan få hver komponent til at arbejde separat. De falmende lysdioder fungerer med MOSFET uden afbryderen. Jeg testede kontakten med seriel output på Arduino, og den fungerer med at falme en enkelt LED uden MOSFET.

Jeg bruger:

  • Arduino Uno R3
  • Magnetisk switch
  • N-Channel MOSFET IRLB3034
  • 5 meter hvid LED-strip
  • 12VDC 30W strømforsyning
  • 10k Ohm-modstande

Min opsætning ser sådan ud: breadboard diagram

Skematisk: skematisk

Kode (hvis det hjælper):

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); } 

Jeg har en fornemmelse af, at problemet er med den fælles grund på MOSFET og kontakten. Eventuelle løsninger / forslag værdsættes.

Kommentarer

  • er du i stand til at tænde FET via pin D9 kontinuerligt? Uden PWM .. Når D9 er høj, kan du måle spændingen over afløb og kilde til NMOSFET? Kontroller spændingen ved D2, når kontakten lukkes og åbnes. Mål spændingen ved D9, når output af D9-pin er høj. kan du dele detaljerne i 5 meter LED-strip? Hvordan tænder du Arduino? Jeg har en fornemmelse af, at problemet er med 5 meter strip LED …
  • Jeg forventer R2, nær MOSFET, i størrelsesordenen 100 ohm. Du ' kører det varmt ellers. Skift også minimums- og maksimumtest fra 255 resp. 0 til 250 og 5.
  • Du siger ikke, hvilket problem du har. Hvad gør den? | LED-strip tændes over et spændingsområde nær 12V. dvs. er sandsynligvis slukket ved ca. 9V og tændt ved 12V. Så hvis spændingen på strimlen er analog på grund af enhver filtrering, vil den tænde over slutningen af PWM-området. Hvis kredsløbet er som vist, skal LED-strimlen moduleres til og fra ved PWM-frekvens. Dette SKAL fungere. Kredsløb som vist ser OK ud, og kode virker OK, så du måske ikke gør, hvad du tror du er. Tjek alt. | Og hvad gør det faktisk?
  • @Som Jippie siger – MOSFET-modstand kan være lille 100 ohm eller endda 10 ohm OK. 10k som vist er sandsynligvis ikke årsag til problemer, men er for stor.
  • AT ' er EN FANTASTISK FET. Dataark her

Svar

Jeg synes, du skal beholde R2-modstanden, men gør den 1k og læg en pull-down-modstand på 10k foran den, så eventuelle opladninger, der er gemt i NMOS Cgate-kapacitansen, aflades, når der er High-Z ved havnen D9. Glem aldrig modstanden, der begrænser diodens fremadgående strøm, som typisk er 20 mA, men det skal du kontrollere hver gang i databladet. I tilfælde af LED-strip er der normalt interne modstande, men hvis du stadig bruger højere spænding, skal du begrænse strømmen. Kan du fortælle os mere om, hvorfor du bruger PWM, ikke en simpel outputport med en integrator, for eksempel, og hvad du nøjagtigt observerer og måler, når du tænder / slukker (falmer-til-slukker) LEDen?

skematisk

simuler dette kredsløb – Skematisk oprettet ved hjælp af CircuitLab

Hvordan gør man diagrammet lidt mindre?

Kommentarer

  • Han ' driver en 12V nominel strimmel med interne modstande – ingen ekstern LED r nødvendig. Han ' bruger PWM, fordi han ønsker en digital løsning og ikke en analog.
  • @lalamer For at skalere diagrammerne på ESE skal du gøre dem bredere, Jeg gør dette ved at placere en prik / segment / tekst til venstre og / eller højre, så den krymper hele diagrammet, fungerer godt.
  • @RussellMcMahon ja du har ret, dette er en ledet stribe og der er en intern modstand. Jeg har opdateret mit svar. Tak for din forpligtelse.

Svar

Der er ikke behov for 10KOhm. MOSFETer er spændingsstyrede enheder i modsætning til transistorer, der har brug for styret strøm. Jeg tror, dit problem kan være i afvisning af switch. Du får sandsynligvis nogle falske positive, som muligvis får din software til at gå galt. Jeg anbefaler at have en lille afvisningsrutine. For eksempel – kun hvis du finder 3 på hinanden følgende positive, vil kontakttrykket blive betegnet som en sand eller positiv.

Kommentarer

  • Når switch ses som aktiv, udfører den en handling og forsinker derefter 30 mS, inden han prøver igen, så han effektivt har en 30 mS-afvisning.
  • Det er en god praksis at have en modstand i serie med port for at begrænse startstrømmen. Husk, at porten til MOSFET fungerer som en kondensator og skal oplades / aflades.
  • For at opnå dette skal du forbinde MOSFET-porten til GND (i tilfælde af NMOS). Dette vil aflade MOSFET-portens kapacitans hurtigt. Du bør heller ikke lade en port flyde, da den er modtagelig for støj og kan tænde og forårsage megen skade. Træk altid NMOS-porten ned.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *