Hopp til innhald
Nynorsk

Emne

Sensorer og aktuatorer

Fagstoff

DC-motor

Ein DC-motor roterer så lenge han får signal om å gjere dette. DC-motoren kan rotere med både lågt og veldig høgt turtal. Enkelte motorar kan rotere med over 100 000 omdreiingar i minuttet.

Beskriving

DC-motoren (likestraumsmotoren) er den vanlegaste motortypen. DC-motorar har normalt berre to leidningar, ei positiv og ei negativ. Viss du koplar desse to leidningane direkte til eit batteri, vil motoren rotere. Viss du byter om på plasseringa av leidningane, vil motoren rotere i motsett retning.

Ein DC-motor består av ein rotor (ein aksling) og ein stator. Når motoren leiar straum, blir det skapt eit magnetfelt. Akslingen begynner å rotere når motoren blir tilført ei spenning på over 3 V.

Vanlege motorar for småelektronikk kan brukast på spenningar opp til 40 V og straumstyrkar på opp mot 200 mA (200 milliampere). Arduinoen er ikkje bygd for å handtere så stor straumgjennomgang. Derfor er det viktig at du bruker ein transistor som toler tilstrekkeleg med straum for å drive motoren.

Fordi vi i skaper magnetfelt i slike motorar, kan det oppstå spenningspulsar når spenninga blir slått av og på. Då er det viktig at du bruker ein diode mellom pluss- og minussida på motoren. Han skal hindre overspenning på transistoren når straumen blir broten for å stoppe motoren.

Bruksområde

I dag blir elektriske motorar brukte til det meste der noko skal gå rundt eller bevege seg, til dømes i elektriske kjøkkenartiklar, vaskemaskiner, pumper, vifter, vindaugsviskarar, datadiskar, leiketøy som skal bevege seg, og elektriske bilar.

Kopling

Når du skal kople ein DC-motor, er det viktig at du undersøker kor stor spenning og kor kraftig straum motoren krev. Nokre motorar kan køyrast direkte frå Arduinoen, mens andre krev at du nyttar ei ekstern spenningskjelde, til dømes eit 9 volts batteri. Det kan òg hende at motoren kan køyrast direkte frå Arduinoen så lenge han ikkje blir belasta, men at det trengst meir straum enn Arduinoen kan levere, viss motoren skal gjere eit arbeid.

Du må òg bruke ein for å kontrollere straumgjennomgangen og ein diode for å redusere spenningstoppar i oppkoplinga.

Når du koplar DC-motorar til ein Arduino, kan du òg bruke spesialtilpassa skjold med ekstern spenningsforsyning som kan monterast på toppen av Arduinoen.

Koplingsskjema

Eit elektrisk koplingsskjema er eit viktig verktøy når du skal feilsøke ein krets. Illustrasjonen under viser eit koplingsskjema for ein DC-motor tilkopla ein Arduino:

Minuspolen til motoren er kopla til Arduinoens 5V, og Arduinoens GND er kopla til jordinga til transistoren. Arduinoens D9 er kopla til inngangen til transistoren via ein 1k-resistor. Utgangen til transistoren er kopla til plusspolen til motoren. Det er òg kopla ein diode mellom plusspolen og minuspolen.

Programmering

Du kan styre ein DC-motor på ulike måtar. Den enklaste måten er å skru på motoren slik at han går med maksimalt turtal heilt inntil programmet blir stoppa.

Du kan òg styre motoren ved å oppgi eit fast turtal han skal rotere med. Du kan ikkje oppgi turtalet direkte, men må velje ein verdi mellom 0 og 255, der 0 svarer til fullt turtal og 255 svarer til stillstand. Ønsker du til dømes at motoren skal gå med halvt turtal, må du oppgi halvparten av verdien mellom 0 og 255, det vil seie ca. 128.

Viss du vil at det skal vere mogleg å regulere turtalet på motoren mens han går, kan du kople til eit potensiometer. Då må Arduinoen lese verdien frå potensiometeret og lagre denne i ein variabel. Så skriv Arduinoen variabelverdien til motoren.

Døme: Motor på, maksimalt turtal

I dette programdømet skal motoren starte og gå på maksimalt turtal så lenge programmet blir køyrd. Du kan elles velje kva pinne du vil bruke for tilkopling, men i dømet vårt er motoren kopla over pinne 9, som er ein -pinne.

Programkode for DC-motor på maksimalt turtal

void setup()

{

Serial.begin(9600); // Start kommunikasjon med omverda.

}

void loop() // Start på program som skal køyrast.

{

analogWrite(9, HIGH); // Set pinne 9 til HIGH, start motor.

}

Døme: Motor på, førehandsdefinert turtal

Viss du heller vil at motoren skal gå på eit fast turtal du har førehandsbestemt, må du bruke ein variabel som bestemmer turtalet.

Turtalet blir regulert på ein skala frå 0 til 255, der 0 er fullt turtal og 255 er avslått motor. I dette dømet er variabelen turtal sat til 128. Talet ligg midt imellom 0 og 255, noko som tilseier at motoren skal gå med halv fart.

Programkode for DC-motor med førehandsdefinert turtal

int pin = 9; // Lag ein variabel for kva pinne motoren skal styre frå.

int turtal = 128; // Lag ein variabel for turtal, og vel turtal på ein skala frå 0 til 255.

// Viss du vil forandre turtalet på motoren, forandrar du talet i variabelen turtal.

void setup()

{

Serial.begin(9600); // Start kommunikasjon med omverda.

}

void loop() //Start på programmet som skal køyrast.

{

analogWrite(pin, turtal); // Send signal på pinnen som er definert i variabelen pin. Set turtal som definert i variabelen turtal.

}

Døme: Variabelt turtal

Du kan òg styre turtalet ved hjelp av eit . Då forandrar du på turtalet med ein vribryter. For å få til dette må Arduinoen lese innstillinga på potensiometeret og lager denne verdien i variabelen turtal. Så må han sende denne verdien til motoren.

Koplingsskjemaet nedanfor viser ein Arduino tilkopla ein DC-motor. Turtalet på DC-motoren blir regulert av ein transistor, og DC-motoren har ekstern spenningsforsyning via eit 9 volts batteri.

Programkode for DC-motor med variabelt turtal

int turtal; // Lag variabelen turtal.

int pin = 9; // Lag variabel for kva pinne som skal styre motoren.

void setup()

{

Serial.begin(9600); // Start kommunikasjon med omverda.

}

void loop() // Start program som skal køyrast.

{

turtal = map(analogRead(A0), 0, 1023, 0, 255); // Les verdi frå potensiometer gjennom pinne A0 og lagre han i variabelen turtal.

Serial.println(turtal); // Skriv verdien i variabelen turtal til serial monitor.

analogWrite(pin, turtal); // Skriv på pinne lagra i variabelen pin verdien som er lagra i variabelen turtal.

delay(100); // Vent i 100 millisekund før programmet blir køyrd på ny.

}

Utfordring

Kan du tenke deg andre sensorar som kan regulere ein motor?

(Tips: Har du opplevd at det er varmt på rommet ditt og du kunne tenkt deg ei vifte? Kva om du bruker ein temperatursensor til å regulere ein DC-motor som er kopla til ei vifte? Tenk deg at vifta skal stå stilt når det er kaldt, og gå fortare dess varmare det blir.)

Skrive av Roger Rosmo.
Sist oppdatert 16.08.2023