25 Jahre NSM Jubiläumsmodell
1977
NSM mint super 1978, quasi identisch, nur mit Wahl der Gewinnlinie, mehr Sonderspielgewinnmöglichkeit (aber zusätzliches Symbol und dadurch weniger Gewinnchancen. Und Verlängerungsmöglichkeit von Sonderspielen. mint-super.jpg
Fairchild F8 Microprocessor
System mit mind. 2 Chips. CPU und Speichereinheit. Die CPU hat keinen Adressbus, das übernimmt die Speichereinheit.
The F8 was a 2 chip microcontroller. It consisted of (at a minimum) a 3850 CPU and a 3851 PSU (Program Storage Unit). The CPU includes 64 bytes of RAM and the ALU. It was made on a NMOS isoplanar process and ran at 1-2MHz. It contained 76 basic instructions. The PSU includes 1K of ROM for program storage, as well as the program counter (PC), Stack Pointer, and Data Counter. I/O was handled by the CPU, while memory access was handled by the PSU. It was an ‘odd’ design at its time but it had a profound impact on the industry. At the time processors were designed one function per chip. The F8 integrated all functions needed by the processor system onto 2 chips. Even the clock driver, which historically had been ts own device, was part of the 3850 CPU. The system could be extended by adding more 3851s or 3852/3 memory interface chips (for DRAM and/or SRAM). In addition to the 3851 PSU there was also enhanced versions with more ROM and additional timer controls called the 3856 and 3857. Quelle1)
Rettet die mint!: https://www.geldspielfreunde.de/forum/index.php?thread/35032-rettet-die-mint-ersatzplatine-und-umbau-psu0-psu1-mk3851/&postID=259047&highlight=mint#post259047
https://www.goldserie.de/lancker/NSM_Mint_Serienzaehler.htm
Die kleine, gesteckte Platine über den Spielwalzen
Chips:
SCL4049UBE (SCL4049UB / SCL4050B) HEX Buffer, Sechs invertierende Treiber DIP 16 (IC III), ja ca. 80 Cent
SCL4025 AE Drei NOR-Gatter mit je drei Eingängen DIP 14, (IC I & II) je ca. 50 Cent
6,3 V Glühlampen, ca 7 Ohm, vielleicht 1-1,5W. Kleine 6V-Lampen vom Flipper (CFTBL) funktionieren auch (1W).
Ein einziger Transistor: T1
BC171 (NPN), verbaut aber ein BC237B (ähnliche Typen: BC167, BC182, BC237, BC547, 2SD767)
Haller Ralais 740 Ohm
Die Existenz dieses Relais gibt mir Rätsel auf. Warum gibt es das???
Wenn ich den Schaltplan richtig lese, 'erkennt' dieses Relais, ob ein Sonderspiel vorliegt. Das tut es anhand des Blinkrelais (Das Blinken macht die CPU, die Schaltung blinkt NICHT von allein). Wenn's blinkt, dann gibt es keinen Strom auf die Lampen und der Kondensator C112 lädt sich. Dadurch schaltet der Transistor T1 durch und das Relais SE zieht an. Das Relais bleibt so lange an wie es blinkt (und ein paar Sekunden länger bis sich der Kondensator entladen hat)
Die Abtastlampen werden durch die Walze 3 rechts eingeschaltet (Relais 3WL schaltet das fest integrierte Relais SP (bistabiles RSL Speicherrelais unten rechts; das schaltet die Abtastlichter ein/aus). Am Ende des Spiels wird Relais 1IM betätigt. Das schaltet wieder SP und damit die 3 Abtastlichter aus.
So, der einzige Sinn von das Relais SE scheint zu sein, zu verhindern, dass 1IM die Abtastlichter ausschaltet. Das konnte ich auch in der Praxis nachvollziehen. Das Licht schaltet sich bei Sonderspielen zwischendurch NICHT aus und bleibt auch die ganze Zeit an, wenn man während der Sonderspiele das Geld rauslässt. WARUM? Warum diese aufwändige Schaltung und was bringt es, diese (von außen unsichtbare) Lichter anzulassen. Ich kann das Verhalten nicht nachvollziehen. Hat jemand eine plausible Erklärung für diese Schaltung? Dass das irgendein Überbleibsel von Früher ist, kann man auch ausschließen, weil der Mint (wie der Mint Super) ein ganz neues Design ist, also keinen Vorgänger hat.
16 Pin DILS: LTV847
je 10-22kOhm Widerstände (ausser für Fotoabtastung)
Um GPIOs auf dem Mega zu sparen, verwende ich PCF8574 (getestet). Jeder Chip kann 8 Inputs (1Byte) auf den I2C-Bus bringen.
Ich verwende jetzt den 'MCP23017 I2C I/O Port Expander'. Der hat 16 Ports (2 Bänke: A0-A7, B0-B7), ein/auschaltbare Pinup-Ports und ist vor allem besser auf das Board lötbar. Die Adressen (max. 8) kann man über Schaltung von A0,A1,A2 einstellen. Siehe2)
Infos Expander: https://elektro.turanis.de/html/prj128/index.html oder https://www.best-microcontroller-projects.com/mcp23017.html oder https://www.instructables.com/PCF8574-i2c-Digital-IO-Expander-Fast-Easy-Usage/
Der Chip kann auch Interrupts erzeugen: https://www.best-microcontroller-projects.com/mcp23017-interrupt.html
Arduino Bibliothek MPC23017 funktioniert (#include <MCP23017.h>). Die Adafruit MCP23017 Library (#include <Adafruit_MCP23X17.h>) bekomme ich (auf dem UNO) nicht zum Laufen. Vielleicht auf dem MEGA (Fehler: ADDRESSED_OPCODE_BIT0_LOW_TO_WRITE / / ! < SPI register type).
Ich verwende 2 dieser Bausteine mit diesen Adressen:
8 Outputs je Chip. Die können locker die 24V DC für die Relais schalten (getestet)
GND : gemeinsame Erde für alle (auch Arduino, 5V, 12V, 24V)
COM : die zu schaltenden Volt (24V für Relais).
Interrupt-Pins Mega: 2(INT0), 3(INT1), 21(INT2), 20(INT3), 19(INT4), 18(INT5)
PIN D19 (INT 2): EXT Ext0x20 Port B (Interrupt ITB) (Pin mit 100nF Kondensator mit Masse verbinden)
PIN D3 (INT 5): EXT Ext0x21 Port B (Interrupt ITB) (Pin mit 100nF Kondensator mit Masse verbinden)
PWM: 2-13
I2c: PIN 20 (SDA), PIN 21 (SCL)
1) Stecker #
2)
3)
4)
GPIO Expander / Ports
Ext 1 (0x20)
A:
0 - Mäuseklavier 1
1 - Mäuseklavier 2
2 - Mäuseklavier 3
3 - Mäuseklavier 4
4 - Mäuseklavier 5
5 - Mäuseklavier 6
6 - Mäuseklavier 7
7 - Mäuseklavier 8
B: INT
0 - Rückgabe
1 - Münzeingabe 50Pf
2 - Münzeingabe 10Pf
3 - Münzeingabe 1DM
4 - Kreditwerk (10 GZ2 (=> 90 DM))
5 - Spielunterbrechung
6 - Münzeingabe 2DM
7 - Münzeingabe 5DM
Ext 1 (0x21)
A:
0 - Pegelschalter 1DM
1 - Pegelschalter 2DM
2 - Pegelschalter 5DM
3 - Pegelschalter 10Pf
4 - Kreditwerk (10 GZ1)
5 - Kreditwerk (1GZ)
6 - Kreditwerk (01 GZ2)
7 - Kreditwerk (01 GZ1 (>=30Pf))
B: INT
0 - Fotoabtastung 0
1 - Fotoabtastung 1
2 - Fotoabtastung 2
3 - Fotoabtastung 3
4 - Fotoabtastung 4
5 - Sonderspielzähler (1SZ)
6 - Sonderspielzähler (10SZ)
7 -
3 Pins für Einstellungs-Taster: rechts (der seperate): Pin53 mitte (direkt neben links): PIN52 links (direkt neben mitte): PIN51
RELAIS & Input-Pins:
#define RELAIS_BK 24 // Blinkrelais #define RELAIS_1STS 23 // 1. StartStopp #define RELAIS_2STS 25 // 2. StartStopp #define RELAIS_1WL 36 // 1. Walze #define RELAIS_2WL 26 // 2. Walze #define RELAIS_3WL 27 // 3. Walze #define RELAIS_1MX 39 // 1. Matrixrelais #define RELAIS_2MX 28 // 2. Matrixrelais #define RELAIS_3MX 32 // 3. Matrixrelais #define RELAIS_1IM 31 // 1. Impulsrelais #define RELAIS_2IM 29 // 2. Impulsrelais #define RELAIS_3IM 30 // 3. Impulsrelais #define RELAIS_4IM 38 // 4. Impulsrelais #define RELAIS_STO 34 // Stossrelais #define RELAIS_MS 35 // Muenzsperrrelais #define MUX_05 44 // 12 V fuer Abtastung ein; Walze I (links) PIN44 MOSFET-LINKS #define MUX_06 45 // 12 V fuer Abtastung ein; Walze II (mitte) PIN45 MOSFET-MITTE #define MUX_07 46 // 12 V fuer Abtastung ein; Walze III (rechts) PIN46 MOSFET-RECHTS #define IRQ_PIN_COIN 19 // (IRQ 3) Interrupt for Muenz-Einwurf & -Rueckgabe (direct, not on the gpio-expander) #define BARRIER_CHANGE_PIN 3 // ext1,B haengt an diesem Pin. Damit kann man die Frequenz der Aenderungen messen. #define BUTTON_STARTSTOP 18 // IRQ2 // Test-Taster: #define BUTTON_TEST_MODE 51 #define BUTTON_TEST_LEFT 52 #define BUTTON_TEST_RIGHT 53 # define LED_AUTOSTART 6 // LED for showing autostart active PWM # define SOUND_OUT 7 // For Speaker (PWM of course) // Bytes: B 00 (00 = Expander 0x20; 01 = Expander 0x21) 0 (0: A; 1:B) 000 (000: Pin 0... 111: Pin 7) // Ext 1 (0x20) // A: #define INPUT_KLAVIER0 B000000 #define INPUT_KLAVIER1 B000001 #define INPUT_KLAVIER2 B000010 #define INPUT_KLAVIER3 B000011 #define INPUT_KLAVIER4 B000100 #define INPUT_KLAVIER5 B000101 #define INPUT_KLAVIER6 B000110 #define INPUT_KLAVIER7 B000111 // B: INT #define INPUT_MONEY_RETURN B001000 // 0 - Rückgabe #define INPUT_MONEY_INPUT_50 B001001 // 1 - Münzeingabe 50Pf #define INPUT_MONEY_INPUT_10 B001010 // 2 - Münzeingabe 10Pf #define INPUT_MONEY_INPUT_100 B001011 // 3 - Münzeingabe 1DM #define INPUT_CREDIT_OVERFLOW B001100 // 4 - Kreditwerk (10 GZ2 (=> 90 DM)) #define INPUT_GAMESTOP B001101 // 5 - Spielunterbrechung #define INPUT_MONEY_INPUT_500 B001110 // 6 - Münzeingabe 5DM #define INPUT_MONEY_INPUT_200 B001111 // 7 - Münzeingabe 2DM // Ext 2 (0x21) // A: #define INPUT_LEVEL_100 B010000 // 0 - Pegelschalter 1DM #define INPUT_LEVEL_200 B010001 // 1 - Pegelschalter 2DM #define INPUT_LEVEL_500 B010010 // 2 - Pegelschalter 5DM #define INPUT_LEVEL_10 B010011 // 3 - Pegelschalter 10Pf #define INPUT_CREDIT_1000 B010100 // 4 - Kreditwerk (10 GZ1) #define INPUT_CREDIT_100 B010101 // 5 - Kreditwerk (1 GZ) #define INPUT_CREDIT_10 B010110 // 6 - Kreditwerk (01 GZ2) #define INPUT_CREDIT_30 B010111 // 7 - Kreditwerk (01 GZ1 (>=30Pf)) // B: INT #define INPUT_LIGHT_BARRIER_0 B011000 // 0 - Fotoabtastung 0 #define INPUT_LIGHT_BARRIER_1 B011001 // 1 - Fotoabtastung 1 #define INPUT_LIGHT_BARRIER_2 B011010 // 2 - Fotoabtastung 2 #define INPUT_LIGHT_BARRIER_3 B011011 // 3 - Fotoabtastung 3 #define INPUT_LIGHT_BARRIER_4 B011100 // 4 - Fotoabtastung 4 #define INPUT_SONDERSPIEL_1 B011101 // 5 - Sonderspielzähler (1SZ) #define INPUT_SONDERSPIEL_10 B011110 // 6 - Sonderspielzähler (10SZ) #define INPUT_RESERVE B011111 // 7 // NICHT BELEGT- #define TIME_STROKE 70 // Time in ms to hold a stroke #define TIME_STROKE_BETWEEN 170 // Time in ms wait between strokes
Die drei MUXe (MUX 05 links, MUX 06 mitte, MUX 07 rechts) werden nacheinander mit 12V angesprochen (sonst 0V).
je nachdem, welcher MUX angesteuert wird, feuern die je 5 Fotodioden. Am Ausgang (Abtastung 0-4) kommt dann 5V raus (alles mit Oszi gemessen).
Die Abtastung erfolgt 1X während des Walzenlaufs (ob sich die Walzen schnell genug drehen) und 2X am Ende des Laufs zur Gewinnermittlung (und um zu schauen, ob es Abweichungen gibt?).
Steckerbelegung Stecker 06:
+12v Schaltung via Mosfet
https://www.aeq-web.com/p-channel-mosfet-driver-arduino-microcontroller/
Auslesen via Optokoppler mit 220 Ohm Widerstand
ab Naht nach unten gedreht. Kirsche, Melone, Zitrone, Orange, Stern, Pflaume, Glocke, 7 (Die Codes der Lichtschranken sind einfach nacheinander durchnummeriert von 1 bis 20.).
Die 5 Lichtschranken (im Schaltplan 'Fotoabtastung') sind die einzelnen Bits dieser Zahlen 1-20. Abtastung 0 ist das rechte Bit, Abtastung 4 das linke etc.
# | BIN | W1 | W2 | W3 |
---|---|---|---|---|
1 | 00001 | 7 | K | 7 |
2 | 00010 | K | M | K |
3 | 00011 | P | K | O |
4 | 00100 | M | M | M |
5 | 00101 | K | K | G |
6 | 00110 | G | G | K |
7 | 00111 | K | K | Z |
8 | 01000 | Z | Z | K |
9 | 01001 | M | K | S |
10 | 01010 | K | S | M |
11 | 01011 | S | M | K |
12 | 01100 | M | P | M |
13 | 01101 | K | K | P |
14 | 01110 | P | 7 | K |
15 | 01111 | M | M | O |
16 | 10000 | O | O | M |
17 | 10001 | K | K | Z |
18 | 10010 | Z | Z | K |
19 | 10011 | M | M | M |
20 | 10100 | K | P | K |
C-Code Arduino:
// mint: Umsetzung Nummer auf Walze => Symbol String Walzenplan1 = "7KPMKGKZMKSMKPMOKZMK"; String Walzenplan2 = "KMKMKGKZKSMPK7MOKZMP"; String Walzenplan3 = "7KOMGKZKSMKMPKOMZKMK"; // Sonderspielgewinne: String WalzenplanSS = "10101010101010101010"; uint8_t read_barrier(){ // Pause nach Einschalten der 5V nicht vergessen! 150ms uint8_t licht = gpio_ext2.readPort(MCP23017Port::B); // Last 5 Bits: Fotoabtastung 4,3,2,1,0 licht = licht & B11111; return licht; } char get_walzensymbol(uint8_t nummer, uint8_t walze){ // walze: 1,2,3, 4 (4=Goldene felder bei Mittlerer Walze) if (walze == 1) return Walzenplan1.charAt(nummer); else if (walze == 2) return Walzenplan2.charAt(nummer); else if (walze == 3) return Walzenplan3.charAt(nummer); else if (walze == 4) return WalzenplanSS.charAt(nummer); return "0"; } String get_symbolname(char symbol){ if (symbol == 'K') return "Kirsch"; if (symbol == 'M') return "Melone"; if (symbol == 'Z') return "Zitron"; if (symbol == 'O') return "Orange"; if (symbol == 'S') return "Stern "; if (symbol == 'P') return "Pflaum"; if (symbol == 'G') return "Glocke"; if (symbol == '7') return " *7* "; if (symbol == 'C') return "Krone "; return " ??? "; }
4_walzen.ino :
uint8_t read_barrier(){ digitalWrite(LED_BUILTIN, HIGH); // 0, wenn Licht durchfällt, 1 wenn nicht. // B11111 = kann nichts lesen: Licht aus oder kaputt // B00000 sollte nicht vorkommen // B10100 hoechster Wert (20) uint8_t licht = gpio_ext2.readPort(MCP23017Port::B); //Dieser Port ist nicht invertiert. //Serial.print("Licht roh: "); //Serial.print(licht, BIN); licht = licht & B11111; uint8_t licht2 = licht | B10000000; Serial.print("Licht : "); Serial.print(licht2, BIN); Serial.println(); digitalWrite(LED_BUILTIN, LOW); return (unsigned int)licht; }
Röhren- Speedtest schalter Sync Freispiel 1-2-3 DM Aus Aus An An Startautom. Modern Kaempfer | | | | | | | | 1 2 3 4 5 6 7 8 | | | | | | | | € An An Aus Aus No-Autostart Classic Gurke 1-3-2
Beschreibung Einstellungen
Mit alles Mini-Schaltern nach unten verhält sich der Automat genau wie mit der Original-Elektronik ohne eingebaute Verzögerungsschaltung.
Fehlt noch/Bugs: