Discussion in 'Opencharge' started by lsimma, Feb 2, 2008.

  1. lsimma

    lsimma New Member

    Hallo allerseits,

    Ich hab begonne auf der Platine nachzumessen was bei verschiedenen PWM Settings des Pwm1a passiert. Dabei hab ich mit dem Oszi festgestellt dass bei Pwm1a = 0 am Atmel Ausgang ein kleiner periodischer Puls auftritt. Auch beim StepDown PWM ist es dasselbe. Dh. der PWM ist gar nicht ganz zu:

    StepDown: OCR; Range 0 bis 255
    OCR0=0
    Periode ist 30usec
    Offen: 0.14us
    -> ca. 1/211

    Strom T3: Pwm1a Range 0 bis 1023
    Pwm1a=0
    Periode ist 124us
    Offen: 0.14us
    -> ca. 1/885

    Kann und darf das sein ? Ich kenne die PWMs des Atmels noch nicht somit kann ich das nicht beurteilen ob das so sein muss. Hätte jedoch gedacht dass 0 = AUS ist.

    Beste Grüße,
    Lukas
  2. Space

    Space New Member

    Sehr merkwürdig :confused:

    ...eventuell einen Watchdog konfiguruiert, welcher in dem Testprogramm nicht resettet wird? -> Prozessorboot
  3. lsimma

    lsimma New Member

    Hallo,

    habe die Lösung im Atmega32 Datenblatt auf Seite 99 gefunden.

    Dieser "Spike" ist bei FastPWM ganz normal:
    The extreme values for the OCR1x Register represents special cases when generating a PWM waveform output in the fast PWM mode. If the OCR1x is set equal to BOTTOM (0x0000) the output will be a narrow spike for each TOP+1 timer clock cycle. Setting the OCR1x equal to TOP will result in a constant high or low output (depending on the polarity of the output set by the COM1x1:0 bits.)

    In FastPWM Mode ist beim PWM=0 immer ein Spike von einer Zykluszeitlänge gegeben. Da wir einen Vorteiler von 1 haben hat dieser Spike somit genau die Länge von LSB.

    In Fast PWM Mode kann über den PWM Wert der Strompfad gar nicht ganz gesperrt werden.

    Die Messung ergibt, dass bei Pwm1a=0 eine Spannung von ca. 4mV am IC4a Pin 5 anliegt. Dies passt recht genau zu einem LSB welches bei 2,66V/1023 = 2,6mV sind.

    Beste Grüße,
    Lukas
  4. lsimma

    lsimma New Member

    Hallo,

    kann so ein Ausgangspin irgendwie auf 0 gezwungen werden ohne dass die Zuordnung zum PWM geändert werden muss ?

    Lukas
  5. Holger

    Holger LogView Team

    Hallo Lukas,

    Was meinste damit genau?

    Was auch in diesem Fall funktionieren sollte, ist folgendes:

    Auf das Portpin wird eine 0 ausgegeben und auf Output konfiguriert.

    Wenn das Control-Register des Timers im weiteren Verlauf des Programms dann auf PWM-Funktionalität gesetzt wird, übernimmt OC1x die Kontrolle über das Pin.

    Setzt man nun in TCCR1A die Bits COM1Ax/COM1Bx (Compare Output Mode for Compare unit x) auf 0, so ist das Pin wieder ein normales Portpin und gibt also die 0 aus.

    Es sollte also ausreichen, die Ausgabe des Wertes Null zu überwachen und in Abhängigkeit davon das Portpin vom Compare output zu trennen oder anzukoppeln.​

    Gruß, Holger​
  6. Space

    Space New Member

    ...Mensch Lukas, du bist ja ein Guter!

    Wenn ich das richtig verstehe, dann betrifft das Phänomen nur die Fast-PWM Konfiguration. Das Fast PWM brauchen wir bei dem Strom-PWM (PWM1A) nicht wirklich.
    Bei dem SW-Stepdown wird der Fast Mode aber schon gebraucht.

    Hier muss dann (wenn der Spike hier stört) bei OCR0=0 Holgers Vorschlag zum Zuge kommen.

    Thomas
  7. lsimma

    lsimma New Member

    Hallo Holger, Hallo Thomas,

    @Holger: Danke für den Tip

    @Thomas: Ja dieses Phänomen tritt nur bei FastPWM auf. Stimmt ... beim StepDown gibt es nix zu ändern bei dem ist der Spike egal denn bei einigen Opencharge Variationen sind sowieso keine StepDown FETs drin.

    Somit kann ausschliesslich mit T3 der Strom ganz abgeschaltet werden.

    Habe mal etwas experimentiert mit dem PWM Mode 8. Bei dem ist die Auflösung über das ICR1 Register definierbar. Das geht auch im FastPWM mit dem Mode 14. Tabelle ist auf Seite 109 im Atmega32 Datenblatt.

    'Phase+Freqenz korrekte PWM (WGM13=1 die anderen WGMxx=0),
    ' Auflösung (wird durch ICR1 vorgegeben), Prescaler=1,nicht invertierend
    Pwm1a = 0 ' Stromvorgabe auf 0 setzen, bevor der PWM aktiviert wird
    'Capture1 = 1023 ' für 10bit ==> ICR1 auf 1023 setzen
    Capture1 = 2000 ' es gehen auch gerade Werte :)
    Tccr1a = &B10000000
    Tccr1b = &B00010001

    Beim Phase+Freqenz korrekten PWM gibt es dieses Spike nicht.

    Die Auflösung von 2000 Bits (via Capture1 = 2000) statt 1023 wäre beim Ladegerät mit 15A von Vorteil da die Abstufung bei kleinen Strömen geringer ausfällt (ca. 8mA statt 16mA).

    Da die RC Konstant der Glättungsstufe 0,1sec beträgt ist die PWM Periode von 0.001sec recht problemlos. Es ergibt sich ein Stromrippel von <1% dh. bei 10A Ladestrom schwankt der Strom um 0,1A mit einer Periode von 1kHz.
    Udiff=Umax*exp(-t/RC)

    Gibt es dagegen bedenken ?

    @Thomas: Hmmm..... falls es mal eine neue Platine gibt dann würde ich Empfehlen dass der Pin PD4 vom Taster befreit wird. Pin PD4 kann mit dem Register Compare1B (2.Compareregister von Timer1) ein weiterer PWM sein welcher zb. als Strom-PWM für eine externe Entladestufe dienen kann.
    Den Taster am besten auf den freigewordenen PA3 Pin legen (ehemalig Verpolung). Der Strom kann dann mit dem freien internen ADC (ehemalig Vss Spannung) über eine Shunt ermittelt werden.
    Oder wenn Pin2 von R21 nach aussen geführt wird dann kann R21 als Mess-Shunt für eine externe Entladestufe dienen....

    Beste Grüße,
    Lukas
  8. Space

    Space New Member

    Moin Lukas,

    ein PWM Mode mit höherer Auflösung währe auf jeden Fall ein Gewinn für das Ladegerät. Wenn ich den Mode 8 richtig begreife, dann ist eine echte 16Bit Auflösung des PWM damit gegeben. Das hat schon was...

    Kann man (ich) machen.
    In der Konsequenz heisst das aber, das aufgrund der geänderten Hardwarekonfiguration dann 2 Software Versionen gepflegt werden müssen.
    Dann könnte sinnvollerweise auch dein Vorschlag, des bedingten Kompilierens, zum Zuge kommen.
  9. lsimma

    lsimma New Member

    Hallo Thomas,

    Ja sehe ich auch so und hab das schon bei mir intern probiert :) Im Mode 8 kann jede Auflösung von 2Bit bis 16Bit und alle Verhältnisse dazwischen eingestellt werden. Hab mit 12Bit (=4096), 4000, 2000 und 256 schon probiert ,das klappt alles.

    Was ich nicht so 100% beurteilen kann (da ich kein Speicheroszi habe) - ab welcher Auflösung ist die Strom-PWM Frequenz "zu gering" und die PWM Glättung erzeugt eine Spannung mit überlagertem Rippel - dies würde sich dann ja auch im Ladestrom spiegeln.
    PWM Frequenz bei 16Bit Auflösung: 61Hz -> 0.16sec Periodendauer -> das würde dann bei 10A bedeuten dass der Strom zwischen 8,5A und 10A im 61Hz Takt pendelt.... da müsste der Kondensator der Glättungsstufe erhöht werden.

    Mit der aktuellen Glättungsstufe würde ich von 1023 auf max. 8000 erhöhen. Der Rippel mit der aktuellen Glättungsstufe bleibt dann <1% bei 1KHz PWM Frequenz - das wäre meines erachtens noch ok.

    Ups... da blitzt bei 8MHz und 8000 grad was... hmmmm... grübel :)
    Wenn der Strom PWM auf 8000 gesetzt wird - bei jedem erreichen des TOP (=8000) lassen wir einen IRQ auslösen. Innerhalb der IRQ Routine wird ein Zähler von 1000 auf 0 heruntergezählt- bei 0 wird der Zähler auf 1000 gesetzt - und ein Sekundenzähler wird um einen Zähler hinaufgezählt == sectic.

    Könnten wir damit nicht den externen Uhrenquartz einsparen und den weiteren freien Pin für externe Ideen nutzen ? Hab ich da eine Denkfehler ?

    Ja das mit dem bedingten Kompilieren muss dann verwendet werden damit es nicht 2 Softwareversionen sind sondern nur eine einzige. Ich würde dies auch noch nicht gleich pushen wollen sondern würde dies als Ideensammlung für ein Opencharge V2 auffassen. Da kommt sicher noch das eine oder andere hinzu.
    (Ich würde bei einer V2 auch den Atmega32 kompatiblen nehmen der aber den doppelten Speicher hat damit zusätzliche Features implementierbar sind - hab nur den Namen nicht bei der Hand)

    Ich schreib das am Wochenende zusammen damit wir es nicht vergessen.

    Beste Grüße,
    Lukas
  10. lsimma

    lsimma New Member

    Hallo Thomas,

    eine kleine Anpassung am Plan wäre doch schon jetzt zu empfehlen.

    Beim Ralf hat es bei Messungen geraucht - es war der R55 - dieser hat lt. Plan 1/2 Watt. Ab 50V Ladespannung wird die Verlustleistung an diesem Wdst. größer als 1/2Watt: P=(50*50)/4,7K=0,53W

    Ich hatte mir per Zufall beim Reichelt einen 2W Wdst. für R55 bestellt (hab keinen 1/2W Metallwdst. gefunden) daher hat es bei meinen Messungen nicht geraucht.

    Danke,
    Lukas
  11. gerner

    gerner New Member

    Hallo Lukas,

    ich glaube Du meinst den ATmega644P/V
    http://www.atmel.com/dyn/resources/prod_documents/8011S.pdf
    der hat 64 KB (und würde, wenn wir einen Quarz benutzen, sogar mit 20Mhz laufen) Da ich länger Zeit nicht mehr auf die Atmel Page geguckt habe, bin ich angenehm überrascht eine 64 Kb schweren Mikroprozessor im DIP - Gehäuse zu finden.

    Schöne Grüße

    Hans
  12. lsimma

    lsimma New Member

    Hallo Hans,

    korrekt, der Ralf hat mich schon vor einer Weile auf diesen aufmerksam gemacht. Da er tatsächlich Pinkompatibel ist kann der Atmega32 ohne Umbau ersetzt werden.

    Die Idee mit den 20Mhz könnte eventuell noch praktisch sein:
    Dadurch könnte die PWM Frequenz der StepDown FETs mit bis zu 78KHz betrieben werden.
    Auch kann der Uhrenquartz auf Pin PC6+PC7 wegfallen - der Sekundentick wird durch OCR1B + eine kleine IRQ Routine realisert. Somit bekommen wir zwei Pins für mögliche Erweiterungen frei.

    Bei Reichelt hab ich einen unter dem Namen "ATMEGA 644-20 PU" gefunden für 7,20€ - ich hoffe dass dies der richtige ist. Werde den bei der nächsten Bestellung mitbestellen. Passt dieser Quartz von Reichelt zum Atmel dazu: 20,0000-HC49U-S ?

    Beste Grüße,
    Lukas
  13. gerner

    gerner New Member

    http:

    Hallo Lukas,

    Erfahrungsgemäß schon. Man darf lediglich die beiden Lastkondensatoren gegen Masse (üblicherweise zwischen 12pF und 22pF ... hier eher 12pF.... aber weitgehend unkritisch) nicht vergessen.

    So ist's zumindest bei den älteren Atmel-Prozessoren.
    Beim ATmega644P/V werde ich mal das Datenblatt wälzen und Dir berichten wenn dem nicht so ist [​IMG] !

    Da ich den besagten Quarz von Reichelt bereits ein paarmal mit einem attiny2313 verbaut habe, bin ich sogar überzeugt dass er auch am ATmega644P/V funktioniert.

    Schöne Grüße

    Hans

Share This Page