This repository has been archived by the owner on Sep 26, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
feed.xml
1027 lines (780 loc) · 80.9 KB
/
feed.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Roboterclub Aachen</title>
<atom:link href="/feed.xml" rel="self" type="application/rss+xml"/>
<link>http://www.roboterclub.rwth-aachen.de/</link>
<description></description>
<pubDate>Wed, 15 May 2024 15:51:13 +0000</pubDate>
<item>
<title>Saisonrückblick 2023</title>
<link>/blog/2023/season-2023.html</link>
<guid isPermaLink="true">/blog/2023/season-2023.html</guid>
<description><p>Auch im Jahr 2023 wollen wir die nun beendete Saison resümieren.
Der Roboterclub kann auf einen deutlichen personellen Zuwachs und damit neuen Teamspirit zurückblicken.
Wie üblich haben wir dieses Jahr einen neuen Roboter konstruiert und von Grund auf neu gebaut.</p>
<p>Dürfen wir vorstellen: Antoinette</p>
<p><img src="../../assets/img/blog/2023/antoinette-20230518_173951.jpg" alt="Roboter 2023 Antoinette" /></p>
<h3 id="mechanik">Mechanik</h3>
<p>Im Vergleich zum Vorjahr hat sich einiges geändert.
Antoinette ist dieses Jahr mit einem Differentialantrieb ausgestattet.
Zwei große getriebene Räder mit zwei Omniwheels als Stützräder bilden die Basis des Antriebsstrangs.</p>
<p>Um mit den diesjährige Spielelementen interagieren zu können ist,
Antoinette auf der Vorderseite mit einem Greifer ausgestattet,
der die Kuchenscheiben greifen und anschließend mit einem Aufzugsmechanismus anheben kann.
Die Kuchenscheiben sollen so auf die Stangen des Sortiermechanismus geschoben werden.
Diese sind dazu gedacht im Ablegeprozess die richtige Reihenfolge der Kuchen für das <em>Legendary Recipe</em>,
ganz unten der dunklen Kuchenboden, gefolgt von der gelben Buttercremescheibe und obendrauf die rosa <em>Toppingscheibe</em>, zu realisieren.
Zusätzlich ist im Roboter ein Kirschenportionier-Mechanismus verbaut,
der es mit nur einem Motor erlaubt eine einzelne Kirsche zum Schluss des Absetzens auf dem fertigen Kuchen zu platzieren.</p>
<p>Der spaßigste Mechanismus am diesjährigen Roboter ist wahrscheinlich die <em>Cherry-Kanone</em>.
Um uns einige Extrapunkte sichern zu können haben wir kurzfristig vorm Wettbewerb noch einen durch eine Feder getrieben Schussmechanismus überlegt,
der eine Kirsche zu Spielbeginn in den am Spielfeldrand stehenden Korb befördert.
Den finalen Touch hat Antoinette durch die zweifarbige LED-Beleuchtung, in grün-blau, erhalten.</p>
<h2 id="elektronik">Elektronik</h2>
<p>Antoinette ist auch dieses Jahr fast ausschließlich mit selbstdesignten Platinen versehen.
Ausnahme bildet hier das UP2-Board von Intel, welches diese Saison erstmalig verbaut wurde.
Abgesehen davon wurden die Mikro-Motoren der zweiten Generation für alle Motoren verbaut,
sowie das neue BMS, welches diese Saison nur teilweise in Benutzung war.
Dies ermöglichte uns den Roboter wie auch zuvor über einen 6S-LiFe-Akku oder alternativ über das Netzteil mit dem nötigen Strom zu versorgen.
Die größte Neuerung stellt die Kamera dar, die am Spielfeldrand in etwa einem Meter Höhe angebracht ist.
Diese soll die <em>ArUco-Marker</em>, die auf den Gegnerrobotern sowie den Spielelementen abgedruckt sind, erkennen und auf dem Spielfeld tracken.</p>
<h2 id="software">Software</h2>
<p>Diese Saison wurde nun der Schritt gewagt auf ROS2 (Robot Operating System) umzusteigen.
Zum Testen und Entwickeln läuft ROS2 Humble Hawksbill in einem Dockercontainer auf dem UP2-Board.
Der ROS2 Softwarestack stellt die zentrale Steuereinheit des Roboters dar und
ist unter anderem für die Routenplanung, Sensorauswertung und Ausführung der Spielstrategie zuständig.
Die Motorsteuerung in C++ basiert auf dem Embedded-Framework modm aus den vorherigen Jahren, die für die aktuellen Mikromotoren weiterentwickelt wurde.
Um die Kommunikation zwischen der ROS2 basierten Spielsteuerung, dem Antrieb, und den Aktoren zu ermöglichen,
wurde eine <em>canOpen</em> Schnittstelle implementiert.
Das altbewährte Lokalisierungssystem per Ultraschallsensoren und IMU,
welches noch das <em>Xpcc</em> Protokoll über CAN aus dem <em>modm</em> Framework nutzt, wurde ebenfalls an ROS2 angebunden.
Bei Spielstrategie und Routenplanung wurde vor allem Wert auf Wiederverwendbarkeit gelegt,
um eine Anpassung an die Regeln der kommenden Saison zu ermöglichen,
sowie um neue Features, wie visuelle Spielelemente-Erkennung, einfach einbinden zu können.</p>
<h2 id="wettbewerbe">Wettbewerbe</h2>
<p>Der Roboterclub hat dieses Jahr an den Wettbewerben in Deutschland und dem Finale in Frankreich mit jeweils zwölf Mitgliedern teilgenommen.</p>
<h3 id="vorentscheid-deutschland">Vorentscheid Deutschland</h3>
<p><img src="../../assets/img/blog/2023/eurobot-2023-d-IMG_20230423_161521751.jpg" alt="Season 2023 Teamfoto Dresden" /></p>
<p>Am 21. und 22. April hat der Roboterclub am deutschen Vorentscheid in Dresden teilgenommen, welcher von der TURAG vorort organisiert wurde.
Am Freitag vor dem Wettbewerb wurde bereits angereist, um weiter am Roboter arbeiten zu können.
Leider war der Roboter Antoinette noch nicht soweit, als das wir mit ihr in Dresden antreten konnten.
Daher musste der Roboter <em>Wanda</em> der letzten Saison noch einmal genutzt werden.
Hinzu kam ein Problem mit fehlerhaften Bauteilen in unserem Lokalisierungssystem, was zu einem arbeitsreichen Samstag führte.
Allerdings konnten am Samstagabend sowohl Antoinette ihre ersten Fahrmanöver ausüben als auch Wanda Spiele bestreiten.
Dadurch konnten wir uns in der Finalrunde am Sonntag mit dem dritten PLatz für das Finale in Frankreich qualifizieren.</p>
<h3 id="internationales-finale-frankreich">Internationales Finale Frankreich</h3>
<p><img src="../../assets/img/blog/2023/eurobot-2023-f-C8CD15DC-FB3A-4A78-B839-91460E68AD51.jpg" alt="Season 2023 Teamfoto Frankreich" /></p>
<p>Vom 17. bis 20. Mai fand das Eurobotfinale in La Roche-sur-Yon statt.
Über vier Tagen haben wir mit Hochdruck an dem Roboter Antoinette gearbeitet und konnten letztendlich auch das letzte Spiel mit ihr bestreiten.
Dafür wurde teilweise komplett auf Schlaf verzichtet, was mit Platz 11 von 25 nach den Vorrunden belohnt wurde.
Bei den Spielen davor wurde noch einmal auf den Roboter Wanda zurückgegriffen.
Dabei stellte sich heraus, dass unser Lokalisierungssystem sehr anfällig gegenüber LIDAR-Sensoren anderer Roboter ist,
was die Positionsgenauigkeit massiv beeinflusste.
Weiterhin wurden die beiden Roboter noch um einen sogenannten <em>Disguise-Mechanismus</em> aufgerüstet,
welcher den Roboter kurz vor Spielende ausleuchtet.
Zur Beleuchtung wurde eine unserer Runetag-Platinen zweckentfremdet.</p>
<p><img src="../../assets/img/blog/2023/wanda-glowing-20230519_143017-cut.jpg" alt="Zweiter Roboter 2023 Wanda angeleuchtet" /></p>
<p>Alles in allem war die Saison ein großer Erfolg.
Wir konnten mit einem weitgehend neuen Team, einen komplett neuen Roboter in kurzer Zeit bauen, der an einem Wettbewerb partizipieren konnte.
Dabei haben wir endlich den Umstieg auf ROS2 absolvieren können.
Hinzu hat das Team sehr viel gelernt und bereits viele neue Ideen für Verbesserungen entwickelt.
Und natürlich am wichtigsten, alle hatten sehr viel Spaß dabei!</p>
</description>
<pubDate>Tue, 11 Jul 2023 00:00:00 +0000</pubDate>
</item>
<item>
<title>Eurobot Deutschland 2022</title>
<link>/blog/2022/eurobot-germany-2022.html</link>
<guid isPermaLink="true">/blog/2022/eurobot-germany-2022.html</guid>
<description><p>Obwohl das internationale Finale des Eurobts in Frankreich bereits vorbei ist,
fand der deutsche Eurobot Wettbewerb vom 08-09.10.2022 bei uns in Aachen statt.
Mit uns haben das Team MAI aus Markt Indersdorf,
das Team M.A.M.U.T. Robotics der THM Gießen
und das Team TURAG aus Dresden teilgenommen.
Bei diesem Wettbewerb ging es nicht wie sonst üblich um eine Qualifikation für das Finale in Frankreich,
sondern um das Wiederaufleben des Eurobots in Deutschland nach zwei Jahren Corona Pause.
In sechs Vorrunden und einem Finalspiel nach dem Konzept der <em>Double Elimination</em>,
konnten die Teams mit ihren Robotern gegeneinander antreten.
Dabei konnte jedes Team die Fähigkeiten seines Roboters mehrfach demonstrieren und von Runde zu Runde seinen Roboter optimieren.
Im Finale spielten wir gegen das Team TURAG und konnten mit zwei direkten Siegen im <em>Best-of-Three</em>-Modus den Eurobot Deutschland gewinnen.</p>
<p><img src="/assets/img/blog/2022/2022-10-eurobot-ger-ac-DSC05264_.JPG" alt="Team Foto; Erster und Zweiter Platz (RCA, TURAG)" /></p>
<p>Neben dem Eurobotwettbewerb gab es noch einen <em>Technical Innovation Contest</em>,
bei welchem die Teams technische Problemstellungen und deren Umsetzungen an ihren Robotern präsentieren durften.
Bewertet wurden die Teams von einem Gremium aus drei externen Expertinnen und Experten aus den Bereichen Mechatronik,
Wirtschaft und Mensch Maschine Interaktion.
Den Kontest konnte das Team TURAG für sich entscheiden durch ihre innovative Nutzung von Bilderkennung.
Der Deutsche Eurobot Wettbewerb 2023 soll aller Voraussicht nach in Dresden von der TURAG ausgerichtet werden.</p>
<p><img src="/assets/img/blog/2022/2022-10-eurobot-ger-ac-DSC05270_.JPG" alt="Roboter aller teilgenommenen Teams" /></p>
</description>
<pubDate>Sun, 09 Oct 2022 00:00:00 +0000</pubDate>
</item>
<item>
<title>Saisonrückblick 2022</title>
<link>/blog/2022/saisonrueckblick-2022.html</link>
<guid isPermaLink="true">/blog/2022/saisonrueckblick-2022.html</guid>
<description><p>Nach zwei Jahren Corona-Pandemie wurde endlich im Roboterclub wieder ein Roboter entworfen, ausgelegt, konstruiert und gebaut.
Bis auf den letzten Schritt, das Aufbauen, sogar eigentlich zwei Roboter.</p>
<p><img src="../../assets/img/blog/2022/2022-robot-1.jpg" alt="Roboter _Wanda_, Eurobot-Saison 2022" /></p>
<p>Auch war diese Saison für viele Studierende die erste Gelegenheit einen Eurobot-Wettbewerb live zu erleben.</p>
<p>Vielleicht kommt zum zweiten Roboter in der Zukunft noch ein weiterer Blog-Post.</p>
<h3 id="mechnik-für-roboter-wanda">Mechnik für Roboter <em>Wanda</em></h3>
<p>Der Antrieb von Wanda besteht aus drei im Stern angeordneten bürstenlosen Motoren mit Planetengetriebe von Dunker. Diese treiben über ein zweistufiges Stirnradgetriebe die Antriebsräder an. Bei den Antriebsrädern handelt es sich um so genannte <em>Onmiwheels</em>, wodurch der Roboter zu jedem Zeitpunkt in jede beliebige Richtung fahren kann.</p>
<p><img src="../../assets/img/blog/2022/2022-robot-2.jpg" alt="Roboter _Wanda_, Eurobot-Saison 2022" /></p>
<p>Als Aktorik wurde ein drei-gelenkiger Greifarm entwickelt mit welchem die Spielelemente gegriffen und im Roboter verstaut werden sollten.
Der Arm erwies sich allerdings als untermotorisiert und sehr komplex in der Ansteuerung aufgrund der hohen Anzahl an verbauten Motoren (insgesamt fünf).
Auch aufgrund der engen personellen Lage im Team wurde der Arm nicht am Roboter verbaut sondern ein Stupser vorne am Roboter montiert, um trotzdem Interaktion mit den Spielelementen zu ermöglichen.
Im Roboter sollte ein Greifer die Spielelemente wenden und in einer Vorrichtung ablegen. Der Greifer im Roboter und die Aufnahme für die Spielelemente sind im Roboter verbaut, wurden aufgrund des fehlenden Arms jedoch nicht benutzt.
Die Erfahrungen aus der Entwicklung des Arms werden in zukünftige Greifaktoriken mit einfließen, wodurch man hoffentlich zukünftig eine Nachfolgeversion des Arms an einem der Roboter sehen kann.</p>
<h3 id="elektronik">Elektronik</h3>
<p>Für die Elektronik musste leider auf viele alte Lösungen zurückgegriffen werden,
da es neben den Supply-Chain-Problemen auch personell eng im Team war.</p>
<p>Ein neues Power-Distribution-Board als Ersatz für das in die Jahre gekommene <em>BMS</em> ist in Arbeit, allerdings nicht fertig.
Das neue Modul hat zwei Anschlüsse für 6S-LiFe-Akkus und zusätzlich einen Netzteil-Anschluss.
Da die alte BMS-Platine nur einen Akku nutzen kann, wurde die im ungenutzten zweiten Akku-Slot untergebracht.</p>
<p><img src="../../assets/img/blog/2022/2022-battery-bms-hack.jpg" alt="Gepfuschte Anbringung der BMS Platine" /></p>
<p>Leider kamen auch die inzwischen in Version 2.1 vorhandenen <a href="https://github.com/roboterclubaachen/micro-motor">Motor-Controller <em>Micro-Motor</em></a> noch nicht zu Einsatz,
weil die Software noch nie zuvor getestet wurde und es genügend aufgebaute <a href="/projekt/alpha-motor.html"><em>Alpha-Motor</em></a>-Platinen beziehungsweise hinreichend wenig Motoren im Roboter gab.</p>
<h3 id="software">Software</h3>
<p>Entgegen des ursprünglichen Vorsatzes einen Linux-Computer in den Roboter zu integrieren und die Steuerung der Roboters in ROS2 zu implementieren, wurde zwei Wochen vor den Wettbewerben entschieden doch den alten und “bewährten” Software-Stack erneut zu verwenden.
Dieser Software-Stack nutzt das im RCA ursprünglich entwickelte Microcontroller-Framework <a href="https://modm.io/"><em>modm</em></a> und das dazugehörige <a href="https://github.com/modm-io/lbuild"><em>lbuild</em></a> und lässt alle Software auf einem Haupt-Microcontroller (STM32F407) laufen.
Der Haupt-Microcontroller übernimmt neben der Spielstrategie, Fahrplanung und Motionplanning auch die Motorregelungen.
Die Motoren sind über selbst entwickelte Motorcontroller (<a href="/projekt/alpha-motor.html"><em>Alpha-Motor</em></a>) per CAN-Bus angeschlossen und bekommen darüber quasi Duty-Cycle-Werte zugeschickt und senden Encoder-Werte zurück.</p>
<p>Schnell war eine Kopie der Software von 2019 im Gitlab angelegt.
Das Anpassen an verschiedene, inzwischen drei Jahre weiter entwickelte Abhängigkeiten, wie das <a href="https://modm.io/">modm Framework</a>, und beheben von Compiler- und Linker-Fehlern stellten sich als nervig heraus.</p>
<p>Ein weiteres Problem trat beim Wettbewerb in der Schweiz zu Tage: Der Haupt-Microcontroller resettete sich reproduzierbar nach ein paar Sekunden, was sich nach einigem Debuggen als Speicherproblem herausstellte.
Eine Queue von CAN-Nachrichten wuchs schneller als diese geleert wurde, hatte keine Größenbegrenzung und belegt dann nach einigen Sekunden den gesamten SRAM des STM32.
Ursächlich war hier die falsche Verteilung der vier Terminierungswiderstände für die zwei CAN-Busse im Roboter: Einer der Busse hatte drei, der andere nur einen Widerstand abbekommen.</p>
<h3 id="wettbewerbe">Wettbewerbe</h3>
<p>Der Roboterclub ist mit eher kleineren Gruppen zu den Wettbewerben nach Belgien, in die Schweiz und zum Internationalen Finale nach La Roche-sur-Yon gefahren.</p>
<h4 id="belgien">Belgien</h4>
<p>Zum Wettbewerb in Belgien am 23.24. April 2022 war der Roboter leider noch nicht in einem Zustand um für den Wettbewerb zu homologieren,
jedoch konnten wertvolle Erfahrungen gesammelt werden und einige Tests mit den vollständig aufgebauten Wettbewerbsspielfeldern durchgeführt werden.
Außerdem entstand ein Großteil der saisonspezifischen Software vor Ort, sodass das Wochenende insgesamt positiv aufgefasst wurde.</p>
<h4 id="schweiz">Schweiz</h4>
<p>Etwa einen Monat später, am 12. Mai, ging es los in den Süden der Schweiz nach Yverdon-Les-Bains um vom 13. bis zum 14. Mai am dortigen Wettbewerb teilzunehmen.
Der Roboter homologierte hier nach kleineren Problem, die jedoch einfach zu lösen waren, etwas verspätet und konnte an den Spielen teilgenommen werden.
Mit wenigen Ausnahmen wurde auch eine stattliche Anzahl an Punkte erreicht.</p>
<p><img src="../../assets/img/blog/2022/2022-swisseurobot-playground-robot-team.jpg" alt="Ein Teil des RCA-Teams beim Eurobot-Wettbewerb in der Schweiz" /></p>
<p>Während des Wettbewerbes wurde außerdem eine <em>Inertiale Messeinheit</em> (IMU) nachgerüstet und in die Software eingebunden um die schlechte Qualität der Orientierungs-Information den Encodern des <a href="/projekt/fahrplattform-little.html">Omniwheel-Antriebs</a> und des <a href="/projekt/ultraschall-baken.html">Ultraschall-Baken</a> zu verbessern.
Leider ist die vollständige Integration in unseren Software-Stack erst nach dem Wettbewerb fertig geworden.</p>
<p>Auf dem Rückweg aus der Schweiz nach Aachen wurde auf dem Weg noch ein Zwischenstopp eingelegt beim <em>Creux du Van</em> und die beeindruckende Felsformation umwandert.</p>
<p><img src="../../assets/img/blog/2022/2022-rueckweg-wanderung.jpg" alt="Creux du Van" /></p>
<h4 id="internationales-finale-in-frankreich">Internationales Finale in Frankreich</h4>
<p>Auch nach Frankreich ist am 25. Mai eine kleine Vertretung des Roboterclubs gefahren.
Da nach wie vor der aufwendige Greifarm nicht verbaut war, wurde die Integration der IMU im Wettkampf getestet.
Eine einfache Kombination aus der Position der Ultraschall-Baken](/projekt/ultraschall-baken.html)
und die Orientierung der IMU führte zu einer deutlichen Verbesserung der Fahrweise des Roboters als zuvor.
Dadurch konnten einfache Aufgaben in fast Wettbewerbsspielen erledigt, sodass auch die Punkteschätzung der Roboterstrategie korrekt war.</p>
<h4 id="deutschland">Deutschland</h4>
<p>Weil aus Deutschland nur drei Teams bereit waren, war kein nationaler Vorentscheid nötig.
Da bei den Teams jedoch trotzdem Bedarf nach einem Zusammentreffen bestand wurde entschieden einen Wettbewerb im späten Sommer (8./9. Oktober 2022) in Aachen auszurichten.
Dazu gibt es <a href="/eurobot-2022/">hier mehr Informationen</a>.</p>
</description>
<pubDate>Sun, 11 Sep 2022 00:00:00 +0000</pubDate>
</item>
<item>
<title>The Rules for Eurobot 2022 are published</title>
<link>/blog/2021/rules-eurobot-2022.html</link>
<guid isPermaLink="true">/blog/2021/rules-eurobot-2022.html</guid>
<description><p>The new theme for Eurobot 2022 is “Age of Bots”. There are many actions for the Robots to do and many parts to move.
We are already brainstorming and looking forward to exiting games.</p>
<p>The rules are published on the <a href="https://www.eurobot.org/">website of eurobot.org</a>.</p>
<p><img src="/assets/img/blog/2016/phobos_in_castle.jpg" alt="Phobos in castle" /></p>
</description>
<pubDate>Sat, 18 Sep 2021 00:00:00 +0000</pubDate>
</item>
<item>
<title>µMotor 2 - Teil 4: Strom- und Spannungsmessung mit ADC</title>
<link>/blog/2020/micro-motor-2-teil-4.html</link>
<guid isPermaLink="true">/blog/2020/micro-motor-2-teil-4.html</guid>
<description><p>Over the past few weeks, a circuit diagram for the Micro-moto version 2 has been created from the previous considerations.
After some productive reviews and discussions about the schematic and the incorporation of various improvements and changes, a board layout was drawn in KiCad.</p>
<p>The production of the board was sponsored by Aisler and after only about a week of waiting the boards and all components arrived in our lab.</p>
<p>Quickly two boards were assembled and except for one single solder bridge successfully soldered in the reflow oven.
Only the (optional) vertical Micro-USB connector had been forgotten when ordering the components, but this was no problem, since programming via SWD is more convenient for testing due to its debugger interface.</p>
<p>Step by step, power supply, STM32 microcontroller, status LEDs and gate drivers including MOSFET power stage were tested successfully. Everything worked on the first try, for once.</p>
<p>The development process of the micro-motor can be followed up <a href="/blog/2019/micro-motor-2-teil-3.html">in</a> <a href="/blog/2019/micro-motor-2-teil-2.html">several</a> <a href="/blog/2019/micro-motor-2-teil-1.html">older</a> <a href="/blog/2018/micro-motor-debugging-inbetriebnahme.html">blog posts</a>.</p>
<p>The next step is to bring the current and voltage measurement into operation.
For this purpose we document in this blog post the requirements and development of the implementation with the analog-to-digital converter of the STM32G4 microcontroller.</p>
<h2 id="requirements">Requirements</h2>
<ul>
<li>ADC sampling synchronous to PWM of motor (approx. 100kHz)</li>
<li>Sampling on every PWM cycle</li>
<li>For all phases either current or voltage are measured: current on both “switched” phases, voltage on the “high-impedance” phase</li>
<li>Measure current in both phases simultaneously</li>
<li>Additional ADC measurements at low priority and with low frequency
<ul>
<li>Motor supply voltage</li>
<li>3.3V supply voltage (Vbat)</li>
<li>NTC temperature sensor</li>
<li>Internal temperature</li>
</ul>
</li>
</ul>
<h3 id="adc-channel-usage-on-the-micro-motor">ADC channel usage on the micro-motor</h3>
<table>
<thead>
<tr>
<th>Measurement</th>
<th>Possible ADC channels</th>
<th>Gpio pin</th>
</tr>
</thead>
<tbody>
<tr>
<td>Current U</td>
<td>Adc1Ch1, Adc2Ch1</td>
<td>GpioA0</td>
</tr>
<tr>
<td>Current V</td>
<td>Adc1Ch2, Adc2Ch2</td>
<td>GpioA1</td>
</tr>
<tr>
<td>Current W</td>
<td>Adc1Ch4</td>
<td>GpioA3</td>
</tr>
<tr>
<td>Voltage U</td>
<td>Adc1Ch15, Adc3Ch12</td>
<td>GpioB0</td>
</tr>
<tr>
<td>Voltage V</td>
<td>Adc2Ch4</td>
<td>GpioA7</td>
</tr>
<tr>
<td>Voltage W</td>
<td>Adc2Ch3</td>
<td>GpioA6</td>
</tr>
<tr>
<td>Motor supply voltage</td>
<td>Adc2Ch12</td>
<td>GpioB2</td>
</tr>
<tr>
<td>3.3V supply voltage</td>
<td>Adc1Ch17, Adc3Ch17</td>
<td>N/A</td>
</tr>
<tr>
<td>NTC temperature sensor</td>
<td>Adc1Ch12, Adc3Ch1</td>
<td>GpioB1</td>
</tr>
<tr>
<td>Internal temperature</td>
<td>Adc1Ch16, Adc5Ch4</td>
<td>N/A</td>
</tr>
</tbody>
</table>
<h2 id="implementation">Implementation</h2>
<p>The three critical measurements will be sequenced as “Injected Conversions” and triggered by a event generated from the timer which generates the Motor-PWM.</p>
<p>In an “Injected conversions sequence” (sequence length is limited to 4) each conversion has its own output data register.
Thus all conversion results can be easily read one after the other in the time until the next PWM cycle and no interrupts are needed.</p>
<p>For every of the six valid commutation steps that define the state of the three MOSFET half bridges, a mapping to the ADC channels is predefined and applied during the commutation.</p>
<p>Low-Priority measurements are sequenced in the ADCs “normal-mode” sequence and are triggered at a lower frequency (by another timer or manually from code).</p>
</description>
<pubDate>Fri, 31 Jan 2020 00:00:00 +0000</pubDate>
</item>
<item>
<title>Umzug gemeistert</title>
<link>/blog/2019/umzug.html</link>
<guid isPermaLink="true">/blog/2019/umzug.html</guid>
<description><p>Für uns hieß einmal wieder: “Es ist Zeit, etwas Neues zu beginnen”.
Darum haben wir unsere Sachen gepackt und sind umgezogen.
Ihr findet uns nun in der Melatener Straße 25 im zweiten Stock beim IHF.</p>
<p><img src="../../assets/img/raum-2021.jpg" alt="Der neue Raum" /></p>
<p>Wir danken sehr herzlich dem Institut für Theoretische Informationstechnik unter der Leitung von Prof. Mathar
und der langjährigen Herberge unter seinem Dach.</p>
<h3 id="weitere-information-unter-kontakt">Weitere Information unter: <a href="/kontakt/">Kontakt</a></h3>
</description>
<pubDate>Fri, 01 Nov 2019 00:00:00 +0000</pubDate>
</item>
<item>
<title>µMotor 2 - Teil 3: Microcontroller & Stromversorgung</title>
<link>/blog/2019/micro-motor-2-teil-3.html</link>
<guid isPermaLink="true">/blog/2019/micro-motor-2-teil-3.html</guid>
<description><p>Als Teil der Entwicklung der zweiten Version des Micro-Motors findet nun die Auswahl des Microcontrollers statt.
Außerdem geht es in diesem Blogpost um Komparatoren und die Stromversorgung.</p>
<p>Die bisherige Entwicklung des Motorcontrollers kann in <a href="/blog/2019/micro-motor-2-teil-2.html">mehreren</a> <a href="/blog/2019/micro-motor-2-teil-1.html">älteren</a> <a href="/blog/2018/micro-motor-debugging-inbetriebnahme.html">Blogposts</a> nachgelesen werden.</p>
<p>Die vorläufige Auswahl der Shuntverstärker ist fast abgeschlossen, siehe <a href="/blog/2019/micro-motor-2-teil-2.html">Teil 2</a>.
Ebenso ist der Gatetreiber (<em>DRV832x</em>) gesetzt in der Version ohne Strommessverstärker und mit SPI-Interface (<em>DRV8320S</em> oder <em>DRV8350S</em> in Gehäuse <em>WQFN32</em>, 5x5mm²).
Also MOSFET soll der in Micro-Motor Version 1 bewährte N-Channel Dual-FET <em>FDMD8260L</em> (60V, 5.8mΩ) verwendet werden.</p>
<p>Als nächste wichtige Komponente wird der Microcontroller ausgewählt.</p>
<h3 id="microcontroller">Microcontroller</h3>
<p>Eher zufällig wurden wir auf die neue Microcontroller-Serie <em>STM32G4</em> von ST Microelectronics aufmerksam.
In <a href="/blog/2019/micro-motor-2-teil-1.html">Teil 1</a> wurde der <em>STM32L432CC</em> als präferierter Microcontroller genannt, jedoch bietet die neue <em>STM32G4</em>-Serie, speziell der <em>STM32G474</em> (oder <em>STM32G473</em>, ohne High-Resolution-Timer) einige Vorteile:</p>
<ul>
<li>Taktfreqenz bis zu 170MHz für Cortex-M4F und <strong>alle</strong> Peripherals (max. 80MHz bei <em>STM32L4</em>)</li>
<li>High-Performance Analog Peripherals
<ul>
<li>7x Komparator (<em>COMP</em>), 17ns Propagation delay, einstellbare Hysterese</li>
<li>5x ADC 12bit, 4MSPS, differenzielle Inputs verfügbar)</li>
<li>4x DAC 12bit, 1MSPS</li>
<li>6x Opamp mit GBP (Gain Bandwidth Product) von 13MHz (<em>OPAMP</em>)</li>
</ul>
</li>
<li>DSP (Rechenbeschleuniger) Funktionen für Trigonometrie und Filter (<em>CORDIC</em>, <em>FMAC</em>)</li>
<li>High-Resolution-Timer (<em>HRTIM</em>) mit 184ps Zeitauslösung</li>
<li>3x Advanced Motor Control Timer (<em>TIM1</em>, <em>TIM8</em>, <em>TIM20</em>)</li>
</ul>
<p>Die folgenden Bilder zeigen die für den Micro-Motor relevanten Features der <em>STM32G4</em>-Serie und stammen aus STs Präsentation “STM32G4 Mainstream MCUs Product Overview”.</p>
<p><img src="../../assets/img/blog/micro-motor/microcontrollers_STM32G4_series_product_overview__p10.png" alt="Microcontrollers_STM32G4_series_product_overview.pdf, Seite 10" /></p>
<p><img src="../../assets/img/blog/micro-motor/microcontrollers_STM32G4_series_product_overview__p11.png" alt="Microcontrollers_STM32G4_series_product_overview.pdf, Seite 11" /></p>
<p><small>Quelle: <a href="https://www.st.com/resource/en/product_presentation/microcontrollers_stm32g4_series_product_overview.pdf">https://www.st.com/resource/en/product_presentation/microcontrollers_stm32g4_series_product_overview.pdf</a></small></p>
<p>Stand 2019/08 sind nur einige wenige Chips aus der <em>STM32G4</em>-Serie verfügbar, für den Micro-Motor kommen <a href="https://octopart.com/search?q=STM32G474CET6"><em>STM32G474CET6</em></a> und <a href="https://octopart.com/search?q=STM32G473CET6"><em>STM32G473CET6</em></a> im <em>LQFP48</em> Gehäuse in Frage.
Im vom <em>STM32L433CCU</em> bekannten Gehäuse <em>UFQFPN48</em> stehen noch keine Chips zu Verfügung.
Das Gehäuse <em>LQFP48</em> benötigt zwar mehr Platinenoberfläche als der <em>UFQFPN48</em>, allerdings sind bei letztem Gehäuse durch das Exposed Pad keine Durchkontaktierungen und Leiterbahnen unterhalb des Chips möglich, was den Platzvorteil unter Umständen aufwiegt.</p>
<p><img src="../../assets/img/blog/micro-motor/CubeMX_screenshot_STM32G474CE_201909.png" alt="Mögliches Pinout des Microcontrollers STMG474CE, Screenshot aus ST CubeMX Software" /></p>
<center><small>Mögliches Pinout des Microcontrollers <i>STM32G474CE</i>, Screenshot aus ST CubeMX Software.</small></center>
<p><br /></p>
<p>Erfreulicherweise können die ADC- und Komparator-Eingänge zeitgleich genutzt werden, sodass hier keine unnötigen Pins verschwendet werden müssen.</p>
<h3 id="komparator">Komparator</h3>
<p>Da der Komparator im Microcontroller integriert ist, werden keine dedizierten Komparatoren benötigt.
Das spart viel Platz und reduziert die Komplexität des Platinenlayouts.</p>
<h3 id="systemüberblick">Systemüberblick</h3>
<p>Durch die geänderte Auswahl des Microcontrollers ändert sich das Blockschaltbild geringfügig.</p>
<p><img src="../../assets/img/blog/micro-motor/Micro-Motor-V2-Block-diagram_201909.svg" alt="Micro-Motor V2 Blockdiagram, aktualisiert 2019/09" /></p>
<h3 id="stromversorgung">Stromversorgung</h3>
<p>Die Logik, bzw. alle Komponenten außer den MOSFET-Halb-Brücken und dem Motor, werden über eine separate Spannungsschiene im Roboter mit 6V bis 7V versorgt.
Aus diesen 6V bis 7V müssen lokal 3.3V für den Microcontroller und weitere Elektronik, sowie 5V für Hall-Sensoren und Encoder erzeugt werden.
Die Logik-Versorgungsspannung bleibt im Gegensatz zu Versorgungsspannung für den Motor bei einem Not-Aus bestehen.</p>
<p>Um alle Komponenten auch ungünstigsten Situationen stabil mit Strom zu versorgen sind sowohl für 3.3V als auch für 5V Spannungsregler mit eine Ausgangsstrom von mindestens 200mA nötig.
Beispielsweise der CAN-Transceiver <em>TCAN332</em> kann bei einem Bus Fault bis zu 180mA benötigen, auch in diesem Fall muss der Betrieb des Micro-Motors aufrecht erhalten werden.</p>
<p>Der Gatetreiber <em>DRV832x</em>/<em>DRV835x</em> ist mit dem Suffix <em>R</em> erhaltlich, wo ein Schaltregler galvanisch getrennt ins das Gehäuse integriert ist.
Beim <em>DRV832x</em> handelt es sich um den Buck-Regulator <a href="http://www.ti.com/product/LMR16006">LMR16006X</a>, welcher bei Eingangsspannugen zwischen 4V und 60V ein Spannung zwischen 0,8V bis 60V bei 600mA bereitstellen kann.
Der in den <em>DRV835x</em> integrierte Buck-Regler <a href="http://www.ti.com/product/LM5008A">LM5008A</a> liefert 2.5V bis 75V bei 350mA bei Eingangsspannugen zwischen 6V und 95V.
Statt im <em>WQFN32</em> (5x5mm²) Gehäuse kommt der Gatetreiber dann im <em>WQFN40</em> (6x6mm²) Gehäuse, benötigt also 11mm² mehr Platinenfläche zuzüglich der externen Spule, Kondensatoren und Widerständen.</p>
<p>Das hochintegrierte Schaltwandler-Modul <a href="http://www.ti.com/product/TPS82150">TPS82150</a> hat eine integrierte Spule und benötigt im <em>μSiL8</em> Gehäuse lediglich 8.4mm² Platinenfläche.
Zudem kann ein besseres Platinenlayout durch die flexible Platzierung ermöglicht werden.</p>
<p>Für die Versorgung der empfindlichen analogen Elektronik könnte ein dedizierter LDO-Wandler hinter dem 5V Schaltwandler eingesetzt werden, fall ein LC-Filter eine ausreichend rauschfreie Spannungsversorgung ermöglicht.</p>
<h4 id="rekuperation">Rekuperation</h4>
<p>Mit Hilfe von Rekuperation kann sowohl die Wärmeentwicklung im Micro-Motor, als auch die Batterie-Laufzeit des gesamten Roboters verbessert werden.
Eine Begrenzung der Rekuperationsleistung im Micro-Motor ist nicht vorgesehen, da dies zentral im BMS besser lösbar ist.</p>
<h4 id="überspannungsschutz">Überspannungsschutz</h4>
<p>TVS-Dioden an dem Logik- und Motor-Versorgungsspannungen müssen so ausgelegt werden, dass die auf Micro-Motor vorhandenen Spannungsregler bzw. andere direkt verbundenen Bauteile nicht beschädigt werden können.
Um Rekuperation mit hoher Effizienz zu ermöglichen sollte die Clamping Voltage so hoch wie möglich gewählt werden.</p>
</description>
<pubDate>Mon, 02 Sep 2019 00:00:00 +0000</pubDate>
</item>
<item>
<title>µMotor 2 - Teil 2: Strommessung</title>
<link>/blog/2019/micro-motor-2-teil-2.html</link>
<guid isPermaLink="true">/blog/2019/micro-motor-2-teil-2.html</guid>
<description><p>In diesem Blogpost geht es um die Weiterentwicklung des Motorcontrollers “Micro-Motor” zur Version 2.
Die bisherige Entwicklung des Motorcontrollers kann in <a href="/blog/2019/micro-motor-2-teil-1.html">mehreren</a> <a href="/blog/2018/micro-motor-debugging-inbetriebnahme.html">älteren</a> <a href="/blog/2018/micro-motor-motorcontroller.html">Blogposts</a> nachgelesen werden.</p>
<p>Von den im <a href="/blog/2019/micro-motor-2-teil-1.html">vorherigen Blog-Post</a> aufgelisteten Shuntverstärkern sind die beiden Bauteile von Analog Devices (ehem. Linear Technologie) und Texas Instruments in die nähere Auswahl gekommen.
Es wurden von TIs INA240 Muster bestellt mit Gain 50 und 200, sowie Gain 20 und 50 beim LT1999, da bei diesem keine Variante mit Gain über 50 verfügbar ist.</p>
<p>Als Shunt dient ein 5mΩ 1W 1% SMD-Widerstand in Baugröße 0805 (<a href="https://octopart.com/tlr2attd5l00f-koa+speer-27701192">KOA Speer TLR2ATTD5L00F</a>).
Durch die kleine Bauform ist ein kompakter Aufbau gewährleistet, wie in den Datenblättern empfohlen (<a href="https://www.analog.com/media/en/technical-documentation/data-sheets/1999fd.pdf">LT1999</a> Seite 16 bzw. <a href="http://www.ti.com/lit/ds/symlink/ina240.pdf">INA240</a> Seite 27).</p>
<p><img src="../../assets/img/blog/micro-motor/shuntverstaerker-messungen/Versuchsaufbau-LT1999.jpg" alt="Shuntverstärker Versuchsaufbau" /></p>
<p>Der weitere Messaufbau besteht aus einem <a href="/blog/2019/alpha-motor-description.html">Motor-Controller</a> über welchen Frequenz und Duty-Cycle eingestellt werden können.
Als Last dient ein 2kW Lastwiderstand mit 9,4Ω nach Ground, wodurch ein Strom von maximal 2,1A bei 20V durch den Shunt fließen.
Die Induktivität des Aufbaus ist leider nicht bekannt, das keine geeigenten Messgeräte zur Verfügung standen.</p>
<p>An den folgenden Messungen ist leicht zu erkennen, dass der LT1999 in unserem Fall ungeeignet zur Strommessung In-Phase ist.
Der durch die Common-Mode-Spannungsänderung erzeugte Spike am Ausgang ist größer als das erwartete Mess-Signal,
gerade bei kleinen Duty-Cycles (&lt;10%) verschwindet der Messwert hier vollständig.</p>
<p>Der Shuntverstärker INA240 eignet zur Strommessung In-Phase, hier ist kein störender Einfluss der Common-Mode-PWM-Signals auf den Ausgang zu beobachten.
Die Variante INA240A4 mit Gain 200 kann mit einem 5mΩ Shuntwiderstand nur etwa 2A messen, der Messbereich von 10A beim INA240A2 (Gain 50) ist für den Motorcontroller besser geeignet.
Denkbar wäre es natürlich auch einen kleineren Shuntwiderstand zu wählen, jedoch würde dies aufgrund von stärkeren Einkoppplungen wahrscheinlich schlechtere Ergebnisse liefern.</p>
<p>Auf den Osziloskop-Bildern ist in Gelb der Ausgang des Shuntverstärkers zu sehen.
Auf Kanal 2 (Blau) ist die Spannung an der Motor-Phase beziehungsweise über dem Last-Widerstand dargestellt.</p>
<h2 id="duty-cycle-30">Duty-Cycle 30%</h2>
<h3 id="in-phase">In-Phase</h3>
<p><img src="../../assets/img/blog/micro-motor/shuntverstaerker-messungen/LT1999-20_In-Phase_160kHz_0uH.jpg" alt="Shuntverstärker Messung: LT1999, Gain 20, In-Phase, 160kHz, 0µH" /></p>
<center>LT1999, Gain 20, In-Phase, 160kHz, 0µH</center>
<p><br /></p>
<p><img src="../../assets/img/blog/micro-motor/shuntverstaerker-messungen/LT1999-50_In-Phase_160kHz_0uH.jpg" alt="Shuntverstärker Messung: LT1999, Gain 50, In-Phase, 160kHz, 0µH" /></p>
<center>LT1999, Gain 50, In-Phase, 160kHz, 0µH</center>
<p><br /></p>
<p><img src="../../assets/img/blog/micro-motor/shuntverstaerker-messungen/INA240-A2_In-Phase_160kHz-30.bmp" alt="INA240A2, Gain 50, In-Phase, 160kHz, 30%, (negativer Ausschlag, 20V)" /></p>
<center>INA240A2, Gain 50, In-Phase, 160kHz, 30%, (negativer Ausschlag, 20V)</center>
<p><br /></p>
<p><img src="../../assets/img/blog/micro-motor/shuntverstaerker-messungen/INA240-A2_In-Phase_160kHz-30_12V.bmp" alt="INA240A2, Gain 50, In-Phase, 160kHz, 30%, (negativer Ausschlag, 12V -&gt; 1A)" /></p>
<center>INA240A2, Gain 50, In-Phase, 160kHz, 30%, (negativer Ausschlag, 12V -&gt; 1A)</center>
<p><br /></p>
<p><img src="../../assets/img/blog/micro-motor/shuntverstaerker-messungen/INA240-A4_In-Phase_160kHz-30_12V.bmp" alt="INA240A4, Gain 200, In-Phase, 160kHz (negativer Ausschlag, 12V -&gt; 1A)" /></p>
<center>INA240A4, Gain 200, In-Phase, 160kHz (negativer Ausschlag, 12V -&gt; 1A)</center>
<p><br /></p>
<p><img src="../../assets/img/blog/micro-motor/shuntverstaerker-messungen/INA240-A4_In-Phase_160kHz-30.bmp" alt="INA240A4, Gain 200, In-Phase, 160kHz (negativer Ausschlag)" /></p>
<center>INA240A4, Gain 200, In-Phase, 160kHz (negativer Ausschlag)</center>
<p><br /></p>
<!--
![Shuntverstärker Messung: LT1999, Gain 50, In-Phase, 160kHz, 0µH](../../assets/img/blog/micro-motor/shuntverstaerker-messungen/LT1999-50_In-Phase_160kHz.jpg)
<center>LT1999, Gain 50, In-Phase, 160kHz, 0µH</center><br />
![Shuntverstärker Messung: LT1999, Gain 50, In-Phase, 80kHz, 0µH](../../assets/img/blog/micro-motor/shuntverstaerker-messungen/LT1999-50_In-Phase_80kHz.jpg)
<center>LT1999, Gain 50, In-Phase, 80kHz, 0µH</center><br />
-->
<h3 id="low-side">Low-Side</h3>
<p><img src="../../assets/img/blog/micro-motor/shuntverstaerker-messungen/LT1999-20_Low-Side_160kHz_0uH.jpg" alt="Shuntverstärker Messung: LT1999, Gain 20, Low-Side, 160kHz, 0µH" /></p>
<center>LT1999, Gain 20, Low-Side, 160kHz, 0µH</center>
<p><br /></p>
<p><img src="../../assets/img/blog/micro-motor/shuntverstaerker-messungen/LT1999-50_Low-Side_160kHz.jpg" alt="Shuntverstärker Messung: LT1999, Gain 50, Low-Side, 160kHz, 0µH" /></p>
<center>LT1999, Gain 50, Low-Side, 160kHz, 0µH</center>
<p><br /></p>
<p><img src="../../assets/img/blog/micro-motor/shuntverstaerker-messungen/INA240-A2_Low-Side_160kHz-30.bmp" alt="INA240A2, Gain 50, Low-Side, 160kHz, 30%, (positiver Ausschlag, 20V)" /></p>
<center>INA240A2, Gain 50, Low-Side, 160kHz, 30%, (positiver Ausschlag, 20V)</center>
<p><br /></p>
<p><img src="../../assets/img/blog/micro-motor/shuntverstaerker-messungen/INA240-A2_Low-Side_160kHz-30_12V.bmp" alt="INA240A2, Gain 50, Low-Side, 160kHz, 30%, (positiver Ausschlag, 12V -&gt; 1A)" /></p>
<center>INA240A2, Gain 50, Low-Side, 160kHz, 30%, (positiver Ausschlag, 12V -&gt; 1A)</center>
<p><br /></p>
<p><img src="../../assets/img/blog/micro-motor/shuntverstaerker-messungen/INA240-A4_Low-Side_160kHz-30_12V.bmp" alt="INA240A4, Gain 200, Low-Side, 160kHz (positiver Ausschlag, 12V -&gt; 1A)" /></p>
<center>INA240A4, Gain 200, Low-Side, 160kHz (positiver Ausschlag, 12V -&gt; 1A)</center>
<p><br /></p>
<p><img src="../../assets/img/blog/micro-motor/shuntverstaerker-messungen/INA240-A4_Low-Side_160kHz-30.bmp" alt="INA240A4, Gain 200, Low-Side, 160kHz (positiver Ausschlag)" /></p>
<center>INA240A4, Gain 200, Low-Side, 160kHz (positiver Ausschlag)</center>
<p><br /></p>
<!--
![Shuntverstärker Messung: LT1999, Gain 50, Low-Side, 160kHz, 10µH](../../assets/img/blog/micro-motor/shuntverstaerker-messungen/LT1999-50_Low-Side_160kHz_10uH.jpg)
<center>LT1999, Gain 50, Low-Side, 160kHz, 10µH</center><br />
![Shuntverstärker Messung: LT1999, Gain 50, In-Phase, 160kHz, 10µH](../../assets/img/blog/micro-motor/shuntverstaerker-messungen/LT1999-50_In-Phase_160kHz_10uH.jpg)
<center>LT1999, Gain 50, In-Phase, 160kHz, 10µH</center><br />
-->
<h2 id="duty-cycle-5">Duty-Cycle 5%</h2>
<h3 id="in-phase-1">In-Phase</h3>
<p><img src="../../assets/img/blog/micro-motor/shuntverstaerker-messungen/LT1999-20_In-Phase_160kHz-5.bmp" alt="LT1999, Gain 20, In-Phase" /></p>
<center>LT1999, Gain 20, In-Phase</center>
<p><br /></p>
<p><img src="../../assets/img/blog/micro-motor/shuntverstaerker-messungen/LT1999-50_In-Phase_160kHz-5.bmp" alt="LT1999, Gain 50, In-Phase" /></p>
<center>LT1999, Gain 50, In-Phase</center>
<p><br /></p>
<p><img src="../../assets/img/blog/micro-motor/shuntverstaerker-messungen/INA240-A2_In-Phase_160kHz-5.bmp" alt="INA240A2, Gain 50, In-Phase" /></p>
<center>INA240A2, Gain 50, In-Phase</center>
<p><br /></p>
<p><img src="../../assets/img/blog/micro-motor/shuntverstaerker-messungen/INA240-A4_In-Phase_160kHz-5.bmp" alt="INA240A4, Gain 200, In-Phase" /></p>
<center>INA240A4, Gain 200, In-Phase</center>
<p><br /></p>
<h3 id="low-side-1">Low-Side</h3>
<p><img src="../../assets/img/blog/micro-motor/shuntverstaerker-messungen/LT1999-20_Low-Side_160kHz-5.bmp" alt="LT1999, Gain 20, Low-Side" /></p>
<center>LT1999, Gain 20, Low-Side</center>
<p><br /></p>
<p><img src="../../assets/img/blog/micro-motor/shuntverstaerker-messungen/LT1999-50_Low-Side_160kHz-5.bmp" alt="LT1999, Gain 50, Low-Side" /></p>
<center>LT1999, Gain 50, Low-Side</center>
<p><br /></p>
<p><img src="../../assets/img/blog/micro-motor/shuntverstaerker-messungen/INA240-A2_Low-Side_160kHz-5.bmp" alt="INA240A2, Gain 50, Low-Side" /></p>
<center>INA240A2, Gain 50, Low-Side</center>
<p><br /></p>
<p><img src="../../assets/img/blog/micro-motor/shuntverstaerker-messungen/INA240-A4_Low-Side_160kHz-5.bmp" alt="INA240A4, Gain 200, Low-Side" /></p>
<center>INA240A4, Gain 200, Low-Side</center>
<p><br /></p>
</description>
<pubDate>Fri, 30 Aug 2019 00:00:00 +0000</pubDate>
</item>
<item>
<title>µMotor 2 - Teil 1: Konzept</title>
<link>/blog/2019/micro-motor-2-teil-1.html</link>
<guid isPermaLink="true">/blog/2019/micro-motor-2-teil-1.html</guid>
<description><p>In diesem Blogpost geht es um die Weiterentwicklung des Motorcontrollers “Micro-Motor” zur Version 2.
Die bisherige Entwicklung des Motorcontrollers kann in <a href="/blog/2019/alpha-motor-description.html">mehreren</a> <a href="/blog/2018/micro-motor-debugging-inbetriebnahme.html">älteren</a> <a href="/blog/2018/micro-motor-motorcontroller.html">Blogposts</a> nachgelesen werden.</p>
<p><img src="../../assets/img/blog/2018/micro-motor-faedeldraht.jpg" alt="Makro-Aufnahme Micro-Motor Fädeldraht" /></p>
<p>Nachdem der einzige aufgebaute Prototyp des Micro-Motors beim Testen durch einen von einer Oszi-Probe verursachten Kurzschluss am Gatetreiber defekt war, wurde eine minimal modifizierte Schaltung als “Macro-Motor” auf einer größeren Platine aufgebaut um bequemer verschiedene Messungen durchführen zu können.</p>
<p>Auch die Macro-Motor-Platine war leider nicht fehlerfrei. Unter anderem war leider der Footprint des neuen Spannungsreglers im WLCSP-6 (Wafer Level Chip Scale Package; 1x1,6mm²) spiegelverkehrt.
Ebenso war einer der beiden aufgebauten Prototypen nach dem Reflow-Löten nicht funktionsfähig, was auf durch von Hersteller zusätzlich verkleinerte Ausschnitte im Stencil verursachte zu geringe Menge an Lötpaste zurückzuführen war.
Beim Versuch die nicht verlöteten Pins des Gatetreiber-ICs von Hand nachzulöten ist dieser leider zerstört worden.</p>
<p>Unabhängig von den bisher aufgetretenen Problemen sind neue Wünsche entstanden.
Für eine <a href="/projekt/motor-commutation.html">intelligente Motor-Kommutierung</a> statt der bisher verwendeten stupiden Block-Kommutierung ist es teilweise nötig die Ström in den Phasen sowie auch die Spannung der Motorphasen zu messen.
Bessere Motor-Kommutierungen erlauben durch Sinus-förmige Ansteuerung mehr und gleichmäßigeres Drehmoment in sehr niedrigen Drehzahlbereichen zu erzeugen sowie auch Motoren ohne Hall-Sensoren anzusteuern.
Außerdem wurde in der Saison eine präzise und zuverlässige Strommessung sehnlichst vermisst, sodass auch diese ein erklärtes Ziel ist.</p>
<h3 id="systemüberblick">Systemüberblick</h3>
<p><img src="../../assets/img/blog/micro-motor/Micro-Motor-V2-Block-diagram_201907.svg" alt="Micro-Motor V2 Blockdiagram" /></p>
<h3 id="komponentenauswahl">Komponentenauswahl</h3>
<p>Der Microcontroller wird nach bisheriger Planung ein STM32L433CCU im UFQFPN48 Gehäuse bleiben.</p>
<p>Ebenso gibt es keinen Anlass den Gatetreiber <a href="http://www.ti.com/product/DRV8323">DRV8323S</a> auszutauschen, da sich dieser durchgehend bewährt hat.
Es wird jedoch die Variante ohne integrierte Shuntverstärker verwendet, da die Shuntverstärker ein zu geringes Gain-Bandbreiten-Produkt aufweisen und keine präzise Strommessung zulassen.</p>
<p>Die Spannungswandler werden für 5V und 3,3V werden durch <a href="http://www.ti.com/product/TPS82150">hochintegrierte Schaltwandler-Module</a> ersetzt,
welche sich schon beim <a href="/blog/2019/alpha-motor-description.html">Alpha-Motor</a> bewährt haben und auch für leistungshungrige Encoder oder Endschalter genügend Strom liefern kann.</p>
<p>Der bisher vorgesehene I²C-Temperatursensor <a href="http://www.ti.com/ww/eu/sensampbook/tmp006.pdf">TMP006</a> (nicht mehr verfügbar)
und die I²C-Anschlusspads für externe digitale Sensoren sollen durch einen analogen NTC-Temperatursensor ersetzt werden.
Ein NTC ist kompakter, günstiger, leichter am Motor zu befestigen und hat eine zur Überwachung der Motortemperatur ausreichende Genauigkeit.</p>
<h4 id="shuntverstärker-und-komparator">Shuntverstärker und Komparator</h4>
<p>Neu auf der Liste der Bauteile sind dedizierte Shuntverstärker und Komparatoren.
Hier müssen die verfügbaren Bauteile noch analysiert und verglichen werden.
Ein gutes Rennen bei den Shuntverstärkern liefert aktuell der <a href="https://www.analog.com/en/products/lt1999.html">LT1999</a> von Analog ab.</p>
<p>Da die Strommessung “inline” in den Motorphasen stattfindet muss der Shuntverstärker eine sehr hohe Gleichtaktunterdrückung aufweisen.
Gleichzeitig ist eine hohe Bandbreite von etwa 500 kHz bis 1 MHz gefordert um bei einer PWM-Frequenz noch brauchbare Messwerte zu liefern.
Die Gleichtaktspannung muss bis zu 24V betragen, außerdem ist neben einem hohen Gain, welcher die Verwendung von niederohmigen Shunt-Widerständen erlaubt, ein kleines Gehäuse gewünscht.</p>
<p>Folgende Shuntverstärker stehen aktuell zur Auswahl:</p>
<p><a href="https://www.analog.com/media/en/technical-documentation/data-sheets/1999fd.pdf"><strong>LT1999</strong></a></p>
<ul>
<li>Gain: Fixed 10, 20 or 50 V/V</li>
<li>CMRR: <strong>&gt;80dB @ 100kHz</strong> (V_CM=0V, 7VP-P, f=100kHz); &gt;96dB @ DC</li>
<li>Bandwidth: 2MHz</li>
<li>Package: MSOP-8</li>
</ul>
<p><a href="https://datasheets.maximintegrated.com/en/ds/MAX40056F-MAX40056U.pdf"><strong>MAX40056</strong></a></p>
<ul>
<li>Gain: Fixed 10, 20 or 50 V/V</li>
<li>CMRR: <strong>typ. 70dB @ 100kHz</strong> (100mV_AC Sine, f=100kHz); &gt;120dB @ DC</li>
<li>Bandwidth: 300kHz</li>
<li>Package: 2.02mm x 1.4mm WLP-8 and 8-pin μMAX</li>
</ul>
<p><a href="http://www.ti.com/lit/ds/symlink/ina240.pdf"><strong>INA240</strong></a></p>
<ul>
<li>Gain: Fixed 20, 50, 100 or 200 V/V</li>
<li>CMRR: <strong>typ. 93dB @ 50kHz</strong> (f=50kHz); &gt;120dB @ DC</li>
<li>Bandwidth: 400kHz</li>
<li>Package: TSSOP-8</li>
</ul>
<p>In den nächsten Wochen werden Samples dieser Chips unter den beim Micro-Motor herrschenden Umgebungsbedingungen getestet und dann ausgewählt.
Sollte sich keiner der verfügbaren Inline-Shuntverstärker als brauchbar erweisen, werden wir Low-Side-Shuntverstärker evaluieren.</p>
<h3 id="formfaktor">Formfaktor</h3>
<p>Im Gegensatz zur Version 1 wird für die zweite Version ein anderer Ansatz gewählt.
Der integrierte Magnet-Encoder fällt weg, stattdessen gibt es einen <del>gut lötbaren</del> steckbaren Anschluss für externe Encoder<del>, sowohl einfach als auch mit differenziellen Signalen</del>.
Da durch die kleine Bauform des Micromotors keine langen Kabel zum Encoder nötig sind, wird auf differenzielle Signale verzichtet.
Sollte ein Motor keinen integrierten Encoder haben, kann ein <a href="https://github.com/roboterclubaachen/magnet-motor-encoder">externer magnetischer Encoder</a> auch über dieses Interface angeschlossen werden.</p>
<p>Die Platine bekommt eine rechteckige Form und soll seitlich an den Motoren befestigt werden.
So lässt sich der Micro-Motor flexibler an einer Vielzahl von verschiedenen Motoren nutzen.
Die mechanischen Dimensionen werden sich kaum ändern, angepeilt ist eine Platinenfläche von weniger als 500mm², z.B. 15x25mm².
Dazu wird auch weiterhin eine beidseitige Bestückung notwendig sein.</p>
<h3 id="stecker">Stecker</h3>
<p>Um einen einfach Austausch der Platinen zu ermöglichen sollen keine Kabel fest auf der Platine verlötet werden.
Es werden sechs Steckverbindungen benötigt:</p>
<ul>
<li>Motor-Anschluss (Phasen U, V, W), 3-polig, &gt;=5A</li>
<li>Stromversorgung (20V, 6V und GND), 3-polig, &gt;= 5A</li>
<li>CAN Kommunikation (CAN-H, CAN-L), 2- oder 3-polig</li>
<li>End-/Referenz-Schalter, 2- oder 3-polig</li>
<li>Hall-Sensor (Hall-Phasen U, V, W; GND und 5V/3.3V), 5-polig</li>
<li>Encoder (A, B, I; GND und 5/3.3V), 5-polig</li>
</ul>
<p>Für die leistungsführenden Steckverbinder soll 3-polige <a href="https://jst.de/product-family/show/184/xh">JST XH</a> Stecker verwenden werden.
Diese sind bis 5A nutzbar, bei höhreren Strömen müssen die Kabel fest verlötet werden und Stecker ins Kabel integriert werden.</p>
<p>Die Signalstecker sollen als 2-/3-polige und 5-polige <a href="https://jst.de/product-family/show/89/gh">JST GH</a> Stecker ausgeführt werden.
Ebenso wie die Leistungsstecker mit 2.5mm Pitch sind diese die Stecker auch in SMT-Bauform erhältlich und bei einem Pitch von 1.25mm deutlich kompakter.</p>
<h3 id="weitere-entwicklung">Weitere Entwicklung</h3>
<p>Noch mehr Probleme und Verbesserungsvorschläge der ersten Revision sind im <a href="https://github.com/roboterclubaachen/micro-motor/issues">Github Issue #1</a> aufgeführt.</p>
<p><em>Der Blog-Post wurde ursprünglich am 27.7.2019 verfasst und zuletzt am 18.8.2019 aktualisiert.</em></p>
</description>
<pubDate>Sun, 18 Aug 2019 00:00:00 +0000</pubDate>
</item>
<item>
<title>Review of Season 2019</title>
<link>/blog/2019/Season-2019.html</link>
<guid isPermaLink="true">/blog/2019/Season-2019.html</guid>
<description><p>This year’s topic in the Eurobot, organized by Planete Sciences from France, was Atom Factory.
In short, it was about manipulating ice hockypuks, the so-called atoms.
The tasks ranged from simply moving the atoms to grabbing, weighing and sorting them.</p>
<p><img src="../../assets/img/blog/2019/eurobot-competition-2019.jpg" alt="Eurobot competition 2019" /></p>
<p>The preparations started in October 2018, with the publication of the new rules.
This years Season was mainly characterized by electrical engineering and software.
Due to a stronger generation change within our team, there was an enormous loss of knowledge about the technology of the previous years.
In order to become competitive again, new members were acquired and trained.
The resulting projects were then to flow into this year’s robot.
Together for example a new motor driver, our so-called Alphamotor, was developed, optimized and used.
The hurdles to be taken here were often not possible without hours of troubleshooting and improvements, which, however, had to be followed by a deeper examination of the matter.
Furthermore, a completely newly developed positioning system based on ultrasound was used for the first time.
This was developed together with a former member of the club and then integrated into our hardware abstraction and communication framework.
Meanwhile some of our robots software structure got a bigger rework, which seems to be not done yet</p>
<p>But a lot has also changed mechanically in this season.
Thus a complex cartesian working gripper mechanism was designed and built, which can move to all positions necessary for the game with only one arm.
The well-proven drive concept was also replaced by an Omiwheel drivetrain for technical and practical reasons.
This makes it possible to drive in any direction without changing the alignment of the robot.
The necessary mathematical transformations as well as the implementation of these were also done in a very short time.
The result at the time of the competitions was a completely new construction, build by members, who compensated the loss of knowledge driven by outgoing members with the learning process during the season.
So the club is competitive again.</p>
<p><img src="../../assets/img/blog/2019/eurobot-team-in-giessen.jpg" alt="RCA Team im Gießen" /></p>
<p>In the now following competitions we first went to Gießen from 02.05 to 04.05 this year, where the German preliminary decision for the international competition took place.
There, a total of 7 teams from all over Germany competed to reach the first to third place, for which the international competition will continue.
Fortunately our robot homologated and was ready for the competition.
Many sleepless nights and smoking heads should pay off, so our Team took the 2nd place behind TURAG from Dresden.
Thirdly, the Greenbirds team from Ludwigshafen managed to qualify for the international competition.
At the end of May we went from 29.05. to 01.06. to La Roche-Sur-Yon in France.
There the national and international competition with nearly 300 French teams took place.
The again best 3 teams from France were then also qualified for the international competition.
A total of 33 teams competed in the international competition.
It started with five preliminary rounds in which the aim was to collect the most points.
The best 8 teams from these preliminary rounds were then ready to enter the final.
Unfortunately, we had big problems with our new positioning system to reach defined points and even night-long improvements helped only little to change anything about it.
Therefore it was only enough for us to finish as 29th Team this year. The Eurobot was won by Team PMG Robotics from Serbia.
Despite the sobering result, the members are proud of what they achieved in the short time and motivated to give everything to win the Eurobot in the upcoming season.</p>
<p><img src="../../assets/img/blog/2019/eurobot-team-in-france.jpg" alt="RCA Team im La-Roche-sur-Yon" /></p>
</description>
<pubDate>Thu, 25 Jul 2019 00:00:00 +0000</pubDate>
</item>
<item>
<title>Alpha-Motor: Ein neues Motorboard</title>
<link>/blog/2019/alpha-motor-description.html</link>
<guid isPermaLink="true">/blog/2019/alpha-motor-description.html</guid>
<description><p>In der Saison 2019 ist unsere Elektronik fast vollständig überarbeitet oder sogar neu entwickelt.
Eine der Neuentwicklungen ist unser neues Motorcontrol-Board, genannt Alpha-Motor.
Der Name bricht mit dem Schema, das vorher verwendet wurde: Auf den <em>iMotor</em> folgte der <em>2Motor</em>, wiederum gefolgt vom <em>3Motor</em>.
Der Alpha-Motor kann anders als sein direkter Vorgänger nur zwei DC- oder BLDC-Motoren antreiben.
Dafür wurden mehrere Features hinzugefügt, die den Roboter leistungsfähiger und besser kontrollierbar machen.
Die wohl wichtigste Änderung betrifft die Ausgangsstufen.
Wo vorher vollintegrierte Chips verwendet wurden, sitzen nun simple Motortreiber-ICs (MIC4606), die Leistungstransistoren steuern.
Die Leistungsabgabe kann mit diesem simpleren Design verdoppelt werden, da Abwärme besser abgestrahlt wird. Für ein proof-of-concept der neuen Bauelemente wurde ein Testboard entwickelt.</p>
<p><img src="../../assets/img/blog/alpha-motor/AlphaMotor_Testboard.jpg" alt="Alpha-Motor Testboard" /></p>
<p>Hier ist bereits zu sehen, dass die Ansteuerung nicht sehr komplex ist, da einfach ein Timer des Mikrocontrollers über drei komplementäre Ausgänge einen Motor steuern kann.
Die Verwendung einer SPI-Verbindung oder ähnlichem um mit den Endstufen zu kommunizieren entfällt.
Es ist jetzt noch leichter die Kontrolle zu behalten, da eine neue Strommessung für jeden Motor hinzugefügt wurde, die mit 1 MHz Abtastrate den Strom durch die Schaltbrücken begrenzen kann.
Der Spannungsabfall über einen Shunt-Widerstand wird in einem Komparator mit der frei verstellbaren Vorgabe verglichen und das Ergebnis auf den asynchronen Break-Input des Mikrocontrollers gegeben.
Das Ergebnis ist eine effektive Stromregelung.
Zusätzlich wird in jeweils zwei der drei Phasen die Stromstärke mit Hall-Sensoren gemessen, um eine sinusförmige Kommutierung statt einer einfacheren blöckförmigen zu ermöglichen.
Die Hauptaufgabe der Schaltung wird jetzt also besser erfüllt, ohne auf Funktionalität verzichten zu müssen.</p>
<p><img src="../../assets/img/blog/alpha-motor/AlphaMotor_Haupt.jpg" alt="Alpha-Motor Platine" /></p>
<p>Neben der Steuerung von Motoren, ist der Alpha-Motor wie sein Vorgänger das Gehirn des Roboters.
Über zwei CAN-Busse werden die Befehle vom Master-Board zu den Slaves geschickt und eine serielle Schnittstelle und einen SWD-Port (Serial-Wire-Debug) kommuniziert mit unserem Debugger, über den nicht nur Events geloggt werden können, sondern der Roboter auch over-the-air neue Software erhält.
Da weiterhin der gleiche Mikrocontroller verwendet wird, ist grundsätzlich die Verwendung zusammen mit älteren Boards möglich um im Notfall eine Ausweichmöglichkeit zu haben.</p>
<p><img src="../../assets/img/blog/alpha-motor/AlphaMotor_Antrieb.jpg" alt="Antrieb mit Alpha-Motor Platinen im Roboter &quot;Marie&quot;" /></p>
</description>
<pubDate>Thu, 09 May 2019 00:00:00 +0000</pubDate>
</item>
<item>
<title>µMotor: Inbetriebnahme und Debugging</title>
<link>/blog/2018/micro-motor-debugging-inbetriebnahme.html</link>
<guid isPermaLink="true">/blog/2018/micro-motor-debugging-inbetriebnahme.html</guid>
<description><p>Die Idee zur Entwicklung des <a href="/blog/2018/micro-motor-motorcontroller.html">µMotors</a> ist schon älter.
Damals, als die Auswahl der Komponenten noch geschah, wurde im RCA fast zeitgleich auch der größere Bruder des µMotors, der Alpha-Motor, entworfen.</p>
<p>Beim Design der Leistungselektronik fiel die Wahl des MOSFET-Gatetreibers auf den <a href="http://ww1.microchip.com/downloads/en/DeviceDoc/20005604B.pdf">MIC4606</a> in Kombination mit den <a href="https://www.vishay.com/docs/68550/sqjb40ep.pdf">SQJB40EP</a> MOSFETs von Vishay.
(Vielen Dank an dieser Stelle an Vishay für das unkomplizierte und schnell zur Verfügung stellen von Samples.)</p>
<p>Um die Eignung der ausgewählten Komponenten zu verifizieren wurde eine Testplatine entworfen, welche außerdem eine schöne und lehrreiche Aufgabe für zwei neue, bisher nicht mit dem Platinendesign vertrauten Mitgliedern des Roboterclubs darstellte.
Die Testplatine enthielt neben den MOSFET-Treibern und MOSFETs selbst nur Stecker, Testpunkte, die nötige passive Beschaltung aus Widerständen und Kondensatoren sowie die Spannungsversorgung.</p>
<p><img src="../../assets/img/blog/2018/alpha-motor-testboard.jpg" alt="Testplatine für MIC4606" /></p>
<p>In Kombination mit einem Entwicklungs-Board für Microcontroller, in unserem Fall das [STM32F4Discovery], wurde die Ansteuerung von DC und BLDC Motoren erfolgreich getestet.</p>
<p>Dadurch wurde der MIC4606 Chip für den Alpha-Motor ausgewählt und war auch für den Micro-Motor vorgesehen.
Im Laufe der weiteren Komponentenauswahl für den Micro-Motor stellten sich die mechanischen Dimensionen des Chips allerdings als zu groß heraus und der <a href="http://www.ti.com/lit/ds/symlink/drv8323.pdf">DRV8323</a> Gate-Treiber bot einen insgesamt kleineren Footprint.
Der Chip selbst ist größer (6x6mm² WQFN zu 4x4mm² QFN), allerdings wird deutlich weniger externe Beschaltung (u.A. keine Gate-Serienwiderstände, keine Bootstrap-Kondensatoren) benötigt und drei Strommessverstärker sind direkt integriert.</p>
<p>Der DRV8323 ist zugleich auch wesentlich komplexer als des MIC4606, statt einer <a href="https://de.wikipedia.org/wiki/Bootstrapping_(Elektrotechnik)">Bootstrap-Schaltung</a> zur Ansteuerung der High-Side-MOSFETs integriert der Chip eine <a href="https://de.wikipedia.org/wiki/Ladungspumpe">Ladungspumpe</a> und viele Parameter wie Gate-Serienwiderstände, Überstom-Abschaltung und die integrierten Strommessverstärker lassen sich beim DRV8323 digital über ein SPI-Interface konfigurieren.</p>
<p>Trotzdem wurde es nicht als nötig erachtet für den DRV8323 Chip eine simple Testplatine zu entwerfen, was sich im Verlauf als Fehlentscheidung herausstellte.</p>
<p>Nervig wurde die Situation bereits beim Schreiben des <a href="https://github.com/modm-io/modm/pull/27">modm.io-Treibers</a>.
Es ist meist hilfreich mit einem Logic-Analyser oder Oszilloskop de SPI-Bus auf der Platine an Testpunkten abgreifen und beobachten zu können.
Leider passten auf die Platine des Micro-Motors keine Testpunkte, manche der Leiterbahnen waren nicht einmal auf zugänglichen Außenlagen der Platine, sondern ausschließlich unter Chips und auf den Innenlagen geführt.
Somit musste filigraner Fädeldraht an die kleinen Lötperlen an den Außenkanten der QFN/DFN-Pads des Chips anlöten werden um an diesem Fädeldraht dann die Signale mit Logic-Analyser und Oszilloskop ab zugreifen.</p>
<p><img src="../../assets/img/blog/2018/micro-motor-faedeldraht.jpg" alt="Makro-Aufnahme Micro-Motor Fädeldraht" /></p>
<p>Dabei wurde das erste Problem recht schnell deutlich: Die MISO-Leitung des DRV8323 ist ungewöhlicherweise als <a href="https://de.wikipedia.org/wiki/Open-Collector-Ausgang">Open-Drain</a> und nicht wie üblich als <a href="https://de.wikipedia.org/wiki/Gegentaktendstufe">Push-Pull-Stufe</a> ausgeführt, infolgedessen wird ein externer Pull-Up-Widerstand benötigt.
Um diesen Widerstand einzusparen sollte der intern zuschaltbare <a href="https://de.wikipedia.org/wiki/Pull-up-Widerstand">Pull-Up Widerstand</a> im STM32 Microcontroller genutzt werden.
Leider ist der Widerstand dieses Pull-Ups (laut Datenblatt 30 Kiloohm bis 70 Kiloohm viel zu groß für die minimal konfigurierbare SPI-Frequenz (mehrere 100kHz) des STM32L433 Microcontrollers.
Folglich musste neben dem Fädeldraht für die Messinstrumente noch ein 10 Kiloohm Pull-Up-Widerstand mit Fädeldraht nachgerüstet werden.
Das Löten war schon fast zur Routine geworden, da sich der Fädeldraht in der Zwischenzeit mehrfach gelöst hatte.</p>
<p><img src="../../assets/img/blog/2018/micro-motor-testaufbau.jpg" alt="Micro-Motor Testaufbau mit zwei Oszilloskopen und zwei Netzteilen" /></p>
<p>In Endeffekt hat die vorhandene Hardware aber ihre Inbetriebnahme und die Software-Entwicklung unter Zusatzaufwand ermöglicht.</p>
<p><img src="../../assets/img/blog/2018/qfn-dfn-pad.jpg" alt="Makro-Aufnahme: Pad eines DFN/QFN-Chips" /></p>
<p>Bis letzte Woche ein merkwürdiges Verhalten der PWM-Waveform bei der Ansteuerung von BLDC-Motoren auftrat.
Zum lokalisieren des Fehlers wurden neben den Signalen an den Motorphasen auch die Signale der Gates vor und nach dem Gatetreiber betrachtet.
Auch diese Signale sind nur an den seitlichen Pads von QFN-Chips ab zugreifen.
Der Pad-Pitch beträgt hier 0,5 mm, also etwa gleich dem Durchmesser des Spitze der Oszilloskop-Probe.
Natürlich rutschte die Spitze ab und verursachte einen Kurzschluss, welcher vom Gatetreiber mit erhöhten Stromverbrauch und Rauchentwicklung quittiert wurde.</p>
<p>Schnell war die Entscheidung getroffen um weitere Zerstörung zu verhindern nun doch eine Testplatine für den DRV8323-Chip zu konstruieren.</p>
<p>Da es für den verwendeten Microcontroller kein Entwicklungs-Board vom Hersteller gibt wurde dieser integriert, der Schaltplan ist daher fast identisch mit dem des Micro-Motors.
Die Platinengröße wurde von einem Kreis mit Durchmesser von 20 mm auf ein Rechteck von 100 mm x 33 mm erweitert um Platz für die etwa 50 Testpunkte zu bieten.</p>
<p><img src="../../assets/img/blog/2018/macro-motor-pcb.png" alt="Macro-Motor Testplatine" /></p>
<p>Der Name ist entsprechend auch nicht weit von Micro-Motor entfernt gewählt: <em>Macro-Motor</em>.</p>
<p>Dank der schnellen Platinenfertigung von Aisler reicht eine gute Woche Wartezeit aus, bis die neue Testplatine in unserer Werkstatt liegen wird.</p>
</description>
<pubDate>Sat, 06 Oct 2018 00:00:00 +0000</pubDate>
</item>
<item>
<title>Saisonstart 2019</title>
<link>/blog/2018/saisonstart-2019.html</link>
<guid isPermaLink="true">/blog/2018/saisonstart-2019.html</guid>
<description><p>Am letzten Wochenende wurden die Regeln für die kommende Eurobot-Saison erstmals veröffentlicht.
Das Regelwerk ist noch im Beta-Status, kann aber schon auf <a href="http://www.eurobot.org/eurobot/eurobot-2019/eurobot-2019-rules">eurobot.org</a> gelesen werden.</p>
<p><img src="/assets/img/blog/2018/eurobot-2019-field.png" alt="" /></p>
<p>Wir freuen uns schon auf die kreative Phase in den kommenden Wochen, wenn wir die Konzepte entwickeln und Anfangen Roboter zu konstruieren.</p>
<h2 id="mitmachen">Mitmachen</h2>
<p>Die nächste Zeit ist ideal zum Einstieg für Interessenten.
Wir haben eine Menge <a href="http://www.roboterclub.rwth-aachen.de/mach-mit/">Projekte</a> für die wir motivierte Studenten suchen, egal in welchem Semester oder Studiengang.</p>
<p>Wenn wir dein Interesse geweckt haben, komme Dienstag abends bei unserem <a href="http://www.roboterclub.rwth-aachen.de/kontakt/">wöchentlichen Meeting</a> vorbei und lerne uns kennen.</p>
</description>
<pubDate>Tue, 18 Sep 2018 00:00:00 +0000</pubDate>
</item>
<item>
<title>µMotor</title>
<link>/blog/2018/micro-motor-motorcontroller.html</link>
<guid isPermaLink="true">/blog/2018/micro-motor-motorcontroller.html</guid>
<description><h2 id="idee">Idee</h2>
<p>Die Idee ist schon älter, aber nun haben wir uns an die Umsetzung gewagt:<br />
Ein miniaturisierter Motorcontroller, welche dezentral direkt an jeden Motor verbaut wird
und nur an Strom und CAN-Bus angeschlossen werden muss.</p>
<h2 id="anforderungen">Anforderungen</h2>
<p>Die Anforderungen haben wir in den letzten Jahren gesammelt:</p>
<ul>
<li><del>2 Phasen (nur DC Motoren) oder</del> 3 Phasen (DC und BLDC Motoren)</li>
<li>ca. 10A pro Phase</li>
<li>20V Betriebsspannung (Akku) -&gt; 40V oder 60V Auslegung</li>
<li>Anschluss für Encoder mit AB(I)-Interface</li>
<li>optional Magnetencoder auf dem PCB</li>
<li>Anschluss für Hall-Sensor</li>
<li>Temperatursensor (kontaktlos auf dem PCB verlötet oder I²C)</li>
<li>Strommessung</li>
<li>LEDs für Software-Status &amp; Encoderstatus</li>
<li>Konfigurierbare ID (ggf. STM32-Hardware-ID)</li>
<li>Einfach lötbar und aufbaubar</li>
<li>Abmessungen: Rund, Grund-Ø 20mm (Namiki-Motoren: Ø 22mm)</li>
</ul>
<h2 id="komponentenauswahl">Komponentenauswahl</h2>
<p><img src="/assets/img/blog/micro-motor/umotor-pcb.jpg" alt="Er ist uns beim Waschen leider etwas eingegangen. Funktioniert aber trotzdem noch." /></p>
<p>Als nächsten Schritt mussten wir die Komponenten auswählen.
Die Wahl des Mikrocontrollers fiel schnell und wenig überraschen auf einen STM32, konkret einen <a href="http://www.st.com/en/microcontrollers/stm32l433cc.html">STM32L433CCU</a> im 7x7mm²-UFQFPN48 Gehäuse.
Geeignete MOSFETs und MOSFET-Treiber auszuwählen gestaltete sich als deutlich komplizierter.
Eine große Herausforderung ist die kleine Baugröße von nur Ø 20mm.
Recht schnell war klar, dass dies nur realisierbar ist mit Komponenten welche Reflow-Löten erfordern,
somit waren DFN-Gehäuse nicht mehr wie bei früheren Projekten im RCA unerwünscht.</p>
<p>Das Anschluss ist ein 5-poliger Stecker mit CAN-Bus (2 Pins), Versorgungsspannung (12-40V), Logikspannung zu Versorgung des Controllers und natürlich Ground (GND).
Die Logikspannung ist von der Versorgungsspannung getrennt, da letztere möglicherweise durch Not-Aus-Schaltkreise deaktiviert werden kann, wobei die Controller aktiv bleiben sollen.</p>
<p>Schlussendlich haben wir nach wochenlanger Recherche den <a href="http://www.ti.com/product/drv8323">DRV8323S</a> von Texas Intruments als MOSFET-Treiber ausgewählt.
Die entscheidenden Merkmale neben dem kompakten 6x6mm²-40WQFN Gehäuse die geringe Anzahl der benötigten externen Widerstände und Kondensatoren sowie das SPI-Interface über welches alle Parameter konfiguriert werden können.
Eines der Parameter ist der Gate-Drive-Strom, dadurch können Widerstände in den Gate-Leitungen zu den MOSFETs entfallen.
Ein weiterer Vorteil ist die Ladungspumpe zur Ansteuerung der High-Side-MOSFETs welche 100% PWM-Dutycycle erlaubt in Kontrast zu Bootstrap-Schaltungen bei Alternativkomponenten.
Mit Shunt-Widerstände in zwei der drei Motor-Phasen, einem Shunt-Widerstand welche den Gesamtstrom misst und den drei integrierten Strom-Messverstärkern des Gatetreibers wird die Strommesssung und eine Cycle-by-Cycle Strombegrenzung realisiert.</p>
<p>Die Wahl der MOSFETs fiel auf den Typ <a href="http://www.onsemi.com/PowerSolutions/product.do?id=FDMD8260L">FDMD8260L</a>:</p>
<ul>
<li>Zwei n-Channel MOSFETs im 3.3x5mm²-DFN12 Gehäuse</li>
<li>V_DS 60V, R_DSon 5.8 mΩ</li>
<li>I_D 40A (continuous max.)</li>
</ul>
<p>Aus der Rückseite befindet sich der Magnetencoder <a href="https://ams.com/AS5045">AS5045B</a> von AMS,
den wir vorher schon alleinstehend verwendet haben.
Falls der Motor einen Encoder mitbringt kann dieser Chip nicht bestückt werden und stattdessen der Motorencoder über Lötpads unterhalb des Magnetencoder-Footprints angelötet werden.
Für externe Motorencoder wurde zus#tzlich ein ansonsten nicht benötigter 5V-Spannungsregler vorgesehen.</p>
<p>Daneben sind auf der Platine nur ein CAN-Bus-Transceiver (<a href="http://www.ti.com/product/tcan332">TCAN332</a>) und Spannungsregler verbaut,
welche aufgrund der kleinen Bauform ausgewählt wurden.</p>
<h2 id="schaltplan-und-layout">Schaltplan und Layout</h2>
<p><img src="/assets/img/blog/micro-motor/schematic-overview-screenshot.jpg" alt="Schaltplanübersicht micro-motor (µMotor) in KiCad" />
<img src="/assets/img/blog/micro-motor/pcb-layout-screenshot.jpg" alt="PCB Layout micro-motor (µMotor) in KiCad" /></p>
<p>Aus den Anforderungen und Überlegungen sind in den vergangenen Monaten Schaltpläne und ein kompaktes Platinenlayout entstanden.
Das Platinenlayout ist 4-lagig ausgeführt, anders wäre die geforderte Bauform nicht umsetzbar gewesen.</p>
<h2 id="aufbau-und-inbetriebnahme">Aufbau und Inbetriebnahme</h2>
<p>Der erste Aufbau mit Reflow-Ofen und die Inbetriebnahme gestalten sich als nicht trivial,
weil es auf der winzigen Platine kaum möglich ist elektrische oder Software- Probleme mit Multimeter, Oszilloskop oder Logicanalyser zu debuggen.
Einige Leitungen sind nur unter Bauteilen und auf den inneren Lagen geführt.</p>
<p><img src="/assets/img/blog/micro-motor/pcb-assembled-before-reflow-onecent.jpg" alt="micro-motor (µMotor) vor dem Reflow-Löten. Ein-Cent-Münze zum Größenvergleich." />
<img src="/assets/img/blog/micro-motor/reflow-ofen.jpg" alt="micro-motor (µMotor) im Reflow Ofen" /></p>
<p>Der erste und einzige aufgebaute Prototyp funktioniert weitgehend.
der bisher einzige Hardwarefehler konnte mit Hilfe von Fädeldraht und einem zusätzlichen Widerstand behoben werden.</p>
<h2 id="software">Software</h2>
<p>Die Software auf dem Mikrocontroller wird mit <a href="http://modm.io/">modm</a> entwickelt.
Bisher sind die Hardware-Abstraktion (Board-Support-Package) und einige Testprogramme für die Inbetriebnahme der Hardware fertiggestellt.</p>
<p>Die Hauptsoftware fehlt noch.</p>
<p>Auf dem Microcontroller sollen frei konfigurierbare Pid-Regler und ggf. auch “Motor-mit-Endschalter”-Komponenten,
welche den Aktor parametrierbar initialisieren und verfahren können, das Interface nach außen bilden.</p>
<p>Programiert werden muss der Micro-Motor über den 3D-gedruckten Programieradapter mit Federkontaktstiften.
Der Adapter verfügt außerdem über eine Pin zum abgreifen der UART-Ausgabe zu Debug-Zwecken.</p>
<p><img src="/assets/img/blog/micro-motor/swd-adapter.jpg" alt="Programieradapter für den micro-motor (µMotor)" /></p>