Projekt neuer Detektor
Vor einiger Zeit kam die Idee auf, einen alternativen Detektor für das Projekt Radioactive@Home zu entwickeln. Das aktuelle Design machte manchmal ein paar Probleme, und so beschloss ich, die Aufgabe anzugehen und eine eigene Lösung zu finden. Unglücklicherweise war ich mit meinem regulären Job sehr beschäftigt, sodass die Arbeit Schritt für Schritt am Abend erledigt werden musste. Aktuell ist der Prototyp fertig und kann so an das Projekt angeschlossen werden, es ist also höchste Zeit das Bauschema und ein paar Infos zu veröffentlichen.
1. Analyse
Das größte Problem des aktuellen Detektors ist der USB. Dazu wird dort Software (vUSB-Bibliotheken) auf dem AVR Prozessor benutzt. Ich habe damit schon ein paar mal gearbeitet, und es kann an manchen USB-Ports Probleme bereiten. Also würde ich einen Mikrocontroller mit eingebauter Hardware-USB-Schnittstelle vorschlagen. Ich habe mich für den PIC18F14K50 entschieden, der eine solche Schnittstelle hat. Es ist ein einfacher Mikrochip Mikrocontroller, der recht günstig ist und gute Ressourcen hat. Außerdem haben die Hersteller Bibliotheken mit Beispielen für die Benutzung des USB veröffentlicht. Basierend auf diesen Beispielen können wir einfach ein System bauen, das vom OS als ein HID (human interface device) erkannt wird, ohne das ein Treiber benötigt wird und das uns erlaubt, die LED von der Anwendung auf einem Rechner aus zu steuern. Es steht ausreichend dokumentierter Code als Beispiel zur Verfügung, um ihn zur USB-Bedienung anzuwenden.
Ein anderes Problem des aktuellen Designs ist der Trafo. Der MC34063 verhält sich manchmal sehr seltsam. Nach einem kurzen Überfliegen der Dokumentation bin ich auf die Idee gekommen, das der Mikrocontroller auch den Trafoschalter bedienen kann. Die Tests waren erfolgversprechend, also habe ich diese Lösung weiter entwickelt.
2. Spezifikation
Aktuell unterstützt der Prototyp keine andere Stromversorgung als die 5 V vom USB-Anschluss. Demnächst wird eine Batterieversorgungsmöglichkeit hinzugefügt.
Die 5 V Stromversorgung vom USB-Anschluss wird durch Ferritfilter an den Mikrocontroller (VCC5CPU) und an das Analogsegment für die Impulszählung (VCC5OP) geleitet. Außerdem wird die Spannung durch die Polymersicherung F1 (selbstrückstellende Sicherung) an das Segment des Trafoschalters (VCC5DCDC) weitergeleitet. Diese Sicherung erlaubt die Absicherung gegen eine Überlastung der USB-Stromversorgung durch einen in AN-Stellung blockierten Trafoschalter. Während der Softwareentwicklung habe ich diesen Zustand einige Male erzeugen können. Die Kondensatoren C8 und C9 filtern die interne Stromversorgung des USB-Mikrocontrollers.
Das erste Versuchsdesign hatte noch keine Ferritfilter in der Stromversorgung, und die Kondensatoren waren je ein keramischer 10 µF Kondensator am Prozessor, am Trafo und am Verstärker, und es arbeitete stabil. Um aber auf der sicheren Seite zu sein, wurde eine etwas aufwändigere Filterung hinzugefügt.
Der Detektor hat ein Standard-2x16 LCD-Display und eine LED anstatt eines Buzzers (der wurde auf Dauer recht nervig). Beim fertigen Gerät wird der Buzzer wieder eingebaut. Das LCD-Backlight ist immer an, aber ich werde eine Ausschaltmöglichkeit einbauen. In einer anderen Version der Prototypen wird, um Befehlszeilen für den Mikrocontroller zu sparen, das Display über ein 74HCT595 Schieberegister o.ä. verbunden.
Der Zusammenbau der Einzelteile bedarf keiner besonderen Erklärung.
Die USB-Anschlüsse werden wie in der Dokumentation beschrieben verbunden. Die Diode D1 ist optional und sichert die Anschlüsse des Ports gegen Überspannung ab. Der Mikrocontroller teilt sich die USB-Anschlüsse mit den ICSP-Programmieranschlüssen, was das Testen ein wenig erschwert hat. Um den Mikrocontroller zu programmieren könne wir ICD2, ICD3, PICkit2 oder seinen Klon PICkit2 benutzen. Theoretisch könnte das Programmupdate über den USB-Anschluss erledigt werden, aber ich habe es nicht getestet, da es einen Bootloader im Code erfordert und ich bin mir nicht sicher, ob ich den Teil auch wirklich verstanden habe.
Der Detektor benötigt für die 400 V des Zählrohres einen DC/DC Wandler. Dieser wird ebenfalls mit dem Mikrocontroller aufbaut. Die eingebaute Puls-Breiten Regelung (PWM) ist der Schlüssel dieses Wandlers und wird per Software ausgeführt. Für den Soll/Ist Vergleich werden die 400 V durch den Spannungsteiler R4, R5, R6, C13 auf einen dem Mikrocontroller zuträglichen Wert herabgesetzt. Zusätzlich wird die Stromaufnahme des Wandlers über den Widerstand R18 gemessen. Auf diesem Weg überprüft die Software den Strom über den Schalttransistor.
Eine andere Fähigkeit des Controllers, ein eingebauter Komparator, lässt sich hier sinnvoll einsetzen. Damit lässt sich der PWM abschalten, wenn der Gesamtstrom einen voreingestellten Wert überschreitet. Dies ist also eine zusätzliche Schutzschaltung gegen Überstrom.
Die Softwarekontrolle über den Wandler gibt uns viele Möglichkeiten. So können die Algorithmen für die Regelung in Abhängigkeit von Bedingungen und Gebrauch frei modifiziert werden.
So habe ich Beispielsweise einen Algorithmus geschaffen, welcher durch eine höhere Pulsrate den mittleren Strom durch den Schalttransistor auf 2,5-3 A reduziert!
In der zukünftigen Version mit zusätzlicher Stromversorgung (Batterieversorgung) können wir diese Spannung messen. Damit könnte der PWM Algorithmus so verändert werden, das der max. Füllgrad des PWM geändert wird, um Sättigung des Transformators und damit Instabilität zu vermeiden.
Das Messen der 5 V vom USB ist auch nützlich. Damit können wir eine schlechte Performance des USB erkennen und die Weise ändern, den Wandler zu kontrollieren.
Das Impuls-Entdeckungssegment ist die Kopie eines Originals. Allerdings habe ich den Wert von C15 vergrößert, weil er mir zu niedrig schien. Außerdem wurde das 400 V Versorgungsfilter verbessert.
Die Impulse werden nach Erkennung und Formung zum Eingang eines internen T1-Schalters des Mikrocontrollers geleitet.
3. Software:
Die Software für die LCD Ansteuerung und den Trafo war kein Problem, die Arbeit hat erst mit dem USB angefangen. Zu Anfang schien die Kommunikation über den USB nicht besonders schwierig; mit Hilfe der Beispiele konnte ich die Messergebnisse der Windowsanwendung auf dem Bildschirm eines PC anzeigen. Die Probleme begannen, als ich versucht habe, das Ganze an die Erfordernisse des Projekts anzupassen. Die Beispiele des Mikrochips benutzten zugefügte Endpunkte um zu kommunizieren, der originale Detektor benutzte die Berichte des EP0 Endpunkts. Es war klar, ohne zu lernen, wie der USB genau funktioniert, wäre es nicht möglich dies zu erreichen. Nach ein paar Abenden, und der Hilfe von TJM, fing es an zu funktionieren und ich verstand den Code der USB-Bibliotheken. Mit der Projektanwendung zu harmonisieren war eine Herausforderung, ein klein wenig reverse engineering, weil ich den Code der Detektorversion 2.01 auf dem AVR und die Projektanwendung lernen musste.
4. Was nun?
Der Prototyp des Detektors ist in einer frühen Entwicklungsphase, aber er hat schon 48 h stabil gearbeitet. In der näheren Zukunft werde ich ein Platine entwerfen und ein paar herstellen lassen. Ich werde die Prototypen zum Testen herausgeben. Nach dem Testen wird es gut sein, die VID/PID abzugehen, da der Detektor bisher die originalen benutzt, und das sollte er nicht, krzyszp hat versprochen sich darum zu kümmern. In Zukunft werde ich versuchen etwas mehr Funktionen einzubauen.
Ich hoffe, ich habe die Designdetails klargestellt, falls noch Fragen sind, nur her damit!
Translation: