Das von mir zuerst für die DCC++ Base Station eingesetzte Motor Shield FunduMoto WCMCU_L298P hat keine Sense-Widerstände am L298, so dass weder die Stromaufnahme des Layout gemessen noch ACK-Impulse bei der CV-Programmierung gemeldet werden können.
Deshalb habe ich kurz entschlossen die beiden betreffenden Beinchen am L298 von der Platine abgelötet, vorsichtig hochgebogen und jeweils zwei parallel geschaltete 300 mΩ Widerstände zwischen Anschluss und Masse gelötet, in der Annahme, damit wäre der Kittel geflickt.
Leider stellte sich heraus, dass mit dieser Maßnahme nur sehr sporadisch ACK-Impulse zu erkennen waren, die Stromaufnahme einer Lok wurde überhaupt nicht erkannt.
Probehalber habe ich dann den Sense-Widerstandswert verdoppelt in dem ich je einen der parallel geschalteten Widerstände wieder entfernt habe. Das hat zumindest die ACK-Impuls-Erkennung ermöglicht.
Im Vergleich zu einem anderen Motor Shield mit bereits eingebauten Sense-Widerständen ist das an den Analogeingängen des Arduino ankommende Signal jedoch viel kleiner.
Des Rätsels Lösung ist trivial: Auf dem Deek-Robot Shield ist zwischen Sense-Widerständen und dem Analogausgang Richtung Arduino noch je Kanal eine Hälfte eines Operationsverstärkers LM358 eingebaut.
Da ich das vorhandene FunduMoto Shield ebenfalls einsetzen will, habe ich kurzerhand eine kleine Header-Platine nach den im Netz aufgestöberten Schaltungsunterlagen des Deek-Robot Shield entworfen, die den LM358 sowie ein bisschen Hühnerfutter (SMD Widerstände und Kondensatoren) trägt und mit zwei Buchsenleisten auf die auf dem FunduMoto vorhandenen Steckerstifte gesetzt werden kann.
Das Schaltbild ist übersichtlich:
(Click auf das Bild für volle Auflösung)
Im Prinzip arbeiten die beiden OpAmps jeweils als nicht invertierende Verstärker mit Verstärkungsfaktor 10.
Die zugehörige Platine habe ich einseitig entflochten...
(Click auf das Bild für volle Auflösung)
... und schnell auf der CNC-Fräse mit OpenCNCPilot erstellt.
Eingebaut bzw. aufgesteckt auf dem FunduMoto Shield aus der Vogelperspektive:
Eine kurze Überprüfung der Signale mit dem Oszilloskop ergab, dass die Operation geglückt ist, die ACK-Impulse erreichen jetzt bei diesem Shield ebenfalls 1,2 Vss, die ACK -Impulse kommen prima an und auch der Stromverbrauch auf dem Layout wird jetzt angezeigt, allerdings etwas geringer als mit dem Amperemeter gemessen und auch geringer als mit dem Deek-Robot Shield angezeigt wird. Da müsste ich wohl eine Abgleichmöglichkeit vorsehen, wenn ich den absoluten Wert korrekt angezeigt bekommen wollte.
Bei der Anzeige ist mir das nicht so wichtig, die Grafik von DCC++ ist ohnehin sehr klein und man erkennt nur die Größenordnung.
Ein anderes Thema ist da schon die Abschaltung der Treiber bei Überstrom. Bei einem Kurzschluss durch eine entgleiste Lok passt möglicherweise alles. Wenn allerdings der Gesamtstrom schleichend durch (zu) viele aktive Züge überschritten wird, könnte der L298 überlastet werden, bevor die Steuerung etwas davon mitbekommt. Nun hat der L298 aber mehrere Überlastungsschutzmechanismen eingebaut, so dass wohl auch in diesem Fall keine Katastrophe passieren kann.