Is there a way to set a cap (maximum participant) number within the price set field?
Yes. In your Price Field Option on a checkbox field type you should see 'max participants' field so you can limit how many can sign up to any option. Just make it a $0 item if you need to have it as a 'free' option within a paid event.