Forum: Mikrocontroller und Digitale Elektronik Zufallsgenerator und Pinbelegung


von Maxim (Gast)


Lesenswert?

Ich bin momentan an einer Schaltung mit einigen ATMegas dran und 
überlege mir, nich benötigte Pins auf Masse zu legen. Die Software wird 
einen Zufallsgenerator brauchen und ich habe gehört, dass sich der 
AD-Wandler dafür missbrauchen lässt. Welcher Pin beim Mega32 ist das? 
Hat der Pin AIN0/1 was damit zu tun? Wenn ich die auf Masse lege, wird 
das wohl nichts mit Zufallsgenerator, oder?

von holger (Gast)


Lesenswert?

>Ich bin momentan an einer Schaltung mit einigen ATMegas dran und
>überlege mir, nich benötigte Pins auf Masse zu legen.

Mach mal, aber programmiere die dann bloß nicht
durch Zufall auf Ausgang, und leg dann auf keinen Fall
eine 1 drauf ;)

von Maxim (Gast)


Lesenswert?

>Mach mal, aber programmiere die dann bloß nicht
>durch Zufall auf Ausgang, und leg dann auf keinen Fall
>eine 1 drauf ;)

Ou ja, so ungefähr steht's auch im Datenblatt ... :D
Ok, den internen Pull-up zu aktivieren ist eine bessere Alternative.

Dann muss ich mir auch keine Gedanken über den Zufallsgenerator machen.

von Alex B. (Firma: Ucore Fotografie www.ucore.de) (alex22) Benutzerseite


Lesenswert?

Such mal nach den Pin's die mit ADC anfangen...
Und ja, man kann damit Zufällige Werte generieren (Wenn die Pin's NICHT 
auf Masse gezogen werden).

Schöne Grüße,
Alex

von Peter D. (peda)


Lesenswert?

Maxim wrote:

> Die Software wird
> einen Zufallsgenerator brauchen und ich habe gehört, dass sich der
> AD-Wandler dafür missbrauchen lässt.

Das ist Quatsch, der ADC kann keine Zufallszahlen erzeugen.

Dazu bräuchte man spezielle zufällige Signalquellen, z.B. Rauschdioden.


Peter

von Maxim (Gast)


Lesenswert?

>Das ist Quatsch, der ADC kann keine Zufallszahlen erzeugen.

>Dazu bräuchte man spezielle zufällige Signalquellen, z.B. Rauschdioden.

http://www.mikrocontroller.net/wikisoftware/index.php?title=Zufallszahlen&section=5#Wie_gewinnt_man_echte_Zufallszahlen.3F

So wie ich das verstehe, kann man den ADC doch als Zufallsgenerator 
verwenden, vorausgesetzt, das unterste Bit rauscht.

von Peter D. (peda)


Lesenswert?

Maxim wrote:

> So wie ich das verstehe, kann man den ADC doch als Zufallsgenerator
> verwenden, vorausgesetzt, das unterste Bit rauscht.

Also ich hab den ATtiny26 und den ATmega8 ausprobiert, die rauschen 
nicht, die stehen wie ne Eins.
Man kann mit nem 10-Gang Poti stabil jeden Wert von 0...1023 einstellen.

Ich hab auchmal versucht zusätzliche Bits mit Mittelung über 256 Werte 
zu erreichen, Pustekuchen.

Und wenn die VCC durch Lastschwankungen zappelt, ist das bestimmt nicht 
zufällig, die Lasten schaltet ja der MC selber (PWM, Multipexanzeige 
usw.)


Peter

von Daniel (Gast)


Lesenswert?

naja da müsstest du schon ein bauteil, mit starkem weissen rauschen 
anhängen...
wofür brauchst du den zufallsgenerator?
Grundsätlich wärs doch sinnvoller den per software zu implementieren...

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Mit PIC steht hier ein Link:
http://www.mikrocontroller.net/articles/Zufallszahlen
http://mywebpages.comcast.net/orb/

Open Random Bit Generator, ein 8-Pin-PIC mit ADC und 100k von einem 
Ausgang zum ADC-Eingang. Der Ausgang wird mit endlicher 
Wahrscheinlichkeit nach H oder L geschaltet, das Rauschen des letzten 
Bits im ADC liefert dann die unendliche Unwahrscheinlichkeit oder so 
ähnlich.

von Maxim (Gast)


Lesenswert?

Ich brauche eine Zufallszahl um eine Sinusfunktion zu variieren, die 
wiederum die Helligkeit einer LED darstellt.

Auf meiner 1/2 Euro-Platine sind insgesamt neun PWM Kanäle mit jeweils 
bis ca. 150mA Strom. Vielleicht würde das ausreichen, um den ADC-Wandler 
anzuregen.

von Maxim (maxim) Benutzerseite


Lesenswert?

Kann ich das Rauschen mit einer Z-Diode erzeugen? Werde sowieso bald bei 
Pollin bestellen und da gibt es einige zur Auswahl.

Wie entsteht das Rauschen in einer z-Diode?
Wie muss ich sie anschließen?

von Maxim (maxim) Benutzerseite


Lesenswert?

Kennt sich denn niemand damit aus?

Reich es auch, wenn ich an die Z-Diode die Durchlassspannung anlege, 
sodass sie gerade so leitet? In welcehm Bereich in Volt liegt das 
Rauschen?

von Lothar S. (lothars)


Lesenswert?

Hi Maxim!

Habe hier in einer Anwendung mit ATMega32 kürzlich ebenfalls 
Zufallszahlen gebraucht. Bin dabei wie folgt vorgegangen:

Ich lese einen offenen ADC-Pin (floatend, nicht beschaltet, v.a. 
nicht niederohmig auf Potential z.B. Masse gelegt) mehrmals ein und 
bekomme nach den Wandlungen im ADC-Register ((ADCH<<8)|(ADCL)) zufällig 
verteilte Werte so zwischen 266 bis 313. Diese geben dann die initiale 
Grundlage für einen altbekannten Pseudo-Zufallszahlengenerator. 
(elektrisch: Der elektrische Knoten des ADC-Pin ist wegen fehlender 
externen Beschaltung sehr hochohmung und deshalb sehr empfindlich für 
EMV-Störungen - wirkt als Antenne für Störungen von intern&extern, es 
wird also mit dem ADC der EMV-Störnebel abgetastet, und der besitzt idR 
sehr wohl zufällige Komponente)

Soviel zum Thema "Quatsch ADC kann keine Zufallszahlen erzeugen" ;-) Bei 
mir klappt's an offenem ADC-Pin jedenfalls wunderbar, probier's mal aus!

Viel Erfolg!!

(ps, Z-Diode: die stabilisiert in NF-Bereich wohl eher als dass sie 
rauscht?!?!)

von Artur Funk (Gast)


Lesenswert?

>> Das ist Quatsch, der ADC kann keine Zufallszahlen erzeugen.
>> Dazu bräuchte man spezielle zufällige Signalquellen, z.B. Rauschdioden.

Wie wäre es mit:
u8 zufallswert;
sprintf(zufallswert, "%d", rand() % 255);

Und das Ganze an ADC Port zu legen, nur so als Überlegung?

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

>Ich lese einen offenen ADC-Pin (floatend, nicht beschaltet, v.a.
>nicht niederohmig auf Potential z.B. Masse gelegt) mehrmals ein

Na dann macht es ja wohl mehr Sinn, noch ein Stück Leiterbahn 
dranzulöten. Bei TQFP ist der Pin gerade mal 1,5mm lang, der fängt gar 
nichts ein.

von Helmi (Gast)


Lesenswert?

Schaut mal auf diesem Thread

Beitrag "Anregungen fuer einen Rauschgenerator"

Gruss Helmi

von Simon K. (simon) Benutzerseite


Lesenswert?

Artur Funk wrote:
>>> Das ist Quatsch, der ADC kann keine Zufallszahlen erzeugen.
>>> Dazu bräuchte man spezielle zufällige Signalquellen, z.B. Rauschdioden.
>
> Wie wäre es mit:
> u8 zufallswert;
> sprintf(zufallswert, "%d", rand() % 255);
>
> Und das Ganze an ADC Port zu legen, nur so als Überlegung?

[ ] Du hast verstanden worum es hier geht
[ ] Dein Codeschnipsel funktioniert.

von ecslowhand (Gast)


Lesenswert?

In C ist das eine recht simple Sache:
1
public int getRandomNumber()
2
{
3
    return 4;    // chosen by fair dice roll
4
                 // guaranteed to be random
5
}

:))

von Lothar S. (lothars)


Lesenswert?

Travel Rec. wrote:
> Na dann macht es ja wohl mehr Sinn, noch ein Stück Leiterbahn
> dranzulöten. Bei TQFP ist der Pin gerade mal 1,5mm lang, der fängt gar
> nichts ein.

Probier's erst mal aus - dann schau ma mal :-P Aber prinzipiell, klar, 
wer will kann ja noch nen Draht drannlöten :-D wer lang hat, lässt lang 
hängen...

1.5mm langer Pin ok, und dahinter ist direkt der ADC?!? ;-)

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.