Isi kandungan:

Atmega128A Proportional Motor Driving - ATMEL ICE AVR Timer UART PWM Control: 4 Langkah
Atmega128A Proportional Motor Driving - ATMEL ICE AVR Timer UART PWM Control: 4 Langkah

Video: Atmega128A Proportional Motor Driving - ATMEL ICE AVR Timer UART PWM Control: 4 Langkah

Video: Atmega128A Proportional Motor Driving - ATMEL ICE AVR Timer UART PWM Control: 4 Langkah
Video: PID Speed Control of DC Motor with ATMEGA128 2024, November
Anonim
Pemacu Motor Berkadar Atmega128A - ATMEL ICE AVR Timer UART PWM Control
Pemacu Motor Berkadar Atmega128A - ATMEL ICE AVR Timer UART PWM Control
Pemacu Motor Berkadar Atmega128A - ATMEL ICE AVR Timer UART PWM Control
Pemacu Motor Berkadar Atmega128A - ATMEL ICE AVR Timer UART PWM Control
Pemacu Motor Berkadar Atmega128A - ATMEL ICE AVR Timer UART PWM Control
Pemacu Motor Berkadar Atmega128A - ATMEL ICE AVR Timer UART PWM Control
Atmega128A Proportional Motor Driving - ATMEL ICE AVR Timer UART PWM Control
Atmega128A Proportional Motor Driving - ATMEL ICE AVR Timer UART PWM Control

Dalam arahan ini, saya akan menerangkan bagaimana

  • kawal motor DC dengan PWM
  • berkomunikasi melalui UART
  • menangani gangguan pemasa

Pertama sekali, kami akan menggunakan papan Pembangunan sistem Core AVR yang boleh anda dapati di Aliexpress sekitar 4 USD. Pautan papan pengembangan ada di sini. Kami juga akan menggunakan Atmel ICE Debugger dan Atmel Studio untuk program & debug perisian kami.

Langkah 1: Menyelam Dalam Lembaran Data & Kod Sumber - Kelajuan Jam

Menyelam Dalam Ke Lembar Data & Kod Sumber - Kelajuan Jam
Menyelam Dalam Ke Lembar Data & Kod Sumber - Kelajuan Jam
Menyelam Dalam Ke Lembar Data & Kod Sumber - Kelajuan Jam
Menyelam Dalam Ke Lembar Data & Kod Sumber - Kelajuan Jam
Penyelaman Dalam Ke Lembar Data & Kod Sumber - Kelajuan Jam
Penyelaman Dalam Ke Lembar Data & Kod Sumber - Kelajuan Jam

Dalam 1. peluru kita menentukan frekuensi kristal kita di mana kita dapat melihat di papan pengembangan

Langkah 2: Menetapkan Daftar UART

Menetapkan Daftar UART
Menetapkan Daftar UART
Menetapkan Daftar UART
Menetapkan Daftar UART
Menetapkan Daftar UART
Menetapkan Daftar UART
Menetapkan Daftar UART
Menetapkan Daftar UART

Untuk berkomunikasi dengan UART anda harus menetapkan USART Baud Rate Register - UBRRnL dan UBRRnH dengan betul, anda boleh mengira sendiri atau anda boleh menggunakan kalkulator dalam talian untuk mendapatkan nilai yang betul dengan mudah

Kalkulator Dalam Talian

ruemohr.org/~ircjunk/avr/baudcalc/avrbaudca…

Oleh itu, nilai MYUBBR dikira kemudian, Dalam daftar UCSR0B kami mengaktifkan RXEN0 (recv enabled) TXEN0 (transmit allow) dan RXCIE0 (RX for interrupt). Dalam daftar UCSR0C kami memilih ukuran char 8 bit.

Selepas kami menetapkan bit interupsi RX, kami harus menambahkan fungsi ISR untuk USART0_RX_vect

ISR (USART0_RX_vect) {char rcvChar = UDR0; jika (rcvChar! = '\ n') {buffer [bufferIndex] = rcvChar; bufferIndex ++; }}

Anda tidak seharusnya melakukan logik perniagaan dalam rutin perkhidmatan mengganggu anda. Anda mesti membuat fungsi kembali secepat mungkin.

Langkah 3: Tetapan PWM

Tetapan PWM
Tetapan PWM

Dalam fungsi initPWM, kami mengatur scaler jam CPU kami, mod Timer / Counter sebagai PWM Cepat dan mengatur perilakunya dengan bit COM

Kita juga harus menyambungkan motor DC ke pin OC2 yang ditentukan dalam Jadual 66. Bandingkan Mod Output, Mod PWM Cepat dalam lembar data kami, anda juga akan melihat bahawa pin OC2 adalah (OC2 / OC1C) PB7

Langkah 4: Hasilnya

Keputusan
Keputusan
Keputusan
Keputusan

Apabila anda memuat naik kod sumber di lampiran.

Anda boleh memasukkan nilai PWM baru (0-255) dari UART (anda boleh menggunakan terminal port bersiri arduino) untuk menetapkan kelajuan Motor DC.

Disyorkan: