Hallo, ich habe mit einem LM393 den genial einfachen Rauschgenerator aus Julien Thomas' XR232USB (USB-Zufallsgenerator) nachgebaut, siehe Anhang. Nun gibt es in meinem Controller (PIC16F1719) schon zwei Komparatoren, die ich gerne dafür nutzen würde. Aber der gleiche Aufbau mit den internen Komparatoren des PIC gibt nur eine niederfrequente Schwingung am ersten und Stille am zweiten Komparator. Die LM393-Schaltung dagegen läuft schon ohne Puffer-Stufe stabil, man kann z.B. einen kleinen Piezo an den Ausgang des ersten Komparators hängen und direkt das Rauschen hören. Ich habe die Schaltung mit zwei PICs aufgebaut, bei beiden ist das gleiche Knattern zu hören. Natürlich sind Filter und Hysterese abgeschaltet, trotzdem verhalten sich die Komparatoren so, als hätten sie eine. Durch Variation der Widerstände lässt sich die Knatter-Frequenz zu einem Fiepen steigern, lange Kabel führen manchmal zu sogar einer gewissen Zufälligkeit, aber so richtig rauschen tut es nicht. Sind die internen Komparatoren im PIC grundsätzlich anders als ein LM393?
Korrektur: Der zweite Komparator gibt natürlich auch das Knattern aus. Der PIC wird von einer 3V Batterie gespeist und schläft, ohne WDT.
Der 1. Komparator wird als analoger Verstärker betrieben. Das ist bei den meisten Komparatoren nicht definiert. Wenn der Komparator im PIC eine interne Hysterese hat (was sehr wahrscheinlich ist), wird die Schaltung um den 1. Komparator zu einem Oszillator mit mehr oder weniger definierter Frequenz (ca. 1/ (100 nF*220 K) * Vcc/Hysterese ).
Ja, so scheint es. Die Hysterese ist aber extra anschaltbar, daher würde ich davon ausgehen, dass sie auch wirklich aus ist, wenn das entsprechende Bit nicht gesetzt ist. Im Datenblatt ist die Hysterese auch nur für den angeschalteten Fall angegeben. Wenn ich die 100 nF vom ersten Komparator abklemme und dann den Ausgang berühre, gibt es für ca. 1/2 Sekunde richtiges Rauschen, siehe Bild. Vielleicht kann man es so einstellen, dass es dauerhauft bleibt.
Pekka schrieb: > Sind die internen Komparatoren im PIC grundsätzlich anders als ein > LM393? Vermutlich. Der LM393 kann jedenfalls nur negative Rail am Eingang. Die erste Stufe arbeitet als irgendwas, nur nicht als Komparator. Die Stromquelle und der Stromspiegel am +Eingang sind komplett gesperrt, wenn er auf +VCC liegt. In MCs sind die Komparatoren dagegen oftmals R2R.
Bei einen R2R Comparator ist die Funktion der 1. Stufe undefiniert. Hat diese einen positiven Offset, bleibt der Ausgang konstant auf VCC, denn der -Eingang kann ja nicht höher als VCC gehen. Da rauscht dann definitiv nichts. Ich vermute mal, die Schaltung ist rein zufällig entstanden. Der Autor hat nicht dran gedacht, daß der LM393 nicht R2R ist und ihn versehentlich außerhalb des Common Mode Bereichs betrieben.
Der LM393 arbeitet hier nur mit der (-) Seite seines Differenzverstärkers, und zwar bei Vcc - 1,xV, haarscharf an der Spannungsgrenze der Eingangstransistoren entlang. D.h. der normalerweise mit konstantem Summenstrom arbeitende Differenzverstärker ist hier weitgehend abgedreht und arbeitet mit weit niedrigerem Strom. Das dies ein völlig anderes Verhalten des ICs zur Folge haben kann, als im normalen Arbeitsbereich, dürfte nicht überraschen. Kann schon sein, dass man mit einem anderen Komparator ohne Signalrückkopplung ebenfalls ein nichtdeterministisches Verhalten herbeizaubern kann, aber es ist nicht gewährleistet.
:
Bearbeitet durch User
Wenn man die 10k zwischen Ausgang und VCC überbrückt, rauscht es. Aber ob es gut ist, den Ausgang direkt mit VCC zu verbinden... Peter Dannegger schrieb: > Ich vermute mal, die Schaltung ist rein zufällig entstanden. Der Autor > hat nicht dran gedacht, daß der LM393 nicht R2R ist und ihn > versehentlich außerhalb des Common Mode Bereichs betrieben. Das Projekt ist hier beschrieben: http://www.jtxp.org/tech/xr232usb.htm Ich habe den Rauschgenerator-Teil nachgebaut und ein bisschen rumprobiert, ohne wirklich nachzuvollziehen, wie er funktioniert. Ich finde den Eingang an VCC auch komisch. Ich würde eigentlich denken, dass man einen Spannungsteiler aufbaut, so wie am 2. Komparator. Diese Spannung auf beide Eingänge, über jeweils einen weiteren Widerstand. Dann den Ausgang über einen großen Widerstand an den negativen Eingang und hoffen dass es nicht oszilliert, sondern rauscht. Werds mal ausprobieren.
Es funktioniert mit besagtem Spannungsteiler (4k7 und nochmal 220k vor jedem Eingang), wenn der Ausgang ohne R an den negativen Eingang angeschlossen und mit 100 nF gepuffert ist. Das Rauschen ist lauter als mit dem LM393, allerdings ist das ganze System störanfällig, z.B. auch durch Last an der Puffer-Stufe. Vielleicht geht es ja noch stabiler mit anderen Paramtern. Wäre doch schön, einen analogen Rauschgenerator und echten Zufall direkt im µC zu haben.
Sorry, dass ich mich hier die ganze Zeit öffentlich mit mir selbst unterhalte. Mit 100 nF am negativen Eingang läuft es jetzt stabil. Ich habe keinen Entropie-Test gemacht, aber anhören tut es sich nach sauberem weißen Rauschen (brauche es eh nur für Audio). Ist das jetzt besser als den + Eingang an VCC? Ich habe beide Varianten nochmal angehängt, zur besseren Übersicht ohne die Pufferstufe.
Hier noch ein paar Tests bzgl. Zufall: http://en.wikipedia.org/wiki/Randomness_tests rngtest ist bei Debian basierten im im Paket rng-tools dabei.
Ich muss mich korrigieren: Der Plan in pic_comparator_noise_3.png stimmt nicht. Die 10k (wie in xr232_noise.png ganz oben zu sehen) müssen gekappt werden und die 220k überbrückt. Allerdings gibt dieser Aufbau gerade ein unschön knisterndes Rauschen. @ Terotec: pic_comparator_noise_2.png ist der komplette Plan für den Rauschgenerator, man kann an den Ausgang z.B. einen Piezo hängen und sich das Rauschen anhören. Je nachdem, wie man das Signal verwendet, schaltet man noch die Pufferstufe dahinter oder nicht. Mit einem USB-fähigen PIC könnte man in der Tat den USB-TRNG mit nur einem Chip bauen. Den Ausgang der Pufferstufe würde ich dann direkt an die Datenleitung vom SPI legen, so kann man immer gleich ein ganzes Byte lesen. Auch reizvoll fände ich, das als USB-Audio-Gerät zu realisieren: Man steckt den Stick an und hat dann einen Audio-Eingang, an dem echtes Rauschen anliegt.
Dazu müsstest Du aber mal einen kompletten Plan Posten.!
Was fehlt denn an dem Plan? Die Verdrahtung des Komparators ist zu sehen, der Rest ist controller- und applikationsspezifisch. Ich habe es mit einem PIC16F1719 aufgebaut, bei dem ich wegen anderer Funktionen die Pins umkonfiguriert habe. Plan und Code wäre damit für einen Nachbau unnötig kompliziert. Um einen kompletten USB-Rauschgenerator zu bauen / programmieren habe ich im Moment keine Zeit, aber wenn ich das mal mache, poste ich natürlich den kompletten Plan und Code. Ich habe gestern zufällig noch eine andere Variante gefunden, die noch einfacher und stabiler ist, werde das nachher mal posten.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.