Arduino kod Yardım

Kusura bakmayın bende profesyonel değilim deneme yanılma ile ilerliyorum.
Böyle bir çalışma için önce BTS7690 kartlarını korumak ve işinizi kazasız belasız halletmek için Arduino çıkışlarına birer led takıp, onlara göre hareket edebilirsiniz. (tabi, led dirençlerini takacaksınız)

PWM sinyali led parklaklığını değiştirecektir.

Şunu unutmayın, BTS7690, bir yöne motor (full) dönerken, motor stop etmeden diğer yöne çevirmeye kalkarsanız yanar.
 
Son düzenleme:
Son olarak denediğim kod ve bağlantı aşağıdaki gibi ama hala çalıştıramadım.
// Motor 1 için pin tanımlamaları
const int motor1EN = 3; // Motor 1 için hız kontrol pini (PWM)
const int motor1IN1 = 4; // Motor 1 için yön kontrol pini 1
const int motor1IN2 = 5; // Motor 1 için yön kontrol pini 2

// Motor 2 için pin tanımlamaları
const int motor2EN = 6; // Motor 2 için hız kontrol pini (PWM)
const int motor2IN1 = 7; // Motor 2 için yön kontrol pini 1
const int motor2IN2 = 8; // Motor 2 için yön kontrol pini 2

// Alıcı pin tanımlaması
const int receiverPin = 9; // Alıcı pininin Arduino'ya bağlandığı dijital pin

void setup() {
// Motor pinlerini çıkış olarak ayarla
pinMode(motor1EN, OUTPUT);
pinMode(motor1IN1, OUTPUT);
pinMode(motor1IN2, OUTPUT);
pinMode(motor2EN, OUTPUT);
pinMode(motor2IN1, OUTPUT);
pinMode(motor2IN2, OUTPUT);

// Alıcı pinini giriş olarak ayarla
pinMode(receiverPin, INPUT);
}

void loop() {
// Alıcıdan PWM sinyalini oku
int receiverValue = pulseIn(receiverPin, HIGH);

// PWM sinyali değerlerine göre motor hızlarını ayarla
int motorSpeed1 = map(receiverValue, 1000, 2000, 0, 255);
int motorSpeed2 = map(receiverValue, 1000, 2000, 0, 255);

// Alıcıdan gelen sinyale göre motor yönlerini belirle
if (receiverValue < 1500) {
// Motor 1 geriye, Motor 2 geriye
digitalWrite(motor1IN1, LOW);
digitalWrite(motor1IN2, HIGH);
digitalWrite(motor2IN1, LOW);
digitalWrite(motor2IN2, HIGH);
} else if (receiverValue > 1500) {
// Motor 1 ileriye, Motor 2 ileriye
digitalWrite(motor1IN1, HIGH);
digitalWrite(motor1IN2, LOW);
digitalWrite(motor2IN1, HIGH);
digitalWrite(motor2IN2, LOW);
} else {
// Durma
digitalWrite(motor1IN1, LOW);
digitalWrite(motor1IN2, LOW);
digitalWrite(motor2IN1, LOW);
digitalWrite(motor2IN2, LOW);
}

// Motor hızlarını ayarla
analogWrite(motor1EN, motorSpeed1); // Motor 1'in hızını ayarla
analogWrite(motor2EN, motorSpeed2); // Motor 2'nin hızını ayarla
}

Motorların bilgileri ;
Ürün kimliği: MY1016Z/zd101az1anma gücü: 250 W
Voltaj: 24 V
Yük akımı yok: ≤ 4.0A
Yüksüz hız: 120 RPM
Anma tork: 0.98 N · m
Anma hızı: 2400/3700 RPM
Anma akımı: ≤ 13.7/14.8A
Çalışma programı: S2:60
Azaltma oranı: 23.2:1
24V250W sabit mıknatıslı DC fırça 1016Z iki aşamalı redüktör tekerlekli sandalye motoru, gerçek çıkış hızı sırasıyla 120 rpm'dir.

Adsız.jpg
 
Aşağıdaki kodu deneyin.
Bütün çıkışlara led bağlayın.
Öncelikle EN çıkışları, PWM çalışıyormu.
Arduino şeması tam net görünmüyor, sadece o kısmı gözden geçirirsemiz daha rahat olur.
Tabi 9 nolu girişe sinyal geliyormu?

const int motor1EN = 3;
const int motor1IN1 = 4;
const int motor1IN2 = 5;
const int motor2EN = 6;
const int motor2IN1 = 7;
const int motor2IN2 = 8;
const int receiverPin = 9;

void setup() {
pinMode(motor1EN, OUTPUT);
pinMode(motor1IN1, OUTPUT);
pinMode(motor1IN2, OUTPUT);
pinMode(motor2EN, OUTPUT);
pinMode(motor2IN1, OUTPUT);
pinMode(motor2IN2, OUTPUT);
pinMode(receiverPin, INPUT);
}

void loop() {
unsigned long receiverValue = pulseIn(receiverPin, HIGH, 25000); // 25 ms timeout

int motorSpeed1 = map(receiverValue, 1000, 2000, 0, 255);
int motorSpeed2 = map(receiverValue, 1000, 2000, 0, 255);
// Alıcıdan gelen sinyale göre motor yönlerini belirle
if (receiverValue < 1500) {
digitalWrite(motor1IN1, LOW);
digitalWrite(motor1IN2, HIGH);
digitalWrite(motor2IN1, LOW);
digitalWrite(motor2IN2, HIGH);
} else if (receiverValue > 1500) {
digitalWrite(motor1IN1, HIGH);
digitalWrite(motor1IN2, LOW);
digitalWrite(motor2IN1, HIGH);
digitalWrite(motor2IN2, LOW);
} else {
digitalWrite(motor1IN1, LOW);
digitalWrite(motor1IN2, LOW);
digitalWrite(motor2IN1, LOW);
digitalWrite(motor2IN2, LOW);
}
// Motor hızlarını ayarla
analogWrite(motor1EN, motorSpeed1);
analogWrite(motor2EN, motorSpeed2);
}
 
Projeyi yanlış ilerletiyorsunuz. Şu şekilde ilerleyin.

1- Sadece 1 motoru hız kontrolü vs olmadan arduino ile tam hızda bir yönde çalıştırın.
2- Sadece 1 motoru hız kontrolü vs olmadan arduino ile tam hızda diğer yönde çalıştırın.
3- Sadece 1 motoru Seri haberleşme ile bilgisayardan hız ve yön ayarı yaparak çalıştırın.
4- Yukarıdaki işlemleri iki motor olacak şekilde yeniden yapın
5- Kumandadan gelen sinyalleri 0-100 aralığında seri haberleşme ile bilgisayardan görün.
6- Kumanda ile motorları kontrol edin ve projeyi tamamlayın.
Ayrıca kod hazır olana kadar 24-5V Dönüştürücüyü kullanmayın. Her aşamada bağlantıları sağlam yapın, geçiçi bağlantı yapmayın.
 
Merhaba
Projeyi yanlış ilerletiyorsunuz. Şu şekilde ilerleyin.

1- Sadece 1 motoru hız kontrolü vs olmadan arduino ile tam hızda bir yönde çalıştırın.
2- Sadece 1 motoru hız kontrolü vs olmadan arduino ile tam hızda diğer yönde çalıştırın.
3- Sadece 1 motoru Seri haberleşme ile bilgisayardan hız ve yön ayarı yaparak çalıştırın.
4- Yukarıdaki işlemleri iki motor olacak şekilde yeniden yapın
5- Kumandadan gelen sinyalleri 0-100 aralığında seri haberleşme ile bilgisayardan görün.
6- Kumanda ile motorları kontrol edin ve projeyi tamamlayın.
Ayrıca kod hazır olana kadar 24-5V Dönüştürücüyü kullanmayın. Her aşamada bağlantıları sağlam yapın, geçiçi bağlantı yapmayın.
Merhaba koddan önce dönüştürücüyü direk kullanmıyordum usb ile besledim devreyi dönüştürücü ile denemek için yapmıştım. AG Mehmet'in dediği gibi karta gelen sinyalleri ledlerle deneyerek devredeki hataları buldum çalışma konusunda koddaki pin giriş çıkışlarını da denemis oldum flysky ile iletisimini iki pin ile yaptım şu an gayet iyi çalışıyor. Kumandaya birkac fonskiyon daha eklemeyi planliyorum sonucu sizlerlede paylasirim. İlginize çok teşekkürler
 

Forum istatistikleri

Konular
130,124
Mesajlar
933,348
Kullanıcılar
453,199
Son üye
matrix43

Yeni konular

Geri
Üst