www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Magnetbremse L298 ATmega8?


Autor: Günter Michaeller (gueee)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier der Link zum ersten Thread

Beitrag "L295 Entmagnetisierung?"

Autor: Günter Michaeller (gueee)
Datum:

Bewertung
0 lesenswert
nicht 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.

'Definition für Mega 8
$regfile "m8def.dat"

'Taktfrequenz (8Mhz)
$crystal = 8000000

'Konfiguration der Analogeingänge
Config Adc = Single , Prescaler = Auto , Reference = Avcc

'Konfiguration Timer 1 für Hardware-PWM an OC1A (B.1)
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Prescale = 8

'Konfiguration der Ports
Config Portb = Output
Config Portc.0 = Input
Config Portc.1 = Input
Config Portc.2 = Input
Config Portc.3 = Output
Config Portc.4 = Output
Config Portd = Input

'======================================================
'Deklarationen
'======================================================

Dim Analogwert0 As Word
Dim Analogwert1 As Word
Dim Gain As Word
Dim Analogwert2 As Word
Dim Regelwert As Word
Dim Hilfs As Word
Dim Korrektur As Word
Dim Opv As Word
Dim I As Byte

'======================================================
'Initialisierungen
'======================================================
'Anschaltung der Analogwert-Verarbeitung
Start Adc

Portb = &B00000000
Portd = &B00000000

'Start des PWM-Timers
'Enable Timer1
Timer1 = 0
Start Timer1
Regelwert = 511
Portd.1 = 1
Portc.3 = 0
Portc.4 = 1


'======================================================
'Hauptprogramm
'======================================================
Hilfs = Getadc(2)

Do

'Analogwert vom Poti einlesen, umrechnen und formieren
Analogwert0 = Getadc(0)
If Analogwert0 > 1023 Then Analogwert0 = 1023

Analogwert1 = Getadc(1)
If Analogwert1 > 1023 Then
Analogwert1 = 1023
End If
Gain = Analogwert1 / 100

Analogwert2 = Getadc(2)
If Analogwert2 > 1023 Then
Analogwert2 = 1023
End If



   If Analogwert0 < Analogwert2 And Analogwert0 > Hilfs Then
      I = 1
   End If
   If Analogwert0 < Analogwert2 And Analogwert0 <= Hilfs Then
      I = 2
   End If
   If Analogwert0 > Analogwert2 And Analogwert0 >= Hilfs Then
      I = 3
   End If
   If Analogwert0 > Analogwert2 And Analogwert0 < Hilfs Then
      I = 4
   End If
   If Analogwert0 = Analogwert2 Then
   I = 5
   End If
   If Pind.1 = 0 Then
   I = 6
   End If

Select Case I
   Case 1 : Hilfs = Analogwert0
            If Analogwert0 = 0 Then
            Analogwert0 = 1
            End If
            If Regelwert >= 511 Then
            Regelwert = 511
            End If
            If Regelwert <= Gain Then
            Compare1a = 255
            Else
            Regelwert = Regelwert - Gain
            If Regelwert <= 2 Then
            Regelwert = 2
            End If
            'If Portc.3 = 1 And Portc.4 = 0 Then
            'Portc.3 = 0
            'Waitms 10
            'Portc.4 = 1
            'Else
            'Portc.4 = 0
            'Waitms 10
            'Portc.3 = 1
            'End If
            Opv = Regelwert / 2
            Compare1a = 255 - Opv
            End If
   Case 2 : Hilfs = Analogwert0
            If Analogwert0 = 0 Then
            Analogwert0 = 1
            End If
            If Regelwert <= Gain Then
            Regelwert = Gain
            End If
            If Regelwert >= 500 Then
            Regelwert = 500
            End If
            Regelwert = Regelwert + Gain
            If Regelwert > 511 Then
            Regelwert = 511
            End If
            Opv = Regelwert / 2
            Compare1a = 255 - Opv
   Case 3 : Hilfs = Analogwert0
            If Analogwert0 = 0 Then
            Analogwert0 = 1
            End If
            If Regelwert >= 511 Then
            Regelwert = 511
            End If
            If Regelwert <= Gain Then
            Compare1a = 255
            Else
            Gain = Gain * 2
            If Regelwert <= Gain Then
            Regelwert = Gain + 2
            End If
            Regelwert = Regelwert - Gain
            Opv = Regelwert / 2
            'If Portc.3 = 1 And Portc.4 = 0 Then
            'Portc.3 = 0
            'Waitms 10
            'Portc.4 = 1
            'Else
            'Portc.4 = 0
            'Waitms 10
            'Portc.3 = 1
            'End If
            Compare1a = 255 - Opv
            End If
   Case 4 : Hilfs = Analogwert0
            If Analogwert0 = 0 Then
            Analogwert0 = 1
            End If
            Regelwert = Regelwert + 5
            If Regelwert >= 511 Then
            Regelwert = 511
            End If
            If Regelwert <= 2 Then
            Regelwert = 2
            End If
            Opv = Regelwert / 2
            Compare1a = 255 - Opv
   Case 5 : Opv = Regelwert / 2
            Compare1a = 255 - Opv
   Case 6 : Compare1a = 255
   End Select

Loop

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Günter Michaeller (gueee)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Günter Michaeller (gueee)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Günter Michaeller (gueee)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.