MOSFET H-Bridge

The problem I see with the P-channel is that based on Fig-2, page-3 of the datasheet, you need -5V dc
to get 20A. The Gate Threshold Voltage is -2V to -4V. You would need a -5V dc supply (a two conductor
wall wart with floating output leads so you can connect the "+" to your GND so the output is -5V
with respect to GND. You could then use that as the -V supply for an op amp and use a Gain of 1 Inverting
amplifier to convert the Arduino HIGH from +5V dc to -5V dc. Your VD for the fets will of
course have to be a proper negative supply voltage that is the mirror image of your VD for
your N-channel fets. (-30V to -60V for the P-Channel mosfets, with respect to circuit GND). This can be
accomplished using the same method you use for the negative op amp supply, namely a floating (two wire)
wall wart with the positive lead connected to circuit GND.

Ideally , what you need is a level converter that converts 0V - 5V to +5 - 5V range so the arduino LOW (0V) give +5V . The op amp inverter only converts +5V to -5V. It does not convert the arduino logic LOW
from 0V to +5V.

ie:

UNO OUTPUT P-CHANNEL OFF P-CHANNEL ON
LOW=0v +5V
HIGH=+5V -5V

To do this you need a GND, a +VDD and a -VDD
Arduino connects to only GND, and signal IN
P-CHANNEL GATE connects to signal out
+VDD is your system +5V dc
-VDD is your -5V obtained by using a floating 5V supply connect with POS lead to GND,
so the NEG lead reads -5V with respect to GND.

The voltage Level Converter would take the arduino 0 - 5V from a digital output pin and convert it
to +5 / -5V , with +5V being the output for a 0V in and -5V being the output for a +5V in.

TTL/CMOS level converters only convert 3V to 5V or vice versa so those won't work.
I know this kind of level converter can be done using an op amp comparator running on +5V/-5V.
The logic would reversed so instead of using a HIGH to turn ON the fet, you would output a LOW
which , if properly configured, would give a HIGH output of +5V from the Comparator. A HIGH would
give -5V from the Comparator output.

Truth Table
Vref = 1V (arduino LOW is always LESS than 1 V, therefore Vref=1V distinguishes a LOW from a HIGH)

Vin < V ref => +5V
Vin > V ref => -5V

I recommend the LT-1215 op amp but there are many other alternatives.