Tapping the flippers (OPP)

351 views
Skip to first unread message

Pinball People

unread,
Oct 8, 2018, 11:51:50 AM10/8/18
to MPF Users
Hi!

I've got sort of a feature request/question/discussion: I'm running OPP boards and I was wondering if tapping (pushing the flipper buttons ever so slightly to get a soft flip, essential on many EE machines) could be implemented. My theory is that pressing the button, the coil is fired for exactly the period of time that I configured, even if the button is pressed for a shorter period of time. If that mechanism would be changed so that the coil stays on until the button is released or the maximum firing time is exceeded, I suppose tapping would be possible. I can tap my fliptronics games and even my JPP machine.
However, since MPF only configures the driver boards to hook up the buttons to the flipper coils with the given firing times, the changes would probably be in the firmware, right?

Cheers,
Sebastian

jabdoa

unread,
Oct 8, 2018, 1:48:07 PM10/8/18
to MPF Users
Hi Sebastian,

This would be something to implement for Hugh. We can do it with the P-Roc (by programming a disable rule on release). Not sure how other platforms implement it. For OPP we would need a new option/flag to the rules.


Jan

Cadrion

unread,
Oct 12, 2018, 5:17:54 PM10/12/18
to MPF Users
I wonder if Hugh could do it without much of a change to mpf.... Maybe run a timer on the direct input as to where the strength that is set in mpf is the max strength/time. One the low end, if the switch was hit for any lower amount of time, that gets directly sent as the coil pulse.

So, let's say the mpf strength was set for 50ms. Opp firmware may be able to handle it as follows: a switch inputs of 25ms would be a 25ms pulse. A switch input of 60ms gets clipped by the 50ms max, so the pulse would be 50ms. If Hugh could do it like that, the config in mpf would not change, but feathering the flipper button would still work.

I am pretty sure I know what pinball people is talking about.. I do it on The Hobbit to hit the man and elf drops. That's a great find.. hope Hugh can pull it off.

OPP

unread,
Oct 12, 2018, 8:20:15 PM10/12/18
to MPF Users
Sorry for the late response, but literally the only time that I notice things is when Jan brings them to my attention.  (Thanks, Jan)  Your assessment of what the OPP hardware does is spot on.  When you set up the initial kick, that is the minimum time for the flipper flips regardless of whether the button is just tapped or pressed for a longer period.

So here are a couple quick questions for you:
1. are you PWMing your flippers?
2. are the flippers dual wound flippers?

If the answer to 1 is no, and the answer to 2 is yes, why not configure your flippers as on/off and set the initial kick at 1ms?  (I believe most people are running dual wound flippers in their machines so that's why I want to make sure that a change is necessary.)  The reason that I hesitate that configuring it that way will work for you is the mention a maximum firing time.  The only other thing I can imagine is trying to implement no hold flippers with tapping.  Is that what you are trying to achieve?  I'm just trying to understand your use case.

Cadrion

unread,
Oct 12, 2018, 9:24:03 PM10/12/18
to MPF Users
Maybe another idea would be to have OPP (if using single would coils) keep the existing config for kick time, but if the hardware sees the flipper switch open before the kick time is expired, have the falling edge (release of button) cancel the pulse. This would also give a possible shorter flip pulse.  I know once my machine is under way, I'd be interested in such a feature.  My plan is to use single wound.

OPP

unread,
Oct 13, 2018, 8:32:59 AM10/13/18
to MPF Users
I'm just trying to figure out what Sabastian needs and if he is using an on/off flipper with a dual wound coil, it should be very simple for him just to change the initial pulse to 1 ms, and he would have what he needs.

What Cadrion is talking about can be implemented.    I just have to add another state to the state machine to get that to work. The more difficult question is trying to figure out a way to configure the flipper to use this new method.

There are two ways that I can figure out how to do this:
1.  Check if there is a coil configured as PWM, and if so, change it to this new type.  (The down side of that, is if I implement that, it will change everybody's pinball machine that is in the field if they update to the new version.  That kind of scares me, but it might be that people only configure PWM coils on flippers.  If that is the case, the change would change all machines, but it would be for the better.)  This change could be made with absolutely no changes to MPF.  (Why make Jan's job harder?)
2.  Add a configuration bit.  (The down side of that is it will require a change from MPF.)  That means that it will take more time to implement since we need to coordinate between OPP firmware and MPF software.

jabdoa

unread,
Oct 13, 2018, 11:14:51 AM10/13/18
to MPF Users
Hi Hugh,

we can easily add new bits/flags in MPF as long as the old version still works in OPP protocol. We got four types of general rules in MPF:
1. Pulse + Cancel: This means that we pulse a coil when a switch becomes active and cancel the pulse when the switch becomes inactive.
2. Pulse + Cancel + Hold: This means that we pulse and then enable a coil with pwm when a switch becomes active and cancel the pulse when the switch becomes inactive.
3. Just Pulse: This means that we pulse a coil when a switch becomes active but never cancel the pulse.
4. Pulse + Cancel + Hold + EOS: This means that we pulse and then enable a coil with pwm when a switch becomes active and cancel the pulse when the switch becomes inactive. Additionally, the pulse is changed to pwm when EOS becomes inactive (its usually normally closed).

For most platforms 1 and 2 is basically the same rule. rule 1 is rule 2 with hold power/duration=0.

We use type 2 for single wound flippers. For dual wound we use type 1 on the main/high power coils and type 2 on the hold coil (often with 100% pwm = full enable). When flippers have EOS we use type 4 rules (for dual wound flippers with hold=0). Rule 3 is used for pop bumpers.

Not all platforms support all four types of rules. For OPP it seems like we are using type 3 rules as type 1. Type 2 probably does not cancel the pulse. So I guess we should add this behaviour? Makes sense?


Jan

Cadrion

unread,
Oct 13, 2018, 1:02:00 PM10/13/18
to MPF Users
Man you guys are awesome.. I love watching people work together.

OPP

unread,
Oct 13, 2018, 1:23:31 PM10/13/18
to MPF Users
Nobody gets called awesome until it works for the end user.  Here is a new version of code (0.3.0.1 because it has absolutely no testing, but I think it should work).  I added a flag (0x20) in the solenoid configuration which is now called CAN_CANCEL.  That allows the initial kick pulse to be cancelled.  (nothing else has changed, except of course I had to update to a newer version of the Cypress PSOC Creator 4.2).  If I get time today, I will try to do some testing on some real hardware here to make sure that it works as expected.  (I believe this change will work without any issues).

I've attached the update, or here is the link for the from the repository if you prefer.
Gen2.rev0.3.0.1.cyacd

jabdoa

unread,
Oct 13, 2018, 2:29:42 PM10/13/18
to MPF Users
Added some code for MPF: https://github.com/missionpinball/mpf/pull/1238. Does that look right?

Jan

OPP

unread,
Oct 13, 2018, 5:03:20 PM10/13/18
to MPF Users
Looks good, Jan.  Thanks a lot for updating MPF.  That would have taken me much longer to figure out all the places needed to add that new flag.  You rock!

jabdoa

unread,
Oct 13, 2018, 6:15:13 PM10/13/18
to MPF Users
Backported it to 0.50.17. Also in 0.51-dev12.

Jan

Pinball People

unread,
Oct 15, 2018, 4:48:32 PM10/15/18
to MPF Users
Oh wow!

I got distracted with other stuff for some time and just came back here. Great to see that ya'll working on making it happen! I'll try the new feature as soon as possible, tomorrow probably.

To answer Hughs question: Yes, dual wound, no PWM. What I want to achieve is this:

OPP

unread,
Oct 15, 2018, 5:28:25 PM10/15/18
to MPF Users
If that is the case, you shouldn't even need to update the firmware.  I think if you change your "pulse_ms" to 1 ms, and it is an on/off flipper it should work as expected.  (Of course if you have a single wound flipper with PWM, you would need the updates that Jan and I added.)

jabdoa

unread,
Oct 15, 2018, 5:35:43 PM10/15/18
to MPF Users
I guess he only wants that if you tap the flipper button really short - not always. Setting pulse_ms to 1ms would break normal flipper behavior.

Jan

Pinball People

unread,
Oct 17, 2018, 2:00:34 AM10/17/18
to MPF Users
Exactly!

OPP

unread,
Oct 17, 2018, 5:37:11 PM10/17/18
to MPF Users
Hmmm, I guess I don't get it.  If it is a dual wound flipper that is configured as an on/off solenoid, there is the initial kick (configured as pulse_ms), and then it stays on for as long as you hold the flippers with full strength.  (i.e. no PWM, but just a constant on high voltage applied to the flipper coil).  So let's say the the pulse_ms was previously set to 35 ms.  That meant that before the flipper's initial kick would be held for a minimum of 35 ms before allowing the flipper to be deactivated.  So now, change it to pulse_ms of 1 ms.  That means the flipper is active for exactly the same length of time that you "tap" the flipper button.  Why shouldn't that work?  The change that I made was really only to allow that 35 ms period to be deactivated much earlier which since it is a dual wound flipper shouldn't matter if the pulse_ms is reduced.

So during lunch, I googled around and found that the fastest tapping person was this Japanese dude that could tap a button 16 times a second.  1/16 = a minimum pulse width of 62.5 ms.  He was doing on/off cycles, so cutting it in half seems it is around 31.25 ms.  When energizing the solenoid for 32 ms, you end up pumping the inductor current which makes it stay on longer than the actual amount that it is powered because of the time constant of the inductor.

If that is the case, what seems to really be happening in the video is that a very, very short pulse is being sent to the flippers to very briefly add an impulse to the ball so it jumps the gap.  If that is the case, why wouldn't changing the pulse_ms to 1 work.  Maybe I'm not understanding how MPF is using that field.  (Or really, I'm mostly worried that what I changed isn't what Sebastian really wanted.)

jabdoa

unread,
Oct 18, 2018, 3:06:13 AM10/18/18
to MPF Users
Hi Hugh,

Your change is exactly what he wanted. Allowing the pulse to be canceled (latched triggering). That is the same for FAST and P-Roc. Brian Cox played around with FAST and found that you can more easily tap pass the ball this way if you use longer pulses with lower pulse power (e.g. PWM the pulse). Not sure if we can currently PWM pulses in rules in OPP but the general concept should work. Guess we need to wait until somebody tries it ;-).


Jan

Pinball People

unread,
Nov 22, 2018, 2:23:49 PM11/22/18
to MPF Users
Oh, completely forgot to give feedback here: I have long installed the new firmware and tapping works now! Thank you so much Hugh and Jan for implementing my request so promptly! :)

kaydeeH

unread,
Sep 30, 2021, 9:38:07 PM9/30/21
to MPF Users
Sorry to dredge up a very old thread, but earlier in the thread, Jan describes, "2. Pulse + Cancel + Hold: This means that we pulse and then enable a coil with pwm when a switch becomes active and cancel the pulse when the switch becomes inactive." How do I get my MPF/CobraPin/OPP system to do this particular kind of flipping so that tap passing works? Tap passing is a pretty big thing on this playfield, so I'd really like to be able to. Right now, I can do "softer" flips if I'm EXTREMELY quick on the flipper button, but even then they hit it much too hard. So maybe I'm already in this mode and I'm just not tuned right yet, but I'm not sure. I'm using the original Bally dual wound coils, but I've only wired up the power winding and I'm using PWM for hold (I may eventually switch over to the traditional EOS switch due to buzzing, but we'll see), so I'm essentially using it as a single wound coil right now (not enough coil hookups on the CobraPin to run it as software managed dual coils). I'm running 48v (vs the 43v the coils were designed for). Current config looks like this:

coils:
  c_flipper_right_main:
    number: 0-0-10
    default_pulse_ms: 15
    default_hold_power: 0.125
  c_flipper_left_main:
    number: 0-0-8
    default_pulse_ms: 15
    default_hold_power: 0.125
  c_flipper_right_upper:
    number: 0-0-11
    default_pulse_ms: 15
    default_hold_power: 0.125
  c_flipper_left_upper:
    number: 0-0-6
    default_pulse_ms: 15
    default_hold_power: 0.125

Thoughts? I'm not sure yet that 15ms pulses are enough (may need to go up to 18 or so), the ball gets pretty slow by the top of the playfield, so I'm not sure reducing that is an option unless something else changes. At 7ms they were super weak.

Thanks,
Kaydee

cobra18t

unread,
Oct 1, 2021, 12:16:31 AM10/1/21
to MPF Users
You are already using the "CAN_CANCEL" feature in OPP. This is the default for flippers and the log you sent yesterday shows this is the case. That is the feature to enable tap passing as it allows cancellation of the pulse.

It sounds like you pulse--regardless of length--is just too powerful for the feel you want. Dialing the voltage down is a good first step. Most switching supplies have a potentiometer to adjust the voltage and can generally adjust +/-10%. This will change the feel of all your coils, of course, so you may have to compensate.

OPP does not currently have the ability to adjust pulse power by using PWM on the initial pulse. It is a  feature we are actively discussing.

kaydeeH

unread,
Oct 1, 2021, 1:05:28 PM10/1/21
to MPF Users
Thanks for that. I'll play with voltage and timings and see if I can dial it in. :)

kaydeeH

unread,
Nov 28, 2021, 2:20:41 PM11/28/21
to MPF Users
Hi all,

I thought I'd come back and tie a bow on this, from my end, just in case someone else comes looking for an answer in a similar situation. I now have the game tap passing LIKE A DREAM. There may be more than one way to get it there, but this worked great for us.

First, some background info. We are doing this on an older Bally Paragon with serial dual wound coils on a CobraPin. I was running the voltage at 48v (vs the OEM 43v) but, as suggested, I dialed it down to exactly 43v. Still wouldn't tap pass, not even close. Originally we weren't using an EOS switch, just low default hold powers and voltage applied only to the power coil, bypassing the low power coil entirely, essentially treating it like a single coil. We tried various combinations of default_pulse_ms values and default_hold_power values, but the flippers only went from too weak to make it up the playfield to more than strong enough to make it up the playfield, but never able to tap. Tap passing just wasn't possible, it would hit too hard every time. So we tried using the low 1ms default_pulse_ms setting discussed above, just to see what would happen, but predictably the flippers wouldn't hit the ball up the playfield at all (it was kind of like all you could do was tap pass).

So here's how we got it to work... I rewired the coils, adding EOS switches the way Bally originally wired them so they would mechanically route the voltage across the dual coils (we hadn't run switch wires to have a software controlled EOS and didn't want to rework that, so we did it the tried and true old fashioned way, but this would probably work well with software controlled EOS switches as well). After that, we removed the default_hold_power setting and enabled the allow_enable setting. Finally, we set default_pulse_ms to 1ms. Magic ensued! Not only are the flippers silent when holding (vs a very loud hold buzz with default_hold_power set to 0.125 - these old flippers just don't like PWM very much), but they flip the ball all the way up the playfield when you want them to, and they tap pass fantastically. The one deviation from the way Bally originally wired the flippers is that we didn't link the upper and lower flippers, they're just treated as four distinct flippers/coils that share common activation switches (the game never had staged flipping, so no loss of functionality there, though you could add that in with secondary stacked flipper switches). This allowed us to implement it with only four coil drivers and two managed switches, instead of up to 8 drivers and 6 switches, which would have required a lot of rework to the wiring and an extra driver daughter board in our case. Again, this is definitely not the only solution, but the one that worked very well for us. Here's how our config looks, just for clarity:

coils:
  c_flipper_right_main:
    number: 0-0-10
    default_pulse_ms: 1
    allow_enable: true
  c_flipper_left_main:
    number: 0-0-8
    default_pulse_ms: 1
    allow_enable: true
  c_flipper_right_upper:
    number: 0-0-11
    default_pulse_ms: 1
    allow_enable: true
  c_flipper_left_upper:
    number: 0-0-6
    default_pulse_ms: 1
    allow_enable: true

flippers:
  left_flipper:
    main_coil: c_flipper_left_main
    activation_switch: s_flipper_left
    debug: true
    enable_events: ball_started, enable_playfield_coils
    disable_events: ball_will_end, service_mode_entered, disable_playfield_coils
  left_flipper_upper:
    main_coil: c_flipper_left_upper
    activation_switch: s_flipper_left
    debug: true
    enable_events: ball_started, enable_playfield_coils
    disable_events: ball_will_end, service_mode_entered, disable_playfield_coils
  right_flipper:
    main_coil: c_flipper_right_main
    activation_switch: s_flipper_right
    debug: true
    enable_events: ball_started, enable_playfield_coils
    disable_events: ball_will_end, service_mode_entered, disable_playfield_coils
  right_flipper_upper:
    main_coil: c_flipper_right_upper
    activation_switch: s_flipper_right
    debug: true
    enable_events: ball_started, enable_playfield_coils
    disable_events: ball_will_end, service_mode_entered, disable_playfield_coils

The only other thing I had to do was to adjust the flipper leaf switches so that the switch only closed at the very end of the button press depth, further minimizing the amount of time the switch would be closed when you intended to tap instead of hard flip. Prior to that adjustment it was far too difficult to get a micro tap when you wanted it, so you ended up hard flipping it more often than you intended to.

And that's it. Our Paragon retheme on modern hardware now tap passes with the very best of the best! Thank you for this thread and for the work put into both the software and the hardware to make this work!

Kaydee

cobra18t

unread,
Nov 29, 2021, 3:07:04 AM11/29/21
to MPF Users
Glad you got it working the way you want!

There is an OPP firmware candidate that supports "pulse_power" in progress now. That would be another way to make the pulse softer for tap passes without using the high current EOS switch. You could maintain longer pulse times so you could still make the long shots. It is not ready yet, but I can post here when it is.

Todd Legere

unread,
May 29, 2022, 6:38:15 AM5/29/22
to MPF Users
Hello, I am trying this setup for my flippers on my two cobra pin machines. One is a Williams Phoenix the other is a Gottlieb Close encounters of a third kind.
Both machine have the original EOS in place for the flippers. If I understand this post the secret sauce to make tap pass work is the default_pulse_ms: 1

Modified it to match yours (like below except matching my numbers and comment out default power)
coils:
  c_flipper_right_main:
    number: 0-0-10
    default_pulse_ms: 1
    allow_enable: true
  c_flipper_left_main:
    number: 0-0-8
    default_pulse_ms: 1
    allow_enable: true

So far I have not been able to replicate your success with the tap pass. My entire machine configs are in Github. Perhaps its something simple or I am not tapping the flipper quick enough or my technique is wrong in the flipping.

Any suggestions to make this work ?

Todd Legere

unread,
May 29, 2022, 6:42:44 AM5/29/22
to MPF Users
Just one item makes me think its related but not sure. In my config.yaml (should I disable this)

psus:

    default:
release_wait_ms: 50

cobra18t

unread,
May 29, 2022, 12:24:43 PM5/29/22
to MPF Users
The release_wait_ms setting does not affect autofire devices, so that should not be it. You don't even need your pulse setting at 1ms since OPP flippers have a "CAN_CANCEL" setting that MPF sets by default. So it will cancel or stop a pulse when the switch is released.

What does your power system look like? The original transformer or a switching supply? What voltages are you running versus the designed coil voltage?

I have a pull request open to add default_pulse_power as an option to MPF to help in situations like this. You would need to upgrade your OPP firmware to 2.3.0.5 to take advantage of it. It allows you to PWM the initial pulse to tame the initial kick.

cobra18t

unread,
May 30, 2022, 1:44:23 PM5/30/22
to MPF Users
I confirmed that the CAN_CANCEL feature is still working. So the pulse is only active as long as the button is pressed. Since you are using the original coils and power systems, it might be you are just not tapping fast enough. I am not very good at tap passes. Maybe those flippers were harder to tap pass originally. You can may tap passes easier by lowering the power on the pulse. In your case, I see these options:
  1. Get the latest OPP firmware as well as the MPF code from https://github.com/missionpinball/mpf/pull/1639 to enable pulse power support. You could use a lower pulse power (50%?) for a short time (5-15ms?) and then your normal hold since you are using dual wound coils and high power EOS. This would weaken the initial pulse to make tap passes easier. This would require some testing and tuning to get just right.
  2. Lower your coil voltage from the power supply. This would weaken all your coils all the time and would likely require a retune of your coils.
  3. Insert a high power low value resistor in line with the pulse coil but not the hold coil. Be careful not to use something that gets so hot it burns your house down.
  4. Tune or replace your flipper switches. Your switch hardware may be limiting you. Are you using low voltage gold plated switches or high voltage tungsten?
  5. Practice your ninja reflex skills to get faster at tap passing

OPP

unread,
May 30, 2022, 5:03:36 PM5/30/22
to MPF Users
CAN_CANCEL is tested with every regression tested version of firmware.  So anything such as a.b.c.0 is guaranteed to be tested.  A test firmware release such a a.b.c.d (where d != 0) should work (i.e. I didn't do a full regression test of every feature), but I did not take the time to go back and test all features.  Usually these are test features that effect a very targeted section of code and I don't feel it warrants a full regression test.  It try never to put a version of code on the server that will break functionality, but it is always a possibility.   

Todd Legere

unread,
Jun 5, 2022, 8:52:56 AM6/5/22
to MPF Users
Thank you for the helpful suggestions. I have begun by practicing my tap pass and corner bounce off slingshot corner using my Xenon Pinball machine and my Virtual Pinball machine.
On my Xenon machine I can not tap pass but starting to get the hang of the corner slingshot bounce passing (same is true for my Virtual machine). My virtual pinball cabinet has over 400 different tables. I beleive that the true problem with my tap pass is I presently dont have the lightning reflex skills to tap pass. I'm fortunate to play on multiple local pinball machines and the results of tap pass is the same (I'm to slow and need more practice). Many of my more skilled friends have demonstrated the tap pass on the same machines that I play on.

After I have proven that I have the correct technique down on other machines I will revisit this. For now I'll use the corner slingshot bounce for tap passing.

BTW> I'm dying to build another machine maybe an Alien Poker but finding a machine for rebuild projects are getting scarce and the price has doubled for picking these machines up.
Reply all
Reply to author
Forward
0 new messages