Forum: Mikrocontroller und Digitale Elektronik STM32L1xx: ADC als Zufallsgenerator


von Mike (Gast)


Lesenswert?

Hallo zusammen,

ich benötige auf einem STM32L1xx einfache Zufallszahlen. Dachte ich 
nehme dazu den ADC. So zufällig sind die Werte jedoch leider nicht, 
obwohl der Pin floated.
Gibt es irgendwelche Tipps & Tricks, wie man das Rauschen am Pin 
verbessern kann?

Danke & Grüße
Mike

von Stefan K. (stefan64)


Lesenswert?

Nimm für eine Zufallszahl mit n Bits von jeweils n ADC-Messungen das 
LSB. Danach kopierst Du die n LSBs an die n Bitstellen Deiner 
Zufallszahl - fertig.

Gruß, Stefan

von Clemens L. (c_l)


Lesenswert?

Du könntest das Johnson-Nyquist-Rauschen eines Widerstands messen, wenn 
der ADC empfindlich genug ist. (Siehe 
https://www.av8n.com/turbid/paper/turbid.htm für eine theoretisch 
Herleitung.)

Ansonsten musst du halt noch mehrere ADC-Messungen kombinieren (am 
besten mit einem Hash, z.B. CRC).

von Mike (Gast)


Lesenswert?

Stefan K. schrieb:
> Nimm für eine Zufallszahl mit n Bits von jeweils n ADC-Messungen das
> LSB. Danach kopierst Du die n LSBs an die n Bitstellen Deiner
> Zufallszahl - fertig.

Ok. Danke. Werde mal die Idee mal probieren.

Clemens L. schrieb:
> wenn
> der ADC empfindlich genug ist.

Der interne ADC des STM32L1xx halt. Max. 12 Bit. Nicht genug allem 
Anschein nach.

Clemens L. schrieb:
> (am besten mit einem Hash, z.B. CRC).

Benötigt zusätzlichen Sourcecode und Rechenzeit...

von Jakob (Gast)


Lesenswert?

Püh, mit dem Zufall ist es genau das gleiche Problem, wie beim
Bau eines Verstärkers / Oszillators: Wenn er verstärken soll,
schwingt er, wenn er schwingen soll, tut sich GARNICHTS.

Ein langer Draht fängt dir vielleicht nur blitzsauberen Netzsinus
ein. Recht vorhersagbar! (Auch schon mal vorgekommen...)

So ein offener ADC-Eingang kann durch minimale Leckströme auch
gerade am Anschlag (GND, oder V+) verweilen - da hilft auch keine
Mittelung über 3141592 Perioden....

Wenn es wirklich halbwegs zuverlässiger ZUFALL sein soll, kommst
du um eine Rauschquelle nicht herum.

Wenn Pseudozufall reicht, hilft eine angemessene (evetuell
gestaffelte LFSR-Simulation im µC-Programm. Kostet nur wenige
µC-Takte pro Zufallszahl.
Also reine Software - nur der ZUFÄLLIGE Startwert muss aus einer,
oder (besser) mehreren zeitlich ungenauen Tastenbetätigungen
hergeleitet werden.

ECHTER Zufall kommt am Einfachsten aus dem Rauschen einer falsch
gepolten Transistor-BE-Strecke mit Verstärkung. Kostet also eine
Betriebsspannung > 7 V und noch einen OP, oder 1...2
Transistoren für ausreichende Verstärkung. UND (!) gutes Abblocken
der Versorgung der Rauschquelle, damit es ECHT zufällig bleibt.

Wer bietet weniger Aufwand für vergleichbare / bessere Ergebnisse?

von Gerd E. (robberknight)


Lesenswert?

war erst vor kurzem nen Thread zu dem Thema hier im Forum:
Beitrag "True Random Generator mit STM32F0"

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
Noch kein Account? Hier anmelden.