ACI Interrupt verhält sich willkürlich (BLDC BEMF mit Komparator)

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • Du hast ja einen Shunt in der Leitung.
      Wenn du den Motor nochmal hochlaufen lässt und dann die Drehzahl hältst (Programm von @tschoeatsch), kannst du da mal die Spannung am Shunt oszillografieren?

      Da sollte ein Sägezahn oder Dreieck rauskommen.
      Musst aber Masse am Shunt nehmen, weil das Signal wird am 0,01 Ohm Widerstand recht klein sein.

      The post was edited 1 time, last by Mitch64 ().

    • Hier der Verlauf am Shunt (gelb) und dazu wieder ein Drainanschluss (blau)
      shunt_drai.jpg

      Hm... wenn ich den Shunt überbrücke, wird dann die BEMF deutlicher? Sind ja doch bis zu 1,25V die da abfallen. und das wären ja bis zu 125A ???

      Ich meine, meine Spannungsteiler (auch der der Referenzspannung) gehen ja gegen Masse, die BEMF hat aber noch den Shunt mit drin.

      The post was edited 1 time, last by Bastlbeda ().

    • Soweit ich das mitgelesen habe, stimmt ansich der Zeitpunkt, zu dem der AC-Interrupt ausgeführt wird?
      Im Code ist mir ein mögliches Problem aufgefallen, die Flags werden sowohl in der Hauptschleife als auch im Interrupt geschrieben und sind als Bit definiert. Bascom fasst jeweils (der Reihenfolge der Dimensionierung nach) 8 Bit-Variablen in einem Byte zusammen (Überraschung), um ein Bit zu ändern, sind mehrere Instruktionen nötig, da kann aber inzwischen der Interrupt ausgelöst werden.
      Versuch mal die Flags als Byte zu definieren.
    • Mal eine Idee: wie wäre es, eine Spule mit H-Brücke zu betreiben und die andere nur als Sensorsule? Wenn die Arbeitsspule dadurch zu stark belastet wird, dann halt wechselweise mit 2 H-Brücken, sodass nur eine Spule treibt, die andere fühlt. Fets kosten fast nix und ein Kontroller mit paar mehr Beinchen ist doch auch bezahlbar.
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • Ich habe ja nur 3 Anschlüsse. Beide Spulen haben einen gemeinsamen Anschluss. Wenn den gemeinsamen Anschluss jetzt für die "treibende Spule" per H-Brücke umpole, dann pole ich ja auch den Bezugspunkt der zweite Spule, die jetzt als Sensor verwendet werden soll um.


      zaubara wrote:

      Versuch mal die Flags als Byte zu definieren.
      Ich kann dir zwar ehrlich gesagt jetzt nicht ganz folgen, aber das werde ich morgen mal versuchen.
      Er scheint ja irgendwie zu kommutieren, aber halt nur im falschen Zeitpunkt (vermute ich zumindest)
    • Noch eine Überlegung: die beiden Spulen kann ich doch als eine Spule mit Mittelanzapfung betrachten. Lege ich Spannung an den Enden an, dreht sich der Rotor, dass sich jeweils ungleiche Pole anziehen. Pole ich um, dreht sich der Rotor um 180°. Bei der Drehung wird natürlich eine Spannung induziert, die jetzt das Potential an der Mittelanzapfung verschiebt. Diese sollte am größten sein, wenn sich der Rotor um 90° verdreht hat. Damit weiß man, wie die Stellung vom Rotor ist. Mist man die Zeit, kann man voraussagen, wann der Rotor weitere 90° gedreht hat und polt dann die Spannung um.
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • Bastlbeda wrote:

      Ich habe ja nur 3 Anschlüsse. Beide Spulen haben einen gemeinsamen Anschluss. Wenn den gemeinsamen Anschluss jetzt für die "treibende Spule" per H-Brücke umpole, dann pole ich ja auch den Bezugspunkt der zweite Spule, die jetzt als Sensor verwendet werden soll um.
      Ob das schlimm ist, wenn der Sensor umgepolt wird? Man weiß es ja wann und kann sich darauf einrichten.
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • Geschrieben hatte ich es schon, bei geringen Drehzahlen ist es schwer die BEMF zu erfassen - auch bei 3- und mehrpoligen BLDCs.
      Vielleicht macht es ja Sinn den Bezugspunkt zu ändern...
      Aus datenschutzrechtlichen Gründen befindet sich die Kontaktdaten auf der Rückseite dieses Beitrages.
    • Bastlbeda wrote:

      Scheinbar hat noch niemand einen BLDC (auch nicht 3-phasig) in BASCOM programmiert
      Doch, aber mit Sensoren ;)

      Bastlbeda wrote:

      Ich hab hier noch etwas gefunden, ein Patent
      Das ist ein 2-Phasen-Motor, so wie die 12V Lüfter in PCs.

      Ich sehe keinen Weg, ohne Sensor deinen Motor zum Laufen zu bringen.
      Das Problem mit den Spannungsspitzen ist auch noch da, wie ich auf dem Oszibild sehe.

      Vielleicht kannst du den Motor zum Anlauf kurz bestromen und dann leerlaufen lassen, zum Messen, Pulsweite und Nulldurchgang merken, Zeit berechnen und wieder bestromen, dann wieder Leerlaufen lassen usw.
      Oder 90 Grad bestromen und 90 Grad messen ;)
    • Michael wrote:

      Vielleicht kannst du den Motor zum Anlauf kurz bestromen und dann leerlaufen lassen, zum Messen, Pulsweite und Nulldurchgang merken, Zeit berechnen und wieder bestromen, dann wieder Leerlaufen lassen usw.
      Oder 90 Grad bestromen und 90 Grad messen
      So sehe ich das auch.

      Bastlbeda wrote:

      Ich meinte die tausende von Modellbauern, die für Ihre Modelle die üblichen (und übrigens sehr leistungsstarken) 3-phasigen sensorlosen BLDC verwenden.
      3-phasige BLDC Motoren sind etwas ganz anderes als 2-phasige und nicht zu vergleichen. Die 3-phasigen sind "Drehstrommotoren", sind sozusagen selbstkommutierend durch die phasenlage der Steuerung und leistungsmäßig durch Stromsteuerung (PWM) angetrieben werden.
    • Bastlbeda wrote:

      Hm... wenn ich den Shunt überbrücke, wird dann die BEMF deutlicher? Sind ja doch bis zu 1,25V die da abfallen. und das wären ja bis zu 125A ???
      Wieso ist der Strom negativ im Oszibild? Der beginnt ja bei -50A. Stimmt deine Masse? Hat der Widerstand wirklich 0,01 Ohm?
      Du musst direkt die Masse am Widerstand anklemmen, sonnst misst du irgendwelche Spannungsabfälle auf Leiterbahnen mit. 125A kann ich mir jetzt auch nicht vorstellen.

      The post was edited 1 time, last by Mitch64 ().

    • Mitch64 wrote:

      Wieso ist der Strom negativ im Oszibild?
      unter der Mittellinie heißt nicht zwingend negativ.
      Der Strom steigt genauso wie die Spannung fällt.

      Die Spikes am Drain gehen in den kV Bereich, da würde ich zuerst ansetzen. Der Spulenstrom wird abrupt unterbrochen und die Energie aus der Spule muss irgendwohin. Wer eine Funkuhr benötigt, wird sie vermutlich nicht in der Nähe betreiben können.
    • Michael wrote:

      unter der Mittellinie heißt nicht zwingend negativ.
      Die gelbe Markierung links am Oszirand mit Bezeichnung "1" gibt die 0-Vold Linie für den gelben Signalverlauf an.
      (Vorausgesetzt die Eingangs-Kopplung steht nicht auf AC, davon bin ich ausgegangen.)

      Oder anders gesagt.

      Wenn das nicht zwingend die Null-Linie ist, dann gibt's auch nicht zwingend einen Nulldurchgang.

      @Bastlbeda Wie war der Eingang eingestellt? AC oder DC-Kopplung?

      The post was edited 1 time, last by Mitch64 ().

    • Nach einer Nacht komm ich mit einem weiteren Vorschlag: Mach's mal, wie in der appnote, ganz einfach. Ich denke mal, wir liegen mit unserer 'Kurvendiskussion' nicht verkehrt und der Knick gibt den Zeitpunkt für die Kommutation. Man muss also den Wechsel der Steigung des Spannungsverlaufs erkennen. Dazu (wie bei der appnote) muss man nur delta_U (Spannungsveränderung innerhalb eines Zeitraums) ermitteln und diese Werte vergleichen. Ein großes delta_U hat man bei einer steilen Kurve, ein kleines bei einer flachen. Also timerinterrupts auslösen, zB. alle 1ms. In der int wird die Spannung am drain gemessen und ein Zähler 'strom_an' incrementiert. Erreicht 'strom_an' einen Wert von vielleicht 100, dann werden die Phasen abgeschaltet. Das ist der bekannte timeout, um die fets zu schonen. In der main wird auf die Spannungsmessung gewartet (flag vom ad-Wandler) dann mit der vorhergehenden Spannungswert delta_U errechnet. Dieses delta_U wird mit dem vorhergehenden delta_U verglichen und wenn sich ein signifikanter Unterschied zeigt, dann ist der Kurvenknick erreicht. Es werden die Phasen umgeschaltet, 'strom_an' auf =0 gesetzt und die Spannungsmessung auf das andere drain umgeschaltet. Dann geht es wieder um ermitteln und vergleichen von delta_U. Ganz einfach und mit dem vorhandenen hw-Aufbau zu machen.

      Nächster Punkt und mal erst ein Versuch:
      SchemaMotor.jpg
      zeigt mir eine Spule mit Mittelanzapfung. Die untere Wicklung hat den gleichen Sinn, wie die obere, man könnte also beide Wicklungen auf einen Joch unterbringen. Nix bifilar. Jetzt der Versuch: am obersten und untersten Anschluß eine Gleichspannung anlegen. Der Rotor dreht sich so, dass sich die gleichnamigen Pole anziehen. Jetzt das Ozsi zwischen gnd (zB. unterer Anschluß der Spule) und Mittelanzapfung. Jetzt sollte an der Mittelanzapfung U/2 zu messen sein. Jetzt den Rotor entgegen des Haltemoments verdrehen. Das der mechanische Aufbau eines Wechselstomgenerators entspricht, wird durch das Drehen eine Spannung induziert, die sich dem fließenden Gleichstom überlagert. Man kann jetzt am Oszi
      [ ]* beim Rechtsdrehen des Rotors gegen des Haltemoments einer Verringerung der Spannung U/2 erkennen, beim Linbksdrehen eine Vergrößerung.
      [ ]* beim Rechtsdrehen des Rotors gegen des Haltemoments einer Vergößerung der Spannung U/2 erkennen, beim Linbksdrehen eine Verringerung.
      [ ]* tschoeatsch erzählt wieder Mist
      *zutreffendes bitte ankreuzen
      Das bedeutet, wenn sich der Rotor dreht, liegt an der Mittelanzapfung ein anderer Wert als U/2 an, wenn U/2 anliegt, dann sind die Pole des Rotors an den Polen der Spule und es wäre der Nulldurchgang, wo es Zeit wäre die Polung der Spule zu drehen (mit H-Brücke). Jetzt geht es mit mit diesem Experiment nur darum zu sehen, ob man eine Verschiebung von U/2 erkennt, also Rotor gegen dem Haltemoment verdrehen und loslassen. Es sollte am Oszi was zu sehen sein.
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • Langer Text, kurzer Sinn.

      Also wenn ich dich richtig verstehe, willst du im 1. Beispiel nach dem Abschalten das Drainsignal im 1ms Abstand sampeln. Und dann die Werte miteinander vergleichen um den Buckel zu erkennen. Korrekt?
      Könnte funktionieren.
      Aber man könnte das Signal auch differenzieren und verzögert auf die positive Flanke triggern. Sicherheitshalber ein evtl. schon gesetztes Interrupt-Flag löschen.

      Bei 2. Beispiel möchte ich jetzt nix ankreuzen. Aber wenn das Magnetfeld vom Magnet in die gleiche Richtung zeigt wie das Feld durch die Bestromung, addieren sich die Felder. Es müsste also eine Gegenspannung entstehen, wenn man das gegen Masse misst. Bin mir da aber auch grade nicht sicher.