Controlling DC Motor with Mosfet, Potentiometer and Relay

I am trying to control the speed of a DC Motor using a Potentiometer and Mosfet while at the same time using a Relay and an IR Receiver to switch the power on and off to the Motor. I attach a Picture of my circuit.Instead of the 9V Battery i am using a 9V power supply. Also not sure if i connected the relay correctly in the circuit i drawed because i couldnt find the same relay i am atually using. Relay i am using : https://www.amazon.de/-/en/dp/B07BVXT1ZK?psc=1&ref=ppx_yo2ov_dt_b_product_details. I have connected the - of the Relay to the negative of the Breadboard and the + to the positive and the signal to Pin Nr. 11 of my Arduino.

With the help of chat GPT and Google i created the following code:

#include <IRremote.h>

const int IR_RECEIVER_PIN = 4;    // Pin for the IR receiver module
const int RELAY_PIN = 11;         // Pin connected to the relay
const int potPin = A0;            // Analog input pin for potentiometer
const int mosfetGatePin = 9;     // PWM-capable digital output pin connected to the MOSFET gate

uint32_t last_decodedRawData = 0;

IRrecv irrecv(IR_RECEIVER_PIN);
decode_results results;

void translateIR() // takes action based on IR code received
{
  // Check if it is a repeat IR code 
  if (irrecv.decodedIRData.flags)
  {
    //set the current decodedRawData to the last decodedRawData 
    irrecv.decodedIRData.decodedRawData = last_decodedRawData;
    Serial.println("REPEAT!");
  } 
  else
  {
    //output the IR code on the serial monitor
    Serial.print("IR code:0x");
    Serial.println(irrecv.decodedIRData.decodedRawData, HEX);
  }
  //map the IR code to the remote key
  switch (irrecv.decodedIRData.decodedRawData)
  {
    case 0xF30CFF00: digitalWrite(RELAY_PIN, HIGH);    break;
    case 0xE718FF00: digitalWrite(RELAY_PIN, LOW);    break;
    default:
      Serial.println(" other button   ");
  }// End Case
  //store the last decodedRawData
  last_decodedRawData = irrecv.decodedIRData.decodedRawData;
  delay(500); // Do not get immediate repeat
} //END translateIR

void setup() {
  Serial.begin(9600);
  irrecv.enableIRIn();  // Start the IR receiver
  pinMode(RELAY_PIN, OUTPUT);
  pinMode(mosfetGatePin, OUTPUT);
  digitalWrite(RELAY_PIN, LOW);  // Set initial state to HIGH (off)
}

void loop() {
  if (irrecv.decode()) // have we received an IR signal?
  {
    translateIR();
    irrecv.resume(); // receive the next value
  }

  // Read the analog value from the potentiometer
  int potValue = analogRead(potPin);

  // Map the potentiometer value to the PWM duty cycle range (0-255)
  int motorSpeed = map(potValue, 0, 1023, 0, 255);

  // Control the speed of the motor using PWM
  analogWrite(mosfetGatePin, motorSpeed);

  // Add a short delay to prevent rapid changes
  delay(100);
}

Before Pluging anything and possibly damaging my Hardware, should i change anything and would the Circuit work? P.S i am using Buz12 Mosfet 10K Potentiometer and 10K Resistor

Go back to chat GPT and ask them to give you the schematic without the relay (it is not needed) and also to put in a power source not a non existent battery. Putting it in schematic form will likely get you better help. Wiring pictures are almost useless unless you have the parts.

Power supply GND and controller GND must be connected.

Gate should have 220 ohm to gate pin and 10 kohm from gate pin to gnd.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.