I wrote a matlab script which uses local maxima that seem to work pretty good.
%Script to Find Frequency
%V1 is the Signal
Fs=1e-6; % Sampling Frequency
V1_abs=abs(V1); %rectify
V1_abs_inv=V1_abs*-1; %invert
[pks,locs]=findpeaks(V1_abs_inv,'MINPEAKHEIGHT',-1.5,'MINPEAKDISTANCE',5); %find peaks
figure(1)
plot(time,V1);hold on;
plot(time(locs),0,'k^','markerfacecolor',[1 0 0]);
hold off;
for i=1:length(locs)-1
freq(i)=1/(2*(locs(i+1)-locs(i))*Fs);
end
figure(2)
plot(freq)
min(freq)
max(freq)
mean(freq)