Hallo zusammen,
ich habe ein kleines Problem, mit dem ich seit langen kämpfe und es
nicht lösen kann.
Es geht um folgendes:
meine Freundin hat mich gefragt, ob ich für ihr Fahrrad ein
"intelligentes" Standlicht bauen kann, das folgende Funktionen hat:
1- man kann das Standlicht mit einem Schalter ein/ausschalten
2- man kann mit einem Poti einstellen, bei welcher Lichtstärke die
Versorgung der Lampe zwischen Batterie und Dynamo umgeschaltet wird,
(inkl. Dauer-Batteriebtrieb und Dauer-Dynamo-Betrieb)
3- Wenn man vergessen hat, das Licht auszzuschalten, schaltet das
automatisch nach einigen minuten aus.
so... und ich habe versucht das ganze mit einem Attiny13 zu lösen. Das
ist ziemlich gut gelungen und die Schaltung und das Programm haben die
Tests bestanden.
Bevor ich die ganze Geschichte zusammen löte, habe ich versucht die
Schalrung nochmal mit einer Fahrradlampe und einem Fahrraddynamo zu
testen und genau jetzt ist "das Problem" aufgetaucht:
mein Relais schaltet hin und her und summt manchmal. Das Problem liegt
natürlich daran, dass die Spannung am PB4 die von mir definierte
Hysterese überschreitet und genau beim umschalten des Relais. Ich habe
mit Oszi die Spannung an dem Punkt gemessen und tatsächlich ist es so,
dass mit einem realen Dynamo und ner realen Fahrradlampe die Spannung am
PB4 beim Umschalten des Relais schwingt und springt.
Das Interessante ist, wenn ich die Masse des Dynamo von der Masse der
Batterie trenne, dann messe ich eine andere Spannung am PB4 !
Sogar habe ich mal den Plus der Batterie getrennt und den minus mit der
Dynamo-Masse verbunden und habe wieder eine andere Spannung gemessen.
Ich weiß nicht, ob das jetzt daran liegt, oder an was anderem.
Hat jemand vielleicht eine Idee warum es so ist, wie es ist?
Zur der Schaltung: den Relaistreiber habe ich mit einem NE55 realisiert,
hatte vorher mit nem normalen BC547 gemacht und dann dachte, vielleicht
liegt das irgendwie an diesem Transistor, dass Relais ständig
umschaltet, weil die Ausgänge vom Tiny13 nicht genug Strom anbieten.
Mit dem Poti kann man die obere Grenze einstellen und weil der Eingang
am PB4 bisschen Rippel hat, habe ich so ne Art Schmitt trigger mit dem
Tiny13 programmiert.
Der Spannungsteiler mit 200k und 100k sind zum Vergleichen der
Dynamo-Spannung mit dem Poti-Spannung gedacht. die sind für max. 15 Volt
u.max dimensioniert so dass dort maximal 5V am PB4 vorhaanden ist.
Baterie hat 6V.
Auch hier das Programm vom Tiny13:
1 | $regfile = "attiny13.dat"
|
2 | $crystal = 1200000
|
3 | $hwstack = 10
|
4 | $swstack = 10
|
5 | $framesize = 10
|
6 |
|
7 | Declare Sub Schleife
|
8 |
|
9 | Config Portb.0 = Output
|
10 |
|
11 | Config Adc = Single , Prescaler = Auto , Reference = Avcc
|
12 | Start Adc
|
13 |
|
14 | Dim Dynamo As Word
|
15 | Dim Obere_grenze As Word
|
16 | Dim Untere_grenze As Word
|
17 | Dim Vergessen_timer As Long
|
18 | Const Hyst = 150
|
19 |
|
20 | 'Initialisierung:
|
21 | Portb.0 = 0
|
22 | Vergessen_timer = 0
|
23 |
|
24 | Do
|
25 |
|
26 |
|
27 | Obere_grenze = Getadc(1)
|
28 |
|
29 | If Obere_grenze > Hyst Then
|
30 | Untere_grenze = Obere_grenze - Hyst
|
31 | Else
|
32 | Untere_grenze = 0
|
33 | End If
|
34 |
|
35 |
|
36 | Dynamo = Getadc(2)
|
37 |
|
38 | If Dynamo < Untere_grenze Then
|
39 | Portb.0 = 1
|
40 |
|
41 | If Dynamo < 5 Then
|
42 | Vergessen_timer = Vergessen_timer + 1
|
43 | If Vergessen_timer = 360000 Then
|
44 | Portb.0 = 0
|
45 | Call Schleife
|
46 | End If
|
47 | End If
|
48 | End If
|
49 |
|
50 | If Dynamo > Obere_grenze Then
|
51 | Portb.0 = 0
|
52 | Vergessen_timer = 0
|
53 | End If
|
54 |
|
55 |
|
56 | Loop
|
57 |
|
58 | Sub Schleife:
|
59 | Do
|
60 | Loop
|
61 | End Sub
|
62 |
|
63 |
|
64 | End 'end program
|
Ich freue mich auf eure Meinungen und eventuell Verbesserungen.
Viele Grüße
Hamed