1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Weitere Controllerbasteleien

Dieses Thema im Forum "Controller/Regler, Fahrerinformation, Elektronik" wurde erstellt von Joe23, 28.11.16.

  1. labella-baron

    labella-baron

    Beiträge:
    9.754
    Details E-Antrieb:
    Crystalyte 209, LiFePo 36V 4,6Ah von A123
    Was stellt denn CH2 dar?
    Wenn CH1 der Phasenstrom ist, dann kann der doch nicht solche Nadeln nach oben und unten haben.
    Kann es sich da nicht um Fehler in der Messanordnung handeln?
     
    Pete3 gefällt das.
  2. Joe23

    Joe23

    Beiträge:
    3.665
    Details E-Antrieb:
    XDURO2011,2XBofeili 1st Gen
    CH2 ist der Referenzimpuls des Rotorlage-Encoders, der einmal pro Umdrehung auftritt. Der Motor hat 2 Polpaare. Ist für mich nur ein bequemes Triggersignal. Allerdings ist dort auch der Zählerwert gleich Null, der den Drehwinkel darstellt. Am Pwm-Ausgang sieht man einen ziemlich breiten Impuls nach Minus Ubat , der dort nicht hingehört (auf beigefügtem Bild in der 1.Div rechts von der Mitte).
    PWM_Signal.jpg
     
    Zuletzt bearbeitet: 25.12.16
    Pete3 gefällt das.
  3. Joe23

    Joe23

    Beiträge:
    3.665
    Details E-Antrieb:
    XDURO2011,2XBofeili 1st Gen
    Ich habe gestern eine Menge gelernt.

    1. Ich hatte den PWM Ausgang in der Vergangenheit mit 2 MHz Grenzfrequenz spezifiziert, weil mit 100MHz die abgegebenen Impulse mit meiner Lochraster-Verdrahtung scheußliche Überschwinger zeigten. Ich habe jetzt wieder 100 MHz, was dann auch bei Eingabewert 1 noch einen Impuls zeigt, zuvor musste 3 eingegeben werden um vollen Spannungshub des Ausgangsimpulses zu erreichen
    2. Ein Versuch, die PWM-Werte direkt über Quadrature-Drehschalter einzugeben, ergab folgendes:
    Der Eingabewert 2048 ist nicht die genaue Mitte der Ausgabespannung. Ich muss also den Spannungsbereich des PWM-Modulators kalibrieren.Eigabewert Null muss genaues 1:1 Tastverhältnis ergeben.

    Klar: Totzeitaufschaltung weit größer als der Eingabeschritt kosten ausgebbare Einzelimpulse die in der Impulsdauer unterhalb der Totzeit liegen. Schrittbreite eines Pwm-Verstellschrittes etwa 12 ns; Totzeit einige 100ns.
    Wahrscheinlich werde ich die Auflösung des PWM.Generators verkleiner (Taktfrequenz prescalen und Integer-Bit-Anzahl verkleinern)

    Allerdings den Grund für den störenden Impuls habe ich immer noch nicht gefunden. Bei der direkten Eingabe war der Störer nicht vorhanden.
     
    Pete3 gefällt das.
  4. Joe23

    Joe23

    Beiträge:
    3.665
    Details E-Antrieb:
    XDURO2011,2XBofeili 1st Gen
    Ich habe im Debugger den ganzen Winkelbereich der Sinustabelle abgefahren, statt des Rotaryencoders meinen Quadrature-Drehschalter verwendet. Dieser hat den Vorteil, dass er in jeder Winkelposition einrastet. Ich konnte also zuverlässig jeden Wert 0-255 einstellen und dabei Einstellwert und die PWM-Vorgaben der 3 Phasen in eine Semihosting-Datei ausgeben und dabei feststellen dass der Vorgabewert der positiven Scheitelspannung mit Null zum PWM-Modulator übergeben wird. Beim Zurechtstutzen der Sinustabelle von 16 Bit-Werten auf 12 Bit fehlte natürlich an dieser einzigen Stelle das 13. Bit.
    Vieleicht kann ich das im Zusammenhang mit dem Kalibrieren der PWM Spitze zu Spitze Werte richten. Denn Natürlich wäre es wichtig Nullwert sauber 1:1 und gleichzeitig Siptzenwerte symmetrisch zu NULL zu haben.
     
    Pete3 und labella-baron gefällt das.
  5. Joe23

    Joe23

    Beiträge:
    3.665
    Details E-Antrieb:
    XDURO2011,2XBofeili 1st Gen
    Ich hab das erst mal vorläufig richtiggestellt, indem ich den einenTabelleneintrag Nr.16 nach der Umrechnung auf 4096 geändert habe. Jetzt ist diese eine Spitze weg, der Sinus nach RC-Filterung am Prozessorausgang einwandfrei. Die restlichen Spitzen im Stromsignal sind aber unverädert vorhanden. Der Motor läuft wesentlich ruhiger ist praktisch unhörbar.
    Ich hab allerdings auch zum ersten mal die Phasenspannung am Mosfet-Ausgang gefiltert angesehen, um den Einfluß der Totzeitaufschaltung wahrzunehmen. Da kann von Sinusform keine Rede mehr sein. Die Scheitelwerte sind ziemlich abgeplattet. Ich werde also die Auflösung des PWM-Modulators verkleinern müssen, am besten gleich auf 8-Bit.
     
    Pete3 gefällt das.
  6. Joe23

    Joe23

    Beiträge:
    3.665
    Details E-Antrieb:
    XDURO2011,2XBofeili 1st Gen
    Hier noch Bildchen zu #25
    Totzeiteinfluss.jpg
    Das schlimme daran ist, dass dieser Totzeiteinfluss immer ein Problen darstellen wird. Allerdings habe ich bei Atmel mal gelesen, dass die während der Totzeit den PWM-Timer anhalten können. Dazu braucht man andere Mosfettreiber und eben einen anderen Przessor. Jedoch neuer Hardwareaufbau ist nicht meine Sache.
     
    Pete3 und labella-baron gefällt das.
  7. Joe23

    Joe23

    Beiträge:
    3.665
    Details E-Antrieb:
    XDURO2011,2XBofeili 1st Gen
    Habe jetz einfach den Aussteuerbereich von bisher 0% -100% abgeändert auf 5%-95%, damit lässt sich den Sinus am Leistungsausgang wieder ansehen. Und ich glaube zuaätzlich zu wissen, wie ich den Gasgriff organisieren kann
     
    Pete3 gefällt das.
  8. Joe23

    Joe23

    Beiträge:
    3.665
    Details E-Antrieb:
    XDURO2011,2XBofeili 1st Gen
    Das war zwar hilfreich, um aufzuklären woher die schlechte Sinusform kam. Ist jedoch auf Dauer keine Lösung weil damit 10% der Batteriespannung weg sind. Das war mir zwar schon länger klar, habe es aber, ohne es genau zu durchdenken in Richtung "Supersinusverfahren hat dann erweiterten Spannungsbereich" verschoben. Was aber leider nicht der Fall ist. weil die 0%-5% und 95%-100% natürlich auch dafür nicht zur Verfügung stehen.
     
    Pete3 gefällt das.
  9. Joe23

    Joe23

    Beiträge:
    3.665
    Details E-Antrieb:
    XDURO2011,2XBofeili 1st Gen
    Ich möchte jetzt doch noch mal die 90% Austeuerung des PWM-Modulator b.z.w. deren Wirkung auf die Sinusform herzeigen. Das Übel bei der 100% Aussteuerung ist, dass die Totzeit die dünnen PWM-Nadeln, die noch einen gewissen Abstand vom Scheitelwert ermöglichen würden, von der Totzeit total aufgezehrt werden und somit in einem breiten Bereich um den Scheitelwert herum volle Batteriespannung ausgegeben werden. Dieser Effekt setzt dem Sinus eine Blockförmige Haube auf (siehe unteres Bild von #26). Bei 90% Aussteuerung treten immer breitere PWM-Impulse auf, die von der Totzeit nicht mehr total aufgezehrt werden können. Deshalb unterbleibt das Aufsetzen einer Blockhaube. Allerdings die Linearität des PWMmodulators wird dadurch schon gestört.

    Ich halte das für einen Effekt, der unvermeidbar ist. Und werde aus diesem Grund auch mein Projekt Sinusansteuerung nicht mehr weiterverfolgen. Indessen einen Gas-Stufenschalter möchte ich schon noch programmieren, um auch mal 40V Batteriespannung ausprobieren zu können. Jedoch eine genauere Untersuchung des Supersinusverfahrens erscheint mir unter diesen Voraussetzungen unsinnig.
    Hier noch das Bild der 90% Aussteuerung(Abnahme des RC-gefilterten Signals an der Leistungsstufe):
    SinBei 0,9 Aussteuerg.png
    Link zu #26:
    http://www.pedelecforum.de/forum/in...controllerbasteleien.45075/page-2#post-763493
    Auch noch zu beachten: der NC-Nebel ist bei dem neuen Bild nicht mehr unterbrochen.Klar, es werden auch keine Spitzen mehr weggefressen (Totzeit, der unersättliche Fresser!).
    Übrigens die Totzeit in Taktzyklen ausgedrückt macht auch etwa 10% vom Gesamthub des PWMModulatos Für eine Halbwelle aus.
     
    Zuletzt bearbeitet: 28.12.16
    Pete3, labella-baron und oger gefällt das.
  10. Joe23

    Joe23

    Beiträge:
    3.665
    Details E-Antrieb:
    XDURO2011,2XBofeili 1st Gen
    Korrektur:
    Muss heissen:
    Auch noch zu beachten: der PWM-Nebel ist bei dem neuen Bild nicht mehr unterbrochen.Klar, es werden auch keine Spitzen mehr weggefressen (Totzeit, der unersättliche Fresser!)
     
    Pete3 gefällt das.
  11. _Willy_

    _Willy_

    Beiträge:
    122
    Ort:
    Südwestlich Kölle
    Details E-Antrieb:
    Bafang BBS01
    Du machst ja hübsche Sachen :)

    Mich würde auch noch der Schaltplan deines Controllers interessieren. Hast du den irgendwo gezeigt (anderer Thread, Homepage, ...)?

    LG, Willy
     
    marci gefällt das.
  12. Joe23

    Joe23

    Beiträge:
    3.665
    Details E-Antrieb:
    XDURO2011,2XBofeili 1st Gen
    Der Gasdrehschalter funktioniert jetzt auch. Ich hab diesen spannunsmäßig in 5 % Schritten gestuft. Damit habe ich dann auch gleich den Motor an 40V betrieben und feststellen müssen, dass die beiden Gasstufen 95% und 100% zu nicht tolerierbarem Geräusch führen.
    In diesem 100% Betrieb erreiche ich 1116 RPM bei ca. 6W Input zur Leistungsstufe. Vergleichswerte zu den anderen Kommuierarten habe ich nicht und würde ich auch nicht abgeben wollen, solange ich keine sorgfältige Einstellung des Kommutierwinkels vornehmen kann. Dazu brauche ich wohl einen 2. Quadrature Drehschalter. Den letzten Timer (TIM8) mit Quadrature -Auswertung habe ich derzeit noch frei.
    Ob ich das noch lötzittern kann oder mag?
     
  13. Joe23

    Joe23

    Beiträge:
    3.665
    Details E-Antrieb:
    XDURO2011,2XBofeili 1st Gen
    Schaltplan habe ich nicht. Für die Leistungsstufe habe ich mich an einen Entwurf von @Christian gehalten:

    http://www.pedelecforum.de/forum/index.php?threads/neue-steuerung-für-ein-pedelec.13749/page-2#post-182509

    Diese entspricht einer Applikation des IR2130 und den habe ich zusammen mit meinem 1. Blockkommutierer aufgebaut.
    Nun habe ich schon seit längerer Zeit dendamaligen Atmelprozessor durch eine andere Lochrasterplatine ersetzt, die ein aufsteckbares Discorery-Board mit STM32 Prozessor enthält. Als weiteres uninteressantes Detail sind darauf noch RC-Glieder zur Entstörung von Hallsensoren (derzeit nicht verwendet) und ein Quadrature-Drehschalter als Gasgriff oder auch Stufenschalter. Und dann auch noch ein kleines Lochrasterplatinchen mit Leitungsempfänger und Impulsformer-Elektronik für einen Rotary-Encoder mit 2048 Strichen +Referenzimpuls pro Umdrehung (Bestandteil des Motors). deren 3 Outputs sind direkt am Discoveryboard angesteckt.

    Außerdem einige Spannungsversorgungen (40V, 12V, 5V).

    Alles andere an Funktion ist dem Versuchsaufbau über ein C-Programm vorgegeben, das im wesentlichen die Initialisierung der Prozessor-Peripherie enthält und einen viel geringeren Anteil für die Kommutierung b.z.w. Sinuseinspeisung.

    Wenn Du mitbasteln willst versorge ich die gerne mit allem, was ich weiss.
     
    Zuletzt bearbeitet: 30.12.16
    Pete3 gefällt das.
  14. Joe23

    Joe23

    Beiträge:
    3.665
    Details E-Antrieb:
    XDURO2011,2XBofeili 1st Gen
    Der Gasdrehschalter funktioniert jetzt auch. Ich hab diesen spannunsmäßig in 5 % Schritten gestuft. Damit habe ich dann auch gleich den Motor an 40V betrieben und feststellen müssen, dass die beiden Gasstufen 95% und 100% zu nicht tolerierbarem Geräusch führen.
    In diesem 100% Betrieb erreiche ich 1116 RPM bei ca. 6W Input zur Leistungsstufe. Vergleichswerte zu den anderen Kommuierarten habe ich nicht und würde ich auch nicht abgeben wollen, solange ich keine sorgfältige Einstellung des Kommutierwinkels vornehmen kann. Dazu brauche ich wohl einen 2. Quadrature Drehschalter. Den letzten Timer (TIM8) mit Quadrature -Auswertung habe ich derzeit noch frei.
    Ob ich das noch lötzittern kann oder mag?
     
    christiank und Pete3 gefällt das.
  15. _Willy_

    _Willy_

    Beiträge:
    122
    Ort:
    Südwestlich Kölle
    Details E-Antrieb:
    Bafang BBS01
    Danke für das Angebot :)

    Ich bin mir noch nicht sicher, ob ich genug Zeit für diese Spielerei finde, aber irgendwie interessiert es mich - speziell hinsichtlich möglicher Optimierungen beim langsamen Laufen.

    LG, Willy
     
  16. labella-baron

    labella-baron

    Beiträge:
    9.754
    Details E-Antrieb:
    Crystalyte 209, LiFePo 36V 4,6Ah von A123
    Was sollte denn da optimal werden? :confused:
     
  17. Joe23

    Joe23

    Beiträge:
    3.665
    Details E-Antrieb:
    XDURO2011,2XBofeili 1st Gen
    Meinst Du vielleicht die Qualität des Sinussignals bei heruntergerechneter SinusTabelle. Dass da noch genügend Sinusform übrig bleibt?
    Ich benutze derzeit eine 12bit breite Sinustabelle. Darauf wird im langsamsten Fall ein Gasfaktor von 0,05 aufgerechnet. Allerdings läuft bei diesem Gasprozentsatz der Motor noch nicht. Er ist Spannungsmäßig nicht angepasst. Da würden +/-102 PWM-Einheiten übrig bleiben, das müsste noch einen ordentlichen Sinus ergeben. PWM-Vorgabe ist 2048 (=0) plus oder minus 102 (als Scheitelwerte)..
     
  18. _Willy_

    _Willy_

    Beiträge:
    122
    Ort:
    Südwestlich Kölle
    Details E-Antrieb:
    Bafang BBS01
    Ich habe noch etwas recherchiert und bin unter anderem auf die Seite http://www.powercroco.de/nachbemerkungen.html gestoßen, was mich doch etwas irritiert ... da wird einer Gruppe von Modellbauern der Spaß an Entwicklungen solange madig gemacht, bis sie sich aus dem Internet zurückziehen. Das hätte ich nicht für möglich gehalten. Allerdings zeigt das auch, wie hart umkämpft der Brushless-Motoren-Markt ist. Für mich bedeutet das, dass ich besser die Klappe halte (hier in Joes Thread hat das ohnehin nix zu suchen) ;-)

    LG, Willy
     
  19. Joe23

    Joe23

    Beiträge:
    3.665
    Details E-Antrieb:
    XDURO2011,2XBofeili 1st Gen
    Wenn Du Anmerkungen oder Fragen hast, nur her damit. Ich betreibe meine Basteleien ja nur aus Spaß an der manchmal schon sehr zweifelhaften Freud. Auch habe ich nicht vor, einen verwendbaren Controller zu entwickeln.

    So habe ich jetzt einige freudlose Tage verbracht, weil ich endlich einen Drehknopf haben wollte um die Phase der 3 Sinussignale richtig einstellen zu können.Das funktioniert jetzt mit einem weiteren Quadrature Switch. Da kann ich am laufenden Motor die Phase zum Ref.punkt verstellen und wenn ich die passende Stellung gefunden habe und den Zahlenwert wissen will, drehe ich das Gas auf 5 Raststellungen unterhalb Null. Das startet dann einen Debugger Print Out auf einem sog. Semihosting Fenster am PC. Den Ausgabewert kann ich dann als Konstante ins Pogramm einarbeiten.

    Damit habe ich dann den Nulldurchgang mit aufsteigenden Werten auf Ref. Marke gebracht. Dieser schein allerdings abhängig von der Drehzahl wegzugehen. Deshalb habe ich den Phasenstrom aufgenommen, der leider mit vielen Spikes verunziert ist.
    Dieser bleibt mit dem Nuldurchgang auf Referenz. Vermutlich lags bei der Spannung an der RC-Filterung.
    . Phasenstrom vs Referenzpuls.jpg
     
    Zuletzt bearbeitet: 03.01.17
    marci und Pete3 gefällt das.
  20. Joe23

    Joe23

    Beiträge:
    3.665
    Details E-Antrieb:
    XDURO2011,2XBofeili 1st Gen
    Nach einer längeren Pause will ich heute mal damit beginnen, aus den 3 Programmen für die 3 Kommutierarten ein einziges zu machen, damit ich nicht immer umflashen muss, wenn ich die Kommutierung ändere. Der Flashspeicher des STM32 ist mit 1 GByte groß genug, damit man ich diesen Luxus leisten kann. Den Löwenanteil des Programmspeichers verschlingt eh die Initialisierung der 4 Timer und die ist bei allen 3 Programmen dieselbe:
    -Timer 1 als PWM-Modulator
    -Timer 2 als Quadrature-Counter für den Rotordrehwinkel
    -Timer 3 als Quadrature-Counter für den ersten Quadrature-Drehschalter als Gasgriff
    -Timer 4 als Quadrature-Counter für den zweiten Quadrature-Drehschalter als Mittel, variable Werte bei laufendem Motor ins
    Programm einzubringen.
    Leider entsteht langsam eine gewisse Not, die alternativ Funktionen für die Timer sinnvoll unterzubringen. Das liegt eben daran, dass man mit nur 100 Anschlüssen am Prozessorgehäuse nicht alle In-/Outputs zur Verfügung hat und die Alternativfunktionen nur auf vorbestimmte Plätze gemapped werden können.
     
    Pete3 gefällt das.