Universal DC-Motortreiber

Motivation

Da meine Mini-Kreissäge bei voller Drehzahl zu „brachial“ wäre und um den Verschleiß der mechanischen Komponenten zu reduzieren, musste eine Drehzahlregulierung für den Motor her. Zuerst habe ich eine schon fertige Schaltung samt Software von einem Freund übernommen (Danke an Sören!). Nachdem diese Variante schon gut lief, kamen weitere Wünsche auf, wie zum Beispiel eine bessere Bedienbarkeit oder ein Fußpedal zum Starten und Stoppen des Motors. Also habe ich die bestehende Hardware weiterentwickelt und eine komplett neue Software dazu geschrieben. Dabei ist ein schöner DC-Motortreiber herausgekommen, der sich vielseitig einsetzen lässt und in einigen meiner Projekte Anwendung findet.

Schaltungsbeschreibung

Zur Drehzahlsteuerung des Motors wird ein kleiner 8bit Microcontroller (Atmel Amtega 8) verwendet. Die dort erzeugte PWM (Pulsweitenmodulation) steuert über einige sehr schnell schaltende Treibertransistoren (T1-T4) eine High-Side Mosfetschaltung an. Zur besseren EMV-Verträglichkeit wurden noch einige Kondensatoren in den Lastkreis eingebracht um Spannungspitzen besser abfangen zu können. Bei den Elkos sollte darauf geachtet werden, dass es sich um Low-ESR Typen handelt. Der Duty-Cycle, also das Tastverhältnis der Pulsweitenmodulation kann über ein an der Platine angeschlossenes Poti eingestellt werden, was dann die Motordrehzahl bestimmt. Natürlich kann auch anderweitig eine analoge Spannung (0-5V) zur Steuerung der Drehzahl dienen.
Zur Strommessung wird durch eine 4-Leitermessung an einem Shunt der Spannungsabfall über einen Impedanzwandler und einen Differenzverstärker um den Faktor 22 verstärkt und mit dem AD Wandler des µC's gemessen.

Durch ein Trimm-Poti, am AD-Wandler lässt sich ein Referenzwert einstellen, bei dem der Motor abschalten soll. Ebenfalls über den Analog-Digital Wandler wird ein NTC-Widerstand zur Temperaturüberwachung ausgewertet, zu dem via Trimmpotentiometer ein analoger Temperaturreferenzwert eingestellt wird. Um die Referenzwerte abzugleichen, bietet es sich an, an dem UART des Controllers ein USB-Wandler anzuschließen. Verbindet man die Schaltung mit dem Rechner und öffnet Hyperterminal oder ähnliches mit den Parametern (19800,8N1), werden die eingestellten Sollwerte (Temperatur und Strom) ausgegeben. Ausserdem besitzt die Schaltung noch einige LEDs um die verschiedenen Stati (idle, over_temp, over_current ..) anzuzeigen. Sollten Endschalter oder ähnliches benötigt werden, wurden auch noch 2 Eingänge des Mikrocontrollers auf der Platine herausgeführt. Diese können nach Bedarf verwendet und in des Software angepasst werden. Die ganze Elektronik wird mit einem Step-down Schaltregler (MC34063) versorgt, um die Verlustwärme bei der Versorgung mit Motorspannung z.B. 12V gering zu halten und um einen besseren Wirkungsgrad als bei einem Linearregler zu erzielen. Auch hier wurde auf eine EMV gerechte Umsetzung geachtet, sodass die einzelnen Strompfade (Ladekreis, Feedback-Pfad und Recovery-Pfad) im Layout möglichst kurz gehalten und über Masseflächen realisiert wurden.


Nachbau


Aufgrund der vielen Durchkontaktierungen lässt sich die Platine schwer selber ätzen. Deshalb empfehle ich, sie von einem der günstigen China-Leiterplattenfertiger fertigen zu lassen. Hier stehen die notwenigen Dateien für die Leiterplatte zum Download bereit:


Download EAGLE Schaltplan

Download EAGLE Layout


Es wurden nur Standardbauteile verwendet die bei den gängigen Elektronikdistributoren wie Reichelt oder Conrad erhältlich sein sollten.

Die einzigen Bauteile, die ggf. Schwierigkeiten machen könnten, sind die SMD-Shuntwiderstände. Da diese das „schwächste Glied“ im Lastkreis sind und der maximale Strom im Wesentlichen ihnen abhängt, muss hier individuell geplant werden, welcher Typ benötigt wird und man muss für höher Ströme etwas passendes suchen oder eben improvisieren.

Falls Interesse an gefertigten Platinen besteht, auch für dieses Projekt habe ich noch welche in der Bastelkiste; einfach per Email bei mir melden.

Software

Die Software ist komplett als State-Machine konzipiert und kann im Wesentlichen per #define konfiguriert werden. Die Lookuptable für den NTC-Widerstand zur Temperaturmessung muss ggf. über eine Messreihe angepasst werden. Ein Excel Devitationstabelle als Vorlage liegt dem Code bei. Der Softstart, also das verzögerte Hochfahren des Motors wird über #define SOFTSTART_TIME angepasst. Dieser Wert ist die Verzögerungseit in [ms] beim Inkrementieren der einzelnen PWM Schritte bis zum Sollwert. Um die Referenzwerte der beiden Trimmpotis für Strom und Temperatur, sowie die Ist-Werte auszugeben muss #define DEBUG einkommentiert werden. Lediglich die Anpassung der Schaltereingänge bedarf in der Statemachine etwas tiefere Anpassungen. Da der Code aber recht übersichtlich ist, sollte das kein Problem sein. In der zur Verfügung gestellten Version, die für die Mini-Kreissäge konfiguriert ist, wird ein Eingang für ein Schalter (Fußpedal) zum Starten/Stoppen des Motors verwendet.

Download Software 2.0 Stand 29.6.2018


Die in diesem Artikel zur Verfügung gestellten Inhalte stehen frei zur privaten Nutzung, jedwede kommerzielle Nutzung erfordert mein ausdrückliches Einverständnis. Henning Schaper