1. Eine Reihe von 74HC595-Chips funktioniert hervorragend. Andere Chips, die ebenfalls genauso gut und vielleicht etwas besser funktionieren würden, sind aufgeführt unter:
Welcher SIPO-Chip ist besser, 74HC4094 oder 74HC595 oder etwas anderes?
2. Der Arduino ist eine ausgezeichnete Wahl für das Prototyping, insbesondere wenn Sie mit gcc vertraut sind. Vielleicht wäre es jetzt schneller, eine zu verwenden. Leider vermute ich, dass Sie bald Code für dieses POV-Display schreiben werden, das mehr RAM benötigt, als das Arduino zur Verfügung hat. Verwenden Sie zu diesem Zeitpunkt entweder (a) einen oder mehrere Tricks, um den benötigten RAM zu reduzieren, oder (b) fügen Sie einige hinzu externer RAM oder (c) Portieren Sie den Code auf einen anderen Mikrocontroller mit mehr RAM (möglicherweise den ATMEGA1284?).
Der Parallax Propeller ist eine ausgezeichnete Wahl für ein hochauflösendes POV-Display - er verfügt um eine Größenordnung mehr internen RAM (32 KB RAM) als der ATmega238 im Arduino. (Kann ich irgendetwas tun, um die Portierung von gcc auf den Propeller zu unterstützen?)
Einige Leute bevorzugen "quadratische Pixel". Ich bin sicher, Sie wissen bereits, dass der Abstand um den Äquator einer Kugel doppelt so lang ist wie der Abstand von Pol zu Pol (der Erdäquator ist etwas mehr als doppelt so lang). Da Sie 64 Pixel vom Südpol zum Nordpol haben, können Sie eine neue vertikale "Linie" von Pixeln 2 * 64 = 128 Mal pro Umdrehung neu laden, um 128 "quadratische Pixel" am Äquator zu erhalten. Der einfachste Weg, dies zu tun, besteht darin, das gesamte Bild unkomprimiert im RAM zu speichern. Dies erfordert 64 * 128 Pixel * 3 Bits / Pixel = 24 576 Bits = 3 072 Bytes plus einige Bytes RAM für andere Programmvariablen. Leider hat der Atmel ATmega328 im Arduino nur 2 048 Bytes RAM.
Frühere POV-Anzeigenverwendete Mikrocontroller mit einer Größenordnung (!) weniger RAM als diese. Daher haben die Leute eine Vielzahl von Tricks entwickelt, mit denen Sie dies umgehen können. Ein Trick: Beleuchten Sie nur die "vordere" Hälfte des Globus, während Sie die LEDs sehen können, und schalten Sie dann alle LEDs aus (oder lassen Sie sie in einer konstanten Farbe), während Sie die "hintere" Hälfte nicht direkt verwenden können siehe die LEDs. Das halbiert die Menge an RAM, die Sie benötigen, und passt dann in das Arduino. Wenn Sie diesen Trick nicht mögen, können Sie andere Tricks verwenden, die weniger offensichtlich sind. Ein weiterer Trick: Speichern Sie das Bild im Flash-Programmspeicher. Der Arduino verfügt über genügend Flash-Programmspeicher, um mehrere 3 072-Byte-Frames zu speichern. Noch ein Trick: Verwenden Sie ASCII-Text, um den anzuzeigenden Text zu speichern, und verwenden Sie dann den Flash-Programmspeicher, um das "Zeichengenerator-ROM" zu speichern. Daten. Ich bin mir ziemlich sicher, dass es noch andere POV-Tricks gibt ...
3. Wenn ich es bauen würde, würde ich den Arduino- und den 74HC595-Chip über ein großes Netzteil mit Strom versorgen und den Motor, der den POV dreht, über ein separates Netzteil mit Strom versorgen.
Erst wenn ich alles zum Laufen gebracht hätte, würde ich sogar ein komplizierteres getrenntes Stromversorgungssystem in Betracht ziehen. (Wenn Sie ein separates "rotes" Schaltnetzteil haben, dessen + V nur an 74HC595-Chips angeschlossen ist, die wiederum nur an rote LEDs angeschlossen sind, können Sie die Ausgangsspannung unabhängig voneinander einstellen, um die Gesamtleistung und Wärmeerzeugung von zu minimieren das System. Aber es scheint unnötig kompliziert.)
4. und 5. Die vielleicht einfachste Möglichkeit für das Arduino, das POV-Display anzusteuern, besteht darin, alle 24 74HC595-Chips in einer langen einzelnen Zeichenfolge zu verketten und dann die Arduino SPI-Bibliothek zu verwenden . Dies erfordert 192 Taktimpulse, um in der neuen Datenspalte zu takten, und dann einen Impuls auf dem RCLK (auch bekannt als Rahmenimpuls, SS usw.), um diese neuen Daten anzuzeigen. Laut einem Tutorial zur Arduino-zu-SPI-Schnittstelle ist die schnellste SPI-Taktrate die Systemgeschwindigkeit / 4. Der 16-MHz-Arduino kann also einen SPI-CLK von 4 MHz ausgeben. Wenn Sie es mit einem 20-MHz-Quarz aufrüsten, erhalten Sie einen SPI-CLK von 5 MHz. Wenn Sie Ihr Programm schnell genug erhalten, um mit der SPI-Hardware Schritt zu halten, können Sie eine neue Spalte bestenfalls mit 5 MHz / 193 Impulsen ausgeben, sodass die theoretisch maximal mögliche Geschwindigkeit 25 907 Spalten / Sekunde beträgt.
Bei der Standard-Bildwiederholfrequenz für Zeichentrickfilme von 24 Bildern / Sekunde (die merklich flackert - Sie möchten etwas Besseres) und bei 128 Spalten / Bild "quadratische" Pixel am Äquator (möglicherweise möchten Sie mehr, um eine bessere Auflösung zu erzielen). Dies ergibt 24 Bilder / Sekunde * 128 Spalten / Bild = 3072 Spalten / Sekunde.
Zwischen "der gewünschten Geschwindigkeit": 3072 Spalten / Sekunde und "der Geschwindigkeit, die mit Arduino-Hardware völlig unmöglich ist": 25 908 Spalten / Sekunde liegt fast eine Größenordnung des Atemraums. Hoffentlich gibt dir das genug Platz.
Einige Leute denken, dass Sie eine schnellere Spaltenaktualisierungsrate erzielen können, indem Sie die 74HC595-Chips in zwei oder mehr Ketten neu anordnen und alle Ketten parallel laden. Manche Leute sind so - sie sehen unbenutzte Stifte am Arduino und es juckt sie, sie für etwas zu verwenden . Dies kann jedoch kontraproduktiv sein - die SPI-Hardware ist nur mit einem Satz von Pins auf dem Arduino verbunden, und daher müssen Ketten, die an andere Pins angeschlossen sind, mit emulierter "Bit-Banging" -Software geladen werden, die ausnahmslos langsamer und langsamer ist Verwenden Sie mehr CPU-Zeit als die integrierte SPI-Hardware.