Ich habe einen FET zerstört

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • Na Zeile 100 verwendet Pwert, setzt aber nix. Und in Zeile 82 wird jetzt Pwert mit der Ist_Spannung gesetzt? Die ist ja nach der Notabschaltung erstmal auf der Eingangsspannung, also eher niedrig. Dann wird das incr Pwm doch recht ausgebremst. Und jetzt einen Adwert der Spannungsmessung mit der Pulsbreite gleichsetzen, finde ich gewagt, dass das zusammenpasst. Pwm=0 ergibt ja immernoch eine Uist, halt die Eingangsspannung etwa.

      Und danke, ihr habt mich geheilt.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von tschoeatsch ()

    • tschoeatsch schrieb:

      Adcl/h sind gleich nach Angabe von admux stabil zur Verfügung?
      Nein normalerweise würde der Adc danach gestartet (früher Adcsra = $c6). Jetzt läuft er frei und benötigt die Zeit der laufenden + umschalten +eine "kaputte" + eine richtige Konvertierung . Da der Zugriff aufs Lcd sowieso länger braucht konnte ich Wartezeit sparen. in einer älteren Version wurde umgeschaltet Waitµs 50, gestartet, waitµs 100 und gelesen.
      Admux bit 0-2 sind die Adc Kanäle 41 =Adc(1) (die 4 vorn fur Vref=Vcc)
    • tschoeatsch schrieb:

      Dann wird das incr Pwm doch recht ausgebremst.
      Die ist nur noch toter Code - ich hatte vergessen sie rauszulöschen. Sie wurde mit Adcsra = $ee freigeschaltet. Sorry ich werde mal besser Kommentieren. Der Pwert wird über ein Poti an Adc2 eingelesen und sollte mal Strombegrenzung werden, sorgt aber bei "Überlast" für eine relativ stabile Spannung unterhalb Usoll. 0,2-2A
    • Ok, wird klarer, pwert wird mit poti vorgegeben. Trotzdem, nach einem starken Überschwinger wird pwm=0 gesetzt. Jetzt ist Usoll>Uist und pwm wird inkrementiert. Das müsste nach 100+ Durchläufen soweit erhöht sein, dass nicht weiter inkrementiert wird. 6 Sekunden bekommt man doch nur mit einer lahmarschigen Schleife hin. (alles ok, kein böses, verbotenes Wort)
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • tschoeatsch schrieb:

      mit einer lahmarschigen Schleife hin
      Oder nem Lcd. Der Bascom Code der das Lcd versorgt kann nicht nach Busy fragen (kein R/W) und ist daher so langsam das es sich auch dann nicht verschluckt wenn wie ein Wahnsinniger drauflosgeschrieben wird. a_20_e8d7189d 213mal pro sekunde a_447_3df864b7 (160Pmw bei 6 sekunden mal 8 Lcd Anweisungen) Sowas tue ich den Kerlchen normalerweise nicht an a_71_f9c57bbe
      Aber da YdnAm vermutlich kein Interesse an/Verwendung für diesen Code hat werde ich die Sache mal ganz anders angehen. a_563_31ebf57e
      Programm folgt sowie die Pre Alpha steht. ;)
    • Wenn du alle display-Ausgaben in ein Block steckst und den alle 100 Schleifendurchläufe anspringst (sowas hattest du schon mal, ist jetzt wieder weg), bei Udiff <>0 nicht nur pwm in Einerschritten änderst, sondern 1+Udiff/5 (als Beispiel) nimmst?
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • tschoeatsch schrieb:

      hattest du schon mal
      und es war ganz furchtbar. <X Der Ausgang flackerte. der Pwm-zitterte wie verrückt und der Fet starb. Beim letzterem war allerdings nicht der Code schult ;) . Ich habe nun einen etwas anderen Ansatz. Mal sehen ob ich morgen zum Löten komm.

      BASCOM-Quellcode

      1. $regfile = "attiny13a.dat"
      2. $crystal = 9600000
      3. $hwstack = 8
      4. $swstack = 8
      5. $framesize = 16
      6. $eepleave
      7. 'b0=Mo/oc0a b1=Mi/Led1 b2=Sck/Led2 b3=Led3 b4=Adc2 b5=/Reset b6=nc b7=nc
      8. Ddrb = $0f
      9. 'Config Adc = Single , Prescaler = 64 , Reference = Avcc
      10. Dim Uist As Word , Pmax As Word , Tempw As Word
      11. Dim Uisl As Byte At Uist Overlay
      12. Dim Uish As Byte At Uist + 1 Overlay
      13. Dim Pwm As Integer
      14. Ocr0a = 0
      15. Tccr0a = &B10000011
      16. Tccr0b = &B00001001
      17. Readeeprom Tempw , 0 'Start/Brennzähler
      18. Incr Tempw 'Flashzerstörungsschutz
      19. Writeeeprom Tempw , 0
      20. Config Portb.1 = Output
      21. Pmax = 196 'Wert Spulen/Takt abhängig
      22. Admux = 42 'Adc(2) auwählen
      23. On Adcc Adcint: 'nur für Simulator?
      24. Enable Interrupts 'nur für Simulator?
      25. Adcsra = $ee ' Adc Freilauf starten
      26. Do
      27. nop
      28. Tempw = Pmax - 10
      29. If Pwm > Tempw Then
      30. Portb = 2 ' Led "überlast" Ladeendsspannung nicht erreicht
      31. Elseif Pwm < 10 Then
      32. Portb = 4 'Led Ladung fertig /Accu fehlt
      33. Else
      34. Portb = 8 'Led Accu 80%
      35. End If '
      36. Loop
      37. End
      38. Adcint:
      39. Uisl = Adcl
      40. Uish = Adch
      41. If Uist < 500 Then '500 mittlerer Adc Wert. Poti im
      42. Incr Pwm 'Istwert Spannungsteiler
      43. Elseif Uist > 500 Then
      44. Decr Pwm
      45. End If
      46. If Pwm > Pmax Then Pwm = Pmax 'sonst brennts
      47. If Pwm < 0 Then Pwm = 0 'sonst knallts (0-1=255)
      48. Ocr0a = Pwm
      49. Return
      Alles anzeigen

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Pluto25 ()

    • @Pluto25 da hast du vielleicht einfach zu heftig geregelt. Du hast mal Udiff als Änderung für Pwm verwendet. Aber Udiff ist ja ein Wert, der von deinen Spannungsteilern abhängt, also eigentlich von der Größenordnung her eine willkürliche Zahl ist. Wenn du eben mal nur einen Bruchteil davon nimmst, Udiff/5, oder noch kleiner um den Wert an den Zahlenbereich von Pwm anzupassen. Um wieviel ändert sich eigentlich die Spannung bei verändern der Pwm um 1? Oder wie groß ist bei gleicher Uist der Wert von Pwm bei I min und I max? Diese Pwm-Differenz wäre doch ein Wert, den man zum Regeln nicht überschreiten sollte, oder?
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von tschoeatsch ()

    • Also ich muss stauen was ihr da vor habt.
      Aber mit dem Code sehe ich schwarz!

      Ich sehe da nur einen I-Regler. Und der kann bei einem Netzteil mit Lastwechsel nicht funktionieren.
      (Bei Last-Zuschaltung geht das ding in die Knie und wenn Last abgeklemmt wird, geht Spannung in Anschlag.)

      Ein reiner P-Regler geht auch nicht. Mindestens ein PI-Regler, besser ein PID-Regler ist da von Nöten.

      Was auch fehlt bei dem I-Regler-Code:
      Dein I-Anteil, der zur I-Summe aufaddiert wird, ist immer auch von der Zeit abhängig.

      (ISumme= ISumme + e * Ki * t)

      Deshalb muss der I-Anteil immer in gleichen Zeitabständen neu ermittelt und mit der Zeit verrechnet werden.
      Ich empfehle die Messung und die Regelung in eine Timer-Interrupt zu erledigen.
      Damit wird der Fehler immer gleich aufaddiert und ist dicht von Hauptschleifen-Durchsatz abhängig.
    • tschoeatsch schrieb:

      Um wieviel ändert sich eigentlich die Spannung bei verändern der Pwm um 1? Oder wie groß ist bei gleicher Uist der Wert von Pwm bei I min und I max?
      Das ist das Problem es ist absolut Lastabhangig ohne Last pendelt er zwischen 0 und 1 mit ein bischen (10xmA) Last liegt er schon über 70 und verhält sich dann fast linear bis 1A bei 190 (28V) im Regelbereich. Im "überlastbereich"(=Uist <Usoll da pwert begrenzt) z.B. mit 96 16V bei 0,2A und 14V bei 2,5A
      Also nicht irgendwas woraus ich einen vernünftigen P-Wert konstruieren könnte?

      Mitch64 schrieb:

      Deshalb muss der I-Anteil immer in gleichen Zeitabständen
      Der freilaufende Adc ergibt eine konstante Zeit - da steht der Probelauf noch aus.

      Mitch64 schrieb:

      Damit wird der Fehler immer gleich aufaddiert und ist dicht von Hauptschleifen-Durchsatz abhängig.
      Scheinbar doch - Werden die Ints abgeschaltet beim Lcd-Befehl? (Sie wurden abgeschaltet beim messen der anderen ADCs)
      Da stehen auch die Lötarbeiten noch aus.
    • @Pluto25
      In den Zeilen 19 und 20 (Post #28) konfiguriert du deinen Timer 0.
      Den Registerwerten zur Folgen verwendest du Prescale 0, also bekommt der Timer 9,6MHz.

      Weiterhin wird durch deine Konfiguration der Timer im Mode 7 (nach Datenblatt) betrieben, was den Fast-PWM-Mode entspricht.

      Das Register OCR0A bestimmt hierbei die resultierende PWM-Frequenz.
      Wenn du also das OCR0A-Register in der ISR ansteuerst, änderst du die PWM-Frequenz des Timers, nicht aber das Tastverhältnis.

      Um das Tastverhältnis zu ändern (Dein Ausgang ist ja am OC0B), musst du das Register OCR0B ändern.
      Das ORC0A muss auf einem festen Wert verbleiben.

      Ich habe weiter oben mal was von 100kHz PWM gelesen. Dann muss OCR0A=95 sein.

      Und ORC0B im Bereich 0 bis maximal 95. Kannst du mal angeben,
      • Welche Eingangsspannung du hast mit Spannungsteiler (Widerstandsangabe), und
      • welche Ausgangsspannung gewünscht ist, und
      • welchen Spannungsteiler du am Ausgang hast (Widerstandsangabe) und
      • Welche PWM-Frequenz du verwenden willst?
      Wenn dir eine PWM-Frequenz von 37kHz reichen würden, hättest du PWM-Werte 0-266 zur Verfügung.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Mitch64 ()

    • Ich dachte jetzt auch, der B-Kanal wird für den top-Wert verwendet und macht die Frequenz. Hab aber grad kein Datenblatt parat.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Mitch64 schrieb:

      In Zeile 30 (Post #28) weist du dem ADMUX-Register dezimal 42 zu.
      Ja a_67_e210de67 ich dachte schon den Mega gekillt zu haben.
      Mode 7 ist wohl falsch beim M8 war 6 den gibts dort nicht. Richtig wäre wohl Mode 3 oc0a soll Ausgang werden. Die 3x khz reichen im Moment. Würden 96 (ca80 damit er keinen Kurzschluß macht) reichen für eine brauchbare Regelung? Dann würde die Wicklung kleiner.
      Eingangsspannung 11-14V (Autobatterie)
      Ausgang 20,4V später ein weiterer mit 60V ( Sobald ich eine Fet habe der die Spannung mitmacht)
      Spannungsteiler (noch am Mega8 ) Gnd-4k7-adc-6k8-Poti 25k für Uein - 3xV
      Pwm Frequenz s.o. Vorschläge?

      ich hatte obrigen Code in dem Mega drinn (ohne die Led abfrage) und dann festgestellt das ich ein richtiges Scope brauche. Aber als Lader der Led Versorger sollte es schon reichen. Mir fehlt der Ansatz für einen P-Wert Möglicherweise könnt Ihr was herausleiten?
      Eingangsspannung 11,3V Ausgangsoll 20,3V

      Quellcode

      1. Pmax Uaus Iaus Iein
      2. 39 20,3 0,0 ?
      3. 39 14,0 0,16 ?
      4. 39 12,5 1,75 ?
      5. 109 20,3 0,2 0,47
      6. 109 19,1 0,78 1,52
      7. 109 17,3 2,12 3,90
      8. 152 20,3 0,2 0,47
      9. 152 20,3 0,87 1,67
      10. 152 20,3 1,02 2,11
      11. 152 20,3 2,32 5,21
      Alles anzeigen
      Ein Ansatz für eine Strombegrenzung wäre schön. (Ein NTC im Spannungsteiler? - Zu billig oder?)

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Pluto25 ()

    • Mode 3 kannst du nehmen, dann hast du eine 8-Bit PWM. Kannst also regeln mit 0 bis 255.
      In dem Fall kannst du dann auch den OC0A-Pin verwenden.

      Bei PWM-Frequenz 100kHz, wäre die Regelung mit 0 - 96 schlecht. - Vermute ich mal.
      In dem Fall vielleicht besser ein ext. Quarz anhängen mit höherer Frequenz.

      Wenn du von den 9,6MHz als Takt ausgehst und eine 8-Bit PWM machst, dann hast du
      37500 Hz PWM-Frequenz (Fast PWM).

      Grundsätzlich wird mit steigender Frequenz die Spule kleiner. Aber die Schaltverluste am FET steigen.
      Übliche Schaltnetzteilfrequenzen sind oberhalb des Hörbereichs, also ab ca. 20kHz.
      Mit den 37kHz wäre das also vertretbar.

      Wegen der Widerstände wäre eine Skizze (Schaltbild) glaube ich hilfreicher mit Wertangaben der Bauteile.
      Das hilft auch beim Programmieren. Denn solche Kopf-Schaltbilder funktionieren vielfach nur im Kopt!