I’m building a project where almost everything, including everything that is power intensive like main board, display, rs232, Wi-Fi, etc, runs at 3.3v. However I also need to interface with a pair of optical encoders that need 5v. The project itself will take 12v as input.
My questions is simply how to most efficiently get both voltages given that the need for 5v is very low. Is it better to use a good buck converter from 12 to 3.3, and a small different one to step back up, or is it most efficient to step down in two steps using two buck converters? Is there some smart way of just getting a bit of 5v from 3.3v without needing a buck converter? (I will obviously level shift the encoder input as well.)
If you are certain that the encoders require 5V, the most reasonable approach is to have a 5V stepdown regulator power the encoders, a 3.3V stepdown to power the MCU, and 5V to 3.3V logic level shifters for the interface.
You seem to have converters a bit confused. A "Buck" converter bucks the voltage down, never up. A "Boost" converter boosts the voltage. A "SEPIC" is a Single Ended Primary Inductor Converter that acts as both a boost and a buck converter. It will step up or down, depending on the input voltage in relationship to the set voltage.
Posting a link to "Technical Information" on the encoder will help answer the question. It may be compatible with 3V3 but without the data sheet no clue. Also posting links to "Technical Information" on the other hardware items will also help. By the way Which Arduino are you using?