Resultaten ifr˚an m¨atningar var n˚agorlunda f¨orv¨antade d˚a precisionen p˚a konstruk-tionen och komponenterna beh¨ovde vara h¨ogre ¨an de vi hade tillg˚ang till och kunde tillverka. Men resultatet var tillr¨ackligt bra f¨or att besvara de forskningsfr˚agor vi formulerade i projektets start.
16
4.2. SLUTSATS
Den f¨orsta forskningsfr˚agan kunde besvaras och slutssatsen som kunde dras efter testerna fr˚an den optiska och den induktiva givaren var att den optiska givaren presterade b¨attre ¨an den induktiva givaren p˚a grund av slumpm¨assiga fel fr˚an den induktiva givaren.
Fr˚an tabell 3.4 kunde slutsatsen att f¨or mycket av bromskraften inte g˚ar direkt till lastcellen utan tas upp av andra komponenter i form av tr¨oghetsmoment, frik-tionsv¨arme och friktion i kullager. Detta skapar m˚anga potentiella felk¨allor vilket g¨or det sv˚art att f˚a ut v¨arden som ¨ar konsekventa.
17
Kapitel 5
Rekommendationer för framtida arbeten
Om en fullskalig dynamometer skulle byggas s˚a skulle en induktiv givare vara att f¨oredra d˚a dessa ¨ar mer slitstarka och klarar h˚ardare milj¨oer ¨an vad optiska givare g¨or [1]. Om man dock skulle l¨agga tid p˚a att g¨ora n˚agon form av skydd f¨or en optisk givare s˚a att den blir mindre k¨anslig f¨or milj¨o s˚a skulle den enligt v˚ara resultat vara att f¨oredra d˚a den ger mer exakta resultat ¨an den induktiva. En f¨ordel med den optiska ¨ar ocks˚a att den g˚ar att driva med hj¨alp av arduinon, det vill s¨aga ingen extern sp¨anningk¨alla beh¨ovs till konstruktionen.
Om en fullskalig dynamometer skulle byggas s˚a skulle mekanismen f¨or att f˚a ut kraften som motorn genererar ¨andras eller helt och h˚allet bytas ut mot en annan l¨osning. Detta skulle speciellt vara n¨odv¨andigt d˚ast¨orre motorer med mer kraft skall m¨atas d˚a detta skulle generera otroligt mycket friktionsv¨arme och andra f¨orluster med en liknande konstruktion som anv¨andes f¨or prototypen i detta projekt. Detta skulle resultera i d˚alig repeterbarhet hos dynamometern vilket ej ¨ar bra d˚a god re-peterbarhet ¨ar en l¨amplig egenskap f¨or dynamometrar. Speciellt f¨or dynamometrar som anv¨ands av f¨oretag d¨ar dynamometern tillf¨or en viktig del till produkten [18].
D¨armed skulle n¨asta steg bli att testa de andra kompakta bromsarna som anv¨ands i dag, och sedan m¨ojligtvis optimera en utav dom. D¨ar en eddy current bromsme-kanism troligtvis skulle vara den rimligaste att unders¨oka f¨orst. Ett omr˚ade som
¨aven ¨ar viktigt att unders¨oka ¨ar vid vilken temperatur motorn ska testas, det ¨ar framf¨orallt viktigt vid m¨atning av f¨orbr¨anningsmotorer [5].
Efter att en motor har k¨orts i dynamometern exporteras resultatet f¨orst till ex-cel och sedan till Matlab d¨ar resultatet plottas med en f¨orprogramerad kod. Detta skulle vara l¨ampligt att se ¨over d˚a det b¨or g¨oras mer automatiserat. S˚a efter en k¨orning ¨ar gjord s˚a plottas resultatet automatiskt p˚a datorsk¨armen.
19
Litteraturförteckning
[1] Hans Johansson. Elektroteknik. Institutionen f¨or maskinkonstruktion, Tekniska h¨ogsk., Stockholm, 2006.
[2] Alan C. Lloyd & Thomas A. Cackette. Diesel Engines: Environmental Impact and Control. Journal of the Air & Waste Management Association, 51:6, 809-847, 2001, https://doi.org/10.1080/10473289.2001.10464315.
[3] Nazanin Mansouri. A Case Study of Volkswagen Unethical Practice in Diesel Emission Test. International Journal of Science and Engineering Applications, HELP University, Malaysia, 2016.
[4] Fredrik Bark. Bel¨aggningsanalys av motorprovningen vid Volvo Aero Corpo-ration. Institutionen f¨or teknik och naturvetenskap, Link¨opings Universitet, Norrk¨oping, 2005, http://urn.kb.se/resolve?urn=urn%3Anbn%3Ase%3Aliu%
3Adiva-97814.
[5] Christoffer Lind & Tobias Nilsson. Ny m¨at-trigger i Scanias motorprovning.
Institutionen f¨or teknikvetenskap och matematik, Lule˚a tekniska universitet, Lule˚a, 2011, http://www.diva-portal.org/smash/record.jsf?pid=diva2%
3A1029189
[6] How To Set Up A Photo Interrupter (or Slotted Optical) Swit-ch On The Arduino. http://www.utopiamechanicus.com/article/
arduino-photo-interruptor-slotted-optical-switch/ (h¨amtad 2019-03-27)
[7] Nihad Subasic. Kursmaterial MF133X, vt 2019, F5 Sensorer. Industriell teknik och management, Tekniska h¨ogsk., Stockholm, 2018.
[8] elektrokit, Lastcell 1kg.. https://www.electrokit.com/produkt/
lastcell-1kg/ (h¨amtad 2019-03-27)
LITTERATURF ¨ORTECKNING
[10] Frances Reed, How Do Servo Motors Work.. http://www.modularcircuits.
com/blog/articles/h-bridge-secrets/h-bridges-the-basics/ (h¨amtad 2019-03-28)
[11] Nihad Subasic. H-Bridge Tutorial. Industriell teknik och management, Teknis-ka h¨ogsk., Stockholm, 2018.
[12] S˚a fungerar en induktiv givare.. http://www.support-carlogavazzi.se/
artikel.asp?ID=793(h¨amtad 2019-03-28)
[13] Optical Encoder Project http://groups.csail.mit.edu/mac/users/
pmitros/encoder/ (h¨amtad 2019-04-28)
[14] Optical Position Encoder with Arduino https://www.electroschematics.
com/10494/arduino-optical-position-rotary-encoder/ (h¨amtad 2019-04-28)
[15] Arduino UNO REV3 SMD https://store.arduino.cc/
arduino-uno-smd-rev3 (h¨amtad 2019-04-05)
[16] How Do Microcontrollers Work? https://www.autodesk.com/products/
eagle/blog/how-microcontrollers-work/ (h¨amtad 2019-04-05)
[17] Jyotindra S. Killedar. Dynamometer: Theory and Application to Engine Testing Xlibris Corporation, 2012.
[18] Alaa E. El-Sharkawy. Reliability Analysis of Dynamometer Loading Parameters during Vehicle Cell Testing. DaimlerChrysler Corporation, United States, 2007, https://doi.org/10.4271/2007-01-0600.
22
Bilaga A
Flödesschema
Fl¨odesschema f¨or systemets funktion, gjord i draw.io.
23
START
Ingen bromskraft Medel bromskraft Hög bromskraft
Körning utan
Bilaga B
Schematisk figur över system
En Schematisk figur ¨over hela systemet som anv¨andes i detta projekt, gjord i frit-zing.
25
R3 R2 220Q
>
22QQ±5%
±5% : > " "
' '
OPB960T51
Parts
rl
1& .. ±5 Vo ;> "54
- 1
R7 4.7kQ � ±5% "I
A-
GNO �I
Part4 ' I51 52
- 1 - 1
:;:- 1
R4 RS 4.7kQ 4.7kQ � ±5% � ±5% � " " " H--""' #�°' Partl11 111 1 11 11
� � � � a � H � § p � 3V3,- > sv "iic:a §s�- VIN- � 0
i i
g g � s 0 g � i g � i i � i s �I 11 111 11
.. [7 L
•-1-I -
-1-I-� 1 � i
3::c
8. �
< £ .... R r-;; (1) .... IP ai > > + ' + I• I · rj'
� ---'- ....,_
+ 0 Sm©? �ulse Q
]2 GNO r.::i �
�- -· I
An
� 0I I
Load Cellu
]1 + 0 Sm©? � �ulse Q Part3
111111 111 1
� � � � a � [ � � § p � '"- > sv 'iic:a §s�- VIN�I
g � ;i � I
s �I 11 111111
Load Cell!I
0fntz.ing
E2B-M12KS04-WP-B1
Bilaga C
Resultat varvtal från körningar
27
Mattningspänning 2 volt Mattningspänning 3 volt
Mattningspänning 4 volt Mattningspänning 5 volt
Mattningspänning 6 volt
Bilaga D
Arduinokod
D.1 Huvudprogram
29
/*
* Program namn: main
* Skapare: Felix Lindblom, Tom Eskilsson * Senast modifierad: 2019-05-03
* Beskrivning: Kör lastcellen, induktiva och optiska givarna *
*/
#include <HX711_ADC.h> // Krävs för att lastcellsförstärkaren ska fungera. Källa till kod: https://github.
com/olkal/HX711_ADC
HX711_ADC LoadCell(4, 5); // parameters: dt pin, sck pin<span data-mce-type="bookmark" style="display: inline-block; width:
0px; overflow: hidden; line-height: 0;"
class="mce_SELRES_start"></span>
// Initiering av alla parametrar som används till den optiska givaren
unsigned long lastmillis = 0;
const byte interruptPin2 = 2;
// Initiering av alla parametrar som används till den inuktiva giavren
unsigned long lastmillis2 = 0;
const byte interruptPin3 = 3;
int start_knapp; // Variabeln som används för att läsa in om
startknappen blivit nedtryckt
int startPin = 9; // Pin som startknappen skall vara kopplad till
float moment = 0; // Variabel som det beräknade momentet från lastcellen lagras i
float i = 0; // Variabeln som värdet från lastcellen lagras i
int startakorning = 0; // Variabeln som används för att styra startknappen
int starttid = 0; // Variabel som lagrar vad tiden är när startknappen trycks ned
void setup() {
Serial.begin(250000); // Initiering av Serial
attachInterrupt(digitalPinToInterrupt(interruptPin2), rpm_measopt, FALLING); // Initierar interrupt för optiska givaren
attachInterrupt(digitalPinToInterrupt(interruptPin3), rpm_measind, FALLING); // Initierar interrupt för induktiva givaren
LoadCell.begin(); // Startar anslutningen til lastcellsförstärkaren HX711
LoadCell.start(2000); // Ger lastcellen 2000ms att stabilisera sig
LoadCell.setCalFactor(2100.0); // Kalibreringsfaktor för lastcellen. Kalibrerad för att ge vikt i gram [g]
}
void loop() {
start_knapp = digitalRead(startPin); // Läser av startknappen
// If-sats som kollar om startknappen blivit intryckt. Om den blivit det så startas en körning av dynamometern
if (start_knapp == HIGH && startakorning == 0){
Serial.println("Startar körning");
startakorning = 1;
starttid = millis();
start_knapp = LOW;
delay(1000);
}
// If-sats som kollar om startknapen blivit intryckt if (startakorning == 1){
// While-sats som ger oss en körning på 20 sekunder while (millis()-starttid <20000){
Serial.println(rpm); // Printar varvtal för optiska givaren på datorn
Serial.println(rpm2); // Printar varvtal för induktiva givaren på datorn
LoadCell.update(); // Hämtar data från lastcellen float i = LoadCell.getData(); // Lagrar datan från lastcellen
moment = i*0.001*4.4; // Beräknar moment med datan från lastcellen [kgcm]
Serial.println(moment); // Printar det beräknade momentet på datorn
Serial.println(millis()); // Printar tiden på datorn Serial.println(" "); // Printar ett blanksteg för att göra datan lättläst
} }
// If-sats som nollar startkorning så att startknappen går att använda igen för att starta en körning
if (start_knapp == HIGH && startakorning == 1){
startakorning = 0;
start_knapp = LOW;
} }
// Funktionen som interrupten för den optiska givaren
startar när en interrupt sker
void rpm_measopt(){
rad = 2*M_PI/4; // Beräknar antal interrupts per varv []
vin_hast = rad/(millis()-timeold)*1000; // Beräknar vinkelhastigheten [rad/s]
rpm = 60*vin_hast/(2*3.14); // Beräknar varvtal [rpm]
timeold = millis();
if (rpm>1800) { rpm = rpmold;
}
rpmold = rpm;
}
// Funktionen som interrupten för den induktiva givaren startar när en interrupt sker
void rpm_measind(){
rad2 = 2*M_PI/4; // Beräknar antal interrupts per varv []
vin_hast2 = rad2/(millis()-timeold2)*1000; // Beräknar vinkelhastigheten [rad/s]
rpm2 = 60*vin_hast2/(2*3.14); // Beräknar varvtal [rpm]
timeold2 = millis();
if (rpm2>1800) { rpm2 = rpmold2;
}
rpmold2 = rpm2;
}
BILAGA D. ARDUINOKOD
D.2 Bromsmekanism
34
/*
* Program namn: bromsmek
* Skapare: Felix Lindblom, Tom Eskilsson * Senast modifierad: 2019-05-03
* Beskrivning: Styr servomotorerna till bromsmekanismen *
*/
#include <Servo.h> // Ett bibliotek som används för att enkelt styra servomotorerna
// Initierar två stycken servomotorer Servo servo6;
// Sätter pins för knappar som ska användas för att styra bromsstyrka
int broms0Pin = 10;
int broms1Pin = 11;
int broms2Pin = 12;
void setup() {
// Sätter pin 6 och 7 till att styra servomotorerna servo6.attach(6);
servo7.attach(7);
}
void loop() {
// Läser av om pinsen har HIGH eller LOW broms0_knapp = digitalRead(broms0Pin);
broms1_knapp = digitalRead(broms1Pin);
broms2_knapp = digitalRead(broms2Pin);
// Om knappen broms0 trycks ned så ställs servomotorerna i ett läge för att ej bromsa
if (broms0_knapp == HIGH){
servo6.write(92);
servo7.write(85);
}
// Om knappen broms1 trycks ned så ställs servomotorerna i läget som ger låg bromskraft
if (broms1_knapp == HIGH) { servo6.write(99);
servo7.write(79);
}
// Om knappen broms1 trycks ned så ställs servomotorerna i läget som ger hög bromskraft
if (broms2_knapp == HIGH) { servo6.write(100);
servo7.write(78);
}
}
Bilaga E
Matlabkod
E.1 Matlab plot
37
% Programnamn: Plotter
% Skapare: Felix Lindblo, Tom Eskilsson
% Senast modifierad: 2019-05-03
% Beskrivning: Importerar data från excel som sparas i vektorer för att
% sedan kunna plotta datan.
clear all clc
A = readcell('testrun_5v_lastcell_merkraft.xlsx'); % Importerar excelfil med % data från körning
i = 1;
i1 = 1;
% While-sats som lagrar värden från körningen i olika vektorer while i < 57985
rpm_optisk(i1) = A(i); % Lagrar varvtal från optiska givaren i en vektor
rpm_induktiv(i1) = A(i+1); % Lagrar varvtal från induktiva givaren i en vektor lastcell(i1) = A(i+2); % Lagrar beräknat moment från lastcell i en vektor tid(i1) = A(i+3); % Lagrar tid i vektor
% Konverterar de skapade vektorerna från strings till doubles för att % kunna plotta datan
rpm_oplot = str2double(rpm_optisk);
rpm_iplot = str2double(rpm_induktiv);
lastcell_plot = str2double(lastcell);
tid_plot = cell2mat(tid);
% Plottar datan från optiska och induktiva givarna figure(1);
plot(tid_plot, rpm_oplot);
hold on
plot(tid_plot, rpm_iplot);
hold on
legend('rpm_o_p_t_i_s_k', 'rpm_i_n_d_u_k_t_i_v');
grid on
plot(tid_plot, lastcell_plot);
hold on
% Beräknar medelvärde för varvtal från körningen medelv_optisk = mean(rpm_oplot);
medelv_induktiv = mean(rpm_iplot);
E.2. BER¨AKNINGAR
E.2 Beräkningar
39
% Programnamn: Beräkningar
% Skapare: Felix Lindblom, Tom Eskilsson
% Senast Modifierad: 2019-05-03
% Beskrivning: Beräkningar av elmotorns konstanter och mätningsresultat.
clear all
%% Mätdata Lite broms (1) U=5; %Spänning, Volt I1=2.2; %Ström, Amper MNm1=k2fiM*I1; %Moment, Nm M1=100/9.82*MNm1; %Moment, Kgcm P1=U*I1; %Effekt in i motorn, W
Pf1=R*I1^2; %Motorns förlusteffekt, W Put1=P1-Pf1; %Effekt på axeln, W
%Dynonometer mätning
c=2.43; %Konstant, kallibrering av dynomometer n1=497; %rpm, varv/min
%% Mätdata Mycket broms (2) U=5; %Spänning, Volt
TRITA TRITA-ITM-EX 2019:32
www.kth.se