L'Alfabeto di Arduino #6: controlla carichi più importanti (con il Mosfet)

Introduction / Objectives: 

Controlla la velocità di un motore attraverso il PWM e un circuito che preserva Arduino dal contatto con voltaggi più alti.

Part list: 

1x Arduino
1x IRF52
1x 1n40070
1x Motor (5V to 9V)

Instructions: 

L'IRF520 é un MOS-FET (Field Effect Transistor) che ci permette di controllare la quantità di elettricità che passa attraverso il motore. Il disegno riportato qui sotto ci spiega la mappatura del componente: G sta per Gate, D per Drain e S per Source. Intervenendo su Gate permetto all'elettricità di passare da Drain a Source. Il diodo di ricircolo (1n40070) impedisce all'elettricità generata di bruciare il componente. Per avere maggiori informazioni sull'IRF520 scarica il datasheet.

Andiamo a realizzare il circuito sottostante:

Andremo a controllare la velocità del motore da porta seriale (infatti la porta seriale oltre che a ricevere dati da Arduino ci permette anche di inviarne) attraverso l'uso dei numeri 0-9

const int analogOutPin = 9; // pin a cui attacchiamo il led

int outputValue = 0;        // variabile in cui memorizzo il valore in uscita

int incomingByte;      // variabile in cui memorizzo il valore seriale in entrata

void setup() {
  // apro la porta seriale
  Serial.begin(9600); 
}

void loop() {
  // se c'é u valore in entrata nella porta seriale
  if (Serial.available() > 0) {
    // leggi l'ultimo valore momorizzato nel buffer seriale:
    incomingByte = Serial.read();

    if (incomingByte == '0') {
      analogWrite(analogOutPin, 0);  
    } 
    if (incomingByte == '1') {
      analogWrite(analogOutPin, 25);  
    } 
    if (incomingByte == '2') {
      analogWrite(analogOutPin, 50);  
    }
    if (incomingByte == '3') {
      analogWrite(analogOutPin, 75);  
    }
    if (incomingByte == '4') {
      analogWrite(analogOutPin, 100);  
    }
    if (incomingByte == '5') {
      analogWrite(analogOutPin, 125);  
    }
    if (incomingByte == '6') {
      analogWrite(analogOutPin, 150);  
    }
    if (incomingByte == '7') {
      analogWrite(analogOutPin, 175);  
    }
    if (incomingByte == '8') {
      analogWrite(analogOutPin, 200);  
    }
    if (incomingByte == '9') {
      analogWrite(analogOutPin, 255);  
    }
  }     
}

 

Immagini: 
AllegatoDimensione
irf520.pdf96.45 KB
motore.zip5.65 KB

Commenti

 
Loading...