mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik BLDC Motorsteuerung


Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich verstehe da gerade was nicht. Kann mir jemand helfen? Ich probiere 
mit BLDC-Motoren rum, welche Hallsensoren besitzen. Diese Motoren haben 
3 Hallsensoren, welche entweder High oder Low-Signal ausgeben können. 
Somit sind am Motor auch stets 3 Kabel für die drei Hallsensoren 
vorhanden. Ich dachte bis jetzt, dass das immer so ist. Jetzt habe ich 
aber ICs gefunden ( z.B. TB6585FG ) welche aufeinmal zwei Eingänge für 
jeden Hallsensor haben (einen positiven und einen negativen) alo 
insgesamt 6 Eingänge für 3 Hallsensoren haben. Das ganze wird dann einem 
sog. Hallverstärker zugeführt. Gibt es denn noch andere Motoren, welche 
zwei Kabel pro Sensor haben oder wie soll ich das verstehen?

Autor: Bernd Rüter (Firma: Promaxx.net) (bigwumpus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, es gibt solche Motore, in denen Hall-Sensoren ohne 
Auswert-Elektronik eingebaut werden.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alles klar danke für die schnelle Antwort. Jetzt ist meine Welt wieder 
heil. Kann ich den IC halt nicht verwenden.

Autor: Karsten Brandt (karstenbrandt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich hoffe, dass ich hier richtig bin. Ich beschäftige mich auch mit 
BLDC-Motoren. Mein Motor hat allerdings 3 um 120° versetzte 
Hall-Sensoren.
Die Application Note AVR435 von Atmel habe ich versucht nachzuempfinden. 
Der Motor läuft nicht so wirklich rund. Also versuche ich zunächst die 
Software der App.-Note zu verstehen. Im grossen und ganzen durchschaue 
ich das prinzip auch. Aber eine Stelle beschäftigt mich schon seit 
einiger Zeit. Es handelt sich um das Modul mc_drv.c. Dort gibt es eine 
Funktion

void Do_Sensor_interrupt():
inline void Do_Sensor_Interrupt(void)
{
   if ( Sensor_Counter_Up > 3 )
   {

      if (Delay_For_Change != 0)
      {
         /* Last Delay not finished : Force Change_Sector */
         Top_Counter = Mem_Top_Counter;
         if (Top_Counter == 0) Top_Counter++; /* to avoid "divide by 0" */

         Sensor_Counter_Down = Mem_Top_Counter;
         Hall_Sector = Mem_Hall_Sector;
         /* end Change_Sector */
      }

      /* Filter and memorize the Conuter_Up in the Top_Counter */
      Mem_Top_CounterX8 = (((U16)7 * Mem_Top_CounterX8) + (U16)8 * Sensor_Counter_Up) >>3;
      Mem_Top_Counter = Mem_Top_CounterX8 >> 3;

      Sensor_Counter_Up = 0; /* reset the Counter_Up */

      /* Get the status of the 3 Hall sensors */
      /* Hall_Sector = PIND7.PIND6.0.0.0.PINB2.0 */
//      Mem_Hall_Sector = ( PIND & ( (1<<PIND7)|(1<<PIND6) ) ) | (PINB & (1<<PINB2)); //MC200
      Mem_Hall_Sector = ( PIND & ( (1<<PIND7)|(1<<PIND5) ) ) | (PINC & (1<<PINC6)); //MC100

      /* arm the Delay_For_Change */
      Delay_For_Change = Mem_Top_Counter - ADVANCE;

   } /* else false interrupt */

}

Was mir an dieser Funktion überhaupt nicht verständlich ist, ist der 
Filter:
 /* Filter and memorize the Conuter_Up in the Top_Counter */
      Mem_Top_CounterX8 = (((U16)7 * Mem_Top_CounterX8) + (U16)8 * Sensor_Counter_Up) >>3;
      Mem_Top_Counter = Mem_Top_CounterX8 >> 3;

Der Sinn dieses Filters erschliesst sich mit nicht. Versteht vielleicht 
jemand diesen Filter? Warum wird ein zweites mal durch 8 dividiert 
(möglicherweise zur Skalierung)?

Autor: Michael Leusink (hasimaus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Peter
mal probiert das Signal nur an den (+)-Pin des Verstärkers zu legen?
(-)-Pin gegen Masse. Muß auf jeden Fall ein Widerstand dran, da der 
TB6585 nur bis 3.5V Eingangsspannung an den Pins mag. Ohne Gewähr.

Gruß

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Michael Leusink
Nein probiert hab ichs noch nicht, werde es Montag aber gleich mal 
versuchen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.