Versions Compared
Key
- This line was added.
- This line was removed.
- Formatting was changed.
Introduksjon
Når man skal styre noe som trekker mer strøm enn det Arduino klarer å levere må man bruke en eller annen form for forsterker, der energien kommer fra en annen kilde. Det kan være vanlige bipolare transistorer, darlingtontransistorer, MOSFET-transistorer, reléer eller mer anvanserte driverkretser for motorer og annet utstyr. Her tar vi for oss en MOSFET-transistor som er veldig enkel å bruke, samtidig som at den er svært fleksibel.
IRFZ44N
IRFZ44N er en N-channel MOSFET som tåler opptil 49A og 55V. Denne tenner på 3.3V og kan dermed brukes med mikrokontrollere og datamaskiner som bruker 3.3V som arbeidsspenning, som for eksempel Raspberry Pi. Datablad (pdf).
FQP30N06L
FQP30N06L er en N-channel MOSFET som tåler opptil 32A og 60V. Datablad (pdf).
En MOSFET har 3 terminaler: Gate, drain og source. Gate kobles til en utgang på Arduino. Når denne utgangen settes høy, vil det åpnes for strøm mellom source og drain, og når utgangen går lav vil strømmen stoppe. Det kan gjerne være et PWM-signal. På den måten kan Arduino brukes til å styre en mye større strøm enn det Arduinoens utgang klarer å levere.
Kodeplassering
All kode som du ser under her kan finnes på GitHub, under Examples/MOSFET.
Eksempel: LED Strip dimmer
I dette eksempelet styrer vi en 12V LED Strip med en arduino via en MOSFET-transistor. Vi bruker et vanlig potmeter for å bestemme intensiteten på lyset.
Her er potemeteret koblet inn på A0, og MOSFET-gaten styres fra D9. Hvis man vil bruke 12V-batteriet til å drive Arduinoen, er det bare å koble +12V til Vin på Arduino.
Code Block | ||||
---|---|---|---|---|
| ||||
const int potPin = 0A0; const int ledPin = 9; int potReading; int ledIntensity; void setup(){ pinMode(ledPin, OUTPUT); } void loop(){ potReading = analogRead(potPin); ledIntensity = map(potReading, 0, 1023, 0, 255); analogWrite(ledPin, ledIntensity); } |
GitHub: Examples/MOSFET/LedStripDimmer/LedStripDimmer.ino
Programmet leser av verdien på A0, gjør verdien om til et tall mellom 0 og 255 ved hjelp av map, og skriver resultatet til D9.
Eksempel: DC-motor
Når en MOSFET-transistor brukes til å styre en induktiv last, som for eksempel en motor, høyttaler, relé eller solenoid, må det settes inn en diode i parallell med lasten i motsatt retningmed motsatt polaritet, slik at det i normal drift ikke vil gå strøm gjennom den. Dette må gjøres for å beskytte MOSFET-en mot en nokså høy spenning som settes opp når strømmen gjennom en spole stoppes. Denne spenningen varer en veldig kort tid, derfor må dioden være rask, og den må også tåle den strømmen som kommer. En litt kraftig likeretterdiode som for eksempel 1N4001 vil være passende i mange tilfeller, hvis det er snakk om små strømmer kan en LED fungere fint.
Code Block | ||||
---|---|---|---|---|
| ||||
const int potPin = 0A0; const int motorPin = 9; int potReading; int motorSpeed; void setup(){ pinMode(motorPin, OUTPUT); } void loop(){ potReading = analogRead(potPin); motorSpeed = map(potReading, 0, 1023, 0, 255); analogWrite(motorPin, motorSpeed); } |
GitHub: Examples/MOSFET/MosfetDcMotor/MosfetDcMotor.ino
Denne kretsen kan ikke snu retningen på motoren, derfor er det mer vanlig å bruke en driverkrets, for eksempel en H-bridge.