Hier geht es um allgemeine analoge und digitale Elektronik, soweit es sich nicht um Amateurfunk-spezifische Dinge dreht. Für Amateurfunk gibt es eine eigene Kategorie.
Wie bereits im vorigen Beitrag über nützliche Websites in Aussicht gestellt, habe ich nun doch ein kleines Programm zum Erstellen von Timing Diagrammen im Text-Format geschrieben: DrawTimingDiagram.
Das Programm öffnet ein Eingabe- und ein Ausgabefenster. In das Eingabefenster können Kommandos geschrieben werden, die beim Klick auf den Start-Knopf in ein Timing-Diagramm im Ausgabefenster umgewandelt werden. Ein kleines Beispiel zeigt der folgende Screenshot:
Das so erzeugte Diagramm kann über das Clipboard aus dem Ausgabefenster in eine UTF8-Textdatei übernommen werden.
Eine kurze Beschreibung der unterstützten Eingabekommandos mit einem etwas komplexeren Timing Diagramm Beispiel findet sich in der Online-Hilfe.
Leider gab es seit ein paar Monaten keine Updates mehr in diesem Blog, das werde ich nun nachholen. Im Sommer war viel an unserem Haus zu tun, wir haben das Gartenhaus fertiggestellt und auch im Haus gab und gibt es noch so einige Baustellen. Meist kleine Dinge, die nicht dringend sind, aber doch belasten, weil man sie immer vor sich herschiebt. Zwischendurch hatte ich immer wieder etwas Zeit, um eine Leiterplatte zu designen oder Software zu schreiben, ohne mir aber die Zeit zu nehmen, diese Dinge in diesem Blog zu beschreiben. Hier nun eine kurze Zusammenfassung.
ATMEGA644 V1.1
Nachdem das mit der Fertigung und Bestückung des Relaistreibers in China so gut funktioniert hat, habe ich auch das ATMEGA644 Board nochmal aufgelegt und zehn Stück davon fertigen und teilbestücken lassen. Es spart doch eine Menge Arbeit, wenn wenigstens das Vogelfutter schonmal drauf ist und man nur noch die „makroskopischen Bauteile“ von Hand bestücken muß.
Ich habe die Schaltung minimal geändert, es wurden zwei optionale Schottky-Dioden vorgesehen, damit man dem Board ein Batterie-Backup spendieren kann und es wurden zwei zusätzliche Stützkondensatoren für den Prozessor hinzugefügt. Der hat jetzt an jedem seiner drei VCC-Pins einen eigenen Stützkondensator. Kann nichts schaden, kostet kein Geld (einige milli-Cent) und bei 0402-er Bauform ist auch der Platzbedarf zu vernachlässigen. Den Trimmkondensator am Quarz habe ich weggelassen, der war sowieso nur experimentell auf einem einzigen Board aufgelötet. Außerdem habe ich eine Möglichkeit vorgesehen, den Spannungsregler etwas zu kühlen. Es sind zwei Bohrungen vorhanden, in die ein Flachstecker als Kühlfahne eingelötet werden kann. Notwendig ist diese Kühlung nicht, aber es hat sich beim Antennenumschalter und beim Tuner gezeigt, daß die Temperatur der Platine im Betrieb um ein paar Grad angehoben wird und damit die Temperaturmessung verfälscht wird. Hier nun der Vollständigkeit halber die 3D-Ansichten der neuen Platine und der Schaltplan.
ATMEGA644-Board, V11, Unterseite
ATMEGA644-Board, V11, Oberseite
Zugegeben, die Kühlfahne sieht etwas gewöhnungsbedürftig aus, aber man muß sie ja nicht bestücken. Zudem kann man sie vor dem Einlöten seitlich wegbiegen oder auch auf der Unterseite bestücken. Sie kann natürlich auch durch irgendein anderes passendes Blech ersetzt werden.
Passend zum oben beschriebenen CPU-Board habe ich einen Frequenzzähler gebaut. Hier zunächst mal die 3D-Ansichten:
Frequenzzähler, Oberseite
Frequenzzähler, Unterseite
Auf der Oberseite sieht man links das aufgesteckte CPU-Board und daneben das Intel (Altera) CPLD, in dem der Zähler und das CPU-Interface implementiert sind. Rechts sind zwei SMA-Buchsen angebracht, über die das zu messende Signal und die Referenzfrequenz eingespeist werden. Ganz links sieht man die Buchse für die Spannungsversorgung und darüber die Klemmleiste für das RS485-Interface. Um das CPLD herum sind Stiftleisten angebracht, auf die die nicht verwendeten CPLD-Pins geführt sind. Damit ist das Board auch für andere Zwecke verwendbar. Die Schalterstellungen des vierpoligen DIP-Schalters können von der CPU eingelesen werden und die acht LEDs am oberen Rand können per Software ein- und ausgeschaltet werden. Die beiden zehnpoligen Stiftleisten am oberen Rand der Platine dienen zum Programmieren der CPU und des CPLDs. Hier ist nun der Schaltplan:
Der Frequenzzähler funktioniert inzwischen sehr gut. Die Simulation ergibt eine Grenzfrequenz von 120 MHz für die Referenz- und die Meßfrequenz. Den Zähler werde ich später in voraussichtlich mehreren Beiträgen detaillierter beschreiben. Dazu gehört dann der in Verilog geschriebene CPLD-Code, die Software für das CPU-Board und die Host Software für einen Windows-PC. Außerdem lohnt es, die Auswertung einer Meßreihe mit Libreoffice genauer anzuschauen. Vielleicht fange ich sogar damit an, auch wenn es die chronologisch falsche Reihenfolge ist.
Programmier- und Debugboard
Wo ich gerade so schön am Designen war und sowieso eine Bestellung in China plante, habe ich auch noch ein kleines Programmier- und Debugboard für das ATMEGA644-CPU-Board entwickelt. Es dient dazu, Programme auf das CPU-Board zu programmieren und auch zu testen. Der ATMEGA644 hat mehrere Schnittstellen, unter anderem die SPI Schnittstelle zum Programmieren des Flash-Speichers und des EEPROMs und die JTAG-Schnittstelle, die darüberhinaus auch zum Debuggen verwendet werden kann.
Programmier- und Debugboard, Vorderseite
Programmier- und Debugboard, Rückseite
Auf dem Board sind außerdem ein paar Taster und LEDs angebracht, damit auf einfache Weise ohne Emulator ein paar Ein- und Ausgabemöglichkeiten zu haben. Auf die SMA-Buchse kann der Systemtakt ausgegeben werden, um seine Frequenz beispielsweise mit dem oben gezeigten Frequenzzähler bei unterschiedlichen Temperaturen zu messen.
Das hier beschriebene Relaistreiber-Board wurde im Antennentuner eingesetzt und funktioniert mit kleinen Einschränkungen sehr gut. Die SMD-Montage der eigentlich für Lochmontage vorgesehenen 100-mil-Sockel ist aber fehleranfällig. Beim Einsatz hat sich herausgestellt, daß das seitliche Abbiegen der Pins des Sockels zu Kontaktfehlern führt. Einreihige Sockel für die SMD-Montage scheint es nicht zu geben, zumindest habe ich keine gefunden. Außerdem wurde durch einen Designfehler das Status-Signal des BTS724G Bausteins auf PB3 gelegt, der aber auf dem ATMEGA644-Board fest mit dem Temperatursensor verbunden ist.
Das alleine sind eigentlich keine Gründe für ein Redesign, aber ich wollte schon seit längerem den in China angebotenen Service einer Teilbestückung der Leiterplatte ausprobieren. Man kann zwar SMD-Platinen selber bestücken und ich habe das auch oft gemacht, aber es gibt Grenzen. Mein persönliches Limit beim Hand-Bestücken sind 0805er Baugrößen, auch mal das ein oder andere 0603er Bauteil, aber nicht in Mengen. Außerdem habe ich für diese Bauteile immer das Footprint zum selber Löten, also mit dem Suffix „Handsoldering“ gewählt, weil es etwas größer ist, als das reguläre Footprint. Lässt man die Platine jedoch (Teil-) bestücken, dann kann man das kleinere reguläre Footprint auswählen und außerdem die kleinste verfügbare Bauform, nämlich 0402 auswählen. Das gibt einerseits einen beachtlichen Platzgewinn, andererseits sind die kleinen Bauteile für Anwendungen im Hochfrequenzbereich weitaus besser geeignet, weil ihre Selbstresonanzfrequenzen deutlich höher liegen, als bei den größeren Bauteilen. Zu beachten ist aber, daß Kondensatoren in dieser Baugröße meist nur geringe Betriebsspannungen vertragen, manche nur 6 V oder 10 V und die SMD Drosseln in der zulässigen Stromstärke begrenzt sind, weil ihr ohm’scher Widerstand höher ist, als bei größeren Bauformen.
Als Hersteller habe ich mir die Firma JLCPCB ausgesucht, einfach weil mehrfach über deren Service berichtet wurde, zuletzt in einer der jüngsten Ausgaben des „Funkamateur“. Es gibt andere Hersteller, die sicherlich genausogut sind. JLCPCB hat einen großen Lagerbestand an benutzbaren Bauteilen, laut Website über 40.000 Stück. Viele davon können ohne Aufpreis benutzt werden, weil sie ständig auf dem Bestückungsautomaten eingelegt sind. Wählt man andere Bauteile aus, die sogenannten „extended parts“, dann zahlt man einmalig pro Auftrag und pro extended part $ 3,00 oder € 2,40 als Aufwandsentschädigung für denjenigen, der dann die neue Rolle aus dem Lager holen und einlegen muß. Darüberhinaus zahlt man natürlich die Fertigung der Leiterplatte, einen geringen Grundpreis für die Bestückung und jedes Bauteil. Bei den passiven Bauteilen, Widerständen, Kondensatoren und Spulen sind die Bauteilkosten vernachlässigbar. Sie werden im Bauteilekatalog angezeigt und kosten meist weniger als 1 ct, mitunter nur 0,1 ct. Dabei ist 0402 oft die preisgünstigste Variante.
Unter diesen Randbedingungen habe ich dann ein Redesign des Relaistreibers gemacht und bei JLCPCB fertigen lassen. Die geringe Bauteilgröße gestattete viel mehr Drosseln und ein paar mehr Kondensatoren auf der Leiterplatte unterzubringen, als auf der ersten Version. Die Abmessungen der neuen Leiterplatte sind gleichgeblieben: 30,5 mm x 43,0 mm (1,2″ x 1,7″). Leider ist sie dennoch nicht kompatibel, weil ich die Buchsenleiste nicht mehr als SMD bestücken wollte, sondern als durchkontaktiertes Bauteil. Damit musste der Abstand der Leisten leider um 100 mil größer werden. Weil es ohne Aufpreis möglich war, habe ich diesmal blauen Lötstopplack gewählt. Hier die Kicad 3D-Vorschau:
Das Vogelfutter auf der Unterseite habe ich bis auf die großen SMD-Bauteile D1, F1 und L1 bestücken lassen. Zum manuellen Bestücken bleiben also die beiden Treiber auf der Oberseite und die Prüfpins, die Pin- und Sockelleisten oben und unten und die drei schon erwähnten SMD-Bauteile auf der Unterseite. An „guten Tagen“ ist sowas in 20 Minuten erledigt.
Was hat das ganze nun gekostet? Genau €28.52 für zehn Leiterplatten. Die Kosten beinhalten die Fertigung der doppelseitigen Leiterplatten, die Teil-Bestückung wie oben beschrieben, die Bauteilekosten und die Zusatzkosten für ein „extended Part“. Außerdem beinhaltet der Preis die Lieferung nach Deutschland in das Verteilzentrum von JLCPCB, die Verzollung und den Weiterversand vom Verteilzentrum zu mir nach Hause. Der Gesamtpreis teilt sich übrigens folgendermaßen auf: Merchandise Total: €17.73, Shipping Charge: €10.78. Die Lieferzeit war 12 Tage, Sonntagabend bestellt und Freitags geliefert.
Auch der Service war hervorragend. Ich hatte am Sonntagnachmittag mehrfach versucht, die Bestellung online einzugeben und es kam immer wieder eine unverständliche Fehlermeldung beim Übernehmen in den Warenkorb. Darauf konnte ich mir keinen Reim machen, also mal im Online Formular um Hilfe gebeten. Ich erhielt sofort eine automatische Email-Antwort, daß im Moment niemand verfügbar sei und man sich sobald wie möglich meldet. Ja klar, es musste in China auf Mitternacht zugehen, die Antwort wird dann wohl am Montagmorgen kommen. Zu meiner Verwunderung dauerte es keine Stunde, bis mir jemand per Email freundlich und in gutem Englisch erklärte, daß ich vermutlich eine Kombination gewählt hätte, die sie nicht anbieten. Sie kennen das Problem, der Dialog auf der Website würde nicht alle Eingabefehler abfangen. Ich hatte 1,2 mm Leiterplattenstärke bei blauem Lötstopplack gewählt, blau geht aber nur bei 1,6 mm Stärke.
Unglaublich, da kann und will kein europäischer Hersteller mithalten, ganz davon abgesehen, daß die hier noch nie an Bastlern interessiert waren. Die waren immer nur lästig. Wo führt das hin? Ganz klar zu immer weiterer Abhängigkeit von China. Unsere Fertigung macht dicht und irgendwann werden wir jeden Preis zahlen müssen, weil wir es nicht mehr können. Vielleicht wird ja Gendergaga und Klimahysterie unser neuer Exportschlager.
Das ATMEGA644PA-AU Board funktioniert ja nun schon eine ganze Weile problemlos in dem Antennenumschalter. Dort wird ein externern Treiber für die Relais verwendet und es wurde ein wenig Aufwand spendiert, um die digitale Elektronik so störfest zu machen, daß zumindest die 100 Watt des IC-7300 ohne Schaden durchgeleitet werden können.
Jetzt bin ich dabei, einen schaltbaren Antennentuner zu bauen, der mit demselben Modul gesteuert werden soll. Dieser Tuner soll 12 bistabile Relais verwenden, die jeweils zwei Elektromagnete eingebaut haben, eines zum Einschalten und das andere zum Ausschalten. Es müssen also 24 Spulen angesteuert werden, wobei man durch geschicktes Multiplexing mit vier high-side und sechs low-side Treibern hinkommt. Anders als im Antennenumschalter muß man im Tuner wegen der verbauten Luftspulen mit nicht vernachlässigbaren Magnetfeldern rechnen und bei hochohmigen endgespeisten Antennen kann auch die Spannung schnell mal an 1 kV heranreichen. Daher kommt der HF-Filterung besondere Bedeutung zu.
Erste Versuche beim Layout des Tuners führten zu einer zu komplexen Platine, die wegen der vielen SMD Bauteile auch nicht mehr ohne weiteres im Eigenbau zu fräsen wäre. Als einfachste Lösung erwies sich eine separate Treiberplatine, die auf der Zielhardware, also z.B. dem Tunerboard, aufgesteckt wird und auf die wiederum das ATMEGA-Board gesteckt wird. Das ist also ein klassisches Piggy-Board. Hier das Ergebnis mit KiCad:
Als high-side Treiber wird ein BTS724G verwendet, als low-side Treiber der Klassiker, ein ULN2803A, beide als SMD-Varianten. Damit können bis zu vier (induktive) Lasten auf die Versorgungsspannung geschaltet werden und bis zu acht (induktive) Lasten gegen Ground. Die high-side Treiber schaffen pro Kanal bis zu 3.3A, die low-side Treiber bis zu 500 mA. Alle Leistungs-Ports, einschließlich der Versorgungsspannung und der RS-485-Leitungen sind über LC-Glieder gegen HF-Einstrahlungen gefiltert. Mit ein paar Kompromissen hier und da konnte die Platine als zweiseitige Leiterplatte realisiert werden. Sie ist inzwischen in China in der Fertigung.
Die hier beschriebene LibreOffice Tabelle habe ich nun etwas überarbeitet. Ich habe die Struktur grundlegend geändert und die Berechnung um den Skin-Effekt erweitert. Man kann also jetzt auch den Widerstand eines Leiters bei Anlegen einer Wechselspannung bestimmen. Das funktioniert nur angenähert und auch nur bei den Materialien, für die die magnetische Permeabilität verfügbar war. Die neue Tabelle kann hier heruntergeladen werden:
Ich denke daß die Tabelle selbsterklärend ist. Nur die grün hinterlegten Felder müssen ausgefüllt werden. Man wählt das Leitermaterial in B3 und den Querschnitt in B4. Wie in der alten Version kann man Draht (rund), Rohr (rund und hohl) oder Leiterband (rechteckig) auswählen. Dann gibt man die Frequenz, die Temperatur, die Stromstärke (optional) und die Dimensionen an. Darunter werden einige Zwischenergebnisse angezeigt, die man normalerweise nicht braucht, die aber zu Kontrollzwecken nützlich sein können. Die Ergebnisse stehen dann in den Zellen E3 bis I3.
Alles wie immer ohne Gewähr. Wer Fehler findet, möge sie mir bitte mitteilen und ich werde mich um Korrektur bemühen.
Nachdem das vor einem halben Jahr entworfene I/O Board mit einem ATTINY1634 sehr gut funktioniert, kam aber recht bald der Wunsch nach ein paar mehr I/O Ports auf. Das ATTINY-Board hat nur maximal 15 verwendbare Ports, die z.T. auch noch anderweitig verwendet werden. Wird die RS485 Schnittstelle verwendet, gehen dafür drei Ports verloren, so daß dann nur noch 12 Ports verfügbar sind. Für viele Anwendungsfälle ist das mehr als genug, aber z.B. für den angedachten Bau eines ferngesteuerten Antennentuners bräuchte man schon an die 20 Ports, um je eine Kaskade Kondensatoren und Spulen umzuschalten.
Auf der Suche nach einem preiswerten, gut verfügbaren und nicht abgekündigten Baustein fand ich den ATMEGA644PA-AU, der bei den bekannten chinesischen Anbietern für etwa 1 € zu haben ist. Zudem hatte ich früher schonmal mit deren Vorgängern etwas aufgebaut und Einzelstücke des ATMEGA644V-10AU und des ATMEGA644-20AU lagen noch in der Kiste. Außerdem hat der ATMEGA644 sehr viel mehr Speicher an Bord (64k Flash, 2k EEPROM und 4k RAM) und er kann bis 20 MHz getaktet werden. Gleichwohl sei gesagt, daß ich bisher auch mit den halben Ressourcen des ATTINY1634 ausgekommen bin. Aber schaden kann’s nicht (nunja, etwas Strom kostet’s schon). Der 644-er hat ein 44-Pin QFP Gehäuse und passt in den vom ATTINY-Board vorgegebenen Formfaktor. Damit können die Boards weitgehend pinkompatibel gestaltet werden.
ATMEGA644PA-Board mit RS485 Schnittstelle (Ansicht von oben)ATMEGA644PA-Board mit RS485 Schnittstelle (Ansicht von unten)
Das Board ist nun etwas breiter geworden und hat zusätzliche Pins bekommen. Es kann aber auf der vorhandenen Test- und Programmierplatform für den ATTINY1643 und auf den Anwendungsboards verwendet werden, sofern es wegen des Überhangs mechanisch passt. Damit ich mir beim Routen nicht die Finger breche, habe ich die 4‑Lagen Multilayer Technik gewählt. Beim ATTINY1634 kam ich mit zwei Lagen aus. Nachfolgend ein Foto mehrerer fertig bestückter ATTINY und ATMEGA Boards:
Mehrere bestückte RS485 Boards, teils mit ATTINY1643 und teils mit ATMEGA644.
Hier ist der zugehörige Schaltplan. Im wesentlichen ist er vom ATTINY-Board übernommen, aber weil noch Platz auf der Platine verfügbar war, habe ich ihr einen TMP275 Temperatursensor spendiert, der eine Genauigkeit von 0,5 K haben soll. Das wird freilich durch die Eigenerwärmung des Boards etwas konterkariert. Gegebenenfalls muß diese Eigenerwärmung per Software kompensiert werden oder das Board sollte in einem der vielen Stromsparmodi betrieben werden. Die Idee ist, beim Außeneinsatz z.B. als Antennenumschalter, auch gleich die Außentemperatur zu messen. Außerdem ist eine REF5025-Spannungsreferenz einbaubar, falls mal halbwegs präzise Analogspannungen gemessen werden sollen.
Versuchsweise habe ich auch mal einen Trimmer für den Quarz vorgesehen. Die hier und auch auf anderen Boards verwendeten Quarze sind für eine nominale Lastkapazität von 12 pF spezifiziert. Das ist die Kapazität, die dem Quarz parallelgeschaltet werden muß, damit er auf der Nominalfrequenz schwingt. Da die beiden obligatorischen Kondensatoren (hier C1 und C4) in Serie geschaltet sind, müsste jeder von ihnen also 24 pF haben. Da ja auch weitere Schaltkapazitäten hinzukommen, habe ich in der Vergangenheit meist 2 x 18 pF vorgesehen, was also 9 pF Last plus geschätzten 3 pF Schaltkapazität in der Summe zu etwa 12 pF führen sollte.
Im Rahmen der verfügbaren Meßmöglichkeiten war das bisher präzise genug. Jetzt habe ich aber auf dem ATTINY-Board auch eine Uhr implementiert, die mit 2 x 18 pF Lastkapazität am Tag bis zu einer Sekunde nachging. Bei einem 12 MHz Quarz entspricht das einer um etwa 150 Hz zu niedrigen Frequenz. Durch Ausprobieren verschiedener Werte habe ich herausgefunden, daß bei Kondensatoren von der Stange 2 x 15 pF die geringsten Abweichungen verursachen. Bei Versuchen mit einem 8 MHz, einem 11,059 MHz und einem 12 MHz Quarz ergaben sich Abweichungen von etwa 50 Hz nach unten. 2 x 13 pF war wieder deutlich schlechter in die andere Richtung. Die verbleibende Abweichung wird per Software kompensiert, indem alle soundsoviele Taktzyklen ein 10 ms Intervall eingeschoben oder weggelassen wird. Auf dem ATMEGA Board habe ich nun 2 x 12 pF vorgesehen und mit dem zusätzlichen Trimmer soll dann die nominale Frequenz eingestellt werden.
Hinreichend genaue Frequenzmessungen mache ich übrigens inzwischen mit dem IC-7300 Transceiver und der WSJT‑X Software. Die Frequenzbasis des IC-7300 ist mit unter 0,5 PPM spezifiziert und damit etwa 10-mal so genau, wie der Quarz. Im CW-Modus wird die nominale Frequenz des Quarzes eingestellt und dann sollte der Mittelpunkt der Frequenz bei der eingestellten CW-Audiofrequenz sein. Abweichungen von wenigen Hz sind deutlich erkennbar. Hier ein Screenshot des IC-7300 und das zugehörige Spektrum von WSJT‑X.
Screenshot des IC-7300 bei 11,0592 MHz.
Screenshot WSJT‑X bei einem eingestellten CW-Pitch von 700 Hz.
Mit dem Trimmer wurde hier die Frequenz auf den nominalen Wert von 11,0592 MHz gezogen. An der WSJT‑X Darstellung sieht man, daß die tatsächliche Frequenz einige wenige Hertz höher liegt.
Bei so unterschiedlichen Dingen wie dem Bau einer Kurzwellenantenne und beim Aufbau eines Treppen- bzw. Terrassengeländers kam bei mir immer wieder die Frage auf, was denn nun ein 1,10 m langer Edelstahlpfosten oder ein 18,55 m langer Antennendraht aus 2 mm dickem Aluminiumdraht wiegt und auch welchen ohmschen Widerstand das Teil hat. Auch die Frage, ob man ein 5 m langes Edelstahlrohr mit 42,2 mm Außendurchmesser und 2 mm dicker Wand eher tragen kann, als ein gleichlanges Aluminiumrohr mit 5 mm dicker Wand, ist für die Installation als Antennenmast nicht ganz unerheblich. Wenn man an die Erdung des Rohres denkt, ist auch sein elektrischer Widerstand nicht vernachlässigbar, denn gerade Edelstahl ist ja als relativ schlechter Leiter bekannt. Auch die Frage, ob ein im Sommer bei 38°C abgestimmter Antennendraht auch bei ‑10°C im Winter noch hinreichend resonant ist, sollte zumindest mal untersucht werden.
Nachdem ich dann mehrfach die jeweiligen Materialparameter (spezifische Masse, spezifischer Widerstand, Temperaturkoeffizient desselben, Ausdehnungskoeffizient) im Internet zusammengesucht und die Werte mit dem Taschenrechner ausgerechnet habe, war es an der Zeit, ein passendes LibreOffice Spreadsheet dafür zu erstellen. Hier ist es:
Die Tabelle „Eigenschaften“ enthält die aus dem Internet gesammelten Materialparameter. Bei den jeweiligen Werten ist eine gewisse Vorsicht vonnöten. Die Werte für chemisch reine Materialien dürften ziemlich gut bekannt sein und nur geringfügig vom tatsächlichen Wert abweichen. Legierungen wie z.B. Edelstahl oder Konstantan, aber auch Kupferkabel oder Aluminium können größere Abweichungen haben, weil ihre genaue Zusammensetzung schwankt. Die Ergebnisse sollten für Allerweltsanwendungen hinreichend genau sein, wer es genauer haben muß, sollte sich jedoch das Datenblatt des jeweiligen Herstellers besorgen.
Das Spreadsheet enthält auch noch einige Nichtleiter wie Kunststoffe und Glas. Dabei ging es natürlich nicht um deren elektrischen Widerstand, sondern um die Masse und ggf. den Ausdehnungskoeffizienten. Wegen der unterschiedlichen Zusammensetzung schwanken auch hier die Angaben ziemlich stark. Oft sind Minimum- und Maximumwerte angegeben. Auch die elektrischen Widerstände habe ich (spaßeshalber) erfasst, wenn Werte dafür zu finden waren. Sie schwanken oft um mehrere Zehnerpotenzen und haben daher keine praktische Relevanz. Dafür habe ich „min“ und „max“ Spalten eingeführt und daraus den Mittelwert errechnet, der dann für die Berechnungen benutzt wird.
Die eigentlichen Berechnungen finden in der gleichnamigen Tabelle statt. Dort wählt man zunächst in Zelle A2 das Material aus, in Spalte C sollten dann die dazugehörigen physikalischen Parameter erscheinen. Abhängig von der Kontur des Querschnitts wird dann in Zeile 2, 5 oder 8 weitergearbeitet und in der dazugehörigen Spalte E wird jeweils die Länge des Werkstücks in Millimeter angegeben. Zeile 2 gilt für rechteckige Querschnitt und die Breite und Dicke wird in Spalten F und G angegeben. Für rundes Vollmaterial (Draht, Kabel oder Stab) wird Zeile 5 benutzt. Die Querschnittsfläche (nicht der Durchmesser!) wird in diesem Fall direkt in Spalte H angegeben. Für Rohre wird Zeile 8 benutzt, wobei der Außendurchmesser und die Wandstärke in den Spalten F und G angegeben werden. Falls nicht in Zeile 5 direkt angegeben, wird in Spalte H der jeweilige Querschnitt errechnet. Spalte J zeigt nun den elektrischen Widerstand in mΩ an, ggf. abhängig von der in Spalte I gewählten Temperatur. Wählt man in Spalte K eine Stromstärke, so wird in Spalte L der Spannungsabfall und in Spalte M die dabei verheizte Leistung angezeigt.
Spalte M zeigt die gesamte Masse des Werkstücks an und Spalte N die Längenänderung bei der gewählten Temperatur gegenüber 20°C.
Beispielanwendungen:
1.) ein 18,55 m langer Aluminiumdraht mit 2 mm Durchmesser wiegt 158 g und hat einen Widerstand von 156 mΩ. Ein alternativer Draht aus Stahllitze von 1,6 mm Durchmesser wiegt 354 g und hat einen ohmschen Widerstand von 1,384 Ω. Ein solcher Draht wurde zum Bau einer Kurzwellenantenne verwendet. Ich habe mich für den Aludraht entschieden, weil er leichter ist und nur ein zehntel des elektrischen Widerstandes der Litze hat.
2.) ein 1 m langes Edelstahlrohr mit 42,4 mm Durchmesser und einer Wandstärke von 2 mm wiegt ziemlich genau 2 kg. Solche Rohre werden zuhauf für den Bau von Edelstahlgeländern verwendet.
Noch ein Hinweis: die Tabelle ist geschützt (ohne Passwort), so daß man nicht versehentlich die Felder ändert, die normalerweise nicht geändert werden sollen. Die ungeschützten Eingabefelder sind gelb hinterlegt. Sollen andere Felder geändert werden, muß die Tabelle zunächst freigegeben werden (bei LibreOffice: Extras, Tabelle schützen).
Es hat mich mal wieder in den Fingern gekribbelt. Nachdem wir die vergangenen zwei Jahre nur mit unserem neuen Haus beschäftigt waren, musste ich mal wieder ein kleines Board entwickeln.
Ich habe ja wieder mit dem Amateurfunk angefangen und zwei Transceiver von Icom gekauft. Die Antennenanlage lässt allerdings sehr zu wünschen übrig. Ich will verschiedene Antennen aufbauen, für Kurzwelle vorläufig nur Mono- und Dipole. Da nicht jede Antenne ein eigenes Kabel bekommen kann, werde ich also einen Antennenumschalter installieren müssen, der von der Station aus elektrisch schaltbar sein soll. Sowas kann man fertig kaufen oder auch selberbauen, aber auch die gekauften brauchen eine Steuerung.
Zur Kommunikation zwischen Antennenumschalter und Shack bietet sich die RS485 Schnittstelle an. Sie setzt auf einer asynchronen seriellen Schnittstelle auf und unterstützt Leitungslängen von vielen hundert Metern (bis 1,2 km nach der Norm) bei Baudraten bis 12 MBd. Durch die Verwendung eines Leitungspaars im Gegentakt wird eine hohe Störsicherheit erreicht. Ein Leitungspaar gestattet die Kommunikation im Halbduplex-Mode, für Vollduplex sind zwei Leitungspaare nötig. RS485 ermöglicht auch den Aufbau eines Bussystems, bei dem bis zu 32 Teilnehmer angeschlossen werden können. Bei der hier geplanten Antennenumschaltung könnten also mehrere Antennenumschalter über ein einziges Leitungspaar angeschlossen werden.
Weil ich gerade noch einige Exemplare des Mikrocontrollers in der Kiste liegen hatte, habe ich ein kleines Board mit dem ATtiny1634 und einem RS485-Transceiver gebaut. Hier die KiCad 3D-Vorschau:
Unterseite des RS485 Moduls mit einem ATtiny1634.Oberseite des RS485 Moduls.
Da die Umschaltrelais des Antennenschalters typischerweise mit 12V arbeiten, ist auf der Oberseite ein einfacher Linearregler implementiert. Es passen 3V- und 5V-Typen. Da der 1634 bei 3V nur bis 8 MHz getaktet werden kann, habe ich auf dem Prototypen 5V-Regler eingelötet. Damit läuft der Controller mit bis zu 12 MHz. Hier ist der Schaltplan, es gibt keinerlei erwähnenswerte Besonderheiten.
In der Wahl des Kommunikationsprotokolls ist man ziemlich frei, aber warum etwas eigenes erfinden, wenn es schon weitverbreitete Standards gibt. Ich habe mich für den Modbus entschieden, der auch beispielsweise bei der Kommunikation mit PV-Wechselrichtern verwendet wird. Es gibt ein schönes Utility für Windows, QModMaster, das Modbus-Nachrichten senden und empfangen kann. Das war sehr hilfreich bei der Implementierung des Modbus Protokolls in den ATtiny1634. Ich bin noch nicht komplett mit der Implementierung fertig, daher will ich die Software im Moment noch nicht hier veröffentlichen. Das hole ich nach, wenn’s fertig ist. Da die wesentlichen Dinge aber bereits funktionieren, hier mal nur kurz der Ressourcenverbrauch:
Program Memory Usage : 2892 bytes 17,7 % Full Data Memory Usage : 85 bytes 8,3 % Full EEPROM Memory Usage : 2 bytes 0,8 % Full
Daran wird sich im Endausbau nicht mehr viel ändern. Vielleicht braucht er mit weiteren Funktionen 25 – 30% Flash Speicher, aber die vorhandenen 16 kB werden auf jeden Fall ausreichen. Wenn genügend Platz bleibt, werde ich die Sende- und Empfangspuffer etwas vergrößern, was dann den Datenspeicher Verbrauch um ein paar Prozent ansteigen lassen wird. Auch hier wird das 1 kB SRAM allemal ausreichen.
Über ein 25m Kabel lief die Kommunikation bei 38 kBd wie erwartet mehrere Stunden fehlerfrei, allerdings kann QModMaster auch leider nur eine Nachricht pro Sekunde absetzen. Das ist also nicht wirklich ein hoher Durchsatz. Auf der PC-Seite verwende ich übrigens einen „WaveShare USB TO RS232 RS485 TTL Industrial Isolated Converter“, der bisher zuverlässig funktioniert.
Inzwischen habe ich einige Erfahrungen gesammelt, meine Sammlung an recycleten Li-Ion Akkus durchgemessen und auch mit der mitgelieferten Software gearbeitet.
Messungen an Akkus
Bei den Akkus handelt es sich um 18650er Typen, die meistens noch das Logo von Samsung tragen und nominal im Neuzustand 2,8 bis 3,0 Ah Kapazität haben sollten. Sie stammen fast alle aus alten Notebook-Akkupacks, die oft nicht wegen kaputter Akkus sondern wegen defekter Ladeelektronik entsorgt werden. Laut Datenblatt sollen diese Akkus auf 4,35 V geladen werden und sie haben dann bei einem Entladestrom von 0,2 C die genannte nominale Kapazität. Für die Tests habe ich die Akkus auf 4,2 V geladen, weil das verwendete Ladegerät dann abschaltet. Das geschieht aus Sicherheitsgründen, denn manche Akkus dürfen nur bis 4,25 V geladen werden, darüber wird’s gefährlich.
Die Akkus habe ich zum Teil einzeln, zum Teil als Pärchen und zum Teil im 6er‑Pack entladen. Der Entladestrom wurde dabei auf etwa ein Fünftel der nominalen Kapazität eingestellt, auf 0,5 A, 1,0 A bzw. 3,0 A. Als Abbruchbedingung wurde laut Datenblatt eine Entladeschlußspannung von 2,75 V gewählt. Nachfolgend exemplarisch die Entladekurve eines Akkupacks aus zwei Zellen:
Entladekurve eines Akkupacks aus zwei Zellen
Bei einem Entladestrom von 1 A ist der Akkupack also nach etwa zwei Stunden auf die Entladeschlußspannung entladen. Damit haben die beiden Akkus zusammen also eine Kapazität von etwa 2 Ah. Obwohl der Akkupack beim Start eine Leerlaufspannung von 4,2 V hatte, sinkt diese Spannung unter Last sofort auf etwa 4,0 V. Daher startet die Kurve nicht bei 4,2 V. Es wurde zwar der Sense-Eingang zum Messen der Batteriespannung benutzt, aber die Spannung wurde nicht unmittelbar an den Akku-Kontakten abgegriffen, sondern über die kurzen Verbindungsdrähte und die Feder des Akkuhaltes, über die auch der Entladestrom fließt. Zumindest ein Teil des Spannungsabfalls von 200 mV dürfte also dem Leitungs- und Kontaktwiderstand geschuldet sein. Hier ist das zugehörige LibreOffice Spreadsheet zum Rumspielen.
Solche Akkus, deren Kapazität sich als zu gering erwies (< 0,5 Ah), habe ich vor der Abgabe beim Recyclinghof mit geringer Leistung auf 0 V entladen. Vor dieser Prozedur waren sie bereits mit dem Nominalstrom auf 2,75 V entladen, haben sich aber nach einiger Zeit wieder erholt, so daß die Entladung mit höherer Spannung als 2,75 V startet. Nachfolgend die Entladekurve bei einer konstanten Entladeleistung von 1 W.
Zwei ‚leere‘ LiIon-Akkus bei 1W auf 0V entladen
Die rote Kurve zeigt die Spannung des Akkupacks während des Entladens mit einer Leistung von 1 W. Nach sechseinhalb Stunden fällt die Spannung rapide ab und die elektronische Last versucht die Leistung durch eine Steigerung der Stromstärke aufrecht zu erhalten. Dabei steigt die Stromstärke kurzzeitig auf über 3 A an, bis der Akkupack die geforderte Leistung nicht mehr erbringen kann. Danach sinken Stromstärke und Spannung schnell ab, die Leistung sinkt innerhalb weniger Minuten auf unter hundert Milliwatt. Hier wieder das zugehörige LibreOffice Spreadsheet.
Die Software
Zum Gerät wird eine Betriebssoftware auf DVD für Windows Betriebssysteme mitgeliefert. Diese Software ist namenlos und basiert offensichtlich auf LabView 2014. Das ausführbare Programm heißt „RND 320-KEL102.exe“ Eine Beschreibung ist nicht dabei und man muß sich seiner Funktionsweise durch Ausprobieren nähern. Beim Start erscheint folgendes Fenster:
Startbildschirm RND 320-KEL102
Zunächst muß die Software mit der elektronischen Last verbunden werden. Dazu stehen drei verschiedene Schnittstellen zur Verfügung: RS232, USB oder Ethernet. Nach der Installation des USB Treibers steht die USB Schnittstelle als COM-Schnittstelle zur Verfügung, in meinem Fall als COM15. Man selektiert die COM-Schnittstelle im Drop-Down Menü und klickt auf „Connect“ zum Verbinden mit dem Gerät. Anders als die Verbindung über Ethernet hat das auf Anhieb funktioniert. Bei Ethernet kann das Problem an vielen Dingen liegen, vom Switch über die Firewall bis hin zum Gerät selbst. Die Forschung nach den Ursachen habe ich erstmal auf Eis gelegt, weil die USB Schnittstelle funktioniert.
Die Benutzeroberfläche gestattet die direkte Bedienung des Geräts, die Beobachtung von Spannung und Strom sowie das Loggen dieser beiden Meßwerte in einem Textfile.
Zum Loggen gibt man im Feld „Storage Time“ die zu speichernde Anzahl von Meßwerten pro Sekunde ein. Die hier gezeigte 10 bedeutet also Meßwerte im Intervall von 100 ms zu speichern. Damit kann man leben, wenngleich es bei langen Intervallen von z.B. einer Minute etwas unhandlich wird. Dann muß man nämlich 1⁄60 eingeben, also 0.0166666, was unweigerlich irgendwann zu Fehlern führt. Bei meinen Akkumessungen habe ich daher 50 Sekunden Intervalle gewählt und 0.02 als Anzahl Meßwerte pro Sekunde eingegeben. Dann wählt man den Pfad für die Logdatei, klickt bei Data Safe auf „On“ und schon werden die Meßwerte gespeichert.
Die Logdatei ist leider eine reine Textdatei, kein CSV-File. Die Einträge sehen folgendermaßen aus:
Um diese Datei mit einem Spreadsheet-Programm wie z.B. LibreOffice zu öffnen, muß sie manuell mit einem Texteditor in ein echtes .CSV-Format umgewandelt werden. Dabei ist es ausgesprochen hilfreich, wenn der Editor spaltenweises editieren erlaubt, um z.B. die notwendigen Trennzeichen einzufügen und die Dimensionen „V“ und „A“ wegzulöschen. Nach dem editieren sollte die Datei dann folgendermaßen aussehen:
Diese Datei kann mit LibreOffice direkt geöffnet und weiterverarbeitet werden. So wurden die oben gezeigten Grafiken erstellt.
Damit Spannung und Stromstärke direkt im passenden Maßstab beobachtet werden können, muß die y‑Achse entsprechend skaliert werden. Das geschieht durch Anklicken des jeweiligen oberen und ggf. unteren Wertes und Eingabe des gewünschten neuen Werts. Will man beispielsweise einen Spannungsbereich zwischen zwei und fünf Volt anzeigen, klickt man unten auf der y‑Skala auf die „0“, löscht diese und gibt eine 2 ein. Oben klickt man auf die 120 und gibt eine 5 ein.
Das Feld Programmable Test erlaubt die Eingabe einer Prüfsequenz. Will man beispielsweise ein Netzteil auf sein Verhalten bei Lastschwankungen testen, kann man eine Sequenz definierter Lastströme eingeben. Das probieren wir mal aus:
Testsequenz für ein Netzteil
Hier wurde eine Testsequenz mit sechs zwei Sekunden langen Intervallen vorgegeben. Es gelten die Testpunkte 1 bis 6 und die Sequenz soll insgesamt fünfmal durchlaufen werden. Gestartet wird im ersten Testpunkt mit einem Konstantstrom (Mode: CC) von 0,1 A. Es folgen Konstantströme von 3,0 A, 1,0 A und 0,0 A. Dann wird das Netzteil mit einer konstanten Leistung (Mode: CW) von 5 W getestet und anschließend mit einem Widerstand von 1 Ω belastet (Mode: CR). Die grafischen Anzeigen für Strom und Spannung wurden auf sinnvolle Werte skaliert und der Sense Eingang wurde benutzt, damit Leitungswiderstände keine Rolle spielen.
Am Netzteil wurde eine Ausgangsspannung von 5 V eingestellt und die Strombegrenzung wurde auf einen Wert über 5 A eingestellt, damit sie nicht anspricht. Man sieht in der Anzeige schon, daß die Spannung bei einer Last von 5 A um etwa 200 mV einbricht. Deutliche Überschwinger beim Ein- und Ausschalten großer Lasten scheint es nicht zu geben.
Hier nochmal die Meßkurve aus der Logdatei mit LibreOffice erstellt:
Netzteil bei Last, Spannung und Strom
Und wegen der besseren Skalierung nochmal nur die Spannung:
Bei dem Netzteil handelt es sich übrigens um ein chinesisches Modell Manson HCS-3302, das ich vor ein paar Jahren über die Firma Reichelt bezogen habe. Es ist von 1 ‑ 32 V einstellbar und kann bis zu 15 A liefern. Bei Strömen über 5 A sollten die rückseitigen Buchsen benutzt werden, was ich bei den obigen Tests nicht gemacht habe. Da die Spannungsschwankungen unter Last laut Spezifikation auf 50 mV ausgeregelt werden sollten, die obigen Messungen aber über 150 mV zeigen, habe ich die Messung mit dem hinteren Ausgang des Netzteils wiederholt. Dabei zeigt sich, daß die Spannungsschwankung bei 5 A etwas unter 25 mV beträgt.
Netzteil bei Last am rückseitigen Ausgang, Spannung
Bei 15 A messe ich dann allerdings einen Spannungseinbruch von 80 mV bei eingeschaltetem Sense Eingang. Die spezifizierten Werte des Netzteils sind also tatsächlich leicht geschönt.
Eine elektronische Last dient dazu, Spannungsquellen aller Art zu testen. Man kann z.B. ein Netzteil mit einer definierten Last beaufschlagen, um seine Belastbarkeit zu testen oder einen Akku um seine Kapazität zu messen.
Dabei gibt es in der Regel verschiedene Betriebsarten. So kann man bei fast allen Geräten einen konstanten Strom oder eine konstante Spannung wählen. Mit Ausnahme der einfachsten und billigsten Geräte kann man normalerweise auch eine konstante Leistung oder einen konstanten Lastwiderstand simulieren. Mit geeignet gewählten Abbruchbedingungen kann man so ziemlich leicht die Kapazität eines Akkus bei vorgegebener Last messen. Wählt man z.B. einen konstanten Strom und gibt eine Entladeendspannung vor, dann kann der Akku unbeaufsichtigt entladen werden, ohne daß man eine Tiefentladung befürchten muß.
Eine solche elektronische Last stand schon länger auf meinem Wunschzettel und da die Firma Reichelt nun den RND 320-KEL102 im Sonderangebot für knapp €250,- anbot, konnte ich nicht widerstehen. Das Gerät kann 150 Watt verbraten, bis zu 30 A Strom ziehen und eine Spannung bis 120 V aushalten. Für gut 100 Euro mehr gibt es die Variante mit bis zu 300 Watt Belastbarkeit. Für meine Zwecke sollte die 150 W Variante genügen. Selbst wenn mal ein 12V-Autoakku getestet werden soll, kann er immerhin mit gut 10 A belastet werden. Das reicht für mich.
Vorgesten bestellt, heute geliefert und hier ist er nun:
Der RND 320-KEL102 beim Entladen eines Akkus
Als Zubehör ist das Netzkabel, ein USB-Kabel, ein RS232-Kabel (9‑polig male auf 9‑polig female) und zwei dicke sehr flexible Meßstrippen (gut 1m lang, 10AWG = 5.26 mm²) beigepackt. Als Dokumentation ist ein 30-seitiges DIN A5-Heftchen beigelegt. Außerdem ist eine unbeschriftete CD dabei, die ich aber noch nicht angeschaut habe.
Erster Eindruck
Der erste Eindruck ist sehr positiv, das Gerät macht, was es soll. Dieses Bild zeigt das Entladen eines LiIo-Akkupacks, bestehend aus sechs parallelgeschalteten 18650-Zellen von Samsung. Jede Zelle hat nominal 2.8 Ah Kapazität bei einem Entladestrom von 0.2C, also 0,56A. Das macht bei sechs Zellen also 3.36A, wie auf dem Foto gezeigt.
Die Programmierung geschieht über das Tastenfeld und ist, wie so oft bei Chinaware, etwas gewöhnungsbedürftig. Die knappe und fehlerhafte Beschreibung ist leider auch keine große Hilfe. Zum Testen eines Akkus muß man zunächst die Betriebsbedingung angeben, also den Entladestrom. Dann werden die Abbruchbedingungen eingegeben. Das ist die Entladeschlußspannung, aber auch die Entladekapazität und die maximale Entladedauer sind programmierbar. Daß Ströme in (m)A und Spannungen in V angegeben werden ist logisch, daß die Entladekapazität in Ah angegeben wird, schon weniger. Ich hätte eine Kapazität in Wh oder Ws erwartet, aber da ja auch die Akkuhersteller die Ladung in As oder Ah angeben, ist das nicht ganz von der Hand zu weisen. Man hätte es natürlich auch in das Dokument schreiben können, genauso wie die Entladedauer, die nicht etwa in Sekunden sondern in Minuten und Bruchteilen von Minuten angeben wird.
Das Foto oben zeigt den Akkutest nach 28,328 Minuten, also 28 Minuten und knapp 20 Sekunden und bis dahin wurden 1,5866 Ah entladen. Der Akku liefert noch knapp 3.7 V. Als Entladeschlußspannung wurden die im Datenblatt genannten 2.75 V einprogrammiert, die aber hier noch nicht erreicht sind. Zur Spannungsmessung ist ein Sense-Eingang vorhanden. Damit kann die Spannung direkt an der Quelle gemessen werden und so spielen dann die Leitungswiderstände keine Rolle mehr.
Der Lüfter läuft nur bei Bedarf und er scheint lastgesteuert zu sein. Bei den ersten Entladeversuchen mit 1 A ist er nicht angelaufen, auch nicht nach einer halben Stunde. Bei den hier gezeigten 3.36 A lief er allerdings sofort an, obwohl in der kurzen Zeit noch nichts heißgelaufen sein kann. Daher wird er vermutlich bei einer bestimmten verbrauchten Leistung anlaufen, aber das Handbuch verrät nichts darüber. Der Lüfter ist deutlich hörbar, aber nicht übermäßig laut. Vor allem ist kein Scheppern, Pfeifen oder Kratzen zu hören. Das ist für mich in Ordnung, ein Desktop PC ist auch nicht viel leiser. Im Schlafzimmer wird man die elektronische Last natürlich nicht betreiben.
Bei Gelegenheit werde ich die mitgelieferte Software ausprobieren und die Kommunikation über Ethernet oder USB testen. Auch ein RS232-Interface ist eingebaut. Ich erwarte, daß man die Entladekurve aufzeichnen und mit einem Spreadsheet-Programm weiterverarbeiten kann. Ein weiterer Bericht soll also folgen.