Ich bin heute nach einer Woche rumprobieren mit verschiedenen stärkeren und schwächeren Motoren auf ein, hoffentlich finales, Problem gestoßen. (Schaltplan ist anbei). Ich steuere einen Motor (0,1 - 30 V, der bei 20V 1 Ampere zieht) mit meinem Arduino Nano und einem Mosfet an.
Ich will einfach nur den "Fade" Sketch laufen lassen. Ich habe ein verstellbares Netzteil und bei bis zu 6 V funktioniert der Sketch einwandfrei, ab dann dreht sich der Motor ständig nur noch konstant, und ich hab keine Ahnung warum.
Wenn ich Deine Schaltung richtig verstehe, versuchst Du eine High-Side-Ansteuerung mit 5V, was bei höheren Spannungen nicht funktioniert.
Suche mal nach "p-channel high side switch circuit", wie man es mit einem zusätzlichen Transistor richtig macht. Oder Du wechselst auf Low-Side, also +12V - Motor - FET - GND
Bei PWM sollte zwischen Arduino und Gate ein Widerstand von ca. 220 Ohm, damit die Ladespannung des parasitären Kondensators nicht den Ausgang killt. 10 kOhm gegen GND halten den Motor ruhig, solange der Arduino-Ausgang beim Starten hochohmig ist.
EDIT: Und die Freilaufdiode nicht vergessen, siehe #4!
Wie agmue schon schrieb - bei einem FET bezieht sich das Gate auf Source.
Bei einem N-FET liegt Source auf GND (mit dem Arduino identisch) und am Gate liegen 5V im durchgeschaltetem Zustand an - der FET leitet und 'schaltet GND durch'.
Beim P-FET liegt Source auf +Vdd.
Der sperrt, wie der N-FET, wenn Gate zu Source 0V hat - hier musst Du also das Gate auf +Vdd 'ziehen', damit der FET sperrt.
Bzw. auf 'unter Vdd', damit dieser FET leitet - da der Arduino nur 5V kann, die GND eh identisch sind, siehst Du ab ca. 12V am Gate '-7V', was zum voll Durch schalten reichen sollte.
Im Gegenteil - wenn Du den FET mit mehr als 20V versorgst, hast Du (von Source aus gesehen) bei LOW eine Gate-Spannung von -20V - eine größere Differenz wird der FET einfach mit Sterben beantworten.
Entweder Du verbaust einen N-FET - dadurch geht DIr aber der GND-Bezug der Last verloren (da der FET ja den GND trennt), oder Du suchst nach Highside-Treibern - gibt's auch für N-FETs (Die haben im Allgemeinen einen besseren RDSon).
Deine Probleme wurden dir ja schon genannt.
Mit der hier gezeigten Schaltung sollte das dann funktionieren.
Die Widerstandswerte kannst du gemäß agmues Beschreibung anpassen.
Was die Schutzdiode betrifft, die brauchst du unbedingt und nennt sich "Freilaufdiode".
Die muss minimal den max. Strom abkönnen, den der Motor braucht.