DC motor hız kontrolü [hassas]

frekans50

⁹⁸⁷⁶⁵⁴³²¹⁰
Katılım
8 Ekim 2022
Mesajlar
1,113
Şarjlı vidalama içindeki redüktörlü motoru projede kullanmak üzere smps ile çalıştırdım. Çok hızlı dönüyor.

Gerilimi smps üzerindeki TL431 ile 2.5V seviyesine sabitledim. Hala hızlı.

Sonra yine 5V ile beslenen, hızı ayarlamak üzere 555li devreyi yaptım. PWM olarak mosfet ile motoru sürdüm.

Fakat yavaş hızlarda aniden duruyor. Belli noktada dönmeye başlıyor.

Bu ilk hareket bölgesindeki hassasiyeti nasıl artırabilirim. PWM frekansı mı değişmeli? Detaylı deneme imkanım olmadı. İşin kolay bir tekniği varsa öğrenmek istedim.



1741113595940.jpeg
 
Evet frekansi dusurursen (50Hz vs) faydasi olur fakat hiz geribeslemesi olmadan olmaz.
 
Son düzenleme:
Hız geri besleme sensörü yok. Akımı ölçerek olur mu dedim. Hemen kodu yazdı malum şahsiyet :)

C++:
// ACS712 Akım Sensörü ile Motor Hız Kontrolü

const int MOTOR_PWM_PIN = 9;      // Motor PWM çıkışı
const int CURRENT_SENSE_PIN = A0; // Akım sensörü analog girişi
const int ENABLE_PIN = 10;        // Motor enable pini

// Ayarlanabilir parametreler
const float MIN_CURRENT = 0.05;   // Minimum akım eşiği (A)
const float MAX_CURRENT = 1.0;    // Maksimum akım sınırı (A)
const int BASE_PWM = 100;         // Başlangıç PWM değeri
const int MAX_PWM = 255;          // Maksimum PWM değeri

void setup() {
  Serial.begin(9600);
  pinMode(MOTOR_PWM_PIN, OUTPUT);
  pinMode(ENABLE_PIN, OUTPUT);
  pinMode(CURRENT_SENSE_PIN, INPUT);
}

float readCurrentSensor() {
  // ACS712 5A modül için kalibrasyon
  // 5A modülde her 185mV = 1A
  int rawValue = analogRead(CURRENT_SENSE_PIN);
  float voltage = rawValue * (5.0 / 1023.0);
 
  // Sensör 2.5V offset ile çalışır
  float current = (voltage - 2.5) / 0.185;
  return abs(current);
}

void controlMotorSpeed() {
  static int currentPWM = BASE_PWM;
  float current = readCurrentSensor();

  // Akım kontrolü ile PWM ayarlaması
  if (current < MIN_CURRENT) {
    // Çok düşük akım - hızı artır
    currentPWM = min(currentPWM + 10, MAX_PWM);
  } else if (current > MAX_CURRENT) {
    // Çok yüksek akım - hızı düşür
    currentPWM = max(currentPWM - 10, BASE_PWM);
  }

  // Motor sürme
  analogWrite(MOTOR_PWM_PIN, currentPWM);

  // Debug bilgisi
  Serial.print("Akım: ");
  Serial.print(current);
  Serial.print(" A, PWM: ");
  Serial.println(currentPWM);
}

void loop() {
  digitalWrite(ENABLE_PIN, HIGH);  // Motoru etkinleştir
  controlMotorSpeed();
  delay(50);  // Kısa gecikme
}
 
Şarjlı vidalama içindeki redüktörlü motoru projede kullanmak üzere smps ile çalıştırdım. Çok hızlı dönüyor.

Gerilimi smps üzerindeki TL431 ile 2.5V seviyesine sabitledim. Hala hızlı.

Sonra yine 5V ile beslenen, hızı ayarlamak üzere 555li devreyi yaptım. PWM olarak mosfet ile motoru sürdüm.

Fakat yavaş hızlarda aniden duruyor. Belli noktada dönmeye başlıyor.

Bu ilk hareket bölgesindeki hassasiyeti nasıl artırabilirim. PWM frekansı mı değişmeli? Detaylı deneme imkanım olmadı. İşin kolay bir tekniği varsa öğrenmek istedim.



40683 eklentisine bak
Fırçalı motor DC akımı belirli aralıklarla keser.
Drain ucuna kondansatör bağlanılarak alınan AC akım diyot ile doğru akıma çevrilirse devir ayarı için geri besleme olarak kullanılabilir mi?
 
Küçük DC motorda kollektör dilimi az olduğu için motor bu şekilde tepki veriyor olabilir.
 
Fırçalı motor DC akımı belirli aralıklarla keser.
Drain ucuna kondansatör bağlanılarak alınan AC akım diyot ile doğru akıma çevrilirse devir ayarı için geri besleme olarak kullanılabilir mi?

Firca gurultusu yoksa ve pwm ile degil de lineer devrelerle motoru suruyorsan evet. AC sinyali komparatorden gecirip komutasyon noktalarini elde edebilirsin.
 

Forum istatistikleri

Konular
7,439
Mesajlar
125,421
Üyeler
3,024
Son üye
fatih taşıyan

Son kaynaklar

Son profil mesajları

Bir insanın zeka seviyesinin en kolay tesbiti, sorduğu sorulardır.
yapay zeka interneti yedi bitirdi, arama motoru kullanan, forumlara yazan kaldı mı ?
Freemont2.0 herbokolog Freemont2.0 wrote on herbokolog's profile.
nick iniz yakıyor
:D
Freemont2.0 posta Freemont2.0 wrote on posta's profile.
Merhabalar :)
az bilgili çok meraklı
Back
Top