Motor causing Arduino to Brownout

I have a 12v motor that peaks at about 500ma at start, the same occasionally when running and hovers around 100-300ma normally. The motor is supposed to run off battery but for this case I've been testing off a regulated power adapter (12v,1amp).

I'm using PWM to control motor speed switched by a heavy duty power mosfet with resistor on gate to pin, diode on +v and cap on v+->gnd. When starting the motor at full speed everything works pretty well but occasionally the Arduino would reset. To remedy this I added some big e-caps between motor +v supply and gnd and it helped to some extent except when starting the motor at a lower speed the Arduino would almost immediately reset. After I added some more logic caps it would corrupt the LCD first, stop working then reset.

Long story short I separated the power supplies so that the motor works off the main 12v supply and the Arduino off of a 9v battery and my problems were gone. What I'm curious then is how people are able to make their motor and processor/Arduino work off of the same power supply. I would think that a power adapter that can pull 1amp would not have issues.

I understand how an inrush occurs when first starting the motor which could result in what I am describing but why would the reset happen after normal operation? Shouldn't the power supply be able to keep up with the power requirements (unlike a battery which will have internal resistance and inductance). I could just keep adding bigger capacitors across the battery +v/-v but I have a feeling something else is happening here and I would really prefer not to require two different power supplies!

Thanks ahead of time for any insights!

First thing would to be use a bigger power supply. When starting a motor, the initial instantaneous current can be a lot higher than the 500ma you are quoting. You could, depending on the motor size and load pull much higher currents and thus are dropping below 6-7 volts and the regulator shuts off the arduino.

You could try putting a small diode in series with the 12v power to the arduino and putting some large caps between the arduino board +5v and board ground. The cap could help the arduino voltage be kept above the low voltage brown out and the diode could act somewhat like a check valve to prevent the arduino cap from backfeeding the motor.

I would use a variation of zoomkat's suggestion like this: 12v -> power diode -> Arduino Vin pin and large capacitor to ground. In other words, put the capacitor uptream of the voltage regulator instead of downstream.

Most switching regulators are not good at keeping up with very large changes in load current, hence the temporary drop in output voltage when the motor switches on.

In general a motor's stall current is at least 10 times its no-load run current, perhaps much more for a good motor. If it takes around 200mA when idling I'm sure it can pull several amps from standstill.

It dead easy to find out though, measure the motor's DC resistance when disconnected. The stall current is up to V/R where V is supply voltage and R is the DC motor resistance. If you supply can't handle that current its voltage will drop momentarily.