Geregelter Aufwärtswandler 12V/24V

    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!

    • Wenn du die PWM eingerichtet hast, gibt es eine Variable, die die Breite des Pulses am Ausgangspin angibt. Der Wert geht von 0 bis zu einer Grenze, bei dessen Pulsweite der Transistor noch nicht zerstört wird. Diese Variable hab' ich im Beispiel mit pwm1a benannt.
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • Lest mal in der Aufgaben-Stellung unter

      Technische Daten des Aufwärtswandlers

      Da steht welche Messbereiche für die Eingangsspannung und die Ausgangsspannung abzudecken sind.
      Daraus ergeben sich vorgegebene Spannungsteiler-Verhältnisse.

      Die haben auf den AD-Wert unmittelbaren Einfluss.

      Kurz gesagt, der AD-Wert für die Ausgangsspannung ist nicht 500 bei 24V, wenn der Spannungsteiler korrekt ausgelegt ist!
    • Mitch64 schrieb:

      Lest mal in der Aufgaben-Stellung unter

      Technische Daten des Aufwärtswandlers

      Da steht welche Messbereiche für die Eingangsspannung und die Ausgangsspannung abzudecken sind.
      Daraus ergeben sich vorgegebene Spannungsteiler-Verhältnisse.

      Die haben auf den AD-Wert unmittelbaren Einfluss.

      Kurz gesagt, der AD-Wert für die Ausgangsspannung ist nicht 500 bei 24V, wenn der Spannungsteiler korrekt ausgelegt ist!
      Ja, gut, du hast Recht. Krieg eine 4- dafür. :(
      Raum für Notizen

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

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

      Weiter oben wurde von @six1 schon erklärt, wie der Spannungsteiler zu gestalten ist, damit der Wert aus dem Adwandler so um die 500 beträgt, wenn die 24V anliegen. Diese 500 wären ja auch der Sollwert, entspricht ja den 24V.
      Also
      sollwert=500
      do
      istwert=getadc(der Kanal, wo der Spannungsteiler angeschlossen ist)
      if istwert<sollwert then
      if pwm1a<grenzwert then incr pwm1a !Achtung, das muss deiner timereinstellung entsprechen!
      'das ist jetzt die Abfrage, um nicht in einen Bereich zu kommen, wo der Transistor zerstört werden könnte
      end if
      if istwert>sollwert then
      if pwm1a>0 then decr pwm1a
      'das ist jetzt die Abfrage, dass der Wert für die PWM nicht in einen ungültigen Bereich kommt
      end if
      loop
      Das ist jetzt eine Endlosschleife, würde aber die Spannung regeln. Wie schon @Mitch64 erwähnte, könnte man diese Regelung in einen interrupt packen, der zB alle 5 bis 10 mS aufgerufen wird. Dann regelt die so vor sich hin und im Hauptprogramm kann man die Spannungen in V umrechnen und im display anzeigen lassen. Oder mit dem Poti den sollwert neu vorgeben.
      ok, ich versuche dann mal mein programm umzuschreiben
    • tschoeatsch schrieb:

      Ja, gut, du hast Recht. Krieg eine 4- dafür.
      :D wegen Abschreibens :D

      Ok, Messbereich Ua=0-33V

      Demnach sollen bei 33V über dem Teiler 5V anstehen.
      33V/5V=6.6

      Der Teiler muss ein Verhältnis von 1:6.6 haben

      z.B. 10K gegen Masse und 56K gegen +24V

      Ein Step des ADC Wandler ist:
      33V / 1023 = 0.032258064V

      Der ADC Wert für 24V ist demnach:
      24V / 0.032258064V = 744

      Den Wert von 744 als WERT_IST musst du sicher noch etwas anpassen, da der Vorteiler wegen Toleranzen nicht 100%ig sein wird.
      Code first, think later - Natural programmer :D
    • Hallo YdnAm,

      Beispiele und Hinweise wie sie von Sixx, Tschoeatsch, Mitch und anderen vorgestellt wurden, sind für Newcomer immer sehr hilfreich. Falls du noch ein Beispiel für die Generierung der 100kHz PWM suchen solltest, findest du unten eines.


      Das Beispiel verwendet den Fast-PWM-Mode, bei welchem der Timer1 bis zu seinem Top-Wert (gegeben durch ICR-Register) rennt und dann wieder von vorne anfängt. PWM1A bestimmt dabei, wann der Ausgangsimpuls starten soll, d.h. bei einem Tastverhältnis von 50% muss PWM1A also auf Hälfte des Top-Werts gesteuert werden, bei höheren PMW1A Werten wird der Ausgangsimpuls immer kleiner, aber PWM1A darf niemals gleich oder größer als der Top-Wert sein.(ICR-Register) werden. Es muß in der Regelschleife also eine entsprechende Begrenzung vorgesehen werden.

      Liegt der Print schon vor, und ist er schon bestückt?

      Quellcode

      1. 'Modus: Fast PWM /Fig. 16.9.2 sowie Table 16.4 ==> Mode 14
      2. ' ( aus Atmega 328 Datasheet)
      3. ' Timer1-Top-Wert durch ICR1-Wert festgelegt für 100kHz Puls-Frequenz
      4. ' Pulsbreite durch PWM1A (OCR1A) gesteuert
      5. Config Portb.1 = Output
      6. Tccr1a = &B10000010 'Fast PWM /WGM11=1,WGM10=0
      7. Tccr1b = &B00011001 'Fast PWM /WGm13=1, WGM12=1
      8. Icr1l = 160 'ICR = Top-Wert für 100kHz (16MHz Quarz)
      9. Icr1h = 0
      10. Pwm1a = 80 'Start-wert für 50% Duty-cycle
      11. 'Ocr1al = 80 'altenativ für PWM1A
      12. 'Ocr1ah = 0
      Alles anzeigen
    • Ulrich schrieb:

      Falls du noch ein Beispiel für die Generierung der 100kHz PWM suchen solltest, findest du unten eines.
      Da wird Freude aufkommen, für Anfänger (auch für mich) ist das Raussuchen der Register schon nicht ohne.

      @Ulrich das ist schon sehr gut und hilfreich. Was hältst du von meinem Vorschlag, die Register so zu stellen, dass ein größerer Wert für Pwm1a auch einen breiteren Puls gibt? Höherer Wert, dann höhere Ausgangsspannung. Das würde dann mit den Werten vom Adwandler korrespondieren, höherer Wert, höhere gemessene Spannung. Dann ist es ja noch so eine Sache beim Einschalten. Der PWM-pin ist anfangs ein input, wird der zum output konfiguriert, dann hat der erstmal den Wert=0. Das passt soweit, jetzt würde ich die PWM durch Setzen der Register 'anwerfen', auf Pulsweite=0 stellen und dann erst die Pulsweite auf den Ausgangspin schalten, auch durch Setzen des Registers. Dann hätte man, denke ich, ein sicheres Hochfahren, ohne das der Fet ungewollt mal einschaltet.
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • Hallo Tschoeatsch,

      du hast ja völlig recht: es sollte die invertierte Variante gewählt werden. Im Beispiel sind beide Varianten gezeigt.

      Laut Schaltbild liegt am Fetdriver-Eingang ein 47k Widerstand nach GND (OC1A-Pin), d.h. der Fet sollte nicht ungewollt einschalten.

      Quellcode

      1. 'Modus: Fast PWM /Fig. 16.9.2 sowie Table 16.4 ==> Mode 14
      2. ' ( aus Atmega 328p Datasheet-ff)
      3. ' Timer1-Top-Wert durch ICR1-Wert festgelegt für 100kHz Puls-Frequenz
      4. ' Pulsbreite durch PWM1A (OCR1A) gesteuert
      5. Config Portb.1 = Output
      6. 'Tccr1a = &B10000010 'Fast PWM /WGM11=1,WGM10=0 OC1A ==> non-inverted
      7. 'Tccr1b = &B00011001 'Fast PWM /WGm13=1, WGM12=1
      8. Tccr1a = &B11000010 'Fast PWM /WGM11=1,WGM10=0 OC1A ==> inverted
      9. Tccr1b = &B00011001 'Fast PWM /WGm13=1, WGM12=1
      10. Icr1l = 160 'ICR = Top-Wert für 100kHz (16MHz Quarz)
      11. Icr1h = 0
      12. Pwm1a = 80 'Start-wert für 50% Duty-cycle
      13. 'Ocr1al = 80 'altenativ für PWM1A
      14. 'Ocr1ah = 0
      Alles anzeigen
    • Sorry, leider habe leider einwenig vertauscht a_67_e210de67 a_45_132ca9f5

      hallo YdnAm,

      wenn die bestückte Platine mit dem Lehrer-Programm läuft, dann ist ja schon das Meiste gewonnen.

      Im oberen Beispiel aus #132 habe ich die TCCRA-Register so gesetzt, dass mit größeren PWM1A-Werten
      auch ein breiterer Impuls schmalerer Impuls erreicht wird.

      Viel Spaß und Erfolg beim weiteren Programmieren.

      Edit: TCCR1A &B11000010 bedeutet höhere Spannung ==> kleinere Impulsbreiten, also "inverted"
      . TCCR1A &B10000010 bedeutet höhere Spannung ==> größere Impulsbreiten, also "non-inverted"

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

    • Hallo YdnAm,

      dass du die Umwandlung hinbekommst, davon bin ich überzeugt.

      Könntest du eventuell ein Foto der bestückten Leiterkarte hier vorstellen?
      Ist dir bekannt, für welche Anwendung dieses Up-Converter Beispiel gedacht wurde?
      Denn wenn der Converter um eine Strom-Messung+Programmanteil erweitert wird, kann er auch als Maximum-Power-Point-Tracker (MPPT) für Solarzellen eingesetzt werden.
    • Ulrich schrieb:

      Hallo YdnAm,

      dass du die Umwandlung hinbekommst, davon bin ich überzeugt.

      Könntest du eventuell ein Foto der bestückten Leiterkarte hier vorstellen?
      Ist dir bekannt, für welche Anwendung dieses Up-Converter Beispiel gedacht wurde?
      Denn wenn der Converter um eine Strom-Messung+Programmanteil erweitert wird, kann er auch als Maximum-Power-Point-Tracker (MPPT) für Solarzellen eingesetzt werden.
      Meinst du ein Foto der PLatine mit den Leiterbahnen?
    • Ulrich schrieb:

      Hallo YdnAm,

      wie ich in Post #135 schrieb, wäre ein Foto der bestückten Platine (mit allen Bauteilen, wie Mosfet, Drosselspule Widerstände, IC's usw.) wünschenswert.
      Da du deine bestückte Leiterkarte ja mit Lehrerprogramm schon in Betrieb getestet hattest, dachte ich mir, dass diese schon vorhanden sein müsste.
      Die Platine ist ja schon lange fertig, diese liegt aber noch in der Schule, mache morgen sofort ein foto davon
    • Ja in der platine ist mir ein Kondensator kaputt gegangen, den muss ich jetzt ersetzen der wird am freitag geliefert.... :/
      Ja programm.... komme da nicht weiter und mir läuft die Zeit davon....
      durch all die prüfungen und abgabetermine die ich habe arbeite ich fast tag und nacht und komme nicht voran beim Programm...