Řízení rychlosti krokového motoru potenciometrem


Cílem projektu je navrhnout a sestavit obvod s krokovým motorem, který umožní řízení jeho rychlosti pomocí potenciometru. Tato technologie bude využitelná například při výrobě filamentu z PET lahví pro 3D tisk. Projekt zahrnuje výběr vhodného motoru, ovladače, potenciometru a mikrokontroléru, které budou propojeny a naprogramovány pro optimální funkci.

Zapojení:

kód pro Arduino:

// Include the Arduino Stepper Library
#include <Arduino.h>
#include <AccelStepper.h>

// Define Constants
#define IN1 8
#define IN2 9  // #define IN2 10 je na arduinu připojen na pin 9 pro NEMA17 // pro 24BYJ #define IN2 9 je připojen na pin 9
#define IN3 10 // #define IN3 9 je na arduinu připojen na pin 10 pro NEMA17 // pro 24BYJ #define IN3 10 je připojen na pin 10
#define IN4 11
// Number of steps per output rotation
const int STEPS_PER_REV = 200;
const int SPEED_CONTROL = A0;

// The pins used are 1,2,3,4 
// Connected to L298N Motor Driver In1, In2, In3, In4 
// Pins entered in sequence 1-2-3-4 for proper step sequencing

AccelStepper stepper_NEMA17(AccelStepper::FULL4WIRE, IN1, IN3, IN2, IN4);

void setup() {
  // Initialize the stepper motor speed to zero
  stepper_NEMA17.setMaxSpeed(500);
}

void loop() {
  // Read the sensor value
  int sensorReading = analogRead(SPEED_CONTROL);
  // Map it to a range from 0 to 100
  int motorSpeed = map(sensorReading, 0, 1023, 0, 400);
  
  // Set the motor speed
  if (motorSpeed > 15) {
    stepper_NEMA17.enableOutputs();
    stepper_NEMA17.setSpeed(motorSpeed);
    // Run the motor at the set speed
    stepper_NEMA17.runSpeed();
  } else {
    // Stop the motor
    stepper_NEMA17.disableOutputs();
    stepper_NEMA17.stop();
  }

  // Display sensor and motor speed values for debugging
  Serial.print("Potenciometr: ");
  Serial.print(sensorReading);
  Serial.print(" , Rychlost motoru: ");
  Serial.println(motorSpeed);
}

Další podobné články

OVLÁDÁNÍ LED NEBO ZÁSUVKY S MODULEM CC1101 433.92Mhz

Po prvních pokusech s moduly CC1101 433.92Mhz jsem se po čase rozhodl si vyzkoušet napsat program na jednoduché ovládání led diody tak aby jeden modul pravidelně vysílal hodnoty které se na druhém modulu vyhodnotí a tento pak bude pravidelně blikat led diodou. Po tomto programu a jeho odzkoušení jsem se rozhodl si napsat další program na zjištění číselných hodnot tlačítek na dálkovém ovladači pro bezdrátové zásuvky 433Mhz, a tyto pak ovládat dalším napsaným programem na zapínání a vypínání zásuvky. Pro ovládání jsem použil Arduino Nano které jsem pro testování osadil do Arduino IO shieldu, pro komunikaci mezi Arduino a modulem CC1101 jsem použit 8 – kanálový obousměrný převodník logických úrovní (5V – 3.3V) a pro napájení celé sestavy jsem použil vyrobený napájecí zdroj s výstupním napětím 8V pro napájení  Arduino Nano,  5V a 3.3V pro napájení převodníku a modulu CC1101. Uvedené přípravky rozšiřují zapojení uveřejněná v [1].