Firmware for solenoid driver board done

Firmware has been completed and tested for the solenoid driver board.  I added a little bit more functionality to allow inputs that are not used to kick a solenoid to be used as state inputs.  That works swimmingly well.

The solenoids can now be kicked using either the input, or the processor setting the bit to tell the solenoid to kick.  If set by the processor, the solenoid can be configured to automatically clear the bit, or it can keep the input set until the processor tells it to clear.

The solenoid can be configured to use an initial kick of variable length, or it can be configured to give a hard initial kick, and then a PWM to “maintain” the solenoid.  (i.e. good for flippers where you want a hard kick, then a sustain so you don’t burn up your coil.)  It also has a configurable dead timer so a hardware errors can cause a solenoid to kick so frequently that it burns up its coil.

Next up is to make up an LED driver board (simple since it is a single chip and about ten connectors) and test that one.  Of all the boards, that is probably the simplest. )  After that, all that is left is trying to finish the macro language to run the actual machine.  At that point, I should have a complete card set to run a pinball machine with a simple way to create a set of rules for scoring, and moving between modes.

I’m starting to worry that the Raspberry Pi won’t be beefy enough to run what I need.  I started looking into running Java on the pi so that I could run vlcj.  (vlcj are the java binding for the VLC player).  I don’t think the VLC player is currently supported on the raspberry pi using hardware acceleration which seems like a big issue.  It means that my video playback is going to eat up a lot of the CPU time.  It might be that the raspberry isn’t quite ready, and I simply do my prototyping on some mini-ITX platform.  (That was my original plan before acquiring the pi, but I got excited that I might be able come up with a simpler/more elegant solution.)  Now I’m starting to worry that the CPU will be underpowered when using video playback.  I’m assuming that there will be a video playback loop running continuously to tell you what mode you are in, for splashiness, etc.

2 responses to “Firmware for solenoid driver board done

  1. Does your PWM approach mean that you’re going to avoid two-stage flipper coils and the EOS switch?

    • Absolutely. The configuration allows you to set in initial kick in ms (1-255ms). It also let’s you pick the “sustain” PWM value. This is 1-15ms out of a 15 ms period. You could have an initial kick of 100 ms, and then use the PWM to only power the coil at for 10/15ms by setting the configuration bytes for the solenoid to 0x64 0x0a. The real reason is that I can use a single high voltage for all of the solenoid coils, and using the initial kick and PWM, I can reduce the strength of the solenoid. The other thing is that you can reduce the amount of circuitry that you need. My goal is to make the wiring as simple as possible, and it is much easier for me with my background to throw all of the heavy lifting on the processor instead of adding two more wires, a switch, an extra diodes, and have to buy a more expensive coil.

      The added bonus is that I can use the exact same hardware to “tune” the strength of the flippers, slingshots, and other features. I don’t know that any other pinball machine is currently doing this.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s