6 kanal PWM mit Atmega8 für BLDC Motor

OP #1878087
Hallo

Mit Atmega8 steuere ein BLDC Motor mit 16 kHz PWM. Dafür benutze ich
16-Bit Timer1, Modus 14(Fast PWM).Durch AD-Wandler stelle ich mit Poti 
die Vergleichswerte(OCR1A) für 2 Interrupts(Timer-Overflow und  Compare 
Match).
Je nach afutretendem Interrupt lade ich in register A PWM-Zustand.
Im Register B bfeinden sich Kommutierungsbits für PORTausgang.

Vor der PORTasugabe verbinde ich PWM durch Schlüssellogic für 6 Kanäle:

      AND RB, RA
      OUT PORTB, RB //hier öffnet/schliesst(PWM) sich gleichzeitig ein
                    //P- und ein N-Transistor von jeder Seite der
                    //Leistungsbrücke

Das Problem liegt daran, dass beim Potiaufdrehen von 0%-70% steigt die 
Geschwindigkeit, und dann wieder sinkt von 70%-100%, in diesem Fall habe 
ich maximale Speed 70% der möglichen Geschwindigkeit.

Was mache ich falsch, und wie sollte ich es machen ohne externen 
Bauelementen(LOGIC) zu benutzen?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.