Ich verwende für einen C64 noch so eine Datasette. Die haben ja standardmäßig ein mechanisches Zählwerk eingebaut: http://de.wikipedia.org/wiki/Datasette#mediaviewer/Datei:Commodore-Datassette.jpg Wäre es nun möglich in das gerät ein digitales Zählwerk einzubauen? Ich hätte mir das in etwa so vorgestellt. Ich weiß nicht ob das heute noch so gemacht wird, aber bei einigen Geräten wurde doch auf die Antriebsscheibe oft so eine schwarz/weiß gestreifte scheibe aufgeklebt. Wenn man diese nun irgendwie abtastet. Jeweils so das eine die weiße und eine die schwarze Fläche scant. Und das ganze dann wie bei einem Drehencoder (Drehgeber) ausgewertet wird. Also somit die Drehrichtung und die Umdrehung feststellen kann. Oder würde man das eher mit solchen geschlitzten Scheiben wie sie in einer Kugelmaus verwendet werden machen? Wie setzt man das am besten um? Jemand eine Idee?
Manfred W. schrieb: > Wäre es nun möglich in das gerät ein digitales Zählwerk einzubauen? Sicherlich, aber ob das bei der recht begrenzten Genauigkeit dieses Meßverfahrens Sinn macht? Gruss Harald
ist das denn wirklich so ungenau? Wie wird das denn bei HiFi Kassettendecks gelöst?
Rufus Τ. Firefly schrieb: > Manfred W. schrieb: >> Ich verwende für einen C64 noch so eine Datasette. > > Warum? Weils lustig ist.
Manfred W. schrieb: > ist das denn wirklich so ungenau? > Wie wird das denn bei HiFi Kassettendecks gelöst? Halb so wild. MaWin übertreibt da ein bischen. In der Praxis spult man ja nicht bis genau an die Bandstelle vor, sondern hört ein bischen davor auf und lässt dann einfach laufen. Dazu hat man sich ja großzügige Pausen zwischen die Programme auf dem Band gelassen, wenn nicht der Lesecode den Programmanfang auch so anhand einer Kennung finden kann. Besser als ständig im Sichtfenster auf die kleine Skala zu linsen ist das allemal.
:
Bearbeitet durch User
Mach auf beiden Drehtellern eine Skala. dann kannst du wenn du die Cassette einlegst genau die Stelle sagen an der sich die Cassette befindet. Dann mußt du aber noch die Laufzeit der CC eingeben, um zum genauen Ergebniss zu kommen. Das erspart das Zurückspulen zum Anfang. Harald Wilhelms schrieb: > Sicherlich, aber ob das bei der recht begrenzten Genauigkeit dieses > Meßverfahrens Sinn macht? Video2000 hat das Verfahren mit Messung von beiden Spulen verwendet, und die waren Minutengenau.
Manfred W. schrieb: > Wie wird das denn bei HiFi Kassettendecks gelöst? Nicht über den Capstan, sondern über den Bandantrieb, der aber nicht linear zur Bandposition ist (eine Umdrehung eines leeren Bandwickels befördert weniger Band als eine Umdrehung eines vollen Bandwickels). Diese mechanischen Zählwerke sind also hochgradig ungenaue Schätzeisen. Beim Abspielen ist der Capstan ("Tonwelle") bzw. die Andruckrolle die genaueste Möglichkeit, aber das versagt beim schnellen Vor- bzw. Rücklauf, denn da ist der nicht an die Bandbewegung gekoppelt. Fazit: Die Bandposition lässt sich nicht genau bestimmen, das ist immer eine Schätzorgie.
Also wenn das digitale Zählwerk so genau wie das bisher mechanische ist, reicht mir das schon. Wie muss denn diese Skala aussehen du wie taste ich die dann ab? Für eine Lichtschranke wird ja ein Sender und Empfänger benötigt. Wie siehts mit einem Reed-Schalter aus? Wäre das auch eine Lösung?
Manfred W. schrieb: > Also wenn das digitale Zählwerk so genau wie das bisher mechanische ist, > reicht mir das schon. > Wie muss denn diese Skala aussehen du wie taste ich die dann ab? > Für eine Lichtschranke wird ja ein Sender und Empfänger benötigt. Ja. Und 'Sender' ist eine LED. Empfänger ist ein Phototransistor. Genau so, wie es die ganzen Billig-Roboter (Asuro, NIBobee...) auf den Motorachsen haben, um die Umdrehungen der Räder zählen zu können. Einfach mal ein wenig über den Tellerrand linsen.
:
Bearbeitet durch User
Paulchen_P schrieb: >> Sicherlich, aber ob das bei der recht begrenzten Genauigkeit dieses >> Meßverfahrens Sinn macht? > Video2000 hat das Verfahren mit Messung von beiden Spulen verwendet, > und die waren Minutengenau. Nun, verschiedene hochwertige Audio-Magnetbandgeräte haben auch mit minutengenauer Bandzählung geworben. Solche aufwändigen Zählwerke waren aber eher die Ausnahme. Gruss Harald
Ich hab hier ein Video gefunden wie jemand so etwas realisiert hat: https://www.youtube.com/watch?v=JZ3h5gjFmnA Leider erkennt man hier kaum wie er das gelöst hat. Ein PDF hätte ich auch noch gefunden: http://www.transkommunikation.ch/dateien/schaltungen/diverse_schaltungen/miscellaneous_circuits/Digitales%20Zaehlwerk%20fuer%20Tonband.pdf Möglicherweise ist das die Anleitung zu dem Video. Von den Bauteilen würde es in etwa hinkommen. Diese CNY70 sind Sender und Empfänger im gleichen Gehäuse.
In der Regel ging es bei den Zählwerken nicht darum, die Minuten oder die Bandlänge abzuzählen, sondern man wollte per Zählerstand die Anfänge der Lieder (oder bei der Datasette der Programme) wiederfinden. Von daher ist es auch völlig unproblematisch, daß das Zählwerk durch den sich verändernden Wickeldurchmesser nicht linear zur Zeit ist. Es reicht, wenn man sagt: "Programm 4 fängt bei Zählerstand 158 an". Was das für Meter oder Minuten sind, ist egal.
Manfred W. schrieb: > Ein PDF hätte ich auch noch gefunden: > http://www.transkommunikation.ch/dateien/schaltungen/diverse_schaltungen/miscellaneous_circuits/Digitales%20Zaehlwerk%20fuer%20Tonband.pdf Die Auswertung der Lichtschranken kannst du ja lassen. Aber das ganze Gehampel mit den 192-er Zählern samt LED-Dekodern würde ich lassen und statt dessen einen µC nehmen, der die 7-Segment im Multiplex ansteuert. Anstatt 4 IC und einem Haufen drumm herum nur 1 IC und dafür dann auch eine 3 oder 4 stellige Anzeige, die nicht so schnell überläuft. Der kann sich dann auch den aktuellen Zählerstand im EEPROM merken, so dass (vorausgesetzt das Band wurde nicht entnommen und wieder eingelegt) auch nach einem Aus- und Wiedereinschalten der ganzen Anlage die Anzeige so leidlich stimmt.
:
Bearbeitet durch User
Karl Heinz schrieb: > Der kann sich dann auch den aktuellen Zählerstand im EEPROM merken, so > dass (vorausgesetzt das Band wurde nicht entnommen und wieder eingelegt) > auch nach einem Aus- und Wiedereinschalten der ganzen Anlage die > Anzeige so leidlich stimmt. Beschreibbaren RFID-Transponder in Kassette einbauen ...
npn schrieb: > In der Regel ging es bei den Zählwerken nicht darum, die Minuten oder > die Bandlänge abzuzählen, sondern man wollte per Zählerstand die Anfänge > der Lieder (oder bei der Datasette der Programme) wiederfinden. Exakt. Wobei 'wiederfinden' hier schon zu hoch gegriffen ist. Es reicht völlig, wenn man eine ungefähre Idee hat, wo sich das Band in Relation zur gesuchten Information befindet. Das 'Fine-Tuning' macht man dann sowieso nach Gehör. Aber man spart sich zumindest die ständige Tastenakrobatik zwischen 'Play', 'Stop' und 'schneller Vorlauf' um wenigstens in die Nähe des gesuchten Stückes zu kommen. Leute, die wie ich mit dem Radiorekorder als einzig verfügbares Medium aufgewachsen sind, um am Puls des musikalischen Geschehens zu bleiben, wissen wie das funktioniert.
Also ich nehme zwei von diesen Optokopplern, klebe eine schwarz/weiss scheibe auf das Schwungrad. Wenn das Prinzip dann genauso funktioniert wie das eines Drehgebers könnte man die Auswertung 1:1 übernehmen, oder?
Manfred W. schrieb: > Also ich nehme zwei von diesen Optokopplern Reflexlichtschranke ist besser, gibt es als nettes kleines Bauteil: http://www.reichelt.de/?ARTICLE=114341 Und die beiden müssen etwas versetzt angeordnet sein (bzw. die schwarz/weiß-Streifen auf der Scheibe etwas versetzt sein), damit sie mit entsprechendem Versatz auslösen, was wie beim Drehimpulsgeber zur Richtungserkennung nötig ist.
Genial! Kann man die gleich direkt so an den Mikroprozessor hängen? Oder benötigen die Vorwiederstände?
Manfred W. schrieb: > Kann man die gleich direkt so an den Mikroprozessor hängen? Natürlich nicht. > Oder benötigen die Vorwiederstände? Wider. Mit nur einem 'e'. Sieh doch einfach mal ins Datenblatt.
Manfred W. schrieb: > Also ich nehme zwei von diesen Optokopplern, klebe eine schwarz/weiss > scheibe auf das Schwungrad. Nicht auf das Schwungrad, das ergäbe nur einen Betriebsstundenzähler für den Motor. ;) Stattdessen dahin, wo auch das mechanische Zählwerk seinen Antrieb herbekommt, also an eine der Achsen für die Bandwickel.
>Ich verwende für einen C64 noch so eine Datasette.
Warum dann nicht gleich ein HIFI-Cassetten-Deck? (mit viel mehr
Ausstattung)
Mit rel. hauchauflösender Abtastung der 2 Bandwickelteller (nicht Capstan) sollte auch eine genaue Posit.Bestimmung möglich sein. (Man kann den Unterschied leere-volle-Spule ja berechnen und entspr. anpassen)
Mein alter BASF-Cassettenrecorder hatte an der Bandzählwerks-Achse einen Magneten und daneben einen Reed-Kontakt, den man im Betrieb leise klicken hörte. War das Band verklemmt, dann hörten die Impulse des Reedkontakts auf und das Gerät schaltete aus. Das Video2000-System hat ziemlich genau funktioniert, ich meine, Grundig hat es später auch für VHS übernommen.
MCUA schrieb: > (Man > kann den Unterschied leere-volle-Spule ja berechnen und entspr. > anpassen) Wozu? Mit dem Zählerstand will man doch nur eine bestimmte Stelle wiederfinden. Sonst nix. Wurde weiter oben schon besprochen.
MCUA schrieb: > Mit rel. hauchauflösender Abtastung der 2 Bandwickelteller (nicht > Capstan) sollte auch eine genaue Posit.Bestimmung möglich sein. (Man > kann den Unterschied leere-volle-Spule ja berechnen und entspr. > anpassen) So macht das mein Sony-Deck auch. Die Pulse beider(!) Bandwickel werden addiert, was immer zu einer annähernd gleichen Pulsmenge pro Zeiteinheit führt, egal wie voll die jeweiligen Bandwickel sind. Wiederholgenauigkeit bei einer 90er-Cassette besser 20 Sekunden auf 45 Minuten Band bei mehrfachem komplettem Umspulen.
:
Bearbeitet durch User
Ich hätte eine Frage zu dem ITR8307, also der Reflexlichtschranke. Dazu habe ich im Netz nur eine Beispielschaltung gefunden, in der dieser Bauteil verwendet wird: http://blog-cc7107.over-blog.com/article-detection-des-trains-par-infra-rouge-itr8307-113443209.html Was mich interessieren würde, wäre der Widerstand R2. Wenn Google das Französisch richtig übersetzt hat, wird damit die Erfassungsreichweite definiert. Meine Frage jetzt, wie berechnet man den? Oder kann man hier einfach nur ausprobieren. Ich gehe mal davon aus, je höher der Widerstandswert umso geringer ist die Reichweite.
Manfred W. schrieb: > Meine Frage jetzt, wie berechnet man den? Oder kann man hier einfach nur > ausprobieren. > > Ich gehe mal davon aus, je höher der Widerstandswert umso geringer ist > die Reichweite. Den Widerstandswert von R2 sollte so gewählt werden, dass die Ausgangspegel für "hell" und "dunkel" symmetrisch zur Schaltschwelle von der Eingangsstufe liegten, d.h. der Wert hängt von Entfernung, Reflektivität, Umgebungshelligkeit und Beleuchtungsstärke durch deine LED ab.
R2 hängt von der Empfindlichkeit des Phototransistors ab und von dem Störspannungsabstand, den man erreichen will. Hier ist Probieren angesagt, da die Reflexkoppler, die es inzwischen auch von vielen anderen Herstellern gibt, recht stark streuen. Von 1k bis 100k ist da alles möglich, also ein weites Feld. Mit zunehmendem Widerstand nimmt allerdings die Erfassungsgeschwindigkeit ab, so dass man beim schnellen Umspulen eventuell Pulse verpassen könnte. Es sollte also ein Kompromiss von R2 und dem LED-Strom geschlossen werden, um saubere und schnelle Signale zu bekommen. Hier spielt auch die Obeflächenbeschaffenheit der Reflektormarken eine wichtige Rolle, da jede Rauhigkeit oder Oxidschicht das Signal ziemlich verrauschen kann.
:
Bearbeitet durch User
Ich bräuchte nochmal eure Hilfe. Und zwar verwende ich folgendes Beispiel um den Zähler meiner Segmentanzeige auf die Zahl 9999 zu begrenzen.
1 | void Print(uint16_t num) |
2 | { |
3 | uint8_t i=0; |
4 | uint8_t j; |
5 | |
6 | if (num>9999) return; |
7 | |
8 | while (num) |
9 | { |
10 | digits[i]=num%10; |
11 | i++; |
12 | num=num/10; |
13 | } |
14 | for (j=i;j<4;j++) digits[j]=0; |
15 | } |
Sprich wenn 9999 erreicht ist, springt er zu 0 Wie stell ich es an das er beim rückwärtszählen sich so verhält, das wenn 0 erreicht ist der nächste Schritt 9999 wäre und von dort an rückwärts weiter zählt?
Rufus Τ. Firefly schrieb: > Beim Abspielen ist der Capstan ("Tonwelle") bzw. die Andruckrolle die > genaueste Möglichkeit Ja. Nur ziemlich nutzlos. > aber das versagt beim schnellen Vor- bzw. > Rücklauf, denn da ist der nicht an die Bandbewegung gekoppelt. Eben deswegen. > Fazit: Die Bandposition lässt sich nicht genau bestimmen, das ist > immer eine Schätzorgie. Nein. Ich selber habe (mittlerweile vor Jahrzehnten) eine Lösung des Problems praktisch implementiert und jahrelang mit sehr guten Ergebnissen angewendet. Das Projekt war damals "VCR als Backupgerät" und zwar für einen Amiga. Zu meiner Entschuldigung: Das war zu Zeiten, als eine 40MB-Platte noch fast 1000 DM gekostet hat, da ergab das wirklich einen Sinn... Der grundsätzlich von mir damals verwendete "Trick" wurde auch bereits im Thread erwähnt: an beiden Bandwickeln möglichst hochauflösend deren Rotation zu vermessen. Aus diesen Meßwerten (über eine gewisse Zeit) ist es möglich ALLE variablen Parameter mit "hinreichender" Genauigkeit zu ermitteln, also Bandstärke, Bandlänge und die aktuelle Verteilung auf die beiden Wickel. Damit schafft man bei VHS deutlich besser als 1%, nämlich so ungefähr eine Minute bei einer Gesamtlaufzeit von 240 Minuten. Das ist schon deutlich besser als die von dir apostrophierte "Schätzorgie". Dann kannst du nämlich auch deine gesamten Meßgeräte als "Schätzgeräte" bezeichnen und wegwerfen! Aber natürlich muß dazu die Sache eine ganze Weile laufen, die Genauigkeit der Messung hängt von der Meßzeit ab. Das muß man durch eine während der Suche ständig fortlaufenden Messung und Korrektur ausgleichen und die Suchroutine so programmieren, daß sie entprechend der aktuellen Unsicherheit sinnvoll handelt. Das Nonplusultra ist dann übrigens ein zusätzliches, auf das Problem zugeschnittenes "Filesystem", eigentlich mehr so eine Art Soft-Sektorisierung. Unbedingt nötig ist das aber nicht. Hilft eigentlich nur in der Situation wirklich merklich, daß die frisch eingelegte Kassette schon von vornherein fast an der richtigen Stelle ist. Was allerdings gerade bei der Anwendung als Backup-Gerät durchaus der Normalfall war, weswegen ich es dann letztlich doch auch noch eingebaut habe. Die Sektorisierung landete auf der Audiospur und wurde einfach beim normalen Schreiben mitgeschrieben, es war also kein extra Formatierungslauf dafür nötig. Da nachträglich hinzugekommen, war die Sache auch abwärtskompatibel, d.h.: er hat die Bandstelle auch gefunden, wenn die Audiospur nicht "lesbar" war, es hat dann eben nur länger gedauert...
Hallo Manfred, wenn du noch etwas warten kannst, habe ich genau das richtige für dich :-) Nachdem ich letztes Jahr mein Tapedeck neu eingemessen hatte entstand der Wunsch das mechanische Zählwerk durch ein digitales mit Echtzeitanzeige zu ersetzen. Warum? Weil es Spass macht! Das Projekt ist fast abgeschlossen, es fehlen noch die Dokumentation und ein Platinenlayout zum Nachbau, dann werde ich das ganze mit Quellcode in Assembler veröffentlichen. Features: Echtzeitanzeige ohne vorherige Eingabe der Kassettengröße nach einer kurzen Messphase. Normale Zählwerkfunktion mit Nullstoppausgang. Ich taste nur den Afwickelteller ab, das macht die Sache mechanisch und Softwaretechnisch etwas einfacher, mir genügt die erreichte Genauigkeit von besser 1%. Am Rekorder muss Folgendes angebaut werden: Schwarzweißmuster am Aufwickelteller mit 8 weißen und 8 schwarzen Feldern für eine Umdrehung, welche mit 2 Lichtschranken abgetastet werden. Wenn eine Lichtschranke die Mitte eines Feldes beleuchtet muss die zweite auf den Übergang zwischen zwei Feldern zeigen. Eine dritte Lichtschranke tastet das Kassettenfach ab: Kassette eingelegt/Kassettenfach offen oder nicht. Ein Taster zur Bedienung und ein 4- oder 5-stelliges LED-Display sind nach eigenen Möglichkeiten zu integrieren. Versorgungsspannung 12 Volt ~. An Hardware ist im wesentlichen ein ATMEGA 8 und ein LM339 mit etwas Kleinkram verbaut. Detailfragen vorab gerne per PM
Manfred W. schrieb: > Sprich wenn 9999 erreicht ist, springt er zu in dem Code springt nichts zu 0 zurück. Wenn hier in Print eine Zahl ausgegeben wird, die größer als 9999 ist, dann verweigert Print ganz einfach. Ausserdem ist das die falsche Stelle. Die Funktion heißt Print, weil ihr Aufgabe die Ausgabe von Zahlen ist. Was auch immer diese Zahl ist. Das einzige was Print machen darf ist, das es sich dagegen 'wehren' darf, wenn die auszugebende Zahl nicht auf die Anzeige passt. Das ist ok (und das macht sie auch). Aber mit irgendwelchen Zählstrategien hat Print nichts am Hut. Das ist ganz einfach nicht sein Job. Wo zählst du denn vor bzw. rückwärts? Dort ist die korrekte Stelle, die entsprechende Logik zu machen. Und wie macht man das? Na zum Beispiel mit einem Vergleich (hängt davon ab, wie du konkret zählst). vorwärts zählen: wenn der Zähler kleiner als 9999 ist, dann darf 1 addiert werden. Ansonsten wird der Zähler auf 0 gesetzt. rückwärts zählen: wenn der Zähler größer als 0 ist, dann darf 1 abgezogen werden. Ansonsten wird der Zähler auf 9999 gesetzt. Wenn deine Zählerei anders funktioniert, dann musst du dir eben was anderes ausdenken. Wenn du zb grundsätzlich immer nur eine vor-aufbereitete +1 bzw. -1 addierst, dann muss man eben im Nachhinein feststellen, ob man den Zahlenbereich verlassen hat und entsprechend korrigieren. Zählt man zu 9999 noch 1 dazu, dann landet man bei einer Zahl die größer als 9999 ist. Zieht man von der dann 10000 ab, dann stimmt wieder alles. Denn 9999 plus 1 ergibt 10000. Davon 10000 abgezogen, ergibt 0. Und das ist ja auch korrekt. 9999 plus 5 ergibt 10004. Das ist größer als 9999, also werden 10000 abgezogen und man erhält 4. UNd auch das ist richtig. Denn von 9999 um 5 Pulse weiter gezählt ergibt 4. Was ist in der anderen Richtung? Ist man bei 0 und zieht 1 ab, dann landet man bei -1 (ich geh mal davon aus, dass der Zähler ein int ist, also ein Vorzeichen hat). Das ist aber leicht, denn wenn das Ergebnis offenar kleiner als 0 ist, dann zählt man entsprechnd die 10000 dazu und landet am anderen Ende der Skala. -1 plus 10000 ergibt 9999. Aber auch wenn man von 1 6 Pulse abzieht, funktioniert das immer noch. 1 minus 6 ergibt -5. Das ist kleiner als 0, also werden 10000 dazu gezählt und man landet bei 9995. Kann das stimmen? Mal sehen
1 | 9993 9994 9995 9996 9997 9998 9999 0000 0001 0002 0003 |
2 | ---+----+----+----+----+----+----+----+----+----+----+--- |
geh ich von der Zahl 0001 um 6 Zahlen nach links, dann lande ich bei, tata, 9995. Die Rechnung stimmt also.
1 | int zaehler; |
2 | |
3 | ...
|
4 | |
5 | |
6 | zaehler += inkrement; |
7 | if( zaehler > 9999 ) |
8 | zaehler -= 10000; |
9 | if( zaehler < 0 ) |
10 | zaehler += 10000; |
11 | |
12 | Print( zaehler ); |
13 | ....
|
nicht alles wird dir fertig auf einem Silbertablett präsentiert (mist, jetzt hab ich es schon wieder gemacht). Manchmal musst du dir auch einfach selber was ausdenken.
:
Bearbeitet durch User
Hallo! sowas hatte ich auch mal vor einer Ewigkeit für einen Sinclair ZX-Spectrum. Ein nettes Feature war die Voreinstellbarkeit des Zählers. Man konnte eine Kassette einfach in einer beliebigen Position einlegen und laufen lassen. Wenn dann am TV der Name eines Files auftauchte, verglich man es mit dem "Directory" (auf Papier) und stellt den Zähler auf diesen Wert. Von diesem Stand konnte ich dann jedes File auf der Kassette - mehr oder weniger genau - finden, indem ich etwas vor die gesuchte Position spulte. Prozessor U882 (Zilog Z8 Clone) Edit: mit zwei Lichtschranken für beide Wickel wäre eleganter gewesen, damals aus Platzgründen nicht möglich.
:
Bearbeitet durch User
So isses besser: Der 1. Link ist morgen schon veraltet. http://hackaday.com/2014/08/09/commodore-1530-datasette-gets-a-digital-counter/
Wie versprochen hier nun die Software für mein digitales Bandzählwerk mit Echtzeitanzeige. Auf meiner Homepage http://www.stefankneller.de/framesets/zaehlwerk.html gibt es dazu weitere Informationen, Bilder und Pläne. Die Software kann sicher noch verbessert werden (die Behebung eines kosmetischen Fehlers steht z.B. noch auf der Todo-Liste), für mich ist das Projekt aber erstmal abgeschlossen. Viel Spass bei der Lektüre.
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.