Sonntag, 22. Mai 2016

Erster Test mit Propeller

Ich habe jetzt mal ein Video gemacht wie sich der TDC an ein einem GTX3546 mit einem Kv von 650rpm/V verhält. Leider hatte ich nur eine 10x8" Latte da, aber für einen ersten Eindruck reichts.


Freitag, 20. Mai 2016

Löppt.

Nach dem ich lange nichts geschrieben habe gibt es jetzt mal wieder bewegte Antriebe in bewegten Bildern zusehen. Der kleine TDC läuft und das sehr Problemlos.



Ich war aber in der Zwischenzeit nicht untätig, ich hab mal wieder einen Großteil der Software umgebaut um die Regelung zu vereinfachen. Dabei raus gekommen ist ein Konzept in dem nur noch die Drehmomentregelung und der Beobachter mit 24kHz laufen. Alle anderen Regelungen und Auswertungen laufen nur mit 1kHz. Für die Drehzahlregelung welche ich z.B. neu eingebaut habe ist das vollkommen ausreichend. Damit ich aber keine Probleme mit einer Unterabtastung bekomme musste ich die 24kHz Momentanwerte mit einem Tiefpass filtern. Da ich aber nicht für alle Werte wie Spannungen, Ströme, Drehzahl und Lastmoment IIR-Filter in der 24kHz schneller Regelung berechnen wollte wurde für jeden einzelnen Momentanwert ein Puffer eingeführt. Jetzt werden die letzten 50 Werte in einem Ringpuffer gespeichert und ich kann in der langsamen 1kHz Regelung
FIR-Filter berechnen. Das reduziert den Rechenaufwand auf ein 24tel (Wenn IIR und FIR eine ähnliche Ordnung haben).

Außerdem können so Unabhängig von der Regelung Algorithmen zur Offline Parameter-Identifikation benutzt werden. In der Hoffnung die Motorparameter während des Betriebs immer genauer bestimmen zu können. Die Regelung wird davon nicht direkt beeinflusst und ggf. instabil,
sondern wenn alle Parameter auf einander abgestimmt sind können sie gleichzeitig definiert übernommen werden.

Montag, 11. April 2016

Inbetriebnahme vollständig

Es ist geschafft die Inbetriebnahme ist komplett. Alle Messungen laufen sauber und die Phasenzuordnung der Strommessungen zu den PWM-Kanälen sowie zu den Anschlüssen passt.

Es gibt aber noch ein paar Punkte die ich in einer nächsten Hardware-Version ändern würde.

  • Footprint der Shunts, die Trennung von Messanschluss und Leistung ist parallel zum Shunt besser zu löten. Aktuell musste ich Silberdrahtstücke neben die Shunts löten.
  • Die Pads für die Batterieanschlusskabel müssen nach außen auf der Platine, aktuell stören die Kabel über der Platine.
  • Die HOTT-Pads müssen auch auf die Stirnseite neben den PPM Eingang, an der Seite sind die Pads ungünstig.
  • Die Kerkos an der Brücke bei den Shunts müssen gleichmäßig gleichmäßig verteilt werden, damit die Elkos flach über die Shunts passen. Die Elkos über den STM zu legen geht aber auch sehr gut, ist vllt. auch etwas kühler also über den Shunts.
  • AVDD mit Ferrit an 5V anschließen. 
  • Befestigung der Goldkontakte für den Motor durch feste PADs mit Kantenmetallisierung(teuer) am Rand der Platine ersetzen. Die aktuelle Variante ist nicht so schön. 
  • Vllt. BEC Stepdown durch einen Integrierten im TO-PMOD-Gehäuse ersetzen. Sowas wie den LMZ14203.
  • Größere Gehäuse für die diversen Kerkos vorsehen die höheren Spannungen ausgesetzt sind.
  • den JTAG/SWD Anschluss etwas weiter nach links verschieben, das der Stecker fürs Flachbandkabel sauber passt.
Die ersten Prototypen mit allen Anschlüssen (oben: 3,5mm Goldis, unten 4mm Goldies)
Aber alles in allem können diese Prototypen jetzt gequält werden. Der untere Umrichter kommt an den Motorteststand mit einem Dymond HQ6060 als Antriebsmaschine und einem Turnigy 6374
mit 192 Kv als Lastmaschine. Und dann muss diese Variante zeigen das sie die gleichen Tests kann wie der große Umrichter. Und ich bin sehr gespannt auf das Wärmeverhalten der Kleinen.

Das Ziel ist es dann beide Prototypen an je einer Maschine zu betreiben und die Energie im Kreis
zu fahren. Damit sollte mein 30V 15A Labornetzteil erstmal reichen um beide Regler ordentlich zu belasten.

Donnerstag, 7. April 2016

Der DRV8305 arbeitet

Ein kleiner Zwischenbericht von der Inbetriebnahme. Der DRV8305N gibt die PWM auf allen 3 Phasen sauber an die Fets aus. Die Konfiguration über SPI läuft reibungslos und wenn man sich bei den Registerwerten nicht verrechnet :) arbeitet der DRV auch wie er soll.

Was auffällt ist der recht hohe Stromverbrauch für den DRV wenn die EN_GATE gesetzt ist. In Ruhe nimmt die Platine an 12V ca. 50mA auf. Mit aktiven GATES sind es 150mA! Mein 1. Umrichter mit 12 TO220 Fets und IRS2186 Treiber hat 100mA aufgenommen. Meine erste Vermutung war eine zu geringe Totzeit zwischen Abschalten eines FETs und den Einschalten des anderen FETs. Aber egal ob ich 1780ns oder 55ns in DRV einstelle, der Stromverbrauch bleibt gleich. Aber das werde ich zu einem späteren Zeitpunkt weiter untersuchen, wenn es darum geht die maximale Antriebsleistung aus dem Umrichter heraus zu holen.

Ein Fehler scheint aber auf dem Board zu sein. Denn ohne einen 10R Widerstand von den 5V zur AVDD des DRV meldet dieser AVDD Unterspannung. Da ich diesem Problem bereits auf 2 Platinen hatte gehe ich davon aus, dass der DRV8305N, ganz wichtig das N, nicht nur am VREG-Pin versorgt werden muss sondern auch am AVDD-Pin. Im Datenblatt ist davon aber nichts zu finden. Meine Vermutung ist das TI den LDO für VREG auch für AVDD verwendet und die "N"-Version hat diesen LDO nicht.

Als Nächstes will ich die ADCs des STM in Betrieb nehmen. Dafür muss ich aber erst wieder den ADC-Treiber von ChibiOS/RT so anpassen das dieser Injected Conversions unterstützt. Denn alle 3 ADCs gleichzeitig mit mehreren Wandlungen hintereinander zu betreiben führte in der Vergangenheit immer zu ADC-Overruns, weil der DMA die Daten nicht weg bekam. Und für die 6 ADC-Kanäle den Tripple Mode der ADCs zu implementieren erscheint mir zu aufwändig.

Sonntag, 20. März 2016

Von Hand bestücktes Einzelstück

Der erste Prototyp komplett bestückt von oben

Der erste Prototyp von unten
Mit den Fotos zeigt sich auch der mechanische Aufbau besser als mit einem Layout. Jedoch sieht man so auch das einiges noch nicht 100%ig passt. Die 3,5mm Bullets passen leider nicht so weit in die Aussparungen rein wie gedacht. Da muss ich ggf. noch über eine metalisierung der Kanten nachdenken und eine breitere Aussparung. Oder ich lasse die Aussparungen weg und spare die Platinenfläche. Die Bullets werden dann einfach mit 3mm Kupferdraht an die Platine gesetzt.

Ein weiterer Punkt der mich aktuell stört ist die Plazierung der BAT+ und BAT- Pads. Diese kommen in einer nächsten Version an den Rand. So werden die Kabel nicht mittig über die Bauteile geführt. Ggf. ist hier eine metallisierte Außenkante als PAD/Kartenrandkontakt auch gut. Die Frage ist nur wie teuer so eine Platine wird.

Die erst Schaltungsteile wie der BEC-Stepdown laufen schon mal, als nächstes werde ich den Prozessor in Betrieb nehmen und sehen ob der DRV auf SPI-Anfragen antwortet.

Mittwoch, 16. März 2016

Die Platinen von WEDirekt sind da!

Die Bilder sprechen für sich, ein schweizer Käse hat weniger Löcher:
Oberseite der Platine

Unterseite der Platine
Dafür das die Platinen aus Deutschland bei 4-lagiger 70µm Kupferauflage ähnlich viel Kosten wie vergleichbare China-Platinen ist die Qualität optisch um Welten besser. Der Bestückungsdruck ist astrein, kein Versatz oder ähnliches. Die Vias sitzen alle zu 100%. Einzig der Lötstopplack ist sehr dünn und deshalb sind Pads der TQFPs die nur von einer Bahn kontaktiert werden schmaler als Pads die auf der Massefläche liegen. Das ist aber nur ein minimaler optischer Mangel der bei weniger Kupferauflage wahrscheinlich gar nicht auffällt.

In diesem Sinne, bestücken und in Betrieb nehmen. Hoffentlich sind keine Fehler drin. Einen winzigen Layoutfehler habe ich schon gefunden :(, ist aber nicht weiter wild. Das Via unter dem U4 (LMR14030) sollte 2mm haben. Der Durchmesser ging aber anscheinend beim Layouten an unterschiedlichen Rechner unter. Aber das ist kein Beinbruch. Es macht nur das Löten des PowerPADs des ICs mit dem Lötkolben schwieriger. 

Sonntag, 6. März 2016

TDCombat Revision 2 ist Fertig und bestellt.

Seit dem letzten Post habe ich die Plazierung der Pads für den Empfängereingang und BEC-Ausgang überarbeitet. Das war nötig weil der Strompfad zum 5V Pad in der letzten Variante auf einer Innenlage verlief und das Ground-Pad war noch schlechter angebunden. Das wäre bei 3A Dauerstrom wahrscheinlich auf gebrannt oder zumindest sehr heiß geworden. Jetzt ist der Ausgang direkt an den 5V Ausgang des Schaltreglers gewandert. Die Groundanbindung ist wesentlich besser und mehr lagig. Und der Rückstrompfad des Ausgangskondensators des Schaltreglers ist jetzt um Welten besser als in der letzten Variante. Wie in dem Bild zusehen, von dem Pad 2 des 1206 Kerkos in der Mitte eine breite Massefläche nach oben zum eigentlichen Schaltregler. Dieser niederimpedante Strompfad sollte dazu beitragen, dass der Stepdown sauber und mit wenig Rauschen arbeitet. Für nähere Infos zu dem 
Thema Strompfade bei Schaltregler Layout verweise ich gern an die Seite von Lothar Miller.




Außerdem habe ich die Anordnung der 100nF Kerkos für die Versorgung des STM32 geändert. In der alten Variante waren auf der rechten Seite oben und unten keine Kerkos. Damit aber jedes Paar der Versorgungsspannung eine niederimpedante Entkopplung hat habe ich noch mal einige Bauteile umplaziert, damit die Kerkos möglichst dicht an die Pins des STM32 sitzen. Gerade im Analogbereich oben rechts habe ich viel umordnen müssen um den Kondensator dort unterzubringen. 

KiCAD und Via-Stitching

Wahrscheinlich hat jeder Nutzer von KiCAD irgendwann das Problem, dass er ein einzelnes Via setzen muss. Also Leiterbahn ziehen Lagen wechseln mit Taste 'V' und gut. Nur bei mehr als 100 Vias macht das keinen Spaß. Außerdem entfernt KiCAD überflüssige Verbindungen automatisch (Wenn man es aktiviert). In Eagle konnte ich einfach ein Via in eine Fläche setzen und fertig. Bei KiCAD gibt es diese Funktion so nicht. Also muss man sich umständlich ein Footprint erstellen mit einem Via und dieses dann mehrfach im Layout duplizieren. Und dann muss das Via auch noch dem korrekten Netznamen zuordnen sonst weiß KiCAD nicht, dass das Via zu dem Netz in des es plaziert wurde auch gehört. Das kingt erstmal sehr kompliziert. Aber es ging dann eigentlich gut von der Hand. Bis ich gemerkt habe, dass mein Via Footprint eine Aussparung in der Lötstopmaske hat. 
Bei der Menge an Vias sieht da komisch aus wenn einige Vias freigestellt und Verzinnt sind und andere Vias sind normal mit Lötstopp überzogen. Also das Footprint geändert und die Lötstopausparung gelöscht. Aber KiCAD synchronisiert die Footprints nicht automatisch. Und ich sah mich schon jedes einzelne Via editieren. Also ein Via genommen und das Editieren Menü geöffnet. Dann Footprint ändern und siehe da, KiCAD hat mir angeboten Das neue Footprint für alle meine Vias mit der selben Referenz zu übernehmen. Augenzu und angeklickt, siehe da er hat alle Vias mit einem Klick geändert! Puh :)

OpenHardware

Weil ich den aktuellen Stand als so gut empfinde habe ich das Projekt veröffentlicht: thunderdrive-combat auf BitBucket

Die Projektdateien sind mit KiCAD 4.02 erstellt, sodass das Projekt von jedem geöffnet und bearbeitet werden kann. 


Donnerstag, 3. März 2016

Das Layout #2 ist soweit.

Es hat etwas gedauert aber jetzt ist der neue Schaltplan und das Layout auf einem Stand den man zeigen kann.

Die Unterseite der Platine mit den 12 Fets und dem DRV8305.
Die Oberseite der Platine mit dem STM32F446RE, den Shunts und dem restlichen Hühnerfutter.
An der linken Seite ist der 3,5A Stepdown mit dem LMR14030 auf der Rückseite, daneben befindet sich der STM32F446 in LPFP64, sowie der DRV8305 darunter. Unterdem DRV ist das Powerpad als Pad mit 3mm Bohrung ausgeführt, damit der DRV komplett von Hand bestückt werden kann. Dann folgen 2 dicke Elkos für den Zwischenkreis. Die habe ich zur besseren Übersicht ausgeblendet, außerdem sollen diese Elkos liegend bestückt werden. Zur niederimpedanten Entkopplung der Versorgung folgen dann 1 Kerko je Phase und dann ein Shunt je Phase. Zum Schluss befindet sich rechts der Anschlussbereich in dem 3,5 - 4mm Goldkontakte eingelötet werden können.



Montag, 15. Februar 2016

Revision 2 des TDCombat

Nichts ist so beständig wie der Wandel. Deshalb habe ich nach langem Hin und Her dazu entschlossen das alte Design nur abzuwandeln, aber die Dimensionierung gleich zu lassen. Das Ziel ist immer noch ein kleiner leichter BLDC-Umrichter für den Air Combat. Ohne zusätzliche Kühlung sollen 20A bei 6S kontinuierlich möglich sein.

Es hat ein BEC

BEC mit getrennten LDOs für Analog- und Digitalversorgung
Entgegen meines letzten Posts bekommt der TDCombat ein 5V 3,5A BEC, von welchem die 3V3 für den STM32 mit 2 TPS73233 abgeleitet werden. Wenn ich diesmal das Layout nicht verbocke, dann sollte die Versorgung gesichert sein.

Ein DRV830x sie zu knechten

Der DRV8305 integriert einen Großteil der Schaltung
Wenn man in diesen Tagen einen BLDC-Regler designed der halbwegs klein werden soll, kommt man um die DRV830x von TI nicht herum. Ich habe mich immer gescheut vor diesen ICs, weil gerade die DRV8301/2 sehr zickig sind, was Lagerung und Löten betrifft. Diese ICs von Hand mit dem Lötkolben zu bestücken ist unmöglich außer man macht sich das PowerPAD des ICs mit einem großen Via zugänglich, und genau das habe ich mit dem DRV8305 vor.

Warum der DRV8505 und nicht der 8301 oder 8302

Weil er neuer ist :). Und weil der 1,5A Stepdown des 8301 oder 8302 überflüssig ist durch das 3,5A BEC. Außerdem ist der DRV8305 noch weiter integriert als seine älteren Brüder. Wie an dem Schaltplan zu sehen ist braucht der 8305 keine Gatebeschaltung. Das Schaltverhalten soll sich laut Datenblatt mit 2 Parameter (IDRIVE und TDRIVE) einstellen lassen. 
Der etwas niedrigere maximale Gatestrom von ca. 1A ist für die kleinen Toshiba-FETs mehr als ausreichend. Dennoch bin ich gespannt wie sich der Treiber verhält und ob parallel geschaltete FETs Probleme machen können. 

Der größte Gewinn ist aber die Überwachung jedes FET-Paares auf Überstrom. Sollte ein FET durchschlagen oder ein Phasenschluss auftreten, so schaltet der DRV alle FETs ab und meldet den Fehler. Somit sollte ein Defekt in der Brücke keinen Totalausfall der BEC-Versorgung zur Folge haben und der Flieger sollte noch kontrollierbar sein.

Zusätzlich hat der DRV8305 einen dritten Verstärker für eine dreiphasige Strommessung. Damit kann der Regler mit 100% Duty fahren. Denn bei einer 3phasigen SVPWM ist immer nur eine der Phasen bei 100% Duty und die beiden haben einen so geringen Dutycycle, dass eine Strommessung in den Phasen möglich ist. Und wenn die Phase außerhalb dieses Bereiches sind kann die 3. Strommessung genutzt werden um jegliche Gleichtaktstörung auf den Strommessungen zu kompensieren, in dem die vollständige 3 phasige Clark-Transformation berechnet wird.

Das Hirn des Ganzen

Der STM32F446RE übernimmt die Steuerung und Regelung des Antriebs.
Zum entwickeln der Software habe ich gern etwas mehr Rechenleistung. Ein STM32F303RC reicht mit 72MHz eigentlich aus für die FOC, den Beobachter und die Zustandsüberwachung des Motors. Dennoch ist Leistung nur durch mehr Leistung zu ersetzen. Außerdem bietet der STM32F446 mit 180MHz so viel Luft nach oben, dass ich damit die Regelfrequenz von 10kHz auf 20kHz erhöhen kann und noch Luft nach oben habe für Telemetrie (z.B. Graupner HOTT)  und ggf. UAVCAN, falls ich den Regler auch für Copter einsetze. Zum debuggen und testen auf dem Schreibtisch habe ich noch 2 Taster-Eingänge und DAC-Ausgänge (Danke an Andreas für die Idee) vorgesehen. Außerdem leiste ich mir in der Software den Luxus eines RTOS (Chibios/RT). Das ist nicht wirklich notwendig, macht aber das Softwaredesign einfacher. Genauso erleichtert die Verwendung von C++ die Programmierung, sofern man sinnig mit den Sprachkonstrukten umgeht. 




Mittwoch, 3. Februar 2016

Warum eigendlich FOC oder das BEC fliegt raus!

Es gibt tausende von verschiedenen BLDC-Reglern auf dem Markt und recht viele sind sogar Opensource oder Openhardware Projekte aber nur ganz weniger benutzen feldorientierte Regelung.
Warum ist das so? Klar FOC ist wesentlich aufwändiger zum implementieren und die Hardware wird ebenfalls aufwändiger. Aber ein Hauptgrund ist die Entwicklung eines zuverlässigen Beobachters für die Lage des Rotors. Einem BLDC-Regler reichen 6 Zustände, die er entweder über die
Messung des Nulldurchgangs der BEMF des Motors ermittelt oder über 3 HALL-Sensoren.

Die feldorientierte Regelung braucht aber einen möglichst genauen Lagewinkel des Rotors um den Antrieb effizient zu regeln. Deshalb braucht man entweder einen Encoder an der Rotorwelle oder ein Modell mit dem die Rotorlage rechnerisch bestimmt wird. Und gerade dieser Punkt ist für mich als Regelungstechniker am interessantesten.

Genau wie konventionelle BLDC-Regler hat auch ein Umrichter der mit feldorientierter Regelung arbeitet, dass bei niedrigen Drehzahl die Gegenspannung des Motor zu gering ist um an ihr die Rotorlage zu bestimmen. Aber der große Vorteil der feldorientierten Regelung ist, dass das Motor-Modell so ausgelegt werden kann, dass der Beobachter aus dem Stillstand des Motors herraus eine halbwegs genaue Rotorlage ermitteln kann und so der Motor ohne Startroutine anläuft.

Benjamin Vedder demonstriert das gerade mit seinem VESC und diesem Beobachter und seine Ergebnisse sehen sehr gut aus. Sein erstes Vergleichsvideo zeigt sehr schön einen wesentlichen Vorteil der FOC.

Das ganze ist wesentlich leiser. Es gibt weniger Vibrationen auf dem Antrieb, weil die Ströme schön sinusförmig sind und wenn man die PWM-Frequenz auf 20kHz setzt hört man auch die PWM nicht mehr. Was bleibt sind entweder mechanische Geräusche der Lager und des Getriebes oder Schwingungen die durch eine schlecht eingestellte Regelung kommen. Aber das Verfahren ermöglicht einen sehr ruhigen und leisen Lauf der Maschine.
Besonders merkt man, unter Last. Wie mein Video hier mit meinem RES-Beobachter-System zeigt.
Die PWM ist mit 20kHz nicht zu hören und der Motor dreht sich ohne fiepen oder ähnliche Töne obwohl gerade 20A fließen. Was man hört ist der Lagerschaden des 6374 vorn im Bild :).

Aber was bringt der Aufwand jetzt?

Eine E-Maschine die nahezu lautlos und vibrationsarm läuft. Außerdem stellt eine Stromregelung auch eine sehr wirksame Strombegrenzung dar. Falls die Luftschraube zu groß ist und der Motor mit einem normalen BLDC-Regler überhitzen würde, ist das mit einem Umrichter der FOC verwendet,
nicht möglich (Wenn die Stromgrenze richtig gewählt ist.). Wenn 20A über die Fernbedienung vorgegeben werden, dann stellt der Regler sie ein. Mehr Strom fließt dann nicht.

Gerade für die Anwendung im Kopter ist außerdem wichtig, dass so ein Umrichter neue Sollwerte viel schneller anfahren kann. Damit steigt die mögliche Dynamik des Lageregelkreises einen Kopters. Damit fliegt der Kopter ruhiger und kann schneller seine Lage verändern. 

Für den Modellflug mit Flächen-Modellen ist die höhere Effizienz und der ruhige Lauf das beste Kriterium. Gerade in einem großen Schlepper mit 12-14S kann sich der Einsatz von FOC richtig lohnen. Das Modell ist leiser und nimmt bis zu 30% weniger Strom auf. (Zu gegebener Zeit werde ich Gerd Giese ein Exemplar des Umrichters schicken, damit er diese Behauptung mit Messergebnissen untermauern kann :). ) .

Und hier kommt mein Dilemma mit dem TD Combat. Für den kleinen 3S Miefquirl lohnt sich solch ein Aufwand nicht. Ab 6S wird das Thema eigentlich erst interessant, Deshalb habe ich auch beschlossen, Das BEC fliegt raus! Ein externes BEC oder eine andere Empfängerstromversorgung ist in diesem Bereich durch aus üblich, und ich brauche keinen ineffizient arbeitenden viel zu groß ausgelegten Schaltregler für 5-8,4V auf dem Umrichter vorsehen. Das spart Platz und sorgt für eine bessere Spannungsversorgung der restlichen Bauteile.