Nachdem ich im letzten Teil die Installation der Arduino-Matlab Packages zum Laufen bekommen habe, kann es nun weitergehen. Ziel dieses kleinen Beispiels ist es ja, an einen Arduino Uno einen NTC-Widerstand anzuschließen. Dieser soll als analoger Temperatursensor dienen (was er ja ist 😀 ) und über einen der A/D – Eingänge des Arduino eingelesen werden. Matlab soll dann schlussendlich die eingelesenen A/D- Werte in Temperaturwerte umrechnen. Das Ganze soll über eine gewisse Zeit laufen, wobei alle paar n-Sekunden ein Wert eingelesen wird. Am Ende soll ein wunderschöner Temperaturplot mit Temperatur über Zeit erstellt werden.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Beispielscript um mit ArduinoUno einen Temperaturverlauf aufzuzeichnen % 02/2016 by I.Bihlo %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %a = arduino('com5','Uno'); a = arduino('com5','Uno','TraceOn', true) analogpin=0; analog=0; %ein paar konstanten für die weiteren berechnungen % r=2200; %Spannungsteilerwiderstand rt=0; %das wird der errechnete widerstand des NTC urt=0; %das wird der errechnete Spannungsabfall am NTC % konstanten für berechnung der Temperatur aus NTC Widerstand % B25=3977K a1=3.354016E-03; b1=3.2569850E-04; c1=2.61013E-06; d1=6.38309e-08; rref=2200; %Lesen eines Temperaturabhängigen Widerstandes am Analog Eingang A0 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% for x=1:50 analog(x)=readVoltage(a, analogpin) %Liest den AnalogIn von A0 und gibt in Volt aus urt(x)=5-analog(x); %spannungsabfall am NTC rt(x)=(r/analog(x))*urt(x); %widerstand des NTC %berechung der temperatur rvsrref(x)=rt(x)/rref; temp(x)=1/(a1+(b1*log(rvsrref(x)))+(c1*(log(rvsrref(x)^2)))+(d1*(log(rvsrref(x)^3)))); tempc(x)=temp(x)-273.15 %Kelin in Celsius umrechnen pause(2); end clear a; %plot den mist figure(1); time=1:50; plot(time,analog,'b'); grid on; hold on; plot(time,rt/1000,'r'); plot(time,urt,'g'); plot(time,tempc,'m'); legend('Analogspannung des ADC','Widerstand des NTC in kOhm','Spannung am NTC','Temperatur [°C]'); %ende
Toller Artikel. Kann es sein, dass da eine Klammer verrutsch ist?
float temp = 1.0 / (a1 +
(b1 * log(rvsrref)) +
(c1 * log(rvsrref) * log(rvsrref)) +
(d1 * log(rvsrref) * log(rvsrref) * log(rvsrref)));
Gruß