Ik heb een ledstrip die ik probeer aan te zetten met een magnetische schakelaar wanneer een deur opengaat. Ik wil dat de LEDs aan gaan als ik de deur open en uitdoemen als ik hem sluit, en dat is waar de Arduino binnenkomt. Ik gebruik PWM voor het vervagen. Ik kan elk onderdeel afzonderlijk laten werken. De vervagende LEDs werken met de MOSFET zonder de schakelaar. Ik heb de schakelaar met seriële uitgang op de Arduino getest en hij werkt met het vervagen van een enkele LED zonder de MOSFET.
Ik gebruik:
- Arduino Uno R3
- Magnetische schakelaar
- N-kanaal MOSFET IRLB3034
- 5 meter witte ledstrip
- 12VDC 30W voeding
- 10k Ohm weerstanden
Mijn opstelling ziet er als volgt uit:
Schematisch:
Code (als het helpt):
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); }
Ik heb het gevoel dat het probleem te maken heeft met de gemeenschappelijke grond op de MOSFET en de switch. Alle oplossingen / suggesties worden op prijs gesteld.
Opmerkingen
- Kunt u de FET continu aanzetten via Pin D9? Zonder PWM .. Als D9 hoog is, kunt u dan de spanning meten over de afvoer en de bron van de NMOSFET? Controleer de spanning op D2 wanneer de schakelaar gesloten en geopend is. Meet de spanning op D9 wanneer de uitgang van de D9-pin hoog is. kunt u de details van 5 meter LED-strip delen? Hoe zet je de Arduino aan? Ik heb het gevoel dat het probleem te maken heeft met de LED-strip van 5 meter …
- Ik zou R2 verwachten, vlakbij de MOSFET, in de orde van 100 ohm. U ‘ zal het anders heet maken. Verander ook de minimum en maximum testen van 255 resp. 0 tot 250 en 5.
- U zegt niet welk probleem u ondervindt. Wat doet het?De ledstrip wordt ingeschakeld over een spanningsbereik in de buurt van 12V. dwz is waarschijnlijk uitgeschakeld op ongeveer 9V en aan op 12V. Dus als de spanning op de strip analoog is vanwege een filter, wordt deze ingeschakeld over het einde van het PWM-bereik. Als het circuit IS zoals getoond, moet de LED-strip aan en uit moduleren op PWM-frequentie. Dit MOET werken. Het circuit zoals weergegeven ziet er in orde uit en de code lijkt in orde, dus het kan zijn dat u niet doet wat u denkt dat u bent. Controleer alles.En wat doet het eigenlijk?
- @Zoals Jippie zegt- MOSFET-poortweerstand kan klein zijn, 100 Ohm of zelfs 10 Ohm, OK. 10k zoals getoond is waarschijnlijk geen oorzaak van problemen, maar is te groot.
- DAT ‘ een GEWELDIGE FET is. Gegevensblad hier
Antwoord
Ik denk dat je de R2-weerstand moet behouden, maar maak er 1k van en plaats ervoor een pull-down-weerstand van 10k zodat alle ladingen die zijn opgeslagen in de NMOS Cgate-capaciteit worden ontladen wanneer er High-Z is bij de haven D9. Vergeet ook nooit de weerstand die de voorwaartse stroom van de diode beperkt, die doorgaans 20 mA is, maar u moet dat elke keer in het gegevensblad controleren. In het geval van een ledstrip zijn er meestal interne weerstanden, maar als je een hogere spanning gebruikt, moet je de stroom beperken. Kunt u ons meer vertellen over waarom u PWM gebruikt, niet een simpele uitgangspoort met bijvoorbeeld een integrator en wat u precies waarneemt en meet wanneer u de LED aan-uit (fade-aan-uit) zet?
simuleer dit circuit – Schema gemaakt met CircuitLab
Hoe maak je het diagram een beetje kleiner?
Opmerkingen
- Hij ‘ s stuurt een 12V strip met interne weerstanden aan – geen externe LED r nodig. Hij ‘ gebruikt PWM omdat hij een digitale oplossing wil en geen analoge.
- @lalamer Om de diagrammen op ESE te schalen, moet je ze breder maken, Ik doe dit door een punt / segment / tekst links en / of rechts te plaatsen zodat het hele diagram kleiner wordt, werkt goed.
- @RussellMcMahon ja je hebt gelijk, dit is een ledstrip en die is er een interne weerstand. Ik heb mijn antwoord bijgewerkt. Bedankt voor je inzet.
Antwoord
De 10KOhm is niet nodig. MOSFETs zijn spanningsgestuurde apparaten in tegenstelling tot transistors die gecontroleerde stroom nodig hebben. Ik denk dat uw probleem ligt bij het debounten van de switch. U krijgt waarschijnlijk een aantal valse positieven waardoor uw software mogelijk niet goed werkt. Ik raad aan om een kleine routine te hebben voor het ontkrachten. Voor bijv. – alleen als u 3 opeenvolgende positieven vindt, wordt de druk op de schakelaar een echt positief of zo genoemd.
Opmerkingen
- Wanneer de switch als actief wordt beschouwd, voert hij één actie uit en vertraagt hij vervolgens 30 ms voordat hij opnieuw wordt getest, zodat hij effectief een debounce van 30 ms heeft.
- Het is een goede gewoonte om een weerstand in serie met poort te hebben om de inschakelstroom te beperken. Onthoud dat de poort van MOSFET werkt als een condensator en moet worden opgeladen / ontladen.
- Om dit te bereiken moet je de poort van de MOSFET verbinden met de gnd (in het geval van NMOS). Dit zal de MOSFET poortcapaciteit snel ontladen. Ook mag u een poort nooit laten zweven, omdat deze gevoelig is voor geluid en kan inschakelen en veel schade kan veroorzaken. Trek altijd de NMOS-poort naar beneden.