Go Down

Topic: Pinball Project (Read 4572 times) previous topic - next topic

Msquare

Thats what the "Exhibition / Gallery" forum group is for :)

SimLego

Quote
Thats what the "Exhibition / Gallery" forum group is for smiley


Good to know, before I trespass some more conventions. :)

SimLego


Not quite so stuffy in here anymore, now that I replaced the Master Unit board with an Arduino. :D

chris91

hello,
I start a pinball project also with an MEGA2560 for replace a system1 generation board.

I have write a code for the switch matrix.(8x5 sw). 8 Inputs. 5 Ouputs
I plan to use BCD decoder for the display 7 segments.  i search for the refresh frequency. 17 Outputs (or 24 outputs max without NAND i need to find a solution for rêplace NAND with the dbs signal).
For solenoids i use the original driver board. 8 outputs.
for lamps 4+ 4 BCD Outputs with 74154 for 9 lines (with flip flop on the driver board)

46 I/O
i begin to write code step by step for validate each functions

regards.

SimLego

Cool, chris91!

I assume you are talking about Gottlieb's System 1, since I believe Recel went straight to "System 3" for unknown reasons. It would be interesting to know the name of the game you are reviving.

For most functions, I found it much easier to repair (where needed) the existing boards, rather than making new. However, some areas of the Driver/Multiplexer Board of my Crazy Race machine was so burnt that I let Arduino handle the multiplexing and made a new Lamp Driver "Add-On" Board for the bonus lamps.

But I repaired the control board for the 7 segment displays by replacing 2 fried 7475's and then I imitated the signals from the totally destroyed CPU Board, step by step just like you. To generate a refresh frequency matching my machine, I inserted a 150 microseconds delay before each strobe (two digits displayed at each strobe) and then activated for 700 microseconds:

Code: [Select]

    delayMicroseconds(150);
    digitalWrite(X[i_strobe], HIGH);
    delayMicroseconds(700);
    digitalWrite(X[i_strobe], LOW);


Please note that if you have another system, you probably will have to use different delays. Also note that my approach requires two Arduinos; one for the playfield and one dedicated to control the top box.

I put 1N4148 diodes between the Arduino and solenoid drivers, just in case one of the driver transistors would break down and short, and send 40 volts back to the output pins of the Arduino. I don't know if this will help, but at least it makes me feel a bit better. :)

Good luck with your project, chris91! Please let me know of its progress.

perhof

Snyggt jobbat SimLego :)

I've been checking your progress from time to time.


I put 1N4148 diodes between the Arduino and solenoid drivers, just in case one of the driver transistors would break down and short, and send 40 volts back to the output pins of the Arduino. I don't know if this will help, but at least it makes me feel a bit better. :)


To me that sounds like a good place to use some opto-isolators.

chris91


Cool, chris91!

I assume you are talking about Gottlieb's System 1, since I believe Recel went straight to "System 3" for unknown reasons. It would be interesting to know the name of the game you are reviving.

For most functions, I found it much easier to repair (where needed) the existing boards, rather than making new. However, some areas of the Driver/Multiplexer Board of my Crazy Race machine was so burnt that I let Arduino handle the multiplexing and made a new Lamp Driver "Add-On" Board for the bonus lamps.

But I repaired the control board for the 7 segment displays by replacing 2 fried 7475's and then I imitated the signals from the totally destroyed CPU Board, step by step just like you. To generate a refresh frequency matching my machine, I inserted a 150 microseconds delay before each strobe (two digits displayed at each strobe) and then activated for 700 microseconds:

Code: [Select]

    delayMicroseconds(150);
    digitalWrite(X[i_strobe], HIGH);
    delayMicroseconds(700);
    digitalWrite(X[i_strobe], LOW);


Please note that if you have another system, you probably will have to use different delays. Also note that my approach requires two Arduinos; one for the playfield and one dedicated to control the top box.

I put 1N4148 diodes between the Arduino and solenoid drivers, just in case one of the driver transistors would break down and short, and send 40 volts back to the output pins of the Arduino. I don't know if this will help, but at least it makes me feel a bit better. :)

Good luck with your project, chris91! Please let me know of its progress.



Thanks for your help.
With the AT2560 and 54 I/O Line only one chip is needed if some signals are multiplexed like on the original board (Lamps with 74154, 7 segments display with 7448). Adding a 74154 for the stobe on 7 segments safe 12 Outputs (not like the original with lot of NAND gates)
My idea is to use a original Gottlieb cpu board, unmount dead Rockwell chips and wiring the arduino I/O at the place.
I plan to rewrite the TORCH or SOLAR RIDE program. My solar ride system1 board is ok so easy to check and test all the situation with the original program. My Torch board is dead, but i can replace the cpu by other for testing the original prom program. after that i have also the Countdown. Why not implement all models in the second time. of course if the first is a success.
I receive my arduino on few days and waiting for experiment each parts of program
I must structured the main loop. I think use timer for switch matrix reading and multiplexing output writing for 7 segments display.

For the 1N4148 on the output line it's correct. Gottlieb released first Driver board generation with this solution. also with old drivers board it's the first think to make for protect the CPU board. However, some 7417 (inverter) are present between the output and the driver transistor on original board.

regards

Go Up