@Bluesmash:

Versuch mal, ob du die Messung in eine PWM eingebaut bekommst.
Wenn das später mal funktionieren soll, denn hast du ja schon einen Strom in der Spule und durch die Freilaufdiode. Irgendwie mus die Messung da ja eingepasst werden. Wenn du mit der Messung anfängst, hast du also schon Fluß in der Spule, den du so einfach nicht da rausbekommem. Ausser durch Abwarten, was aber nicht so toll ist...

Die PWM wird eine Soft-PWM werden, weil AVR nicht ADC und PWM verknüpfen kann. Neuere AVR haben auch die Möglichkeit, den ADC durch ein bestimmtes Trigger-Ereignis starten zu lassen, vielleicht macht das es was einfacher. Sollte aber auch in Software gehen.

Das ΔL bei kleinerem Abstand größer wird ist nicht verwunderlich. Konsequemz ist, daß die Regelung um so schwieriger werden wird, je weiter das Target von der Spule weg ist.

Könntest du die Achsen deiner Diagramme korrekt bemaßen? Dann ist besser abzuschätzen wie die Werte sind.

In welchem Bereich liegt der später notwendige Strom in etwa? Das wäre für eine Beurteilung auch hilfreich, weil die Messung sich in dieser Gegend abspielen wird.

Daneben brauchst du später -- falls es klappen sollte -- die Ableitung I' des Stromes nach der Zeit bzw. die Größe des Stromanstiegs. Geht das noch in s Diagramm als gestrichelt oder so? Oder besser in ein extra Diagramm mit den gleichen Farben. Und Bemaßung

Die Annäherung bekommst du über den Differenzenquotienten
I'(t) ~ (I(t+Δt) - I(t))/Δt

oder

I'(t) ~ (I(t+Δt) - I(t-Δt))/(2·Δt)