İçindekiler:
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-13 06:58
Bu talimatta, size nasıl yapılacağını açıklayacağım
- DC motoru PWM ile kontrol edin
- UART aracılığıyla iletişim
- zamanlayıcı kesintilerini yönet
Her şeyden önce, Aliexpress'de yaklaşık 4 USD bulabileceğiniz bir AVR Çekirdek sistem Geliştirme kartı kullanacağız. Geliştirme kartı bağlantısı burada. Ayrıca yazılımımızı programlamak ve hatalarını ayıklamak için Atmel ICE Debugger ve Atmel Studio'yu kullanacağız.
1. Adım: Veri Sayfasına ve Kaynak Koduna Derinlemesine Dalış - Saat Hızı
1. mermide, geliştirme panosunda görebileceğimiz kristal frekansımızı tanımlarız.
Adım 2: UART Kayıtlarını Ayarlama
UART ile iletişim kurmak için USART Baud Rate Registers - UBRRnL ve UBRRnH'yi doğru bir şekilde ayarlamanız gerekir, bunu kendiniz hesaplayabilir veya doğru değerleri kolayca elde etmek için çevrimiçi hesap makinesini kullanabilirsiniz.
Cevrimici hesap makinesi
ruemohr.org/~ircjunk/avr/baudcalc/avrbaudca…
Böylece MYUBBR değeri hesaplanır, UCSR0B kaydında RXEN0(recv etkinleştirme) TXEN0 (iletim etkinleştirme) ve RXCIE0'ı (interrupt için RX) etkinleştiririz. UCSR0C kaydında 8 bit karakter boyutunu seçeriz.
RX kesme bitini ayarladıktan sonra USART0_RX_vect için ISR fonksiyonunu eklemeliyiz.
ISR(USART0_RX_vect){ char rcvChar = UDR0; if(rcvChar != '\n') { tampon[bufferIndex] = rcvChar; tamponIndex++; } }
Kesinti hizmeti rutininizde herhangi bir iş mantığı yapmamalısınız. İşlevin en kısa sürede geri dönmesini sağlamalısınız.
Adım 3: PWM Ayarları
initPWM işlevinde CPU saat ölçekleyicimizi, Zamanlayıcı/Sayaç modunu Fast PWM olarak ayarladık ve davranışını COM bitleriyle ayarladık
Ayrıca DC motoru Tablo 66'da belirtilen OC2 pinine bağlamalıyız. Datasheet'imizde Çıkış Modu, Hızlı PWM Modu ile karşılaştırın, OC2 pininin (OC2/OC1C) PB7 olduğunu da göreceksiniz.
4. Adım: Sonuç
Ekteki kaynak kodunu yüklediğinizde.
DC Motor hızını ayarlamak için UART'tan (arduino seri port terminalini kullanabilirsiniz) yeni bir PWM değeri (0-255) girebilirsiniz.