Forum: Mikrocontroller und Digitale Elektronik Lampe am controller schält immer wieder alleine ein


von Patrick (Gast)


Angehängte Dateien:

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?

von hp-freund (Gast)


Lesenswert?

Könnte mit der Leiterbahnführung zu tun habe.
Vielleicht helfen ein paar C an den Tastern.

von posti (Gast)


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

von Mampf F. (mampf) Benutzerseite


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?

von Cyborg (Gast)


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.

von hp-freund (Gast)


Lesenswert?

Cyborg schrieb:
> Ob die internen Widerstände aktiv sind,

Hast Recht, so etwas setzt man einfach voraus, genau wie N-Fets.

von Mampf F. (mampf) Benutzerseite


Lesenswert?

Cyborg schrieb:
> Ihr seid mir vielleicht Experten?

Ja du doch auch ... Was haben die Taster damit zu tun, wenn es 
funktioniert, wenn er die Eingangsspannung erhöht ... Zuerst kommt da 
erstmal der Spannungsregler ;-)

von Patrick (Gast)


Angehängte Dateien:

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
}

von hp-freund (Gast)


Lesenswert?

Was sind es für FET?
Heisst die Schaltung nur so, oder befindet sie sich tatsächlich im Kfz?

von Mampf F. (mampf) Benutzerseite


Lesenswert?

> && (PINA & (1 << PINA0)))    // wenn Zeit abgelaufen && Licht an

Du solltest statt PINA0 was übersichtlicheres verwenden ... Entweder 
passt PINA0 nicht oder es passt "& Licht an" nicht ...

von Patrick (Gast)


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.

von Patrick (Gast)


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.

von Küchenchef (Gast)


Lesenswert?

Patrick schrieb:
Re: Lampe am controller schält immer wieder alleine ein

Ich habe heute Mittag Kartoffeln geschaltet :-)

von hp-freund (Gast)


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?

von Patrick K. (Gast)


Lesenswert?

Ich kenn mich nicht sogut aus aber wenn alles mit einer Led funktioniert 
müsste es doch Hardware sein?
Das mit dem Kondensator werd ich morgen mal versuchen.

von Patrick K. (win7uxx)


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?

von Hubert G. (hubertg)


Lesenswert?

Die 10pf vor und die zweimal 22pf nach dem Spannungsregler sind aber 
Schreibfehler?

von Patrick K. (Gast)


Lesenswert?

Ne, diese dachte ich benötigt der Spannungsregler?

von Hubert G. (hubertg)


Lesenswert?

Patrick K. schrieb:
> Ne, diese dachte ich benötigt der Spannungsregler?

Dann solltest du mal dringend das Datenblatt lesen.
In meinem steht das vor- und nachher ein 10µ Kondensator gehört, wenn 
Elko dann LowESR.

von Patrick K. (win7uxx)


Lesenswert?

Hab gerade nach geschaut, du hast recht, das erklärt einiges. Hab da 
wohl was voll mit n und µ verwechselt.

Also vielen vielen Dank.


Könntest du mir nur kurz noch sagen was du mit LowESR meinst.

von Dietrich L. (dietrichl)


Lesenswert?

Patrick K. schrieb:
> Könntest du mir nur kurz noch sagen was du mit LowESR meinst.

Das war jetzt schwer: erster Link bei Google "lowesr":

http://www.elektronik-kompendium.de/sites/bau/0810091.htm

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.