arduino uno dengan motor yang digerakkan PWM dan penerima nirkabel 433mhz tidak berfungsi

Saya cukup baru dalam topik Arduino dan mencoba menggabungkan beberapa hal.

Pertama saya mencoba menyiapkan motor DC yang dapat dikontrol melalui PWM, yang berfungsi sempurna saat digunakan secara mandiri. Saya dapat menghidupkan/menghentikan motor dan mengubah kecepatan tergantung pada nilai yang saya kirim ke pin PWM.

Kedua saya mencoba menggunakan penerima nirkabel RF-5V untuk bekerja dengan remote control dari stopkontak listrik jarak jauh. Untuk yang ini saya mengikuti instruksi di cara membuat 433mhz pelacak. Ini dengan sendirinya juga berfungsi. Saya dapat menerima kode berbeda tergantung pada tombol mana di remote yang saya tekan.

Sekarang bagian yang menyenangkan dimulai: Saya ingin mengintegrasikan kedua proyek menjadi satu, sehingga saya dapat menggunakan remote untuk menghidupkan/menghentikan motor. Jadi saya membuat sirkuit berikut:

Sirkuit motor yang digerakkan pwm dengan penerima nirkabel

(Terima kasih untuk beberapa dari Anda yang menunjukkan bahwa rangkaiannya tidak sesuai dengan sketsa. Saya membuat kesalahan saat menggambar, tetapi meskipun kabel terpasang pada pin yang tepat, itu berfungsi seperti yang dijelaskan)

dan kode berikut (yang sebagian berasal dari instruksi yang disebutkan di atas):

#include <RCSwitch.h>

// init 433MHz lib
RCSwitch mySwitch = RCSwitch();
unsigned long lOldValue=0;  // to check for consecutive reads on 433MHz
int motorPin = 5; // PWM-Pin to use for motor

void setup()
{
  pinMode(motorPin, OUTPUT);

  Serial.begin(9600);

  // set-up rf receiver
  mySwitch.enableReceive(0);  // 433MHz Receiver on interrupt 0 => that is pin #2
}

void loop()
{
  if (mySwitch.available())
  {
    int value = mySwitch.getReceivedValue();

    // only react, if at least two times same value received
    if (value == lOldValue)
    {
      if (value == 0)
      {
        Serial.print("Unknown encoding");
      }
      else
      {
        Serial.print("Received ");
        Serial.print( mySwitch.getReceivedValue() );
        Serial.print(" / ");
        Serial.print( mySwitch.getReceivedBitlength() );
        Serial.print("bit ");
        Serial.print("Protocol: ");
        Serial.println( mySwitch.getReceivedProtocol() );

    // One of the keys on the remote
    if (value == 274393) {
      Serial.println("got start code, starting motor");
          analogWrite(motorPin, 100); // start the motor
    }

    // another key on the remote
    if (value == 270384) {
      Serial.println("got stop code, stopping motor");
          analogWrite(motorPin, 0); // stop the motor
    }
      }
    }
    lOldValue = value;
    mySwitch.resetAvailable();
  }
}

ketika saya menjalankan kode dan mengklik remote, saya mendapatkan nilai berbeda yang ditampilkan tergantung pada tombol yang saya tekan. Jadi penerima nirkabel berfungsi seperti yang diharapkan.

Ketika saya menerima nilai yang tepat untuk menghidupkan motor, motor benar-benar mulai berputar, jadi ini juga berfungsi.

Dan di sinilah bagian yang menyenangkan dimulai: Segera setelah saya menggunakan fungsi analogWrite untuk mengirim data ke port PWM yang motornya terhubung, penerima nirkabel berhenti bekerja (atau setidaknya saya tidak mendapatkan nilai apa pun lagi saat menekan tombol pada terpencil).

Saya menemukan beberapa posting/deskripsi masalah serupa di internet yang mengatakan untuk mencoba yang berikut ini:

  • Gunakan pin lain untuk PWM (karena kemungkinan konflik interupsi). Saya mencobanya juga, perilaku yang sama
  • Gunakan catu daya eksternal alih-alih Kabel USB, yang membantu seseorang mengatasi masalah ini. Tidak disini. Tidak berhasil juga

Jadi pertanyaannya adalah: Adakah yang tahu cara menggabungkan kedua hal tersebut sehingga dapat menggunakan penerima nirkabel untuk mendapatkan perintah dan menghidupkan/mematikan motor dengannya?


person Olli    schedule 09.01.2017    source sumber
comment
Jika Anda melepaskan motor, meninggalkan program yang sama, dan mungkin memasang LED dengan resistor, apakah ini menyelesaikan masalah? Jika hal ini teratasi, maka masalahnya terletak pada daya yang tidak mencukupi atau kebisingan. Anda dapat menyelesaikan masalah pertama dengan memberi daya pada sirkuit secara eksternal (coba dengan catu daya bangku, lalu Anda dapat mencoba menggunakan satu baterai, tetapi konfirmasikan saja sebelum mulai mendesainnya). Jika ada kebisingan, letakkan kapasitor di sebelah catu daya motor (semakin besar semakin baik, setidaknya beberapa ratus mikrofarad).   -  person frarugi87    schedule 09.01.2017
comment
@ frarugi87 Lucunya masalah masih ada, ketika saya tidak menghubungkan motor ke sirkuit. Bahkan memanggil analogWrite tanpa perangkat keras terpasang menghasilkan perilaku yang sama.   -  person Olli    schedule 09.01.2017
comment
Tunggu, Anda menulis int motorPin = 5;, tetapi dalam skema Anda memasang motor ke pin 3, dan pada pin 5 Anda memiliki transceiver 433... Apakah Anda memperbaikinya dengan benar?   -  person frarugi87    schedule 09.01.2017
comment
@ frarugi87 Oh bodohnya... saya benar-benar membuat grafik rangkaiannya salah.. maaf soal itu.. ini terjadi setelah saya mengganti pin PWM beberapa kali dan bingung... :( tetapi memiliki kabel seperti kode yang menggunakannya , itu masih tidak berhasil.   -  person Olli    schedule 09.01.2017
comment
apakah ini berfungsi jika Anda tidak menghubungkan motor dan tidak menghubungkan dioda?   -  person dandavis    schedule 10.01.2017
comment
@dandavis terima kasih atas petunjuknya.. saya akan mencobanya malam ini! belum mencoba kombinasi ini!   -  person Olli    schedule 10.01.2017
comment
nah kalau mundur, maka mengaktifkan npn akan menurunkan rel 5v...   -  person dandavis    schedule 10.01.2017


Jawaban (1)


Saya memiliki masalah yang sama di masa lalu. Masalahnya adalah kemampuan Arduino untuk mensuplai keduanya. Saya sarankan untuk menggunakan catu daya eksternal untuk penerima atau untuk motor (sebaiknya lakukan itu untuk motor tetapi menurut sirkuit Anda tidak mungkin) seperti 545043YwRobot dan suplai yang lain dari Arduino (I harap ini bukan yang Anda coba, jika demikian, saya minta maaf).

Semoga bisa membantu.

Yoav

person YoavShtainer    schedule 09.01.2017
comment
terima kasih atas informasinya. Saya akan mencoba memeriksa apakah ini akan menyelesaikan masalah. Namun karena terbatasnya ruang pada desain saya, saya tidak dapat menambahkan dua catu daya dalam casing saya. Saya berharap dapat menggunakan hanya satu blok 9v untuk memberi daya pada seluruh rangkaian. Ada ide tentang ini? - person Olli; 09.01.2017
comment
coba ke arduino, dan ke regulator langsung dari battery. - person YoavShtainer; 09.01.2017