Laufwerkssteuerung (Logik) Tandberg Series 9x00, 10X
#1
Hallo in die Runde,

unabhängig vom Zustand meines gebrochenen Logik-Boards der Tandberg 9100, hat es ja im Probebetrieb Fehler gezeigt.

Fehlerbeschreibung:

- Stop-Lampe leuchtet dauernd
- Bedientasten Play, Wind, Rewind, Record KEINE Funktion (Lampe dunkel, keine Laufwerksreaktion)

ABER: Der Init der Logik wird gemacht, d.h. der Bremsmagnet zieht an - also ist da noch "Leben".

Die IDEE (unabhängig vom meinem Logik-Board):


Jetzt wäre es ja technisch machbar das Logik-Board mal generell auf einen Bauteilestand zu heben, wo handelsübliche Bauteile verwendet werden. Und zwar generell für die Serien 9000, 9100, 9200 und 10X.

Die Laufwerkssteuerung bei Tandberg für die o.a. Serien besteht ja nur aus "einfachen" Logik-Bausteinen - also ohne EPROM o.ä.

Mal ein kurzer Abriss der Laufwerkssteuerungen Tandberg Model bezogen:


TD20A und deren Versionen:

Grundsätzlich Bausteine der Serie 74xxx verbaut, also + 5V Versorgung und ein Exot das EPROM (aber hierfür gibt es ja schon eine Ersatzlösung aus dem Forum). Und ALLE Bausteine 74xxx noch erhältlich .... teilweise handelsübliche Ware ....

Serie 9000 - 10X:

Verwendet werden SGS-ATS Bausteine der Serie H100 bzw. H200 die nicht mehr erhältlich sind.

Versorgungsspannung ist + 18 Volt, also NICHT durch Serie 74xxx ersetzbar ( + 5V und Logikpegel !!!). Die zulässige Versorgungsspannung ist + 22 Volt !

Diese SGS-ATS Bausteine arbeiten mit nem Pegel von 0-6 Volt für Low (logisch Null) und 8-18 Volt für High (logisch Eins).
Schaltschwelle zwischen Low/High ist 7 Volt.

Also bleibt als Ersatz nur die Serie CDxxxx, da sie Versorgungsspannungen von + 12 Volt kann und in Teilen es die "einfachen" Bausteine auch bis + 22 Volt haben können. Mit letzteren sollten dann evtl. auch die Logik-Pegel für Low/High stimmen .... (reine Vermutung ...).

Da mein Logik-Board hier - unabhängig vom Bruch - eh einen Fehler hat, wäre es doch durchaus sinnvoll, hier ein gesondertes Thema im Forum aufzumachen mit der Zielsetzung hier einen "Work-Around" für diese Thematik zu schaffen, bzw. generell mal eine Neubestückung mit modernen Bauteilen zu initieren ....

Weil, ist das Logik-Board hin oder hat Fehler, ist die Maschine defakto erstmal Schrott. Dies trifft die Serien 9000, 9100, 9200 und 10X.

Insofern meine Frage, was ihr von dieser Idee haltet, diese Thematik in "kollektiver Zusammenarbeit" mittels des Forum mal anzugehen.

Für mich alleine ist diese Thematik zu komplex ( da muss ich mich komplett einarbeiten) - zumal Logik-Schaltungen eh nicht so mein Fall sind ...

Datenblätter der SGS-ATS Bausteine liegen hier vor, ebenso die Servicemanuals der betroffenen Maschinen.

Es geht hier nicht um eine komplette Neuentwicklung der Laufwerkssteuerung ! Mit einem vernünftigen "Workaround", insbesondere was Pegelanpassung, welcher Baustein wohin (Ersatz für ...) und Ansteuerung der Schaltstufen für die Wind-Relais bzw. Solenoid Bremse/Pinch angeht, sollte es aus meiner Sicht ausreichen.

Einfach mal in Ruhe drüber nachdenken .....

mit besten Grüßen

Christian
Zitieren
#2
Deine Bemühungen um das Tandberg Wrack in Ehren und Respekt vor dem Aufwand  Cool

In Deinem Fall des gebrochenen Boards würde ich schlicht originalen Ersatz organisieren, auch wenn das uU teuer wird. Mit allem anderen baut man sich mEn viele Baustellen eines Prototypen ein, die man erst wieder beheben muß. Die Zeit kann man auch in die Suche von Bauteilen investieren. 

Komplett neu zu bestücken ist mutig, aber mMn unnötig und birgt immer das Risiko neuer Fehler. Verbessert wird da mMn nix.

Gut, nun war das ja aber nicht die Frage  Wink

Die Logik ist ja im SM super beschrieben. Da durchzusteigen ist anhand der Wahrheitstabellen sicher mühsam, aber eigentlich kein großes Ding.

Wenn ich mir überlege wie ich ans Werk gehen würde bei einem "Nachbau" dann würde ich in der heutigen Zeit keine diskrete Schaltung mehr aufbauen. 
Man kann den Logikanteil des Logikboards als black Box sehen, in die Signale die rein und raus gehen hernehmen, die Logik der Zusammenhänge re-engineeren (läßt sich ja zB sogar in Excel prüfen) und dann mit einem kleinen uC nachbilden. Von dessen IO Ports braucht's dann vlt noch eine Pegelanpassung, aber dann sollte gut sein. 
Wenn da was nicht hinhaut, ist die Software leichter geändert als ein ganzes Board neu zu routen.

Das mal als Anregung  Shy
Ansonsten lohnt der Gedanke vermutlich nicht besonders, weil mWn diese Tandberg Boards nicht unbedingt von häufigem Ausfall bedroht sind
Gruß, Kuni
..............................

http://kuni.bplaced.net/
..............................
Zitieren
#3
So,

2 Tage lang über die o.a. angesprochenen Dinge mal in Ruhe nachgedacht:

Für das "geschredderte" Logikboard gibt es ein Ersatzboard aus einer anderen 9100. Per Zufall die identische Maschine (9100) gefunden und auch bekommen. Hin und wieder geschehen auch mal kleine Wunder !

Somit ist die in Arbeit befindliche 9100 "save".

Allerdings dauert es jetzt ein bischen bis die Maschine hier ist .....

---------------------------------------------------------------

Somit bleibt jetzt eine 9100 ohne Logikboard über .....

Also wieder Thema Logikboard:

   

Die sinnvollsten "Trennstellen" scheinen mir an den "roten Linien" zu liegen. Zumal diese mit kleineren Pegeln angefahren werden können und die bestehende Verschaltung wie z.b. Relais- und Solenoidsteuerung erhalten bleibt.

Die Idee bzw. Anregung die Ansteuerung jetzt mit einer "Black Box" a'la Arduino o.ä. zu machen ist vmtl. die einfachste und wohl auch zielführenste. Zumal die Serien 9x00 und 10X dann mit erledigt sind.

Die Funktionsweise der Logik ist ja im Servicemanual gut beschrieben und im Prinzip steht da schon die halbe "Miete" bzgl. der Schaltzustände drin.

Ist für mich zwar auch jetzt absolutes technisches Neuland, aber der Winter ist lang und es steht hier ja dann eine "Testmaschine" ...

Alles andere wie Ersatz durch andere Logik-IC (CDxxxx) läuft in meinen Augen auf den identischen Zeitaufwand hin und ergibt letztlich eine "prototypische" Lösung mit ihren Risiken und Nebenwirkungen.

Soweit das Ergebnis von 2 Tagen Nachdenken und Logikboard-Erkunden (was wird wo gemacht ....).

Auf dem Zettel steht jetzt erstmal sich so einen Arduino o.ä. zu besorgen und die tiefst eingestaubten rudimentären C/C++ Kentnisse wieder vorkramen ....

beste Grüße

Christian
Zitieren
#4
Bin gespannt  Big Grin
Gruß, Kuni
..............................

http://kuni.bplaced.net/
..............................
Zitieren
#5
Ich auch ......

Gruß
Christian
Zitieren
#6
Soderle,

der Auftragszettel ist abgearbeitet. Arduino besorgt und sich mit dem Teil mal vertraut gemacht. Also Hexenwerk ist das ja auch nicht ....

Aber der Reihe nach:

Als erstes wurde sich mal das Schaltbild bzgl. evtl. Anschlusspunkte angeschaut und siehe da, sowohl die beiden Wind-Relais als auch die beiden Magnete für Stop und Pinch werden nach Masse geschaltet. Also kommen hier normale Transistorschalter zum Einsatz, die bei 5V an der Basis durchschalten. Für die beiden Wind-Relais kein Problem, für die beiden Magnete wurden zwei Transistorschalter gebaut. Diese Schalter anschließend getestet und für funktionierend befunden ....

       

Damit hat sich die gedachte "Trennstelle" als machbar erwiesen. Schon mal positiv ....

Die Schnittstellen für die Ansteuerung Play-/Recordlamp, VU-Meter-Switch, Bandende, Löschoszillator sind noch nicht realisiert, weil hier erstmal die Schaltspannungen gemessen werden müssen. Und zu deren Abhängigkeit die Schnittstellen gemacht .....

Kleine Anmerkung hierzu:
Die Play-/Recordlamp, VU-Meter-Switch, Bandende und Oszillator werden vom Logikboard gesteuert und die Signalleitungen laufen entweder über den 12 poligen Steckverbinder (Bandende gesonderter Steckverbinder) oder sind direkt im Print verdrahtet. Zielsetzung ist hier, den 12 poligen Steckverbinder beizubehalten.

Wunschvorstellung: Alte Logik raus, neue rein .... dabei bestehende Verdrahtung soweit möglich behalten.

Dann als nächstes Software stricken für den Arduino ....

Es ging besser als gedacht ! Zumal der logische Ablauf der Software mindestens 3 Tage lang im Kopf "rumgeisterte" ....

Gedacht, geschrieben (wenn auch mit viel Respekt) .....

Testaufbau mit Transistorschaltern und LED auf dem Steck-Board gebastelt, Taster mit Pull-Down Widerständen versehen, Software nochmal durchgegangen, mutig die Software auf den Arduino geladen, alles zusammengestöpselt und mit Spannung versorgt :

   

Es tut auf Anhieb !! Laufwerksfunktionen Stop, Play, Wind, Rewind, Record gehen !! Auch die Geschichte mit den Elektromagneten tut (einmal Aktivieren, dann Halten, Aktivieren aus).

Das ganze ist zwar noch ein Prototyp, aber das Fein-Tuning jetzt auf dieser Baisis. Insbesondere Schaltzeiten der Magnete und die fehlenden Funktionen integrieren.

Ist ja nur noch Software ändern .....

beste Grüße

Christian
Zitieren
#7
Siehst'e ,eigentlich einfach.
Das schöne ist jetzt, daß du per SW alle möglichen Erweiterungen machen kannst, je nachdem was dir als Komfortfunktion noch alles in den Sinn kommt  Big Grin
Gruß, Kuni
..............................

http://kuni.bplaced.net/
..............................
Zitieren
#8
Interessant das Thema, zumal ich erst kürzlich eine Reparatur wegen einem defekten Logic Board an einer Tandberg 9100 aufgeben musste. Die ging nach dem einschalten von allein in Rewind, ließ sich auch nicht stoppen und reagierte auf andere Laufwerkstasten nicht mehr und wildes aufleuchten der Tasten.
Gruß André
Zitieren
#9
Christian

Ich baue auf Dich und Deine Fähigkeiten, haben ja 2 Maschinen mit der Steuerung hier und wenn es für das eventuelle Problem Laufwerkssteuerung eine Lösung gibt kann ich ruhiger schlafen.
Es wäre ja zu schaden wenn die irgendwann deswegen auf die Deponie müssten.

Ich bin immer wieder beeindruckt von Deinen Fähigkeiten
Lars
Revox B77 MKII 2 Spur / A77 MK III (2&4 Spur) / A77 MK IV 2 Spur, Tandberg 10X / TD20 / TCD 340, Akai GX215, Philips 4419/4515, Uher Report 4000 IC & Monitor, Uher CR 240, Grundig TK 147
Zitieren
#10
Das Board lässt sich ja anhand der Logiktabellen im SM vglw einfach durchmessen und reparieren. Die ICs kann man bekommen, hab das mal recherchiert gehabt und sind nicht mal sooooi teuer.
Gruß, Kuni
..............................

http://kuni.bplaced.net/
..............................
Zitieren
#11
Gut gemacht. Wenn man sich gedanklich erstmal rein gedacht hat ist das meiste schon überwunden. 
Der Rest ist ein Klacks.
Kleine Anmerkung am Rande, wenn Du Deine LedLampen anders rum zeichnest leuchten die auch.

Gruß Mani
Besonders gerne repariere ich meine Philips, Braun, Akai und TEAC Geräte Big Grin
Keine Hilfe bei fehlender Rückmeldung
Zitieren
#12
Oh, sehr schön, danke fürs Dokumentieren! Mich interessiert besonders die praktische Verbindung zwischen Arduino-Logik-Pins und den geschalteten Relais oder Magneten. Geübten µC-Elektronik-Bastlern geht sowas leicht von der Hand... mir leider noch nicht. Mein gedankliches Projekt ist so eine Steuerung für die kleinen und großen ASC-Bandgeräte...

Viele Grüße
Andreas
Zitieren
#13
Erstmal danke für die Blumen ....

Um das jetzt auch ein bischen nachvollziehbar zu machen (warum das Rad immer neu erfinden wenn es schon erfunden ist ...) hier mal die Verschaltung der Taster/Schalter und die "Standard-Schaltstufe":

   

Die Pull-Up bzw. Pull-Down Widerstände haben 10 KOhm und die internen Pull-Up Widerstände des Arduino werden NICHT genutzt ! In die Basisleitung des Schalttransistors kommt ein 10 KOhm Widerstand als "Strombegrenzer" ......

BEGINN OFF TOPIC:

Die Problematik bei der Software war, das der aktuelle Maschinenstatus (Play, Wind, etc.) "gemerkt" werden muss. Wird jetzt eine Taste gedrückt, so geht die Maschine vom aktuellen Zustand in den gewählten Zustand über. Die Verarbeitung im Arduino erfolgt dort grundsätzlich in einer Endlosschleife .... War ein bischen überlegen, aber mit zwei Statusvariablen war das "gegessen". Eine Variable für den aktuellen Status der Maschine, eine Variable für die gewählte Taste/Funktion. Hierbei wird ein "Pattern" gesetzt, der dann ausgewertet wird. Taste Stop erzeugt Pattern 10000, Taste Play erzeugt Pattern 01000 usw. Beim Anschalten der Maschine wird diese als "Init-Funktion" in den Stop-Modus versetzt und der Maschinenstatus ist 00000. Ab hier greift dann die "Tasten-Logik".

 if (status_stop == HIGH)
  {
    status_taste = 10000;
  }

  if (status_play == HIGH)
  {
    status_taste = 01000;
  }

  if (status_wind == HIGH)
  {
    status_taste = 00100;
  }


  if (status_rewind == HIGH)
  {
    status_taste = 00010;
  }


Dieses Pattern wird dann einfach ausgewertet:

// STOP-TASTE
 if (status_taste == 10000) //STOP gedrueckt
 {
  switch(status_merken)
   {
    case 00000:  // Stop kommt von INIT_STOP
      status_merken = 10000;
      break;
    case 10000:  // Stop kommt von Stop
      status_merken = 10000;
      break;
    case 01000:  // Stop kommt von Play
      maschine_play_off();
      maschine_stop_on();
      status_merken = 10000; // Status STOP merken
      break;
    case 00100:  // Stop kommt von Wind
      maschine_wind_off();
      maschine_stop_on();
      status_merken = 10000; // Status STOP merken
      break;
    case 00010:  // Stop kommt von Rewind
      maschine_rewind_off();
      maschine_stop_on();
      status_merken = 10000; // Status STOP merken
      break;
    case 00001:  // Stop kommt von Record
      maschine_record_off();
      maschine_play_off();
      maschine_stop_on();
      status_merken = 10000; // Status STOP merken
      break;
    default:     // default ANHALTEN
      maschine_stop_on();
      status_merken = 10000; // Status STOP merken
      break;    
   }

    status_taste = 00000;  // eben auf NULL setzten

  }


Diese "Pattern-Auswertung" wird für alle Tasten gemacht und somit ergeben sich alle "Kombinationen" und diese können dann einzeln erledigt werden, was die Steuerung der Schalter angeht.

Hinten dran eben ein paar kleine Funktionen, die die Ardunio-Pin steuern und fertig:

void maschine_stop_on() {
  digitalWrite(stop_out1, HIGH); // Magnet aktivieren
  delay(1500); // Delay 1500 Millisekunden
  digitalWrite(stop_out2, HIGH); // Magnet halten
  digitalWrite(stop_out1, LOW); // Aktivierung abschalten
}

void maschine_stop_off() {
  digitalWrite(stop_out2, LOW); // Magnet abschalten
  delay(100);
}


Davon gibt es genau 10 Stück für Stop,Play,Wind,Rewind,Record jeweils ON/OFF und diese werden dann in der Patternauswertung angesprochen und fertig !
Das ist der Prototyp und Basis fürs Fine-Tuning !

Der Quellcode ist mit Absicht so "ausführlich" gehalten, damit ich den besser nachvollziehen kann .... Ist ein paar mehr Tage her, seit ich das letzte Mal in C was gemacht habe ....

ENDE OFF TOPIC


Festzuhalten bleibt aber, dass der Arduino extremst auf prellende Tasten reagiert ! Da muss jetzt erstmal eine Abhilfe her, entweder durch zusätzliche "Hardware" vor/bei den Tastern oder durch eine Softwarelösung. Da wird jetzt mal geschaut, was einfacher ist ..... Aber in Ruhe dabei, ich bin froh und glücklich das das erstmal prototypisch funktioniert ...

@ Manibo: die LED ist jetzt auch umgezeichnet und leuchtet .....

beste Grüße

Christian
Zitieren
#14
Geht das mit der guten alten Gosub Funktion aus Basic?
Nach jedem Tastendruck in die Entprellroutine springen und mit return wieder zielgenau zurück.

Gruß Mani
Besonders gerne repariere ich meine Philips, Braun, Akai und TEAC Geräte Big Grin
Keine Hilfe bei fehlender Rückmeldung
Zitieren
#15
Thema Entprellen:

Nach viel Lesen soll es mit einem Delay (Verzögerung) nach Lesen des Tasterstatus gehen. Hierbei gibt es mehrere Varianten: entweder Zeit, Zähler oder boolsche Variablen.
Zu diesem Thema soll es auch eine Bibliothek geben (Bounce.h) in der diese Thematik erledigt wird ....

Aber dazu muss ich erstmal eruieren, was diese Bibliothek macht, welche Aufrufparameter und Rückgaben sie hat und wie sie eingebunden wird.
Letzters ist schon gefunden .... Aber "blind" in Bibliotheken springen mag ich nicht so sonderlich ....

Vmtl. wird es auch mit einem Gosub o.ä. gehen.

Momentaner Stand ist, dieses Thema von zwei Seiten anzugehen:

Einmal mit "Hardware" also einem MC14490 der gleichzeitig 6 Taster entprellen kann und einmal Software sprich hier ein Delay einbauen, so das das ohne zusätzliche Hardware auskommt.

Also mal wieder Abteilung "Rentner forscht" ....

Wie die dann endgültige Lösung aussieht - keine Meinung. Da ohnehin Bauteile bestellt werden müssen, wird ein MC14490 mal mit geordert und dann ist ausprobieren angesagt.

Bestreben ist auch, den dann fertigen funktionalen Sourcecode nachvollziehbar zuhalten und da tu ich mich mit C etwas schwer (im Grunde ist das gerade mal wieder Einarbeiten ...). Zumal die letzten Programmierarbeiten gut 30 Jahre her sind und die waren in Fortran95 ....

Und vieles ein bischen "Flugrost" angesetzt hat ...


beste Grüße

Christian
Zitieren
#16
Hi Christian, 

Wenn Du die Entprellung per HW machst, dann muss an jeden Taster eine irgendwie geartete Mimik mit Kondensator ran.

Deswegen ist das per SW deutlich einfacher. 
Sowas macht man in der Regel so, daß der erste Trigger vom Taster eine einige ms lange Totzeit auslöst, während der weitere Impulse des (prellenden) Tasters ignoriert werden. Wie lange genau kann man ausprobieren, aber ich kenne das so in der Größenordnung von 200ms.

Je nachdem wie der Arduino Interrupts verwaltet (ich kenne nur andere Mikrocontroller, aber keinen Arduino) würde ich das so lösen, daß über den DIO an dem der Taster anliegt ein Interrupt ausgelöst wird. In der ISR wird dann der Interrupt disabled und ein Timer aufgezogen (zB 200ms). In der ISR des Timer Interrupts werden dann die Interrupts der betroffenen IO Pins wieder enabled. 

Damit ist dann die ganze Mimik im Wesentlichen in den ISRs und muß nicht ständig in der main() gerechnet werden .
Gruß, Kuni
..............................

http://kuni.bplaced.net/
..............................
Zitieren
#17
Soderle,

gestern und vorgestern extrem viel zum Thema Entprellen gelesen - bis der Kopf qualmte .....
Das Thema wird vmtl. auf eine Softwarelösung hinauslaufen ......

Zur Entspannung mal die noch fehlenden "Schnittstellen" für VU-Meter-Switch, Steuerung Löschoszillator und für Record-Select angesehen. Also verhältnismäßig leichte "Kost" ...

So ist es verschaltet:

   

und so soll es auch gehen:

   

Im IST wird der Löschoszillator durch eine von der Logik gesteuerte PNP-Transistorstufe über eine Zenerdiode nach Masse geschaltet. Diese Logik entfällt, da nicht mehr da. Also kurzum eine "Standard-Schaltstufe" an Pin 4 Oszillatorplatine gehängt und geht ! Löschoszillator erledigt.

Das Einschalten des Löschoszillators wird im IST über die beiden Record-Select-Schalter jeweils an den PIN 7,8,9 vorgenommen. Die sind jetzt frei bzw. ohne Funktion. Also hieran dann den Eingang vom Arduino mit parallelgeschalteten Schaltern. Ergibt am Arduino nur einen Eingang für die Record-Steuerung ... Sollte so gehen ... Und vereinfacht die Software ungemein, da nur unterschieden werden muss zwischen Play und Record.

Angedacht ist, wenn einer der beiden Record-Select-Schalter gedrückt wird, dann wird der "Record-Modus" aktiv und default ist "Play-Modus". Die beiden Anzeigelampen für Play/Record müssen ja eh gesondert abgehandelt werden, da sie auf dem alten Logikboard verdrahtet sind. Die Anzeigen für Stop, Wind und Rewind werden zusammen mit den Relais/Magneten gesteuert - sind also erledigt. Kostet eigentlich nur ein simples "IF" über Record- und Play-Taste ...

Das ist in der alten Logik auch so implementiert, d.h. erst bei Betätigten der Record-Select-Schalter wird am Taster "Record" ein Anschluß nach Masse gelegt und die "Record-Lampe" ist am brennen .... und die Taste dann erst aktiv ....

Record-Select plus Lampen Play/Record damit vmtl. auch erledigt.

Der VU-Meter-Switch Q3, Q103, Q501 (normale Schaltstufen..... mit BC547B und 10 KOhm in der Basisleitung) wird bei Play mit +10 Volt beaufschlagt ..... Die sollten auch mit + 5 Volt bei Play gehen - also nur ein Arduinoausgang notwendig.

VU-Meter-Switch auch vmtl. erledigt.

Die CUE-Funktion ist bereits erledigt, da diese Steuerung über die "Hold-Leitung" des Pinch-Magneten erfolgt und die bestehende "Verkabelung" beibehalten wird.

Bleibt auf der ToDo-Liste "Schnittstellen" nur noch die Bandendeschaltung mit Fototransistor. Mal sehen was das gibt.

Positiv ist schon mal, das es vmtl. auf die Wunschlösung "alt raus" "neu-rein" unter Nutzung der bestehenden Verschaltung hinausläuft ....

Jetzt in Ruhe Testaufbau mit LED für jede dieser Funktionen, Software anpassen und mal schauen was passiert ...

Und das Entprellen nicht vergessen !

beste Grüße

Christian
Zitieren
#18
So,

nach der "Schnittstellen-Kunde" für die Record-Funktion erstmal einen "Simulator" gebaut und ein langes USB-Kabel aus der Schublade geholt ....

   

Der "Simulator" beinhaltet jetzt alle Taster, Record-Select-Schalter sowie alle benötigten Schaltstufen bis auf die Bandendeerkennung. Die Schaltstufen sind jetzt einheitlich mit BC637 statt BC547B aufgebaut (hat den Vorteil das der BC637 max. einen Kollektorstrom von 1 Ampere kurzzeitig zuläßt und Uce 60 Volt betragen darf ...) und alle Taster/Schalter arbeiten mit Pull-Down-Widerständen. D.h. vom Schaltverhalten ist NICHT gedrückt/aktiv gleich LOW und gedrückt/aktiv gleich HIGH. Spart das "Umdenken" beim Programmieren .......

An den "Simulator" kommt jetzt der Arduino mit langem USB-Kabel, so das Softwareerstellung und Test in "Einem" (ohne nerviges Abstöpseln des Arduino vom PC) erfolgt. So der Plan ...

Im Anhang der komplette Quellcode als reiner Prototyp und MOW (Muster Ohne Wert) !! Wer will, kann ja selber "basteln" .... Die "In-Line-Doku" sollte das was, wie und wo erklären ...
Hierein wird jetzt die Recordfunktion integriert, sowie die noch zu erstellende Bandendeerkennung und das Entprellen.

Und das in Ruhe die nächsten Tage !

In diesem Sinne, einen schönen vierten Advent und ein ruhiges und besinnliches Weihnachtsfest.

beste Grüße

Christian


Angehängte Dateien
.pdf   Source_Laufwerksfunktionen _9100_test.pdf (Größe: 302.85 KB / Downloads: 1)
Zitieren
#19
Es wird ....

Im ersten Anlauf die Record-Funktion in den Quellcode "implantiert", alles mit neuestem Softwarestand an den Simulator geklemmt ....

Das Positive:
Es tut wie gewünscht, Stop, Play, Wind, Rewind, Record funktionieren !
Record-Select, VU-Meter und Löschoszillator werden auch geschaltet  !

Aber so richtig "rund" ist das noch nicht - irgendwas fehlt ...... Weil das ist jetzt eine Steuerung, die es ermöglicht direkt von Record zu Play bzw. Play zu Record zu schalten. Ist zwar schön, aber irgendwie fehlt da ein Schritt. Zumal die Steuerung es jetzt nur zulässt, die Maschine bei laufendem Record auszusteuern .....

Also nochmal die beiden Record-Select-Schalter hinsichtlich ihrer Funktion angeschaut:

Wird einer der beiden Record-Select-Schalter gedrückt, so bekommt der Record-Taster erst seine Masse und kann dann erst überhaupt betätigt werden ! Ist die Masse zum Taster geschaltet, kann der Taster erst als "funktional" angesehen werden. Damit jetzt VOR Drücken der Record-Taste die Maschine für die Aufnahme ausgesteuert werden kann, geht die Maschine in einen Zwangs-Stop mit umgeschalteter VU-Meter-Funktion (das sind Q3,103,501 ; die Steuerleitung muss 0 Volt sein) und aktiviertem Löschoszillator.

Im Servicemanual der 9x00 steht genau dieses und es ergibt sich aus den dort dargestellten Laufwerksfunktionen. Da steht nirgends "Play zu Record" oder "Record zu Play" !
- siehe hierzu auch laufwerksmatrix.pdf -

Das heißt, um hier funktional zur gleichen Logik/Funktion zu gelangen, muss/sollte die Taste Record elektrisch zu- und abschaltbar sein. Das wurde mittels einer PNP-Schaltstufe (BC638) gelöst, die vom µController geschaltet wird. Und was für die Aufnahme gut ist, geht auch für die Wiedergabe .... also hat die Taste Play auch einen µController-gesteuerten Schalter gekriegt.

Weil, das hat zur Folge, dass der Anteil im Quellcode Tastenauswertung/Maschinenfunktion so bleiben kann wie er ist, da die schaltbaren Taster dann einfach kein Signal außer LOW liefern ! Und somit keine Funktion haben. Was in der Folge jede Menge IF - Then - Else hinfällig macht.

Die geänderte elektrische Tastensteuerung:

   

Gesteuert und abgefragt wird das jetzt alles vom µController (so der Ansatz) ! Somit bleibt dann die bestehende Verdrahtung der Maschine bestehen ....

Dann nochmal den Quellcode angepasst und diese Funktionen "implantiert":

[font=Consolas, "Courier New", monospace]// ------------- BEGINN BLOCK RECORD-MODUS AUSWERTEN -----

/* Nachfolgendes sorgt dafuer, das die Funktion
         maschine_record_taster_on / off ()
        jeweils NUR EINMAL ausgefuehrt wird !
*/

 if(record_init == 11)  // Record-Select AKTIVIERT
   {
       switch (record_init_merken)
      {
        case 00:  // Funktion NUR EINMAL AUSFUEHREN
          maschine_record_taster_on(); // schaltet Record-Taste EIN
          status_taste = 10000; // STOP ERZWINGEN !!!
          record_init_merken = 11; // Record AKTIV TASTER RECORD EIN/PLAY AUS
          break;
        default:
          record_init_merken = 11; // DANN NUR AM LEBEN HALTEN !!
          break;
      }
   }

 if(record_init == 00) // Record-Select INAKTIV
   {
       switch (record_init_merken)
      {
        case 11:  //Funktion NUR EINMAL AUSFUEHREN
          maschine_record_taster_off(); // schaltet Record-Taste AUS
          status_taste = 10000; // STOP ERZWINGEN !!!
          record_init_merken = 00; // Record INAKTIV TASTER RECORD AUS/PLAY EIN
          break;
        default:
          record_init_merken = 00; // DANN NUR AM LEBEN HALTEN !!
         // Achtung: record_init_merken wird in den Funktionen maschine_play_on
         // und maschine_play_off abgefragt zur Play-Lamp Steuerung !!
          break;
      }
   }

// ------------- ENDE BLOCK RECORD-MODUS AUSWERTEN ----[/font]


Und in der Funktion maschine_record_taster_on/off() dann die beiden Taster Record/Play nebst VU-Meter geschaltet:

[font=Consolas, "Courier New", monospace]void maschine_record_taster_on() {  // TASTER RECORD/PLAY SCHALTEN AN
  digitalWrite(taster_record_aktiv, LOW); // PNP Schaltstufe
  digitalWrite(taster_play_aktiv, HIGH); // PNP Schaltstufe
  digitalWrite(vu_meter, LOW); // Q3,103,501 AUS
  return;
}

void maschine_record_taster_off() {  // TASTER RECORD/PLAY SCHALTEN AUS
  digitalWrite(taster_record_aktiv, HIGH); // PNP Schaltstufe
  digitalWrite(taster_play_aktiv, LOW); // PNP-Schaltstufe
  digitalWrite(vu_meter, HIGH); // Q3,103,501 AN
  return;
}[/font]


Und die Kuh ist vom Eis !!

Damit kann nicht mehr von "Play zu Record" und von "Record zu Play" geschaltet werden. Weil die Taster elektrisch inaktiv sind !

Ach ja, das Entprellen ist auch erledigt. Wie vermutet, reichte ein kleines Delay von 200 Millisekunden und dann den Taster nochmal lesen ... Die Welt kann so einfach sein ...

Dieser Software-Stand geht jetzt an den Simulator. Verläuft der Test positiv (wovon ausgegangen wird ...), dann geht es an die reale Maschine ....
Und ganz zum Schluss die noch fehlende Bandendeschaltung !

Im Anhang dann der aktuelle Softwarestand nebst kleinem "Ablaufdiagramm" - falls jemand basteln will ...

beste Grüße

Christian


Kleine Anmerkung:
Dieser Thread wird von mir auch als kleine "Entwicklungsdokumentation / Hilfe" genutzt - ich hoffe das da niemand etwas dagegen hat ...


Angehängte Dateien
.pdf   laufwerksmatrix.pdf (Größe: 393.93 KB / Downloads: 3)
.pdf   logik_ablauf.pdf (Größe: 403.36 KB / Downloads: 2)
.pdf   Source_9100_BETA_V100.pdf (Größe: 335.09 KB / Downloads: 2)
Zitieren
#20
Soderle,

noch ein kleines "Software-Update" und die BETA-Version steht und kann zum Simulatortest.

Das Auswerten der Record-Select-Schalter mittels der SWITCH-Funktion erschien irgendwie "unelegant" .... Das Auge schreibt mit ....

Hier der geänderte Source:

[font=Consolas, "Courier New", monospace]// ------------- BEGINN BLOCK RECORD-MODUS AUSWERTEN -----

/* Nachfolgendes sorgt dafuer, das die Funktion
         maschine_record_taster_on / off ()
        jeweils NUR EINMAL ausgefuehrt wird !
*/

  if (record_init == true && record_init_merken == false)  // RECORD AKTIV
    {                // nur einmal ausfuehren
      maschine_record_taster_on ();  // Taster schalten
      status_taste = 10000;  // Stop erzwingen
      record_init_merken = true;  // merken
    }
  else
  {
    if (record_init == false && record_init_merken == true)  // RECORD INAKTIV
      {              // nur einmal ausfuehren
        maschine_record_taster_off();  // Taster schalten
        status_taste = 10000;  // Stop erzwingen
        record_init_merken = false;  // merken
      }
  }

// ------------- ENDE BLOCK RECORD-MODUS AUSWERTEN ----[/font]


Falls jemand basteln will, bitte die Switchfunktion erbarmungslos durch diese bescheidene IF-Abfrage ersetzen. Die Variablen record_init und record_init_merken sind dann vom Typ BOOL und nicht mehr INTEGER. In den Funktionen maschine_play_on/off ist dann die IF-Anweisung auf "if (record_init_merken == false) .... "  anzupassen ....

Ist der Simulatortest erfolgreich (wovon ausgegangen wird ...) so wäre die Laufwerkssteuerung was Software angeht soweit FERTIG !

Bis auf die Einschränkung, dass die Bandendefunktion noch rein mus !!

Nach dem Simulatortest geht es hier dann an die reale Maschine und dann schauen wir weiter. Reale Maschine heißt: Schnittstellen alle auf Lochrasterplatine aufgebaut, Netzteilplatine der 9100 raus und das ganze mit der Maschine verkabeln .... Das wird spannend ...

beste Grüße

Christian
Zitieren
#21
Damit es jetzt nicht zu kompliziert wird, im Anhang die abgeänderte BETA-Version zur freien allgemeinen Verfügung.

Mit dieser Version geht es an den Simulator-Test und dann an die reale Maschine !
Bandendeerkennung ist noch nicht implementiert !

Wer will, kann sich diese "ziehen" und selber basteln oder ähnliches.

Bisheriger Funktionsumfang:

Nach Einschalten der Maschine geht diese in den STOP-Modus und Play-Modus ist aktiv.

Play-Modus:
- Taste Record elektrisch deaktiviert
- Funktionen Play, Wind, Rewind, Stop können ausgeführt werden
- bei Taste Play gedrückt, Lampe Play an
- VU-Meter stehen auf Play-Modus
- Löschoszillator deaktiviert

Um in den Record-Modus zu gelangen MUSS einer der beiden Record-Select-Schalter gedrückt werden.
Dann geht die Maschine in den Record-Init.

Record-Init:
- Taste Play elektrisch deaktiviert
- Taste Record elektrisch aktiviert
- Zwangsstop der Maschine
- VU-Meter stehen auf Record-Modus
- Löschoszillator deaktiviert

Für Record-Funktion MUSS Taste Record gedrückt werden.

Record-Modus:
- Funktionen Record, Wind, Rewind, Stop können ausgeführt werden
- bei Drücken der Taste Record wird der Löschoszillator und Record-Lamp eingeschaltet

Rückkehr von Record zu Play:

Record-Select-Schalter lösen, dann geht die Maschine in Play-Init.

Play-Init:
- Taste Record elektrisch deaktiviert
- Taste Play elektrisch aktiviert
- Zwangsstop der Maschine
- VU-Meter stehen auf Play-Modus
- Löschoszillator deaktiviert

Zum Software-Entwurf als solches:

Der µController wird grundsätzlich und systembedingt über 2 Funktionen gesteuert. Einmal Setup(), einmal Loop().

In der Funktion Setup() wird der Maschinen-INIT (also Stop nach Einschalten und Play-INIT) erledigt.
In der Funktion Loop() erfolgt lediglich die Tastensteuerung und Auswertung in einer Endlos-Schleife !

Das Ergebnis der Tastenauswertung wird dann durch den "Funktionsblock" realisiert. Dieser Block ist unabhängig von Setup() und Loop() !
Hier finden sich dann die einzelnen "Steuerbefehle" für die einzelnen Schnittstellen. Angesprochen werden diese Funktionen über ihren Namen (z.B. maschine_rewind_on) aus der Tastensteuerung/Auswertung heraus.

Das hat den charmanten Vorteil, dass die Steuerbefehle unabhängig von der "Tasten-Mimik" sind. Wird also ein Fehler in der "Tasten-Mimik" festgestellt, wird nur dieser Bereich angefasst. Umgekehrt, muss eine "Steuer-Funktion" geändert werden, wird nur die entsprechende Funktion geändert.

Die im Programm verwendeten selbstdeklarierten Variablen sind allesamt globale Variablen ! Somit gelten sie auch für den "Funktionsblock" und können dort abgefragt werden.

Dieser "Software-Entwurf" kann somit ( aus meiner Sicht ) auch auf andere Maschinen angewendet werden, da Funktion und Steuerung voneinander unabhängig sind.

Wie gesagt, hier geht es mit Simulator und dann reale Maschine weiter ...

Das Ende ist in Sicht ...

beste Grüße

Christian


Angehängte Dateien
.pdf   9100_BETA_V101.pdf (Größe: 303.47 KB / Downloads: 6)
Zitieren
#22
Hallo Christian,

ich lese hier nur aus Interesse mit, ich besitze keine Tandberg Series 9x00, 10X. Mir ist gerade eine Sache aufgefallen, vielleicht auch nur falsch verstanden.

Zitat:Bisheriger Funktionsumfang:

Nach Einschalten der Maschine geht diese in den STOP-Modus und Play-Modus ist aktiv.
 Das sollte vermutlich "Play-Init" Modus statt Play-Modus heißen ?

Zitat:Record-Modus:
- Funktionen Record, Wind, Rewind, Stop können ausgeführt werden
- bei Drücken der Taste Record wird der Löschoszillator und Record-Lamp eingeschaltet

1. Wird beim Drücken der Record Taste sofort der Bandtransport gestartet ?

2. Wenn im Record Modus die Funktionen Wind, Rewind, Stop ausgewählt werden, geht die Steuerung dann in den Record-Init Modus zurück = Löschoszillator deaktiviert ?

MfG, Tobias
Strom kann erst fließen, wenn Spannung anliegt
Zitieren
#23
Hallo Tobias,

zu deinen Fragen:

Zitat:
Zitat: schrieb:Bisheriger Funktionsumfang:

Nach Einschalten der Maschine geht diese in den STOP-Modus und Play-Modus ist aktiv.
 Das sollte vermutlich "Play-Init" Modus statt Play-Modus heißen ?
 
Ja - es muss richtig Play-Init heißen ...

Zitat:1. Wird beim Drücken der Record Taste sofort der Bandtransport gestartet ?

2. Wenn im Record Modus die Funktionen Wind, Rewind, Stop ausgewählt werden, geht die Steuerung dann in den Record-Init Modus zurück = Löschoszillator deaktiviert ?

zu 1.

Ja,  drücken der Record-Taste startet sofort den Bandtransport, da sie aus dem Stop-Modus kommt, d.h. Maschine gebremst.

zu 2.

Ja, bei den Wind-Funktionen und der Stop-Funktion im Record-Modus ist der Löschoszillator deaktiviert. Der Löschoszillator wird in einer gesonderten Funktion zusammen mit der Record-Lampe geschaltet. Auslöser hierfür ist die Record-Taste. Lediglich die VU-Meter verbleiben in der Stellung Record.

Intern im Code sind Play und Record grundsätzlich getrennt, aber sie brauchen beide die identische Funktion für den Bandtransport. Lediglich bei Record kommt die Funktion Löschoszillator und Record-Lampe schalten hinzu. Bei Play fehlt es dann ......

beste Grüße

Christian
Zitieren
#24
Hallo Christian,

vielen Dank für deine Antworten. Da fällt mir gerade ein Feature einer Profi-Maschine ein, das nennt sich Spot Erase. Bei dieser Funktion wird der Löschoszillator bei stehendem Band aktiviert. Durch manuelles Hin- und Her- Bewegen des Bandes wird gelöscht. Ich wünsche dir weiter viel Erfolg mit dem Projekt.

MfG, Tobias
Strom kann erst fließen, wenn Spannung anliegt
Zitieren
#25
Soderle,

SIMULATOR-TEST BESTANDEN !!!

   

Das elektrische Schalten der beiden Taster Play/Record funktioniert !
Laufwerksfunktionen sind da und funktionieren !
Umschaltung Play/Record mit Zwangsstop funktioniert !
Umschaltung VU-Meter tut !
Schalten Löschoszillator tut !
Die Mimik Record-Select-Schalter tut !
Die  Modi Play/Record funktionieren !

Also jetzt Lochrasterplatine her und die Schnittstellen zur Maschine aufbauen. Dann die Maschine mit der "neuen" Logik verkabeln und testen !

Das Ende zeichnet sich ab !

beste Grüße

Christian
Zitieren
#26
Den schmuddeligen grauen niedersächsischen Nachmittag mal genutzt und die Schnittstellen zur Maschine nochmals durchgegangen .....

   

Mehr braucht es vmtl. nicht !

Und damit sollte es dann gehen und die bestehende weitere Verkabelung der Maschine wird genutzt. Also "alt" raus und "neu" rein ....

Jetzt aber erstmal Lochraster ordern, Musteraufbau und dann ab an die Maschine ! Dort dann noch vmtl. jede Menge Verzögerung in die Software einbauen .... Der µController schaltet doch erheblich fixer .....

beste Grüße

Christian
Zitieren
#27
so, auch hier geht es weiter ....

Zunächst mal das Thema Bandende-Schaltung:

Im IST wird das ja mit einem Fototransistor gemacht. Also kurzum mal einen Fototransistor mit vergleichbaren Parametern besorgt und an den µController "verdrahtet". Noch ein bischen "Software" geschrieben und siehe da, es geht so wie es soll.

   

Das ist alles ! Damit kann der originale Fototransistor samt Verkabelung übernommen werden ! Den Rest macht die Software.

So langsam macht das richtig Spaß .....

Dann die gesamte Schnittstellen-Mimik inkl. Bandende mal auf Lochraster aufgebaut .... Das war nicht ganz so einfach ... ! Zumal einiges an benötigten Anschaltpunkten hinzugekommen ist.

       

Damit geht es dann IN DIE MASCHINE ! Mal sehen was dann noch kommt ...

Mittlerweile gibt es von dem Lochraster-Drahtverhau auch schon ein Platinen-Layout und wenn die Lochrasterversion stimmt und funktional ist, dann gibt es "vernünftige" Platine ...

So zum Testen reicht erstmal der "Drahtverhau" ....

beste Grüße

Christian
Zitieren
#28
Pass mal auf, Christian,  demnächst kommen
die Jungs aus Oslo auf dich zu, ob du vielleicht vorhandene/defekte Altmaschinen auf diesen sensationellen Stand hochrüsten kannst.
Auch in Norwegen wird man gemerkt haben,  dass sich mit BMs noch die eine oder andere Krone verdienen lässt !
Ganz große Klasse, was du da konstruierst. 

Frankie
Hau wech, den Schiet - aber sech mir, wohin


Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste