"Proper" mixing is open to debate :-).
An issue is that you have to make decisions about how fast a track is moving under pure signals from a single pot and what to do when signals from the other pot are included. For example, if you push the FB (Forward-Backward pot fully forwards, and if both motors then run at full speed ahead, how do you deal with the addition of a small amount of LR (Left-Right) pot being added. To get rotation you have to have one track going faster that the other. So, if you are already running at maximum forwards speed on both motors you must decrease one or other track speed in order to turn. But, if you had been standing still you would have accelerated one or other track to achieve the same result.
So, all that said, here is a simple off-the-cuff starting solution out of my head which seems like good start.
If pots are mechanically independant then both can be at 100% simultaneously.
If both are on a joystick type arrangement, if Yaxis = 100% and Xaxis = 0%, then adding some B will usually reduce A. A joystick could be constructed where the above is not true, but these are unusual.
Assume that the joystick is of the type that increasing Y% when X = 100% will reduce X. Other assumptions can be made.
FB = front-back pot. Centre zero, +Ve for forward motion of pot
LR = Left right pot. Centre zero. +Ve for pot at right.
K is a scale factor initially 1.
If any result exceeds 100% then adjust K so result = 100% and use same K value for other motor also.
- eg if Left motor result = 125 and Right motor result = 80 then.
As 125 x 0.8 = 100, set K = 0.8. Then.
Left = 125 x 0.8 = 100%. Right = 80 x 0.8 = 64%.
Then:
Sanity checks:
LR = 0 (centered), FB = full fwd -> Both motors run full forwards.
LR = full left, FB = 0 ->
Left motor runs full backwards,
Right motor runs full forwards.
Vehicle rotates anti clockwise.
FB was 100%, Lr = 0%. Add 10% of LR to right.
L = FB+LR = 100%- + 10%
R = FB-LR = 100%- - 10%
If largest axis < 100%, scale until = 100%.
Then scale other axis by same amount.
If you have an H-bridge controller that can switch cleanly at a PWM frequency which is sufficiently fast relative to the motor's inductance (the lower the inductance, the faster the PWM must be), driving it with a waveform that's 60% forward and 40% reverse will be a good way to drive it forward at 20% speed; 40% forward 60% reverse will be a good way to drive it backward at 20% speed. If both conditions above are met, driving a motor in this fashion will give a speed response which is much more linear than PWM'ing between driven and "open-circuit", and will also be more energy-efficient. Additionally, trying to drive the motor at a speed which is somewhat slower than it's presently turning will provide regenerative braking [i.e. allow motor energy to be fed reasonably nicely into the supply].
The important thing to note is that running the PWM too fast for the H-bridge controller may waste energy in the H-bridge controller; running it too slow for the motor inductance will increase the amount of energy wasted in the motor. If the PWM is much too slow, driving the motor at half speed may use many times more energy than trying to run it at full speed. If, however, the motor is driven with a fast PWM and the H-bridge can handle it, efficiency may be very good; a stalled motor driven at 75% forward 25% reverse will have about half the torque as would one driven at 100% forward, but will only take about a quarter of the power [about 75% of the time, it will draw about half as much current from the supply as it would if on 100%, and the other 25% of the time it return that same amount of current].
Best Answer
So upon looking at that motor, I believe you can not power it directly with Arduino PWM power, you need to buffer the signal because the PWM is directly powering the motor.
The problem here is that digital pins on an Arduino (Atmega 328p and all other microcontolers) are designed to only provide a small amount of current (typically < 20mA). What you really want is an H Bridge system, this is a chip or device that typically takes a single PWM signal and a direction signal. An example of one that would work for you is the L293, Sparkfun and Adafruit have both information and motor control boards based on these chips. The good news is that they still are made in DIP packages so you can buy some and drop them in a bread board.
Here is an example using the L293 chip mentioned: