Forum: Mikrocontroller und Digitale Elektronik Magnetbremse L298 ATmega8?


von Günter M. (gueee)


Angehängte Dateien:

Lesenswert?

Hallo,

ich hatte schon einmal gepostet, dass ich probleme mit einer 
Magnetbremse hatte. Da die vorherige Schaltung mit einem FET nur für 
eine Stromflussrichtung geeignet war, hatte ich Probleme mit der 
permanenten Magnetisierung der Stahlbremsscheibe. Ist im Forum 
Anlogtechnik zu finden.

Da ich aktiv entmagnetisieren muss, habe ich die Schaltung neu aufgebaut 
und diesmal einen L298 verwendet, die Schaltung ist im Bildanhang.

Jetzt habe ich neue, ganz andere Probleme.
Wie man im Schema sehen kann, habe ich die Kanäle wie im Datenblatt des 
L298 gezeigt parallel geschalten.
Komischerweise schaltet mir der L298 erst bei einem Tastverhältnis von 
100% sauber durch.

ZU Testzwecken lege ich vorläufig nur In1 und In4 auf H-Pegel und PWM an 
Enable A und B, also noch keine Umschaltung der Stromflussrichtung durch 
die Last.
Wenn ich jetzt das Tastverhältnis der 8-bit PWM von 0 - 100% in 
schritten erhöhe habe ich mit dem Oszi gemessen bis zum erreichen der 
100% keine Saubere PWM am Output des L298.

Könnte ein Pull-Down an In1 u 4 bzw. In2 u 3 eventuell abhilfe schaffen? 
IMHO sollte ja der µC den definierten Low-Pegel liefern oder hängt der 
Ausgangspin nach dem ausschalten undefiniert herum?

Danke schon mal für eure antworten

P.S. Programmiert habe ich übrigens mit Bascom, C gewöhne ich mir gerade 
erst an.

von Falk B. (falk)


Lesenswert?

@  Günter Michaeller (gueee)

>permanenten Magnetisierung der Stahlbremsscheibe. Ist im Forum
>Anlogtechnik zu finden.

Da könnte man durchaus einen Link posten.

>Jetzt habe ich neue, ganz andere Probleme.

Ja, du hast vergessen dein unsinningen Layer 93 (Pins) auszuschalten.

>Wie man im Schema sehen kann, habe ich die Kanäle wie im Datenblatt des
>L298 gezeigt parallel geschalten.

>Komischerweise schaltet mir der L298 erst bei einem Tastverhältnis von
>100% sauber durch.

Was meinst du damit?

>ZU Testzwecken lege ich vorläufig nur In1 und In4 auf H-Pegel und PWM an
>Enable A und B, also noch keine Umschaltung der Stromflussrichtung durch
>die Last.

Und was wird mit IN2/3? Die müssen auch auf einem definiertem Pegel 
liegen.

>Wenn ich jetzt das Tastverhältnis der 8-bit PWM von 0 - 100% in
>schritten erhöhe habe ich mit dem Oszi gemessen bis zum erreichen der
>100% keine Saubere PWM am Output des L298.

Wie gemessen? Mit Bremse? Screenshot?

>Könnte ein Pull-Down an In1 u 4 bzw. In2 u 3 eventuell abhilfe schaffen?

Nein.

>IMHO sollte ja der µC den definierten Low-Pegel liefern oder hängt der
>Ausgangspin nach dem ausschalten undefiniert herum?

Was heisst ausschalten? Wenn des Programm losläuft, muss man die Pins 
auf Ausgang schalten, dann kann man sie LOW oder HIGH setzen.

Poste deinen Quelltext als Anhang.

Mfg
Falk

von Falk B. (falk)


Lesenswert?

Hier der Link zum ersten Thread

Beitrag "L295 Entmagnetisierung?"

von Günter M. (gueee)


Lesenswert?

@ Falk,

>Da könnte man durchaus einen Link posten.
Beitrag "Re: L295 Entmagnetisierung?" hier ist er.

>Ja, du hast vergessen dein unsinningen Layer 93 (Pins) auszuschalten.

da hast du wohl recht :)

> Und was wird mit IN2/3? Die müssen auch auf einem definiertem Pegel
> liegen.

das tun sie auch, liegen auf Low, siehe Source.

> Wie gemessen? Mit Bremse? Screenshot?
... mit Bremse gemessen, je 1 Oszi-Kanal an Out1/4 und an Out2/3. Leider 
kein screenshot.

1
'Definition für Mega 8
2
$regfile "m8def.dat"
3
4
'Taktfrequenz (8Mhz)
5
$crystal = 8000000
6
7
'Konfiguration der Analogeingänge
8
Config Adc = Single , Prescaler = Auto , Reference = Avcc
9
10
'Konfiguration Timer 1 für Hardware-PWM an OC1A (B.1)
11
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Prescale = 8
12
13
'Konfiguration der Ports
14
Config Portb = Output
15
Config Portc.0 = Input
16
Config Portc.1 = Input
17
Config Portc.2 = Input
18
Config Portc.3 = Output
19
Config Portc.4 = Output
20
Config Portd = Input
21
22
'======================================================
23
'Deklarationen
24
'======================================================
25
26
Dim Analogwert0 As Word
27
Dim Analogwert1 As Word
28
Dim Gain As Word
29
Dim Analogwert2 As Word
30
Dim Regelwert As Word
31
Dim Hilfs As Word
32
Dim Korrektur As Word
33
Dim Opv As Word
34
Dim I As Byte
35
36
'======================================================
37
'Initialisierungen
38
'======================================================
39
'Anschaltung der Analogwert-Verarbeitung
40
Start Adc
41
42
Portb = &B00000000
43
Portd = &B00000000
44
45
'Start des PWM-Timers
46
'Enable Timer1
47
Timer1 = 0
48
Start Timer1
49
Regelwert = 511
50
Portd.1 = 1
51
Portc.3 = 0
52
Portc.4 = 1
53
54
55
'======================================================
56
'Hauptprogramm
57
'======================================================
58
Hilfs = Getadc(2)
59
60
Do
61
62
'Analogwert vom Poti einlesen, umrechnen und formieren
63
Analogwert0 = Getadc(0)
64
If Analogwert0 > 1023 Then Analogwert0 = 1023
65
66
Analogwert1 = Getadc(1)
67
If Analogwert1 > 1023 Then
68
Analogwert1 = 1023
69
End If
70
Gain = Analogwert1 / 100
71
72
Analogwert2 = Getadc(2)
73
If Analogwert2 > 1023 Then
74
Analogwert2 = 1023
75
End If
76
77
78
79
   If Analogwert0 < Analogwert2 And Analogwert0 > Hilfs Then
80
      I = 1
81
   End If
82
   If Analogwert0 < Analogwert2 And Analogwert0 <= Hilfs Then
83
      I = 2
84
   End If
85
   If Analogwert0 > Analogwert2 And Analogwert0 >= Hilfs Then
86
      I = 3
87
   End If
88
   If Analogwert0 > Analogwert2 And Analogwert0 < Hilfs Then
89
      I = 4
90
   End If
91
   If Analogwert0 = Analogwert2 Then
92
   I = 5
93
   End If
94
   If Pind.1 = 0 Then
95
   I = 6
96
   End If
97
98
Select Case I
99
   Case 1 : Hilfs = Analogwert0
100
            If Analogwert0 = 0 Then
101
            Analogwert0 = 1
102
            End If
103
            If Regelwert >= 511 Then
104
            Regelwert = 511
105
            End If
106
            If Regelwert <= Gain Then
107
            Compare1a = 255
108
            Else
109
            Regelwert = Regelwert - Gain
110
            If Regelwert <= 2 Then
111
            Regelwert = 2
112
            End If
113
            'If Portc.3 = 1 And Portc.4 = 0 Then
114
            'Portc.3 = 0
115
            'Waitms 10
116
            'Portc.4 = 1
117
            'Else
118
            'Portc.4 = 0
119
            'Waitms 10
120
            'Portc.3 = 1
121
            'End If
122
            Opv = Regelwert / 2
123
            Compare1a = 255 - Opv
124
            End If
125
   Case 2 : Hilfs = Analogwert0
126
            If Analogwert0 = 0 Then
127
            Analogwert0 = 1
128
            End If
129
            If Regelwert <= Gain Then
130
            Regelwert = Gain
131
            End If
132
            If Regelwert >= 500 Then
133
            Regelwert = 500
134
            End If
135
            Regelwert = Regelwert + Gain
136
            If Regelwert > 511 Then
137
            Regelwert = 511
138
            End If
139
            Opv = Regelwert / 2
140
            Compare1a = 255 - Opv
141
   Case 3 : Hilfs = Analogwert0
142
            If Analogwert0 = 0 Then
143
            Analogwert0 = 1
144
            End If
145
            If Regelwert >= 511 Then
146
            Regelwert = 511
147
            End If
148
            If Regelwert <= Gain Then
149
            Compare1a = 255
150
            Else
151
            Gain = Gain * 2
152
            If Regelwert <= Gain Then
153
            Regelwert = Gain + 2
154
            End If
155
            Regelwert = Regelwert - Gain
156
            Opv = Regelwert / 2
157
            'If Portc.3 = 1 And Portc.4 = 0 Then
158
            'Portc.3 = 0
159
            'Waitms 10
160
            'Portc.4 = 1
161
            'Else
162
            'Portc.4 = 0
163
            'Waitms 10
164
            'Portc.3 = 1
165
            'End If
166
            Compare1a = 255 - Opv
167
            End If
168
   Case 4 : Hilfs = Analogwert0
169
            If Analogwert0 = 0 Then
170
            Analogwert0 = 1
171
            End If
172
            Regelwert = Regelwert + 5
173
            If Regelwert >= 511 Then
174
            Regelwert = 511
175
            End If
176
            If Regelwert <= 2 Then
177
            Regelwert = 2
178
            End If
179
            Opv = Regelwert / 2
180
            Compare1a = 255 - Opv
181
   Case 5 : Opv = Regelwert / 2
182
            Compare1a = 255 - Opv
183
   Case 6 : Compare1a = 255
184
   End Select
185
186
Loop

von Falk B. (falk)


Lesenswert?

@  Günter Michaeller (gueee)

Warum postest du deinen Quelltext nicht als Anhang? Siehe 
Netiquette.

Deinem Quelltext fehlt es an Struktur, es fehlen u.a. Einrückungen, das 
verschlechtert die Lesbarkeit deutlich.

>... mit Bremse gemessen, je 1 Oszi-Kanal an Out1/4 und an Out2/3. Leider
>kein screenshot.

Nun, was erwartest du dort für ein Signal? Ein "normales" PWM-Signal 
wirst du dort nicht finden, denn deine Last ist ohmsch-induktiv. In der 
AUS-Phase der PWM speist die Bremse Energie zurück, das ist der 
klassische Freilauf einer Induktivität. Die externen Dioden tragen dann 
den Strom. Der ist entscheidend. Als musst du einen niederohmigen Shunt 
in die Leitung einfügen und darüber den Spannungsabfall messen. Oder du 
machst es gleich so, wie es der IC-Hersteller sinnvollerweise geplant 
hat. Schalten den Shunt zwischen SenseA/B und GND an IC5, dort kannst du 
dann sehr einfach den Strom durch deine Bremse gegen Masse messen.

MfG
Falk

P S Die olle Gurke von L298 würde ich heute nicht mehr nehmen wollen. 
Ein L6201/2/3 ist da um Längen besser.

von Günter M. (gueee)


Lesenswert?

Hallo,

nach genauerem hinsehen (Datenblatt), wäre mir ein L6203 auch lieber, 
naja.

Kann es sein, dass meine Freilaufdioden BY-500 zu langsam für den L298 
sind? Grenzwertig sind sie auf alle fälle, denn im Datenblatt vom L298 
wären trr<=200ns angegeben und im Datenblatt der Dioden ist die max trr 
200ns angegeben.
Einen L298 habe ich jetzt jedenfalls schon verheizt.

Bei 68 Ohm und 24V Vs dürfte der Strom ja nicht über 353mA gehen, was 
der L298 ja noch locker verkraften müsste!?

vielen Dank, vor allem an Falk Brunner.

von Falk B. (falk)


Lesenswert?

@  Günter Michaeller (gueee)

>sind? Grenzwertig sind sie auf alle fälle, denn im Datenblatt vom L298
>wären trr<=200ns angegeben und im Datenblatt der Dioden ist die max trr
>200ns angegeben.

Passt schon, sooo kritisch ist das nicht.

>Einen L298 habe ich jetzt jedenfalls schon verheizt.

Passiert halt, wenn viel Leistung im Spiel ist.

>Bei 68 Ohm und 24V Vs dürfte der Strom ja nicht über 353mA gehen, was
>der L298 ja noch locker verkraften müsste!?

Meinst du mit 68 Ohm den Wicklungswiderstand der Bremse? Ja, das ist 
kein Problem.

MFG
Falk

von Falk B. (falk)


Lesenswert?

Ach so, noch was. Dein Schaltplanausschnitt ist ja unvollständig, und 
schlecht lesbar. Was du auf jeden Fall brauchst ist ein fetter Elko NAH 
am L298, sagen wir max. 5cm entfernt, 1000uF sollten erstmal reichen. 
Und eine fette 27V Z-Diode parallel dazu, welche im Falle eines Falles 
die rückgespeiste Energie verheizt und die Spannung der 24V Versorgung 
begrenzt.

MFG
Falk

von Günter M. (gueee)


Lesenswert?

Danke Falk,

werde ich Beherzigen.
Den ELKO muss ich vermutlich 2 mit umgekehrter Polarität parallel zur 
Last schalten und Dioden werde ich auch 2 Fette 27V Z-Dioden 
antiparallel brauchen um auch die umgekehrte Stromrichtung ab zu decken, 
oder??
Bis ca. 2 cm käme ich an den L298 mit dem ELKO dran.

mfg
Günter

von Falk B. (falk)


Lesenswert?

@Günter Michaeller (gueee)

>Den ELKO muss ich vermutlich 2 mit umgekehrter Polarität parallel zur
>Last schalten und Dioden werde ich auch 2 Fette 27V Z-Dioden
>antiparallel brauchen um auch die umgekehrte Stromrichtung ab zu decken,
>oder??

NEIN! Der Elko gehört an +24V/GND, genauso wie die Z-Diode! Und deine 
Freilaufdioden sollten auch direkt, mit dickerem Draht an den Elko 
angebunden sein. Siehe Artikel Treiber.

>Bis ca. 2 cm käme ich an den L298 mit dem ELKO dran.

Passt.

MFG
Falk

von Günter M. (gueee)


Lesenswert?

@Falk,

die Leiterbahnen zwischen L298, Freilaufdioden, zusätzlichem ELKO und 
auch der Z-Diode sind 100mil breit und addiert ca. 5 cm Lang. Ich habe 
den Leistungsteil am Board sehr eng angeordnet.
Sollte an sich dann auch ohne dickere Drähte passen, oder?

mfg
Günter

P.S. fette 27V Z-Diode hab ich momentan nicht zur hand, würde es auch 
ein Varistor oder eine Suppressordiode tun?

von Falk B. (falk)


Lesenswert?

@  Günter Michaeller (gueee)

>die Leiterbahnen zwischen L298, Freilaufdioden, zusätzlichem ELKO und
>auch der Z-Diode sind 100mil breit und addiert ca. 5 cm Lang. Ich habe
>den Leistungsteil am Board sehr eng angeordnet.

Passt.

>Sollte an sich dann auch ohne dickere Drähte passen, oder?

Ja, das war damit gemeint.

>P.S. fette 27V Z-Diode hab ich momentan nicht zur hand, würde es auch
>ein Varistor oder eine Suppressordiode tun?

Sicher.

MFg
Falk

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.