Firmware Arduino untuk mesin CNC. Bekerja dengan mikrokontroler: firmware menggunakan Arduino dan Arduino IDE

Bayangkan situasi ini. "Anda memiliki papan dari printer (katakanlah Cina), yang berisi beberapa jenis firmware. Dan kemudian tibalah hari dan jamnya ketika Anda memutuskan bahwa Anda perlu mengubah firmware ini, karena satu dan lain alasan. Tapi Anda masih di sana adalah salah satu "tetapi": Anda takut merusak segalanya dan ingin dapat memutar kembali. Namun semoga beruntung, tidak banyak informasi normal di Internet tentang cara membuat cadangan firmware Salah satu anggota kami komunitas mendekati saya dengan masalah yang kurang lebih sama beberapa hari yang lalu. Dan saya memutuskan bahwa karena memang demikian, mengapa tidak memberi tahu semua orang tentang bagaimana hal ini dapat dilakukan.

Tapi sebelum Anda menulis pemikiran cerdas- Semuanya perlu diperiksa, itulah yang saya lakukan. Saya melakukan percobaan dengan Arduino Mega 2560. Saya akan menulisnya lebih lanjut.
Awalnya aku mencoba untuk pergi dengan cara biasa"hilang", mengeluarkan programmer Cina (di judul foto), terhubung melalui ISP, dan mengunduh firmware. Saya mencoba menuangkannya kembali... Mengalir, tetapi tidak lolos verifikasi. Saya menghabiskan beberapa jam menjelajahi Internet untuk memahami cara mengunduh firmware dengan benar dari Mega melalui ISP. Saya tidak menemukan sesuatu yang masuk akal, tetapi saya menyadari bahwa firmware dapat diunduh dan diunggah kembali tanpa programmer. Saya akan menulis tentang pengalaman ini di bawah. Namun saya akan menulis tentang cara mendownload firmware bukan dari board Arduino, untuk kemudian diupload kembali, lain kali saya memiliki board yang aman digunakan baik di api maupun di air.
Oke, langsung saja ke intinya. Pertama kita memerlukan utilitas Avrdude, itu sudah termasuk dalam paket Arduino IDE dan di versi saya ada di folder "%appdata%\Arduino15\packages\arduino\tools\avrdude\6.0.1-arduino2\bin". Buka foldernya, klik ruang kosong SHIFT+ tombol kanan mouse, dan pilih "Buka jendela perintah" dari menu. Sekarang aku akan memberimu perintah sederhana, yang memeriksa apakah pengontrol sedang dibaca.

avrdude.exe -p atmega2560 -c kabel -P COM5

Jika semuanya beres, maka Anda akan melihat teks seperti ini (lihat tangkapan layar).

Atribut perintah:
-p atmega2560- mengatur jenis pengontrol.
-c kabel- instalasi programmer. Ini adalah programmer internal di board Arduino Mega 2560. Mungkin saya tidak mengungkapkannya dengan benar, tetapi atribut yang sama digunakan oleh IDE saat mengunggah sketsa yang telah dikompilasi.
-P COM5- mengatur port yang dicolokkan kabel USB dari Arduino. Anda bisa mengintip dari IDE.

avrdude.exe -p atmega2560 -c pengkabelan -PCOM5 -b115200 -Uflash:r:"printer_firmware".hex:i

Jika semuanya baik-baik saja, kita fokus pada screenshot, firmware akan disimpan di file “printer_firmware.hex” di sebelah avrdude.exe.

Atribut tim baru:
-b115200- kecepatan port untuk programmer.

Uflash:r:"printer_firmware".hex:i- instruksi untuk membaca firmware ke dalam file "printer_firmware.hex".

Di sini Anda dapat mengunduh firmware untuk CNC di Arduino. Semua firmware ditulis di Arduino IDE.

Unduh firmware

Firmware untuk pengontrol DLC MKS, Pelindung CNC untuk mesin CNC

Di sini Anda dapat mengunduh firmware untuk CNC di DLC MKS, Perisai CNC. CNC Shield - papan ekspansi untuk Arduino UNO, nano. Firmware dimuat melalui Arduino IDE, mirip dengan firmware Arduino.

Unduh firmware

Deskripsi dan pemasangan firmware Arduino untuk CNC

Firmware untuk papan Arduino ditulis dalam bahasa Pemrosesan di lingkungan Pengembangan Arduino 1,0,2 inci sistem operasi jendela.

Kode sumber Firmware Arduino untuk kontrol 3 motor stepper melalui port COM

Untuk memulai dengan Arduino Anda perlu menginstal yang diperlukan perangkat lunak. Untuk melakukan ini, buka situs web resmi Arduino dan unduh distribusinya dari halaman ini. Di situs resmi Arduino Anda dapat menemukan banyak contoh firmware untuk board, serta mempelajari prinsip dasar bekerja dengan board. Sekarang jalankan file installer, pilih folder, setuju perjanjian lisensi dan sebagainya. Setelah instalasi, ikon Arduino akan muncul di desktop Anda. Sekarang Anda dapat menghubungkan papan Arduino kami ke komputer Anda, untuk ini kami menggunakan kabel USB 2.0 menghubungkan USB A - USB B

. Kami menunggu Windows menemukan dan menginstal perangkat keras baru.

Selanjutnya, mari kita luncurkan program Arduino dan pilih port COM yang diinginkan dengan memilih Tools->Serial Port di menu utama.

Memilih sketsa untuk Arduino

Tergantung pada konfigurasi mesin CNC dan tugas yang harus dilakukan, pilih sketsa dari daftar di atas. Kami pergi ke halaman yang sesuai. DI DALAM firmware untuk mengendalikan mesin CNC di jendela pengeditan Arduino IDE. Sekarang tekan tombolnya Unduh . Kami menunggu program Arduino untuk memeriksa, mengkompilasi dan menginstal firmware pada papan Arduino. Mari kita coba periksa apakah firmware berfungsi. Untuk melakukan ini, Anda perlu menghubungkan mesin dan memulai Pemantau pelabuhan dalam program Arduino. Monitor port terletak di
1000,2000,3000;
Melayani menu utama. Pada formulir Port Monitor, masukkan perintah: Dan tekan tombolnya Mengirim . Mari kita lihat bagaimana mesin berputar pada kecepatan yang berbeda. Ketika motor berhenti berputar, firmware Arduino akan mengirimkan T.

Oleh

USB ke komputer
- , ini akan ditampilkan di Port Monitor. Ada pesan sebelumnya OKE
- Dan mari kita bicara tentang bagaimana kita akan menulis firmware di Arduino. Kami terutama tertarik pada tiga papan Arduino:
- Arduino Uno - sebagai opsi paling umum Arduino Nano

– pilihan ringkas, nyaman untuk digunakan dalam struktur kecil

Arduino

ProMini
– opsi yang murah dan ringkas tanpa konverter USB-UART bawaan (untuk bekerja dengannya Anda memerlukan konverter USB-UART eksternal), tetapi nyaman saat menggunakan jaringan perangkat.
Semua board di atas menggunakan mikrokontroler ATmega328 (dalam versi lama ATmega168). ArduinoUploader.zip - Program untuk menulis file Hex ke Arduino Seperti yang sebelumnya, program ini memiliki antarmuka yang sederhana.
Proses firmwarenya sama:
- sambungkan Arduino ke port USB (
makanan terpisah
tidak perlu)

- pilih file Hex - pilih jenis Arduino Anda- pilih port COM

- klik Unggah Saat merekam, program terbuka jendela tambahan dan menampilkan tindakannya secara visual, yang memungkinkan Anda memantau proses perekaman. Ketika saya mencoba mem-flash Arduino Nano, program menolak untuk melihat MK. Alasannya adalah

instalasi yang salah
kecepatan Pelabuhan COM. Secara default, kecepatannya adalah 19200, tetapi Anda memerlukan 57600. Kecepatan port tidak diatur secara eksplisit dalam program, itu tertulis di baris "AVR Dude Params" - ubah nilainya dari 19200 menjadi 57600.

Otomatisasi Pengunggah ARP.
Pengunggah ARP, seperti XLoader, bekerja melalui AVR Dude, tetapi, tidak seperti XLoader, ia menunjukkan

baris perintah . Hal ini memungkinkan untuk menggunakan AVR Dude secara langsung dalam file Make atau Bat. Bahan tambahan.

Arduino_drivers.zip - Driver untuk Arduino

Arduino Cina murah dengan driver CH340G mulai bermunculan
Driver CH340G.zip - Driver untuk konverter USB-UART

Bootloader Arduino

Jika Anda memutuskan untuk mengumpulkan papan Arduino(dan tidak ada yang rumit di sana, sebenarnya itu adalah ATmega328 atau ATmega168 telanjang), Anda perlu Pemuat boot yang harus berisi mikrokontroler untuk bekerja dengan lingkungan (atau program untuk mengunggah file Hex). Tentu saja, untuk merekam file Hex ke dalam MK yang bersih Anda memerlukan seorang programmer dan harus mengatur sekringnya.

ATmegaBOOT_168_atmega328.hex — Pemuat boot untuk ATmega328
Untuk pengoperasian yang benar Anda perlu mengatur sekring sebagai berikut Rendah: FF Tinggi: DA Ext: 05

Pernahkah Anda berpikir bahwa klon Arduino Cina yang murah mungkin benar-benar berfungsi?
Anda hanya membayar beberapa dolar dan mendapatkan produk yang sama. Kedengarannya terlalu bagus untuk menjadi kenyataan, bukan?

Kenyataannya adalah ada yang berhasil dan ada yang tidak.
Baca artikelnya sampai akhir dan Anda akan mempelajari cara membuat klon China berfungsi dalam beberapa menit.

Saya menggunakan Arduino Uno untuk contoh ini, tetapi prosesnya sama untuk model lainnya.
Di sini kami memiliki Arduino Uno asli dan salinan bahasa Mandarinnya (Belanja,).

Mari kita jalankan beberapa tes.

Perangkat lunak Arduino saya diinstal di komputer saya dan berfungsi dengan baik. Pertama saya menghubungkan Arduino asli dan semuanya berfungsi sebagaimana mestinya.
Sekarang saya mencolokkan salinan Arduino Cina murah saya dan komputer tidak dapat mendeteksi perangkat.

Soalnya clone China ini tidak menggunakan chip standar Serial to USB, padahal chip tersebut bernama CH340. Komputer Anda tidak akan mengenali chip CH340 ini jika Anda menyambungkannya.
Cara mengatasinya sederhana.

Unduh perangkat lunak dari Pabrikan Cina dan menginstalnya di komputer Anda. Perangkat lunak ini akan bekerja pada semua versi Windows.
Windows: http://www.wch.cn/download/CH341SER_EXE.html

Sekarang sambungkan klon Cina Anda dan coba lagi. Semuanya harus bekerja. Klon Cina akan muncul di perangkat lunak Arduino dan siap digunakan. Saya mengunduh program flashing dan semuanya berfungsi dengan baik.

Namun dalam beberapa kasus, dewan direksi Tiongkok mungkin masih tidak berfungsi. Hal ini dikarenakan bootloader belum terinstal pada controller Atmel.
Untuk mengatasi masalah ini, kita memerlukan Arduino yang berfungsi dan tiruan dari Arduino yang ingin kita flash.

Pertama, kita menghubungkan Arduino yang berfungsi ke komputer dan membuka perangkat lunak Arduino.
Kami pergi ke File -> Contoh dan pilih ArduinoISP. Kami memuat ini ke papan. Setelah mengunduh, lepaskan Arduino.

Sekarang kita menghubungkan klon Arduino dengan kabel ke Arduino yang berfungsi sesuai dengan diagram ini:

  • Konektor 10 terhubung ke Reset,
  • Konektor 11 dihubungkan ke konektor 11,
  • Konektor 12 - hingga 12,
  • Konektor 13 - hingga 13,
  • 5 Volt - hingga 5 Volt,
  • Bumi ke Bumi.

Langkah selanjutnya adalah menghubungkan Arduino yang berfungsi ke komputer.

  1. Buka Alat -> Papan dan pilih biaya Cina, yang tidak berhasil. Dalam kasus saya itu adalah Arduino Uno.
  2. Sekarang buka lagi Tools -> Programmer dan pilih “Arduino as ISP”
  3. Sekali lagi buka Tools dan pilih “Burn Bootloader”.
  4. Sekali lagi Tools -> Programmer dan instal “ArduinoISP”.

Salinan bahasa Mandarin Anda sekarang seharusnya berfungsi dengan baik.

Arduino adalah perangkat lunak hebat dan sepenuhnya gratis untuk digunakan. Jika Anda membeli salinan Cina Pengontrol Arduino, pertimbangkan untuk berdonasi untuk mendukung pengembang.

Saya harap artikel itu bermanfaat. Tinggalkan komentar.

Artikel ini akan menunjukkan transisi dari Pemrograman Arduino untuk memprogram mikrokontroler ATtiny84 "mentah" menggunakan sketsa yang familiar di Arduino.

Kami akan membutuhkannya

Mari kita mulai dengan sketsa sederhana

Kami akan merakit perangkat dengan potensiometer dan LED. Tergantung pada sudut putaran potensiometer, kecerahan LED akan berubah. Kami terhubung ke Arduino dengan cara berikut: kami menghubungkan LED ke pin digital No. 6 (karena memiliki kemampuan untuk menghasilkan sinyal PWM, sehingga kecerahan LED akan disesuaikan), dan potensiometer ke analog pin No.0. Sketsa itu berisi kode berikut:

pwm-adc.ino // Nomor pin untuk LED int pin led = 6; // Nomor pin analog int analogPin = A0; // Baca nilainya // 0..255. Untuk melakukan ini, bagi nilainya dengan 4 analogWrite(ledPin, val / 4 ) ;

)

Sketsa di ATtiny84

Jadi, kami memiliki Arduino Uno. Bagaimana kita memprogram “tinky” kita? Untuk ini, perangkat seperti programmer digunakan. Firmware perlu diunggah ke pengontrol. Kita bisa mengubah Arduino kita menjadi itu. Dan ini dilakukan hanya dengan mengunggah sketsa ArduinoISP.

Membuat programmer dan merakit rangkaian

Buka sketsa yang sesuai “File → Contoh → ArduinoISP” dan unggah. Itu saja, transformasi selesai. Sekarang Anda perlu merakit sirkuit dengan benar untuk mem-flash "warna". Mari kita lihat kode sketsa yang baru saja diupload. Bahkan bukan pada kodenya, tapi pada komentar sebelumnya. ArduinoISP.ino // Sketsa ini mengubah Arduino menjadi AVRISP // menggunakan pin arduino: // // nama pin: not-mega: mega(1280 dan 2560) // reset slave: 10:53 // MOSI: 11:51 // MISO: 12:50 // SCK: 13:52 / // Pasang LED (dengan resistor) pada pin berikut: // 9: Detak jantung - menunjukkan programmer sedang berjalan // 8: Error - Menyala jika terjadi kesalahan (gunakan warna merah jika masuk akal) // 7: Pemrograman - Dalam komunikasi dengan budak

Pertama, mari kita sambungkan LED seperti yang dijelaskan di komentar, jangan lupa resistornya. Setelah merakit sirkuit dan menerapkan daya, LED yang terhubung ke pin 9 "Detak Jantung" akan berkedip, menunjukkan pengoperasian normal. Jika ini tidak terjadi, carilah kesalahan dalam koneksi.

Sekarang Anda perlu menghubungkan pin 10-13 ke ATtiny. Untuk mengetahui pinout yang terakhir, mari kita buka lembar data, yang dapat diunduh dari situs web Atmel, produsen pengontrol ini. Di halaman kedua ada gambar yang menjelaskan pinout. Berdasarkan lembar data dan komentar dari sketsa, kita bisa membuat tabel koneksi berikut:

Arduino UNO ATtiny84
Mengatur ulang 10 4
MOSI 11 7
MISO 12 8
SCK 13 9

Sekarang mari kita sambungkan LED dan resistor variabel. Resistor harus dihubungkan ke pin No. 6 (PA7), karena pin ini dapat menjadi input konverter analog-ke-digital, dan LED - ke yang lain, misalnya ke 10 (PA3).

Tentang penomoran pin

Ada baiknya berbicara sedikit tentang perbedaan antara penomoran pin di Arduino dan saat menggunakan C "murni". Di Arduino, pin diberi nomor secara berurutan dan pin sistem dikecualikan (daya, ground, dll.), tetapi kenyataannya semuanya sedikit berbeda . Semua pin pengontrol dapat dicirikan oleh dua parameter: nomor port (port A, port B, dll.) dan nomor pin (1..8).

Anda dapat menemukan peta pin di situs Arduino. Ini terlihat seperti ini:

Untuk ATtiny84 yang kami gunakan, penomorannya akan serupa. Di perpustakaan kecil Arduino, yang akan dibahas nanti, Anda dapat menemukan tabel korespondensi berikut:

// ATMEL ATTINY84 / ARDUINO // // +-\/-+ // VCC 1| |14 GND // (H 0) PB0 2| |13 AREF (H 10) // (H 1) PB1 3| |12 PA1 (H 9) // PB3 4| |11 PA2 (D 8) // PWM INT0 (D 2) PB2 5| |10 PA3 (H 7) // PWM (H 3) PA7 6| |9 PA4 (H 6) // PWM (H 4) PA6 7| |8 PA5 (H 5) PWM // +----+

Sesuai dengan tujuan masing-masing pin pengontrol, pin analog (yang memiliki masukan ADC) diberi nomor dalam sketsa sesuai dengan saluran ADC. Misalnya pin dengan nomor fisik 11 bisa menjadi input untuk saluran ADC kedua (ADC2), sehingga dalam sketsa disebut A2.

Sekarang kita perlu mengajarkan lingkungan pemrograman Arduino untuk memahami fakta bahwa kita menggunakan pengontrol yang berbeda.

Mempelajari lingkungan pengembangan

Langkah pertama adalah mengunduh perpustakaan arduino-tiny, yang berisi semua yang Anda butuhkan. Selanjutnya kita pergi ke Pengaturan Arduino dan lihat lokasi folder dengan sketsa.
Buka folder ini dan buat yang baru di sana dengan nama “hardware”. Dan ada satu lagi di dalamnya, “kecil”. Salin isi arsip yang diunduh sebelumnya ke folder ini. DAN tindakan terakhir- ganti nama file “Calon Boards.txt” menjadi “boards.txt”. Sekarang mari kita restart lingkungan pengembangan dan buka menu “Alat → Papan”.
Anda dapat melihat bahwa banyak item baru telah ditambahkan.

Pemrograman ATtiny84

Pilih sebagai perangkat yang diinginkan“Layanan → Papan → ATtiny84 @ 8 MHz (osilator internal; BOD dinonaktifkan)” karena kami tidak memiliki kuarsa eksternal yang mengatur frekuensi pengontrol. Sebagai seorang programmer, pilih “Layanan → Programmer → Arduino sebagai ISP”.

Sebagai kode, kita mengambil kode yang telah kita tulis untuk LED dan resistor pemangkas dan mengubah nomor pin di sana.

attiny.ino // Nomor pin untuk LED int pin led = 2; // Nomor pin analog int analogPin = A2; // Kita membaca nilai dari input analog ke dalam variabel ini int val = 0; batalkan pengaturan() (// Siapkan pin LED untuk output // Baca nilainya pinMode(ledPin, KELUARAN) ; ) putaran kosong() ( val = analogRead(analogPin) ;// val berisi nilai dari rentang 0..1023, dan rentang nilai untuk analogWrite

// 0..255. Untuk melakukan ini, bagi val dengan 4

analogWrite(ledPin, val/ 4 ) ;

) Hasil Kami mendapatkan perangkat yang mirip dengan yang bisa dibuat di Arduino, tetapi kami menggunakan mikrokontroler yang murah dan ringkas untuk itu.

  • Sergei Savenkov

    Dengan cara ini Anda dapat melepaskan beberapa tanggung jawab dalam diri Anda