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

    • Neu

      @Pluto25 wenn deine Schaltung abraucht, dann wird das nur zu einem 'ungenügend' langen. Ich würde mal sagen, zu einem 'ausreichend' dürfte der fet nur heiß werden. :D
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • Neu

      Ich habs nun herausgefunden. Der Fet war ein FDD6688. a_45_132ca9f5 30V Kein Wunder das der starb. Über 35/8V schluckte er die Energie der Spule was ihn schneller überhitzen ließ als ich das spüren konnte.
      Nun hab ich bis 4- Geschafft. Der Fet bleibt Cool aber die Diode (F12C20) wird warm sobald mehr als 4A hineinfließen. Was wirklich gut geht ist eine Strombegrenzung durch eine Pwmax (Taktverhältnissbegrenzung). Dafür ist die Spannungsregelung etwas überhecktisch.
    • Neu

      Probier doch mal mit den Werten aus dem Adwandler, also für die Regelung nicht in single umrechnen, und nur mit einem step auf oder ab bei dem pwm-Wert beim Regeln.
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • Neu

      Ich hatte es ein bisschen abgeändert.

      Quellcode

      1. $regfile = "m8def.dat"
      2. $crystal = 8000000
      3. $hwstack = $40
      4. $swstack = $40
      5. $framesize = $100
      6. $eepleave
      7. '$baud = 9600
      8. '$sim
      9. 'b0=Db4 b1=PWM b2=Bled b3=Mosi b4=Mi/Db5 b5=Sk/Rs b6=nc b7=nc
      10. 'c0=Usoll c1=Uist c2=Pmax c3=nc c4=Sda c5=Slc c6=/res c7=nu
      11. 'd0=Rx d1=Tx d2=dir d3=nc d4=nc d5=Db7 d6=E d7=Db6
      12. 'Solarplatine M8 2 Relais
      13. Ddrb = &B00110111
      14. Ddrc = $f0
      15. Portc = $f0
      16. Ddrd = $fe
      17. Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.4 , Db6 = Portd.7 , Db7 = Portd.5 , E = Portd.6 , Rs = Portb.5
      18. Config Lcd = 16 * 2 'Db7 von b1 auf D5 umlöten
      19. Lcd_backlight Alias Portb.2 : Set Lcd_backlight
      20. Initlcd
      21. Cursor Off
      22. Cls
      23. Config Timer0 = Timer , Prescale = 1024
      24. Start Timer0
      25. Config Adc = Single , Prescaler = Auto , Reference = Avcc
      26. Dim Usoll As Word
      27. Dim Usol As Byte At Usoll Overlay
      28. Dim Usoh As Byte At Usoll + 1 Overlay
      29. Dim Uist As Word
      30. Dim Uisl As Byte At Uist Overlay
      31. Dim Uish As Byte At Uist + 1 Overlay
      32. Dim Pmax As Word
      33. Dim Pmaxl As Byte At Pmax Overlay
      34. Dim Pmaxh As Byte At Pmax + 1 Overlay
      35. Dim Udiff As Integer
      36. Dim Pwm As Integer
      37. Dim Z As Byte , X As Byte
      38. Pwm1a = 0
      39. Tccr1a = &B10000010
      40. Tccr1b = &B00011001
      41. Capture1 = 256
      42. Config Portb.1 = Output
      43. On Adcc Adcint:
      44. 'Enable Adcc
      45. Enable Interrupts
      46. Z = 200
      47. Pmax = 0
      48. Do
      49. Incr Z
      50. If Z > 10 Then
      51. Adcsra = $86
      52. Admux = $40 'Soll
      53. Locate 1 , 1
      54. Adcsra = $c6
      55. Lcd "Ui"
      56. Usol = Adcl
      57. Usoh = Adch
      58. Admux = $42 'Ist
      59. Lcd Uist ; "dV Us"
      60. Adcsra = $c6
      61. Lcd Usoll ; "dV " 'usoll
      62. Pmaxl = Adcl
      63. Pmaxh = Adch
      64. Admux = $41
      65. Locate 2 , 1
      66. Adcsra = $ee
      67. Lcd "Pwm " ; Pwm
      68. Lcd " Max " ; Pmax ; " "
      69. Z = 0
      70. End If
      71. Do
      72. Loop Until Timer0 > 250
      73. Timer0 = 0
      74. Loop
      75. End
      76. Adcint:
      77. Uisl = Adcl
      78. Uish = Adch
      79. Udiff = Usoll - Uist
      80. Pwm = Pwm + Udiff
      81. If Pwm > Pmax Then Pwm = Pmax
      82. If Pwm < 0 Then Pwm = 0
      83. Pwm1a = Pwm
      84. Return
      Alles anzeigen
      Der Plan war es als 60V Netzteil für eine LED Röhre zu verwenden. Nun soll es Akkulader (28,4V) werden
    • Neu

      Du setzt einen linearen Zusammenhang mit pwm-Pulsbreite mit Uaus voraus. Den wird's nicht geben. Regel mal mit der halben Differenz nach.
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • Neu

      Also so:

      Quellcode

      1. 'On Adcc Adcint:
      2. 'Enable Adcc
      3. 'Enable Interrupts
      4. 'Z = 200
      5. Pmax = 0
      6. Do
      7. 'Incr Z
      8. 'If Z > 10 Then
      9. Adcsra = $86
      10. Admux = $40 'Soll
      11. Locate 1 , 1
      12. Adcsra = $c6
      13. Lcd "Ui"
      14. Templ = Adcl
      15. Temph = Adch
      16. If Tempw < 300 Then Usoll = Tempw
      17. Admux = $42 'Ist
      18. Lcd Uist ; "dV Us"
      19. Adcsra = $c6
      20. Lcd Usoll ; "dV " 'usoll
      21. Templ = Adcl
      22. Temph = Adch
      23. Admux = $41
      24. If Tempw < 192 Then Pmax = Tempw
      25. Locate 2 , 1
      26. Adcsra = $c6 '$ee
      27. Lcd "Pwm " ; Pwm ; " "
      28. Locate 2 , 8
      29. Lcd " Max " ; Pmax ; " "
      30. Z = 0
      31. 'End If
      32. 'Do
      33. 'Loop Until Timer0 > 250
      34. 'Timer0 = 0
      35. Uisl = Adcl
      36. Uish = Adch
      37. Udiff = Usoll - Uist
      38. '
      39. If Udiff > 0 Then
      40. Incr Pwm
      41. Else
      42. Pwm = Pwm + Udiff
      43. End If
      44. If Pwm > Pmax Then Pwm = Pmax
      45. If Pwm < 0 Then Pwm = 0
      46. Pwm1a = Pwm
      47. Waitms 3
      48. Loop
      49. End
      Alles anzeigen
      siehts ganz geschmeidig aus.(1A Netzteil und 10W Halogenlämpchen) Allerdings beim Lastabbruch donnert die Spannung nach oben. Aber dafür flakerts nicht mehr sichtbar :)
      Ich werds morgen mal mit richtigem Strom und Scope probieren
    • Neu

      @Pluto25 jetzt hast du ja noch bei jedem Schleifendurchlauf die Lcd-Anzeigen drin und die 3 mS Pause. Das ist genug Zeit für einen Spannungsschnalzer. Die Schleife so schnell wie möglich und die Anzeigerei 2x in der Sekunde.
      Nebenbei bemerkt, hast du dir jetzt paar 'Fleißpunkte' verdient. Ab 10 Stück, kannst du die in ein 'Fleißbildchen' tauschen.
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • Neu

      Pluto25 schrieb:

      Ich habs nun herausgefunden. Der Fet war ein FDD6688. a_45_132ca9f5 30V Kein Wunder das der starb. Über 35/8V schluckte er die Energie der Spule was ihn schneller überhitzen ließ als ich das spüren konnte.
      Nun hab ich bis 4- Geschafft. Der Fet bleibt Cool aber die Diode (F12C20) wird warm sobald mehr als 4A hineinfließen. Was wirklich gut geht ist eine Strombegrenzung durch eine Pwmax (Taktverhältnissbegrenzung). Dafür ist die Spannungsregelung etwas überhecktisch.
      Ist der Kühlkörper zu Klein?
      Eine Schottkydiode,z.B. MBR20CT, wäre wegen kleinerer UF besser
      Wolfgang
    • Neu

      tschoeatsch schrieb:

      linearen Zusammenhang mit pwm-Pulsbreite mit Uaus voraus
      leider doch. Jedenfalls sobald ein wenig Last (200mA) dranhängt hat er direkten Einfluß. Eigendlich dachte ich die Pulzzeitbegrenzung gut als Strombegrenzung nutzen zu können. Pustekuchen gerade mal 2 Volt weniger bei 2,5A Last. Mehr ging nicht (5A Eingang und dampfende Diode)

      4791 schrieb:

      Ist der Kühlkörper zu Klein?

      @4791 kein Kühlkörper der Ursprungsplan waren 60V 0,3A . Für die jetzige Anwendung dachte ich an eine 5803 oder Fr301?

      Mit dem jetzigen Code schwankt der Wert bis zu 3 Schritte aber die Spannung donnert immer noch hoch (Zeile35) und dann braucht er 6 Sekunden sich wieder zu fangen,

      Quellcode

      1. Pmax = 0
      2. Pmin = 196
      3. Locate 1 , 1
      4. Lcd "Ui"
      5. Locate 1 , 6
      6. Lcd "dV Us"
      7. Locate 1 , 14
      8. Lcd "dV"
      9. Locate 2 , 1
      10. Lcd "Pi"
      11. Locate 2 , 6
      12. Lcd "v"
      13. Locate 2 , 11
      14. Lcd "^"
      15. Admux = $40 'soll
      16. Adcsra = $e6
      17. Do
      18. Locate 1 , 11
      19. Templ = Adcl
      20. Temph = Adch
      21. Admux = $42 'pmaxwert
      22. If Tempw < 300 Then Usoll = Tempw '<30V
      23. Lcd Usoll ; " "
      24. Templ = Adcl
      25. Temph = Adch
      26. Admux = $41 'ist
      27. If Tempw < 192 Then Pwert = Tempw '<192/256
      28. Locate 2 , 12
      29. Lcd Pmax ; " "
      30. Uisl = Adcl
      31. Uish = Adch
      32. Udiff = Usoll - Uist
      33. Locate 1 , 3
      34. Lcd Uist ; " "
      35. If Udiff < -10 Then
      36. Pwm1a = 0
      37. Pwm = 0
      38. Else
      39. If Udiff > 0 Then
      40. Incr Pwm
      41. Else
      42. Decr Pwm
      43. 'Pwm = Pwm + Udiff
      44. End If
      45. If Pwm > Pwert Then Pwm = Pwert
      46. If Pwm < 0 Then Pwm = 0
      47. Pwm1a = Pwm
      48. End If
      49. If Pmin > Pwm Then Pmin = Pwm
      50. If Pmax < Pwm Then Pmax = Pwm
      51. Admux = $40 'ist
      52. Locate 2 , 3
      53. Lcd Pwm ; " "
      54. Locate 2 , 7
      55. Lcd Pmin ; " "
      56. Incr Z
      57. If Z = 250 Then
      58. Pmin = 196
      59. Pmax = 0
      60. End If
      61. Loop
      62. End
      Alles anzeigen
      Seltsam ist das fast identische Dos Bild . Wenn die Einbrüche während des Einlesens der anderen Adc Werte sind warum zeigt sich das nicht in Pmax/min?
    • Neu

      In Zeile 35 machst du eine 'Notabschaltung? Und dann braucht er 6 Sekunden, bis er wieder bis PWM=~160 hochgezählt hat? Für jeden Schleifendurchlauf eins mehr auf Pwm dazu. Hast du schon mal die Schleifendurchlaufzeit gemessen? Wo ist jetzt die Angabe von Pwert? Poste doch einfach das ganze Programm ;)

      Deine muxerei, Zeile 15, 21 und 26, 51 ist mir nicht ganz klar, welcher Kanal misst was?. Adcl/h sind gleich nach Angabe von admux stabil zur Verfügung? Kein Abwarten der Messung notwendig? Gab's da nicht einen kleinen C, der sich erst laden/entladen muss, wenn man den Kanal wechselt?
      Raum für Notizen

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

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

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

    • Neu

      tschoeatsch schrieb:

      Wo ist jetzt die Angabe von Pwert? Poste doch einfach das ganze Programm
      Pwert war früher Pmax welches nun den höcht erreichten Wert wiedergibt Pwert wird nicht mehr Angezeigt. Display zu klein/timing. Der Rahmen des Programms ist immer der selbe.

      Quellcode

      1. $regfile = "m8def.dat"
      2. $crystal = 8000000
      3. $hwstack = $40
      4. $swstack = $40
      5. $framesize = $100
      6. $eepleave
      7. '$baud = 9600
      8. '$sim
      9. 'b0=Db4 b1=PWM b2=Bled b3=Mosi b4=Mi/Db5 b5=Sk/Rs b6=nc b7=nc
      10. 'c0=Usoll c1=Uist c2=Pmax c3=nc c4=Sda c5=Slc c6=/res c7=nu
      11. 'd0=Rx d1=Tx d2=dir d3=nc d4=nc d5=Db7 d6=E d7=Db6
      12. 'Solarplatine M8 2 Relais
      13. Ddrb = &B00110111
      14. Ddrc = $f0
      15. Portc = $f0
      16. Ddrd = $fe
      17. Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.4 , Db6 = Portd.7 , Db7 = Portd.5 , E = Portd.6 , Rs = Portb.5
      18. Config Lcd = 16 * 2 'Db7 von b1 auf D5 umlöten
      19. Lcd_backlight Alias Portb.2 : Set Lcd_backlight
      20. Initlcd
      21. Cursor Off
      22. Cls
      23. Config Timer0 = Timer , Prescale = 1024
      24. Start Timer0
      25. Config Adc = Single , Prescaler = Auto , Reference = Avcc
      26. Dim Usoll As Word , Uist As Word , Pwert As Word , Tempw As Word
      27. Dim Uisl As Byte At Uist Overlay
      28. Dim Uish As Byte At Uist + 1 Overlay
      29. Dim Templ As Byte At Tempw Overlay
      30. Dim Temph As Byte At Tempw + 1 Overlay
      31. Dim Udiff As Integer
      32. Dim Pwm As Integer
      33. Dim Z As Byte , X As Byte , Pmin As Byte , Pmax As Byte
      34. Pwm1a = 0
      35. Tccr1a = &B10000010
      36. Tccr1b = &B00011001
      37. Capture1 = 256
      38. Readeeprom Usoll , 0
      39. Incr Usoll
      40. Writeeeprom Usoll , 0
      41. Config Portb.1 = Output
      42. 'On Adcc Adcint:
      43. 'Enable Adcc
      44. 'Enable Interrupts
      45. 'Z = 200
      46. Pmax = 0
      47. Pmin = 196
      48. Locate 1 , 1
      49. Lcd "Ui"
      50. Locate 1 , 6
      51. Lcd "dV Us"
      52. Locate 1 , 14
      53. Lcd "dV"
      54. Locate 2 , 1
      55. Lcd "Pi"
      56. Locate 2 , 6
      57. Lcd "v"
      58. Locate 2 , 11
      59. Lcd "^"
      60. Admux = $40 'soll
      61. Adcsra = $e6
      62. Do
      63. Locate 1 , 11
      64. Templ = Adcl
      65. Temph = Adch
      66. Admux = $42 'pmaxwert
      67. If Tempw < 300 Then Usoll = Tempw '<30V
      68. Lcd Usoll ; " "
      69. Templ = Adcl
      70. Temph = Adch
      71. Admux = $41 'ist
      72. If Tempw < 192 Then Pwert = Tempw '<192/256
      73. Locate 2 , 12
      74. Lcd Pmax ; " "
      75. Uisl = Adcl
      76. Uish = Adch
      77. Udiff = Usoll - Uist
      78. Locate 1 , 3
      79. Lcd Uist ; " "
      80. If Udiff < -10 Then
      81. Pwm1a = 0
      82. Pwm = 0
      83. Else
      84. If Udiff > 0 Then
      85. Incr Pwm
      86. Else
      87. Decr Pwm
      88. 'Pwm = Pwm + Udiff
      89. End If
      90. If Pwm > Pwert Then Pwm = Pwert
      91. If Pwm < 0 Then Pwm = 0
      92. Pwm1a = Pwm
      93. End If
      94. If Pmin > Pwm Then Pmin = Pwm
      95. If Pmax < Pwm Then Pmax = Pwm
      96. Admux = $40 'ist
      97. Locate 2 , 3
      98. Lcd Pwm ; " "
      99. Locate 2 , 7
      100. Lcd Pmin ; " "
      101. Incr Z
      102. If Z = 250 Then
      103. Pmin = 196
      104. Pmax = 0
      105. End If
      106. Loop
      107. End
      108. Adcint:
      109. Uisl = Adcl
      110. Uish = Adch
      111. Udiff = Usoll - Uist
      112. '
      113. If Udiff > 0 Then
      114. Incr Pwm
      115. Else
      116. Pwm = Pwm + Udiff
      117. End If
      118. If Pwm > Pmax Then Pwm = Pmax
      119. If Pwm < 0 Then Pwm = 0
      120. Pwm1a = Pwm
      121. Return
      Alles anzeigen