Inhaltsverzeichnis:
- Schritt 1: Hintergrund
- Schritt 2: Ursprüngliche Idee
- Schritt 3: Aufgetretene Probleme
- Schritt 4: Lösung
- Schritt 5: Kantenerkennung und Matlab-Programm
- Schritt 6: Beispiel: Instructables Robot
- Schritt 7: Fehlerbehebung/Beispieldateien
Video: Oszilloskop-Musik - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:18
Einführung: Dieses Instructable soll eine Anforderung für den Dokumentationsteil des Mikrocomputer-Schnittstellenprojekts an der Utah State University erfüllen.
Schritt 1: Hintergrund
Hintergrund:
Ein Oszilloskop dient zur Anzeige und Messung eines Spannungssignals, das über der Zeit aufgetragen wird. Ein Oszilloskop im XY-Modus zeichnet ein Signal gegen ein anderes Signal, ähnlich einer parametrischen Gleichung. Dieses Projekt verwendet ein Oszilloskop im XY-Modus, um Bilder anzuzeigen, die von einer Tondatei erzeugt wurden.
Schritt 2: Ursprüngliche Idee
Die ursprüngliche Idee für das Projekt war, einen alten Kathodenstrahlröhren-(CRT)-Fernseher in ein XY-Oszilloskop umzuwandeln und damit die Bilder anzuzeigen. Dies kann durch Trennen der Ablenkspulen erfolgen. Wenn Sie die horizontalen Spulen trennen, erscheint eine vertikale Linie, und wenn Sie die vertikale Spule trennen, erscheint eine horizontale Linie. Alles, was ich tun musste, war, die Audioquelle an die Ablenkspulen anzuschließen, und ich hatte ein XY-Oszilloskop. Leider bin ich auf mehrere Probleme gestoßen.
Schritt 3: Aufgetretene Probleme
Eines der Probleme, auf die ich gestoßen bin, waren die Sicherheitsfunktionen. Der Fernseher konnte erkennen, dass seine Ablenkspulen nicht angeschlossen waren und sich nicht einschalten ließen. Dies soll verhindern, dass der Elektronenstrahl ein Loch in den Leuchtstoff auf dem Bildschirm brennt. Ich habe den Widerstand der Spulen gemessen und einen Widerstand darüber gelegt. Der Widerstand brannte wegen der hohen Spannungen sofort halb durch. Ich habe es erneut mit einem Widerstand mit höherer Nennleistung versucht, aber auch das hat nicht funktioniert. Ich habe online in einigen Foren gelesen, wie ein anderer Satz Ablenkspulen an den Originalfernseher angeschlossen werden kann, also habe ich einen anderen Fernseher gefunden und seine Ablenkspule an meinen angeschlossen. Die Impedanz war nicht die gleiche, also schaltete sie sich nicht ein. Nach einigen weiteren Recherchen stellte ich fest, dass ältere Fernseher nicht über die Sicherheitsfunktion verfügten und es egal war, ob die Ablenkspulen getrennt waren. Ich konnte einen Fernseher aus dem Jahr 2000 finden, der zu funktionieren schien. Ich konnte einige einfache Formen auf dem Bildschirm anzeigen, aber alles Kompliziertere als ein Kreis würde stark verzerrt. Irgendwann funktionierte dieser Fernseher nicht mehr und es brannten immer wieder Sicherungen.
Ich konnte einen kleinen Fernseher aus dem Jahr 1994 finden. Dieser Fernseher funktionierte ziemlich gut, aber ich war nicht in der Lage, die richtige Ausrichtung des Bildes zu erhalten, selbst wenn ich die Signale in jeder Kombination umschaltete. Es hatte auch die gleichen Probleme wie der andere Fernseher und produzierte keine komplizierten Bilder. Nach vielen Recherchen fand ich heraus, dass das Problem darin bestand, dass ich versuchte, ein Vektorbild auf einer Rasteranzeige zu erzeugen. Eine Rasteranzeige ist ein Bildschirm, der sehr schnell horizontal und dann langsamer vertikal scannt. Eine Vektoranzeige verwendet Linien, um Bilder zu erzeugen. Ich habe Tutorials gefunden, wie man eine Rasteranzeige in eine Vektoranzeige umwandelt, aber der Vorgang war gefährlich und würde lange dauern.
Schritt 4: Lösung
Nach all diesen Problemen konnte ich eine ziemlich einfache Lösung finden; ein XY-Oszilloskop-Emulatorprogramm, das Audio als Eingabe verwendet. Als ich dieses Programm gefunden hatte, wechselte ich von der Erstellung eines Oszilloskops zum Erstellen einer Methode zum Erstellen einer Audiodatei aus einem Bild zur Anzeige auf einem Oszilloskop.
Oszilloskop-Emulator
Schritt 5: Kantenerkennung und Matlab-Programm
Hier ist ein grundlegendes Flussdiagramm meines Programms. Es beginnt mit einem Bild, das in das MATLAB-Programm EdgeDetect.m geladen wird. Dieses Programm wandelt es in ein Graustufenbild um und erkennt dann die Kanten im Bild. Die XY-Koordinaten der erkannten Kanten werden in zwei Arrays platziert, die in eine Sounddatei umgewandelt werden.
Schritt 6: Beispiel: Instructables Robot
Hier ist ein Beispiel für den Prozess mit dem instructables Roboter. Laden Sie zuerst ein Bild des instructables-Roboters herunter und speichern Sie es als "image.png" in Ihrem MATLAB-Arbeitsordner (gleicher Ort wie "EdgeDetect.m"). Stellen Sie sicher, dass das Bild nichts enthält, was Sie erkennen möchten, oder es könnte Ihrer Sounddatei eine Reihe unnötiger Koordinaten hinzufügen. Führen Sie das EdgeDetect-Programm aus und das Bild wird in Graustufen umgewandelt und die Kanten werden erkannt und als Sounddatei namens "vector.wav" gespeichert. Als nächstes öffnen Sie die Sounddatei in Audacity oder einem anderen Soundbearbeitungsprogramm. Öffnen Sie Ihr Oszilloskop-Emulatorprogramm (Link im vorherigen Schritt), stellen Sie die Abtastrate auf 192000 Hz ein, drücken Sie auf Start, klicken Sie auf die Mikrofonschaltfläche und wählen Sie die Option „Line in“. Drücken Sie in Audacity "Umschalt + Leertaste", um die Sounddatei in einer Schleife abzuspielen. Das Bild sollte auf dem Oszilloskop-Emulator erscheinen.
Schritt 7: Fehlerbehebung/Beispieldateien
Bei der Entwicklung dieses Programms musste ich einige Einstellungen im Programm anpassen. Hier sind einige Dinge, um zu überprüfen, ob es nicht funktioniert:
-Stellen Sie sicher, dass Ihr Audioausgang in Ihren Line-In auf Ihrem Computer eingespeist wird und dass Sie 2 separate (linke und rechte) Audiokanäle haben
-Wenn das Bild nicht vom MATLAB-Programm gelesen wird, müssen Sie es möglicherweise in Paint bearbeiten und in einem anderen Format speichern.
- Stellen Sie sicher, dass Sie in Zeile 61 des Codes die Zahlen aus dem Kantenerkennungsbildschirm angeben. Das Programm legt normalerweise ein Rechteck um das Ganze, das Sie ausschneiden können, indem Sie es von "i=1:length(B)" in "i=2:length(B)" ändern. Wenn Sie bestimmte Zahlen einschließen möchten, aber nicht alle einschließen möchten, können Sie eckige Klammern verwenden, um bestimmte Zahlen zu erhalten: "[1 3 6 10 15 17]"
-Wenn das Bild verwackelt aussieht und die Teile überall verteilt sind, müssen Sie möglicherweise die Anzahl der Proben reduzieren, indem Sie "N" in Zeile 76 anpassen. Je einfacher das Bild, desto niedriger kann N sein, aber es sollte höher sein, wenn das Bild ist komplex. Für den Roboter habe ich N=5 verwendet.
-Sie können auch "Fs" in Zeile 86 einstellen. Je höher die Abtastrate, desto besser wird das Bild aussehen, aber einige Soundkarten sind nicht in der Lage, höhere Abtastraten zu verarbeiten. Moderne Songs haben eine Abtastrate von etwa 320000 Hz.