You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I dette projekt har vi arbejdet med gyroskoper og accelerometere, som vi også kender fra vores smartphones. Swagwayen skal, lige som en smartphone kan måle om den står eller ligger ned, måle i hvilken vinkel den står i.
155
152
156
153
\subsubsection{Gyroskop}
157
-
Et gyroskop måler vinkelhastigheder, hvor hurtigt noget drejer om en akse. Hvis denne vinkelhastighed integreres over tid finder man vinklen som gyroskopet har flyttet sig. Problemet med at integrere gyroskopdata er, at pga. måleusikkerheder vil det målte nulpunkt drive væk fra det fysiske nulpunkt. Moderne gyroskoper er en MEMS. Det betyder, at det både er en mekanisk og elektrisk funktion i et system. /fxnote{hvordan fungerer MEMS i et gyroskop}
154
+
Et gyroskop måler vinkelhastigheder, hvor hurtigt noget drejer om en akse. Hvis denne vinkelhastighed integreres over tid finder man vinklen som gyroskopet har flyttet sig. Problemet med at integrere gyroskopdata er, at pga. måleusikkerheder vil det målte nulpunkt drive væk fra det fysiske nulpunkt. Moderne gyroskoper er en MEMS. Det betyder, at det både er en mekanisk og elektrisk funktion i et system.
158
155
159
156
\subsubsection{Accelerometer}
160
157
Et accelerometer kan måle accelerationer. Man kan med hjælp fra tangens og data fra to akser udregne den vinklen accelerometeret står i forhold til jordens tyngdekraft. Problemet med dette er at accelerometer måler alle accelerationer, ikke kun jordens tyngdekræft. Når Swagwayen fx accelerer, bremser eller køre over en sten bliver den udregnede vinkel forkert, da denne også frembringer en spike i accelerationsmålingen.
@@ -260,8 +257,8 @@ \subsubsection{readAccRaw()}
260
257
261
258
\section{Styring}
262
259
Styringen af Swagwayen skulle være en længerevarende og holdbar løsning. Det ønskes ikke, at enheden efter forholdsvis kort tid skulle udskiftes eller repareres. Vi overvejede fem forskellige løsninger: En lineær potentiometer, et drejepotentiometer, gaffelsensor, strain-gate og stepper motor.
263
-
\subsection{Lineær potentiometer} \fxnote{billede af linæert potentiometer fig:linpot}
264
-
Et lieært potentiometer fungerer som et normalt potentiometer, dog trækkes "armen" i en sliske som set på figur \ref{fig:linpot}
260
+
\subsection{Lineær potentiometer}
261
+
Et lieært potentiometer fungerer som et normalt potentiometer, dog trækkes "armen" i en sliske.
265
262
Potentiometret skal placeres i bunden af stangen, hvorefter potentiometrets arm trækkes med stangens bevægelse. Herefter vil man kunne ændre på PWM signalet til motorene, og på den måde dreje. Løsningen er simpel at udføre, og vil virke let i praksis.
266
263
267
264
Ulempen ved denne løsning er dog, at potentiometret hurtigt slides op ved brug, og det er derfor ikke en holdbar løsning.
@@ -317,7 +314,7 @@ \subsection{PID}
317
314
318
315
Disse tre dele gør op for PID, som sørger for, at fejlen justeres lige meget hvilken måde den ændres.
319
316
320
-
Vi startede med at implementere PID til at regulere den, men erfarede hurtigt at det ikke virkede.\fxwarning{insert old code} For at PID virker, er det vigtigt at den fejl man beregner, stammer fra kilden. Efter som vi ikke havde encodere på motorene kunne vi ikke bestemme hvordan motorene reagerede. Så i stedet for at beregne forskellen mellem den ønskede handling og den udførte, beregnede vi forskellen mellem den ønskede handling og den handling PWM signalet sendte. Se figur \ref{fig:pid} for en grafisk forklaring. For at PID kontrollen skal fungere, skal der foretages målinger efter motoren, vist med den blå linje, hvorimod vi foretog målingerne før motoren, vist med den røde linje.
317
+
Vi startede med at implementere PID til at regulere den, men erfarede hurtigt at det ikke virkede. For at PID virker, er det vigtigt at den fejl man beregner, stammer fra kilden. Efter som vi ikke havde encodere på motorene kunne vi ikke bestemme hvordan motorene reagerede. Så i stedet for at beregne forskellen mellem den ønskede handling og den udførte, beregnede vi forskellen mellem den ønskede handling og den handling PWM signalet sendte. Se figur \ref{fig:pid} for en grafisk forklaring. For at PID kontrollen skal fungere, skal der foretages målinger efter motoren, vist med den blå linje, hvorimod vi foretog målingerne før motoren, vist med den røde linje.
321
318
Da tiden var ved at løbe ud, bestemte vi os for at lade PID og encoderne ligge, og gå videre til en ny løsning.
322
319
323
320
\begin{figure}[htbp]
@@ -469,8 +466,6 @@ \subsubsection{Det var der galt}
469
466
470
467
Det viste sig efter megen debugging, at spændingen på gaten på P-kanal HEXFETerne (IRF4905) ikke gik \lstinline{HIGH} lige så hurtigt som ventet. Der blev opstillet et forsøg på et breadboard med en P-kanal HEXFET, en optocoupler og en Arduino, for at gennemskue problemet.
471
468
472
-
\fxwarning{Indsæt diagram over forsøg med optocoupler og HEXFET}
473
-
474
469
Forsøget viste, at når optocoupleren sad mellem HEXFETen og Arduinoen var der en ubekendt kapacitet mellem HEXFETens gate og source. Figur \ref{fig:stigetid} viser nederst PWM signalet fra Arduinoen og øverst signalet på P-kanal HTXFETens gate, hvor man tydeligt kan se, at det tager en ubelejlig tid før signalet på gaten stiger.
475
470
\begin{figure}[htbp]
476
471
\centering
@@ -489,13 +484,12 @@ \subsubsection{Det var der galt}
489
484
490
485
For ikke at tilføje flere optocouplere og bruge flere pins på Arduinoen blev der, på motorcontrolleren tilføjet to invertere.
491
486
\subsubsection{Det blev der rettet}
492
-
Vi byttede om på to P- og N-kanal HEXFETer, så der nu køres PWM på N-kanalen, og P-kanalen bestemmer retning. Derudover blev det tilføjet to invertere på motorcontrolleren. Se figur \fxwarning{ref: dia:v3.0}
487
+
Vi byttede om på to P- og N-kanal HEXFETer, så der nu køres PWM på N-kanalen, og P-kanalen bestemmer retning. Derudover blev det tilføjet to invertere på motorcontrolleren.
493
488
494
489
\subsection{Motorcontroller v3.0}
495
490
\boarddate{27. marts 2012}
496
491
Se figur \ref{fig:oldmotor} øverst til højre.
497
492
\subsubsection{Det var der galt}
498
-
\fxwarning{Indsæt diagram over Motorcontroller v3.0 (Figur over printet kan findes i bilag)}
499
493
Efter at der blev tilføjet en inverter på to af gatesne til P-kanal HEXFETerne er denne \lstinline{LOW} når der ikke er spænding på optocouplerne (for eksempel når den ikke er koblet til mainboardet). Det tænder HEXFETen sammen med N-kanal HEXFETerne, som også er tændt uden spænding på optocouplerne, hvilket kortslutter H-broen. Motorcontroller v3.0 var fungerede, men det var upraktisk, at den var kortsluttet uden at være koblet sammen med mainboardet.
Boardet v5.2 sidder i Swagwayen og fungerer. Den nuværende version er en erstatning af et magen til, da dette brændte af under en længerevarende, ellers succesfuld, prøvekørsel. Se figur \ref{fig:fried}.\fxnote{her kan skrived mere}
554
+
Boardet v5.2 sidder i Swagwayen og fungerer. Den nuværende version er en erstatning af et magen til, da dette brændte af under en længerevarende, ellers succesfuld, prøvekørsel. Se figur \ref{fig:fried}.
562
555
563
556
Motorene danner strøm når de går i frigang, og hvis man derfor kører hurtigt fremad, og ændrer vinklen til et modsatgående fortegn, sendes strømmen tilbage igennem boardet. Der blev derfor tilføjet beskyttelses dioder for at tage strømmen.
564
557
\subsubsection{Det blev der rettet}
565
558
Der blev til v6.0 tilføjet beskyttelses dioder til kredsløbet, for at tage strømmen fra motorene.
0 commit comments