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.
Also gleich mal ein neues Board entworfen und beim Leiterplattenhersteller meines Vertrauens in Auftrag gegeben. So sieht es in der KiCad-Vorschau aus:


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:

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.
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.