LTZ1000A 1ppm Präzisions-Spannungsreferenz

Seit einigen Jahren plane ich, meine eigene LTZ1000A 1ppm Präzisions-Spannungsreferenz zu entwickeln. Manchmal arbeite ich daran weiter und bis jetzt ist ein großer Teil der Schaltung auf dem Papier fertig. Die schwer zu beschaffenden Teile wie zum Beispiel extra für mich produzierte Widerstände mit 0,1 ppm thermischer Drift habe ich bereits besorgt. Ich möchte zeigen, dass es möglich ist, auch solche komplizierten Probleme als ambitionierter Hobbybastler zu lösen.

Das vorläufige Schaltbild ist hier zum Download verfügbar.

LTZ1000-precision-reference_schematics.pdf

Projektbesonderheiten

  • LTZ1000A basiert
  • state of the art 32Bit A/D Converter für Korrektur
  • <1ppm Lang- und Kurzzeitstabilität
  • ~2μVpp Rauschen
  • programmierbar 0V .. 5.05V in 37nV Schritten
  • Thermostat stabilisiert

 

Bekomme Updates per Email

Loading

 

AVR basierter RS232 Dimmer

Warnung

Die Schaltung arbeitet mit Netzspannung und einige Teile sind direkt damit verbunden. Somit richtet sich dieser Beitrag nur an den erfahrenen Hobbyisten.

Beschreibung

Mit dieser Schaltung kann eine 230V Last (bis zu 1000W) mit den hier dokumentierten seriellen Kommandos geschaltet oder gedimmt werden.

Foto des Prototyps

Das Herzstück ist ein Atmel ATTINY2313 Controller mit gut dokumentierter Firmware, die komplett in AVR Assembler geschrieben ist. Neben den dimm- und einmaligen Schaltfunktionen können flexible Timer genutzt werden, um in Zyklen zu schalten, einmalig oder wiederholt. Verliert die Schaltung ihre Stromversorgung, sind alle Timer zurückgesetzt. Weitere Einzelheiten sind in der seriellen Protokollbeschreibung zu lesen.

Der im ATTINY2313 integrierte analoge Komparator dient der Erkennung des Nulldurchgangs der Netzspannung um damit den Triac zur richtigen Zeit zu zünden.

Der Quellcode steht unter der „GNU General Public License (GPL)“ frei zur Verfügung und kann hier heruntergeladen werden. Eine bereits assemblierte Version im hex-Format ist hier verfügbar.

Projektbesonderheiten

  • einfache reine Textkommandos, mit einem Terminal bedienbar
  • günstige Bauteile, weder ein Trafo noch ein RS232 Isolator IC sind notwendig
  • intelligente autonome einfache und zyklische Schaltfunktionen

Das Schaltbild kann hier heruntergeladen werden.

ATTiny2313-dimmer.sch_.pdf

 

Ein geprüftes 2 Lagen Platinenlayout ist zusätzlich verfügbar.

 

Bekomme Updates per Email

Loading

 

Efratom LPRO-101 Verteilverstärker mit PLL

Im Jahr 2009 tauchte ein Verkäufer aus China bei ebay.com auf, der eine größere Menge „Efratom LPRO-101 Rubidium time base“ gebraucht, ca. 10 Jahre alt angeboten hat. Der günstige Preis von etwa 40 US$ und der Fakt, dass man im Labor eine gute Zeitbasis für einige Geräte benötigt, haben mich nicht lange zögern lassen, ein solches Modul zu bestellen. Mittlerweile hat sich der Preis übrigens verfünffacht. Nachdem es angekommen war, habe ich angefangen, eine Schaltung rund um das Modul zu entwickeln, um andere Messgeräte mit einem stabilen Takt zu versorgen.

Foto des Prototyps

Dieses Projekt nutzt einen 10MHz Rubidium Frequenzstandard als Zeitbasis. Mehrere Ausgänge mit unterschiedlichen Pegeln können für verschiedene Messgeräte oder Testaufbauten genutzt werden. Eine eingebaute Cypress CY22150 CyberClock PLL nutzt die 10MHz Referenz und stellt 6 TTL-Ausgänge mit 2,5V und 3,3V Pegel bereit. Diese können dann nahezu jede beliebige Frequenz zwischen ca. 100kHz und 200MHz liefern. Die PLL wird von dem eingebauten Atmel ATMEGA644 programmiert.

Zusätzlich gibt es einen USB-Port, über welchen die PLL alternativ programmiert werden kann mit der Software aus dem Projekt „CyberClock CY22150 mit USB und Steuersoftware“. Für den USB zu I2C Adapter habe ich auch hier „I2C-Tiny-USB“ verwendet, entwickelt von Till Harbaum mit verfügbaren Treibern für Linux, Windows und MacOS. Auf der Homepage von I2C-Tiny-USB kann auch die Firmware für den ATTINY45 Controller gefunden werden.

Das Gerät verfügt über eine numerische Tastatur, vier Hotkeys und einen Drehencoder für eine menügeführte Bedienung. Ein LCD-Display zeigt die aktuellen Ausgangsfrequenzen und den Status an. Die Temperaturen von Gehäuse und Kühlkörper werden durch 1-Wire Temperatursensoren DS18B20 überwacht. Drei LEDs signalisieren Betriebszustand, Warnungen und Fehler.

Der Gerätestatus wird fortlaufend in einem FRAM RAMTRON FM24CL04 gespeichert. Der letzte Status wird automatisch beim Einschalten wiederhergestellt. Es können bis zu 8 Setups gespeichert und wieder abgerufen werden.

Technische Daten

Ausgänge

  • 1x 10MHz Referenz Ausgang, 1,56Vpp, Sinus
  • 3x 10MHz Referenz Ausgang, 3,11Vpp, isoliert, Sinus, Vout einstellbar
  • 2x 10MHz Referenz Ausgang, 5V TTL
  • 2x 10MHz Referenz Ausgang, 3,3V TTL
  • 4x CY22150 PLL Ausgang, LCLK1..4, 2,5V
  • 2x CY22150 PLL Ausgang, CLK5..6, 3,3V

Zeitbasis

  • Efratom LPRO-101 Rubidium Frequenzstandard

Stromversorgung

  • 24V, 2,5A DC
Ansicht von oben
PCB Ansicht von unten


Die Firmware für den integrierten Mikrocontroller ATMEGA644 ist für die Übersetzung mit avr-gcc in C geschrieben. Sie wurde mit „AVR Studio 4.15“, entwickelt, einer Entwicklungsumgebung für 8 Bit AVR-Controller von Atmel. Der Quellcode steht unter der „GNU General Public License (GPL)“ frei zur Verfügung und kann hier heruntergeladen werden.

Möglicherweise muss der Code angepasst werden für die aktuelle Version „Atmel Studio 7“. Die alten Entwicklungsumgebungen von Atmel sind aber immer noch hier verfügbar.

Projektbesonderheiten

  • qualitativ hochwertige Bauteile für beste Performanz
  • sehr geringe Verzerrungen
  • geringer Jitter
  • phasengleiche Ausgänge für die gleichen Typen
  • Gerätestatus wird in FRAM gespeichert und beim Einschalten wiederhergestellt
  • nichtflüchtiger Speicher für 8 Setups
  • Programmierung der PLL über ein USB-Interface vom PC aus
  • Grafische Bedienoberfläche für verschiedene Plattformen

Das Schaltbild kann hier heruntergeladen werden.

Rubidium-ClockDistribution_schematics.pdf

 

Ein geprüftes 2 Lagen Platinenlayout ist zusätzlich verfügbar.

Das Design im Format Protel 98 und die Gerber Plots der Platine können hier heruntergeladen werden.

 

Bekomme Updates per Email

Loading

 

AVR 1-wire Slave mit DS18B20 Temperatursensor

In diesem Projekt fungiert ein ATTINY45 als 1-Wire Slave und verhält sich auf dem Bus wie ein DS18B20. Die Daten des lokal an den ATTINY45 angeschlossenen Temperatursensors werden auf einem ebenfalls lokalen 7-Segment Display angezeigt.

Foto des Prototyps

Der zentrale Punkt der Schaltung ist ein ATTINY45 Controller. Er arbeitet sowohl als 1-Wire Master wie auch als Slave. An den Master Bus ist ein DS18B20 digitales Thermometer angeschlossen. Ein DS18S20 kann ebenfalls genutzt werden. Auf dem Slave Bus agiert der Controller exakt wie der angeschlossene DS18B20. Es sind zwei Schieberegister mit dem Controller verbunden, um eine 3- oder 4-stellige 7-Segment Anzeige anzusteuern. Die aktuelle Firmware steuert 3 Stellen an, kann aber einfach für 4 Stellen angepasst werden.
Der ATTINY45 liest die Temperatur aus dem angeschlossenen DS18B20 in einer Schleife und stellt den aktuellen Wert auf dem 7-Segment Display dar. Für den Sensor wird „parasite power“ genutzt, weshalb eine Messung eine knappe Sekunde dauert. Auf der Slave-Seite steht der letzte Wert aber immer sofort zur Verfügung. Hier ist kein Warten auf das Auslesen notwendig, womit bestehende Systeme eventuell beschleunigt werden können.
Als zusätzliche Funktion kann auf den internen 2048 Bit EEPROM des ATTINY45 mit den Standard-Kommandos für iButtons zugegriffen werden.

Der Quellcode für den ATTINY45 kann hier heruntergeladen werden.

Projektbesonderheiten

  • Anzeige der Temperatur direkt am Sensor
  • kann DS18B20 in bestehenden System ersetzen ohne Änderung der Software
  • verhält sich wie ein Standard-Temperatursensor
  • schnelleres Auslesen, kein Warten auf Messung notwendig
  • interner ATTINY45 EEPROM nutzbar über iButton Protokoll

Das Schaltbild ist zum Download hier verfügbar.

1wire-slave-temperatur-schematics

 

Bekomme Updates per Email

Loading

 

AVR 1-Wire Slave mit seriellem LCD-Display

Dieses Projekt habe ich bereits 2010 entwickelt und damit die erste wirklich vollständige AVR basierte 1-Wire Slave Implementierung veröffentlicht, die das strikte 1-Wire Timing zumindest einigermaßen einhält. Eine Verbesserung des Timings ist aufgrund der maximalen Taktrate des Mikrocontrollers wahrscheinlich nicht möglich.

In dem Projekt wird der generische 1-Wire Slave über eine serielle Verbindung mit einem Controller für ein LCD-Display gekoppelt, sodass dieses Display vollständig über 1-Wire gesteuert werden kann.

Prototyp

Das Projekt besteht aus zwei Teilen:

  • 1-Wire Slave, ein ATTINY45 Controller
  • LCD-Display mit Controller, ein ATTINY2313

Diese beiden Teile sind verbunden und kommunizieren über eine bidirektionale serielle Verbindung mit 115200 Baud.

Teil 1: 1-Wire slave

Der 1-Wire Slave ist als Softwareimplementierung auf einem Atmel ATTINY45 Controller ausgeführt. Ein DS2401 Chip sorgt für eine eindeutige ID auf dem Bus, ohne die Firmware anpassen zu müssen. Das Timing erfüllt relativ gut die Spezifikation, ist aber nicht zu 100% getestet. Aufgrund des asynchronen Busses, der von einem fest getakteten Mikrocontroller bedient wird, gibt es eventuell minimale Abweichungen.
Der serielle Port ist ebenfalls als Softwareimplementierung ausgeführt. Nach dem Power-On-Reset wird hier einiges an Debug-Informationen ausgegeben. Für die Fehlersuche kann das nützlich sein. In der LCD 1-Wire Protokollbeschreibung sind die Kommandos beschrieben, mit denen das LCD-Display gesteuert werden kann. Alle Kommandos und Daten sind mit CRC16 Integritätsgeschützt, um Übertragungsfehler auf dem Bus auszuschließen. Als zusätzliche Funktion kann auf den internen 2048 Bit EEPROM des ATTINY45 mit den Standard-Kommandos für iButtons zugegriffen werden.

Der Quellcode für den ATTINY45 kann hier heruntergeladen werden.

Teil 2: Serielles LCD-Display

Teil 2 des Projektes verbindet ein HD44780 kompatibles LCD-Display mit einem seriellen Port. Die Ansteuerung übernimmt dabei ein ATTINY2313. Der Teil kann auch allein verwendet werden, sofern man ein LCD-Display über einen seriellen Port ansteuern will. In der LCD seriellen Protokoll Beschreibung sind alle Kommandos zur Steuerung des Displays beschrieben. Auch hier ist alle Datenübertragung über die serielle Schnittstelle mit CRC16 geschützt.

Für die Ansteuerung einer Hintergrundbeleuchtung steht ein PWM-Ausgang zur Verfügung der ebenfalls mit seriellen Kommandos bedient werden kann. Die Helligkeit wird mit einem 8-Bit Wert eingestellt und automatisch langsam angepasst.

Der Quellcode für den ATTINY2313 kann hier heruntergeladen werden.

Projektbesonderheiten

  • nur ein Pin notwendig, um ein LCD-Display anzusteuern
  • kann in bestehende Schaltungen integriert werden
  • Datenübertragung mit CRC16 geschützt
  • bidirektionale Kommunikation
  • Steuerung der Hintergrundbeleuchtung möglich
  • interner ATTINY45 EEPROM nutzbar über iButton Protokoll

Das Schaltbild für Teil 1 und 2 zusammen ist zum Download hier verfügbar.

1wire-slave-lcd-schematics

 

Bekomme Updates per Email

Loading