Mündəricat:
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-13 06:56
Bu təlimatda sizə bunu necə edəcəyimi izah edəcəyəm
- PWM ilə bir DC motorunu idarə edin
- UART vasitəsilə əlaqə qurun
- qolu taymeri kəsir
Hər şeydən əvvəl, Aliexpress -də 4 USD ətrafında tapa biləcəyiniz bir AVR Core Sistem İnkişaf etdirmə lövhəsindən istifadə edəcəyik. İnkişaf lövhəsi bağlantısı burada. Proqramımızı proqramlaşdırmaq və düzəltmək üçün Atmel ICE Debugger və Atmel Studio -dan da istifadə edəcəyik.
Addım 1: Vərəqə və Mənbə Koduna Dərin Dalış - Saat Sürəti
1. güllədə inkişaf lövhəsində görə biləcəyimiz kristal tezliyimizi təyin edirik
Addım 2: UART qeydlərini qurun
UART ilə əlaqə qurmaq üçün USART Baud Rate Registers - UBRRnL və UBRRnH -ni düzgün qurmalısınız, özünüz hesablaya bilərsiniz və ya düzgün dəyərləri əldə etmək üçün onlayn kalkulyatordan istifadə edə bilərsiniz.
Online Kalkulyator
ruemohr.org/~ircjunk/avr/baudcalc/avrbaudca…
Beləliklə, MYUBBR dəyəri hesablanır, UCSR0B registrində RXEN0 (recv etkinleştir) TXEN0 (ötürmə aktivləşdirmə) və RXCIE0 (kəsilmə üçün RX) aktivləşdiririk. UCSR0C qeydində 8 bitlik char ölçüsü seçirik.
RX kəsmə bitini təyin etdikdən sonra USART0_RX_vect üçün ISR funksiyasını əlavə etməliyik
ISR (USART0_RX_vect) {char rcvChar = UDR0; əgər (rcvChar! = '\ n') {tampon [bufferIndex] = rcvChar; bufferIndex ++; }}
Fasilə xidmət qaydasında heç bir iş məntiqi etməməlisən. Funksiyanı ən qısa zamanda geri qaytarmalısınız.
Addım 3: PWM Ayarları
İnitPWM funksiyasında CPU saat ölçmə cihazımızı, Taymer/Sayğac rejimini Sürətli PWM olaraq təyin edirik və davranışını COM bitləri ilə təyin edirik.
DC motorunu Cədvəl 66 -da göstərilən OC2 pininə də bağlamalıyıq. Məlumat cədvəlimizdə Çıxış Modu, Sürətli PWM Modu ilə müqayisə edin, OC2 pininin (OC2/OC1C) PB7 olduğunu da görəcəksiniz.
Addım 4: Nəticə
Mənbə kodunu əlavəyə yüklədiyiniz zaman.
DC Motor sürətini təyin etmək üçün UART-dan (arduino serial port terminalından istifadə edə bilərsiniz) yeni bir PWM dəyəri (0-255) daxil edə bilərsiniz.