Arduino Nano mit MOSFET IRF540

Hallo zusammen,

ich möchte eine 12V Led Leiste per "analogWrite" über ein IRF540 Mosfet auf- und abdimmen.
Das ganze funktioniert auf einem Mega2560 einwandfrei, sobald ich den Sketch dann allerdings auf einen Arduino Nano mit ATmega328 übertrage funktioniert die Dimmfunktion nicht mehr.
Die For-Schleife wird ausgeführt und die LED geht am Ende mit voller Leuchtkraft an und umgekehrt, einen PWM fähigen PIN habe ich verwendet (6) und den Sketch ensprechend angepasst.

Hat jemand eine Idee wo der Fehler liegen könnte?

Ohne Sketch und Schaltplan fischen wir im Trüben.
grüße Uwe

Der IRF540 ist kein Logiklevel FET.
Also nicht gut für höhere Lasten bei 5Vgs geeignet.

Das hat aber vermutlich nichts mit deinem Problem zu tun.

Teste mal mit andern Pins, denn Pin 5 und 6 sind von Timer0, und damit kann es Probleme/Flackern in den unteren 10% geben.

Du könntest auch mal deinen Code zeigen.

silvertt:
Hat jemand eine Idee wo der Fehler liegen könnte?

Wie Uwe schon schrub: Ohne Schaltplan und Sketch ist ein Tipp schwierig.

Evtl. ist aber ein Workaround möglich: Wenn Du Licht dimmen möchtest, ist der Zeitfaktor wenig kritisch. Wenn Du eine Funktion schreibst, die einen Nicht-PWM-Pin schnell genug schaltet, kannst Du das ohne PWM-Pin-Gedöns machen. Ich habe mal eine IR-Fernbedienung realisiert, die die 38-kHz-Modulation „auf die harte Tour“ macht (guck hier).

HTH

Gregor

Die Schaltung ist Pin9 mit 1k Widerstand an Base, LED GND an Collector und Emitter an GND, V+ LED direkt an Netzteil. Der Arduino hängt am selben 12V Netzteil wie die LEDs, Bewegungsmelder und Funkmodul funktionieren einwandfrei.

Und der Code:

#include <VirtualWire.h>

int PinBewegung = 2;
int PinLicht = 9;
int PinSender = 5;
int bewegungsstatus=0;

const int transmit_pin = PinSender;

void setup() {
pinMode(PinBewegung, INPUT);

  vw_set_tx_pin(transmit_pin);
  vw_set_ptt_inverted(true); 
  vw_setup(2000);   
}

void loop() {
bewegungsstatus=digitalRead(PinBewegung);

if (bewegungsstatus == HIGH){

  vw_send((uint8_t *)'A', 1);
  
for (int helligkeit =1; helligkeit <= 255; helligkeit = helligkeit +1){
analogWrite(PinLicht, helligkeit);
delay(150);
 }

delay(10000);

for (int helligkeit =255; helligkeit >= 0; helligkeit = helligkeit -1){
analogWrite(PinLicht, helligkeit);
delay(200);
}
}
else
{
analogWrite(PinLicht, 0);
}
}

Ohne den Bewegungssensor und Sender hat es auch nicht geklappt, die Stören da nicht. Kann das vielleicht an der PWM Frequenz des Nano liegen?

Nunja...

Kann das vielleicht an der PWM Frequenz des Nano liegen?

Unwahrscheinlich.
Was soll an der Frequenz falsch sein?

Prüfe das mit einem Oszi oder LA...

PS:
Ein FET, hat keine Basis usw....

silvertt:
Die Schaltung ist ...

Könntest Du das bitte in den Schnee pinkeln? Ich kann mir das sonst schlecht vorstellen.

SCNR

Gregor

PS: Du darfst den Schaltplan auch zeichnen :wink:

Die Schaltung ist Pin9

Eben war es noch Pin 6...
Aber ok...
Habs gerade mit meinem Nano mit 9 und 6 getestet, tuts beides perfekt!

int PinLicht = 9;

void setup() 
{
}

void loop() 
{
    for (int helligkeit =1; helligkeit <= 255; helligkeit++)
    {
       analogWrite(PinLicht, helligkeit);
       delay(10);
    }

    delay(1000);

    for (int helligkeit =255; helligkeit >= 0; helligkeit--)
    {
      analogWrite(PinLicht, helligkeit);
      delay(10);
    }

    delay(1000);
}

bau mal eine einfache LED mit Vorwiderstand zwischen Pin 9 und GND und versuches nochmal

Hast du schon mal die Ports auf Kurzschluss geprüft.
Ich hatte mal einen, der unterhalb der Stiftleisten mehrere Kurzschlüsse aufwies.
Da kam an einigen Ports richtig Mist raus.

Virtual Wire nutzt Timer 1 und damit stehen Pin 9 und 10 nicht mehr für PWM zur Verfügung.

Ohne den Bewegungssensor und Sender hat es auch nicht geklappt, die Stören da nicht.

Das ist also nicht ganz richtig.

@gregorss: Ja, so einfach wie die ist reicht dafür sogar ein 0,33er Pils ;). Das nächste mal mach ich mir die Mühe und zeichne es auf.

Ich habe inzwischen alle PWM fähigen PINs durch (deshalb auch 9 anstatt 6), eine einfache LED mit Vorwiderstand dimmt auch nicht, also ist die Sache mit dem Kurzschluss oder einem anderen Defekt wohl am plausibelsten. Danke für eure Hilfe!

Einen zweiten NANO hast du nicht zufällig und kannst es damit probieren?

also ist die Sache mit dem Kurzschluss oder einem anderen Defekt wohl am plausibelsten.

Teste mal mein reduziertes Programm aus Beitrag #7
Denn das läuft auf meinem nackten Nano. Nur die LED mit Widerstand ist da dran.

silvertt:
@gregorss: ... Das nächste mal mach ich mir die Mühe und zeichne es auf.

Mir hilfst Du damit auf jeden Fall :slight_smile:

Ich bin nur einfach nicht „vom Fach“ und Beschreibungen wie Deine sind für mich echt anstrengend.

Gruß

Gregor