Daftar Isi:
2025 Pengarang: John Day | [email protected]. Terakhir diubah: 2025-01-13 06:57
Dalam instruksi ini, saya akan menjelaskan caranya
- mengontrol motor DC dengan PWM
- berkomunikasi melalui UART
- menangani interupsi pengatur waktu
Pertama-tama, kami akan menggunakan papan Pengembangan sistem Inti AVR yang dapat Anda temukan di Aliexpress sekitar 4 USD. Tautan papan Pengembangan ada di sini. Kami juga akan menggunakan Atmel ICE Debugger dan Atmel Studio untuk memprogram & men-debug perangkat lunak kami.
Langkah 1: Menyelam Jauh Ke Lembar Data & Kode Sumber - Kecepatan Jam
Dalam 1. peluru kita mendefinisikan frekuensi kristal kita di mana kita bisa melihat di papan pengembangan
Langkah 2: Mengatur Register UART
Untuk berkomunikasi dengan UART Anda harus mengatur Register Baud Rate USART – UBRRnL dan UBRRnH dengan benar Anda dapat menghitungnya sendiri atau Anda dapat menggunakan kalkulator online untuk mendapatkan nilai yang benar dengan mudah
Kalkulator Online
ruemohr.org/~ircjunk/avr/baudcalc/avrbaudca…
Jadi nilai MYUBBR dihitung kemudian, Pada register UCSR0B kita aktifkan RXEN0 (recv enable) TXEN0 (transmit enable) dan RXCIE0 (RX untuk interupsi). Pada register UCSR0C kita pilih ukuran char 8 bit.
Setelah kita mengatur bit interupsi RX, kita harus menambahkan fungsi ISR untuk USART0_RX_vect
ISR(USART0_RX_vect){ char rcvChar = UDR0; if(rcvChar != '\n') { buffer[bufferIndex] = rcvChar; bufferIndex++; } }
Anda tidak boleh melakukan logika bisnis apa pun dalam rutinitas layanan interupsi Anda. Anda harus mengembalikan fungsi secepatnya.
Langkah 3: Pengaturan PWM
Dalam fungsi initPWM kami mengatur scaler jam CPU kami, mode Timer/Counter sebagai PWM Cepat dan mengatur perilakunya dengan bit COM
Kita juga harus menghubungkan motor DC ke pin OC2 yang ditentukan pada Tabel 66. Bandingkan Mode Output, Mode PWM Cepat di lembar data kami, Anda juga akan melihat bahwa pin OC2 adalah (OC2/OC1C) PB7
Langkah 4: Hasil
Saat Anda mengunggah kode sumber di lampiran.
Anda dapat memasukkan nilai PWM baru (0-255) dari UART (Anda dapat menggunakan terminal port serial arduino) untuk mengatur kecepatan Motor DC.