I have a Beaglebone Black revC. I want to use a brushless motor (EMAX XA2212/1400KV) with ESC (hobbywing skywalker 20) . Beaglebones Vpp voltage is 3.3V and ESC gives ( gives beep about 2 sec interval) "Throttle signal is irregular" trouble signal. I think this ESC accepts only 5V Vpp. How can fix this? How can i change 3.3V PWM to 5V PWM
\$\begingroup\$ The premise of your question is probably erroneous. Likely your problem is an actually unstable signal. Note that using a multitasking linux system to drive something controlled by an ESC is probably a bad idea. \$\endgroup\$– Chris StrattonAug 9, 2018 at 20:56
There's lots and lots of ways to do this but will depend upon your constraints, such as switching speed, acceptable losses, etc.
Something like this would work. When the GPIO is high, Q1 is on, bringing the gate of M1 low and therefore turning it on:
simulate this circuit – Schematic created using CircuitLab
One alternative option would be to use an op amp circuit (non-inverting might suit you best to keep things simple). Consider timing requirements, though.
Another option would be to use a CMOS inverter circuit (two MOSFETs; one n-type and one p-type). The CMOS inverter will, naturally, invert your signal, so just invert your PWM in the software (instead of leaving the output as "PWM_output=125", write "PWM_output_inverted=255-PWM_output"). The CMOS inverter will re-invert your signal back tot he correct polarity. Again, remember to take timing constraints into account for switching frequency.
\$\begingroup\$ An op-amp is the wrong choice. A CMOS buffer in an appropriate logic family could be the right one. However, it's more likely that the entire premise of the question is mistaken. ESC's are usually built with MCU's that are quite happy to accept a 3.3v signal. \$\endgroup\$ Aug 9, 2018 at 20:57