Received the power supply boards today. (edit: I didn’t actually post this last week, so the boards came in 1/24. That is around 3 weeks for the boards manufacture and shipping which is incredible.) Unfortunately I wasn’t expecting them for another couple of weeks, so I didn’t purchase the mounting brackets to mount the power supplies yet. The mounting brackets are simple aluminum L’s that then use sheet metal screws to secure the power supplies. (edit: I had to hang new curtain rods yesterday and the old hardware can be re-purposed to form the mounting brackets. Hopefully I will have some time today to screw it together.) The power supply boards allow four standard PC power supplies to be tied together to form a 48V supply at around 20A. The board also outputs the power onto a single molex connector so that the power can easily be moved from the bottom of the pinball cabinet to the bottom of the playfield. That should be more than enough power to power any of the solenoids that I need to on Disaster or even Camelot at this point. It also has spade connectors for ease of connection. Since I have 10 of the cards, I can simply use one card to tie all the power supplies together, then a second card under the playfield to connect to the solenoids using the spade connections. In that way, a single connector can easily disconnect the the playfield so that it can be removed. (No more bundle of 100 wires that needs to be removed). Here some pictures including the power splitter. Since the power supply grounds need to float (after the first power supply in series), you have to disconnect the ground pin. These power supply splitters can be bought anywhere for about $2 or $3 and if you remove the two screws to take it apart, there is a separate piece of copper that connects between the ground pins. Remove that piece of copper and the power supplies are suddenly floating. I feel it is a much better solution than modifying the inside of the power supply.
The cards also contained a raspberry pi shield and an RS232 interface card. When trying to separate the two cards, I destroyed one of the shields. Arrrgghhh! Luckily I have 9 others. I learned that when you score the cards to break the apart, you really need to score both sides of the card. FR4 is really tough stuff. That annoyed me, but it really didn’t matter. I don’t have the parts to populate those two cards, so I’ll need to make another order from Mouser to get those parts. (I also found a band saw with a metal blade at work, so I might use that to separate my cards from now on).
Started rewriting the python sample machine that I wrote a week and a half ago. The first script was really just proving out the concept and making sure that everything was working properly. The next version of the script breaks the different functions down into different “modules” to make reading the code a lot easier.
The new version of the script also breaks many of the parts into threads and interfaces. The threads do the real work. There is a thread that updates the displays, a thread to communicate with the hardware, and a thread that runs the game rules. Since these have been separated, it makes sure that if one of the threads takes too much processing, the rest of the threads will continue without slowing down. (Basically good design practice). The second part is adding clean interfaces so that if somebody else wanted to write a game ruleset, they would only change one or two of the files, and wouldn’t need to change any of the communication or display python code. Again, just good design practice.
The prototype code that I did for Joe was really dirty and just proof of concept. The new code doesn’t do much more, but it is much cleaner. It is a good example of the difference between prototype code and production code.