Lampe am controller schält immer wieder alleine ein

Gast #4881441
Lesenswert?

Hallo alle zusammen,

ich hab ein Problem mit meiner Schaltung, diese soll eine 10W lampe nach 
3s von alleine abschalten lassen. Dies tut der controller auch nur 
schaltet er danach immer wieder von alleine ein. Mir ist aufgefallen das 
wenn ich 6,7V bis 8,4V bei der Spg. Quelle einstell die Schaltung 
funktioniert bzw. so geht wie ich mir das vorstelle. Der gleiche Effekt 
kommt auch wenn ich anstelle einer Lampe eine LED anschließe.

Kennt jemand ähnliche Probleme und hat hierzu eine Lösung?
Angehängte Dateien:
Gast #4881448
Lesenswert?

Hi

Wo ist da dir Lampe?
Wie bekomme ich die Grafik größer?
Laut Beschriftung 'Mosfet_P' riecht nach einem P-FET, mit GND verbunden 
wird's aber wohl eher ein N-FET sein.

Wie schaltest Du die Lampe ein, wie aus?

Kann die Lampe nach Abschaltung irgendwie wieder aktiviert werden?

MfG
Persönliche Seite #4881451
Lesenswert?

Patrick schrieb:
> ir ist aufgefallen das
> wenn ich 6,7V bis 8,4V bei der Spg. Quelle einstell

Der LM1117-5 (5V? sieht man schlecht im Schaltplan) braucht wie jeder 
(lineare) Spannungsregler eine höhere Eingangsspannung als er am Ausgang 
zur Verfügung stellt. Bei den alten 7805er waren es 2,5V mehr. Der 
1117er ist ein Low-Dropout Regler ... Datenblatt sagt:

"The LM1117 is a low dropout voltage regulator with a • Available in 1.8 
V, 2.5 V, 3.3 V, 5 V, and dropout of 1.2 V at 800 mA of load current"

Damit stabile 5V rauskommen, braucht er schon mal 6,2V am Eingang.

Vlt ist das das Problem deiner Schaltung?
Gast #4881464
Lesenswert?

Ihr seid mir vielleicht Experten?
Die Schalter an den Ports haben keine Pullup-Widerstände.
Die Eingänge sind also offen. Ob die internen Widerstände
aktiv sind, kann man ohne Source-Code nicht beurteilen.
Gast #4881489
Lesenswert?

Danke für die zahlreichen Antworten.

Anbei der Code, intern sollten die Widerstände geschaltet sein.
An der mindest Spannung von 6,2Volt kann es nicht liegen da das auch bei 
12V Eingangspg. auftritt. Des weiteren funktioniert ja alles bei wenn 
ich die LED anschließe bei ca. 2,5Volt.

Die Lampe kann mit einem Tasterdruck wieder eingeschaltet werden.

Das Bild ist leider nur ein Screenshot da ich sonst nicht in PNG 
speichern konnte, jetzt hab den Schaltplan mal als PDF angefügt.

1
#include <avr/io.h>
2
#include <util/delay.h>
3

4
int main(void) {
5
  DDRA = 0b00011100;  // pin3,4,5 Ausgang (1<<DDA2)(1<<DDA3)(1<<DDA4)
6
  PORTA = 0b00000011;  // pin1,2 eingang (Pull-up ein) (1<<PA0)(1<<PA1)
7

8
  /*    INFO
9
   *     Taster PA1
10
   *     Mosfet PA3
11
   *
12
   *     !(PINx & (1<<Pxx)) abfrage
13
   *     PORTx |= (1<<Pxx) setzen
14
   *     PORTx &= ~(!<<Pxx) löschen
15
   */
16

17
  unsigned int dauer_normal = 5;    // Automatische abschaltung in Sekunden
18
  unsigned int dauer_lang = 1;  // Lange einschaltdauer (taster >3s) in min
19
  unsigned int zeit_aus_normal = dauer_normal*1000;  // sec umrechnung (Zeit f�r normales ausschalten)
20
  unsigned int zeit_aus_lang = dauer_lang * 60 * 1000;  // umrechnung dauer lang in millisec
21
  unsigned int taster_dauer = 3;  // druck dauer in sec
22
  unsigned int zeit_taster;
23
  unsigned int lange_aktiv = 0;
24
  unsigned int prell_dauer = 50;    // in msec
25

26
  _delay_ms(500);
27
  PORTA |= (1 << PA2);  // Lampe nach start an
28

29
  while (1)
30
  {
31

32
    if ((PINA & (1 << PINA2))  &&  !(PINA & (1 << PINA0)))  // Lampe an && taster
33
    {
34
      PORTA &= ~(1 << PA2);  // Lampe aus
35
      lange_aktiv = 0;  // lange ausschaltdauer zuruecksetzen
36
      for (uint8_t i=0; i<=prell_dauer; i++)  // dauer fuer taster Prellen
37
      {
38
          if (!(PINA & (1 << PINA0)))  // Wenn taster noch Prellt neu warten
39
          {
40
              i=0;  // Neu warten
41
          }
42
          _delay_ms(1);  // Ohne Prellen zaehlen
43
      }
44
    }
45
    else if ((PINA & ~(1 << PINA2))  &&  !(PINA & (1 << PINA0)))  // Lampe aus && taster
46
    {
47
      PORTA |= (1 << PA2);  // Lampe an
48
      zeit_aus_normal = dauer_normal*1000;  // dauer setzten / zuruecksetzen
49
      zeit_aus_lang = dauer_lang * 60 * 1000;  // dauer setzten / zuruecksetzen
50
      zeit_taster = taster_dauer * 1000;  // Dauer fuer langen tasterdruck
51
      lange_aktiv = 0;  // lange dauer deaktivieren
52
      for (uint8_t i=0; i<=prell_dauer; i++)  // Entprellen abwarten
53
      {
54
        // Wenn Taste noch gedrueckt oder prellt, warte laenger.
55
          if (!(PINA & (1 << PINA0)))  // Prellen oder taster noch aktiv
56
          {
57
              i=0;  // neu warten
58
              zeit_taster--;  // Taster dauer runterzaehlen
59
              if (zeit_taster == 0)  // Taster zeit runtergezaehlt
60
              {
61
                lange_aktiv = 1;  // Langes ausschalten aktivieren
62
              }
63
          }
64
          _delay_ms(1);  // Ohne Prellen oder tasten betaetigung
65
      }
66
    }
67

68
    else if (((zeit_aus_normal == 0) || (zeit_aus_lang == 0))
69
            && (PINA & (1 << PINA0)))    // wenn Zeit abgelaufen && Licht an
70
    {
71
      PORTA &= ~(1 << PA2);  // Lampe ausschalten nach zeitdauer
72
    }
73

74
    else  // wenn nicht gedrueckt wird ausfuehren
75
    {
76
      if ((PINA & (1 << PINA2)) && !(lange_aktiv))  // wenn die lampe an ist Zeit runterzaehlen
77
      {
78
        zeit_aus_normal--;
79
        _delay_ms(1);  // je 1ms runterzaehlen
80
      }
81
      else if ((PINA & (1 << PINA2)) && (lange_aktiv)) // wenn lampe an und lang aktiv
82
      {
83
        zeit_aus_lang--;
84
        _delay_ms(1);
85
      }
86
    }
87
  }
88
}
Angehängte Dateien:
Gast #4881719
Lesenswert?

Mampf F. schrieb:
> Du solltest statt PINA0 was übersichtlicheres verwenden ... Entweder
> passt PINA0 nicht oder es passt "& Licht an" nicht ...

Du hast recht das sollte wahrscheinlich Lampe aus heißen.


Es handelt sich um ein IRLML2502, das musste ein NPN. In Kicad stand nur 
Mosfet P dran und von Schaltbild dachte ich das wäre ein NPN Mosfet.

Ja, bei mir ist zwangsläufig oft und auch oft lange der Kofferraum 
offen, weshalb ich hier diese Kofferraumlampe automatisch steueren 
wollte (bj1992), da war sowas  noch nicht Standart.
Bisher wurde es aber noch nicht im Auto getestet da ja die Lampe immer 
wieder an geht.
Gast #4881722
Lesenswert?

Patrick schrieb:
> Mampf F. schrieb:
>> Du solltest statt PINA0 was übersichtlicheres verwenden ... Entweder
>> passt PINA0 nicht oder es passt "& Licht an" nicht ...
>
> Du hast recht das sollte wahrscheinlich Lampe aus heißen.

Nochmal falsch, und kein Taster betätigt ist.
Gast #4881854
Lesenswert?

Ohne jetzt das Programm prüfen zu wollen, zuerst muss geklärt werden ob 
es ein Hard- oder Software Problem ist.
Dazu würde ich ein simples Programm machen, ohne Timer oder Delay, 
einfach nur einschalten wenn Taster Impuls anliegt.

Dann wie gesagt eine RC Schaltung am Eingang um Störimpulse zu 
minimieren.

Die nächste Frage ist natürlich der Aufbau. Lange Leitungen? Steckbrett?
#4882459
Lesenswert?

So hab das ganze jetzt mal mit einem Kondensator, dicht an der 5V 
Spannungsquelle versucht. Und siehe da mit 1µF Elko ging alles wunder 
bar, mit einem mir unbekannten (der im Bild) hatte ich bis ca. 15Volt 
Eingangsspannung eine tadellose Funktion. Bis ca. 10V ging es bei einem 
10nF Kondensator. Mit einem 100nF SMD ergab sich keine Verbesserung. 
Auch wenn ich den Kondensator über Krokodilklemmen angeschlossen hatte 
war die Funktion, bei allen, nicht gegeben.

Kann mir hierzu einer das Phänomen erklären warum das Spannungsabhängig 
ist wenn doch nach dem Spannungsregler die Spannung eh 5V beträgt?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren