Innehållsförteckning:

Atmega128A proportionell motorkörning - ATMEL ICE AVR -timer UART PWM -kontroll: 4 steg
Atmega128A proportionell motorkörning - ATMEL ICE AVR -timer UART PWM -kontroll: 4 steg

Video: Atmega128A proportionell motorkörning - ATMEL ICE AVR -timer UART PWM -kontroll: 4 steg

Video: Atmega128A proportionell motorkörning - ATMEL ICE AVR -timer UART PWM -kontroll: 4 steg
Video: PID Controlled Inverse Pendulum Robot Based on AVR ATMEGA8 2024, November
Anonim
Atmega128A proportionell motorkörning - ATMEL ICE AVR -timer UART PWM -kontroll
Atmega128A proportionell motorkörning - ATMEL ICE AVR -timer UART PWM -kontroll
Atmega128A proportionell motorkörning - ATMEL ICE AVR -timer UART PWM -kontroll
Atmega128A proportionell motorkörning - ATMEL ICE AVR -timer UART PWM -kontroll
Atmega128A proportionell motorkörning - ATMEL ICE AVR -timer UART PWM -kontroll
Atmega128A proportionell motorkörning - ATMEL ICE AVR -timer UART PWM -kontroll
Atmega128A proportionell motorkörning - ATMEL ICE AVR -timer UART PWM -kontroll
Atmega128A proportionell motorkörning - ATMEL ICE AVR -timer UART PWM -kontroll

I denna instruerbara, förklarar jag dig hur

  • styra en likströmsmotor med PWM
  • kommunicera via UART
  • hantera timeravbrott

Först och främst använder vi ett AVR Core -systemutvecklingskort som du kan hitta på Aliexpress runt 4 USD. Länken för utvecklingskortet är här. Vi kommer också att använda Atmel ICE Debugger och Atmel Studio för att programmera och felsöka vår programvara.

Steg 1: Djupdykning i datablad & källkod - Klockhastighet

Deep Diving Into Datasheet & Source Code - Clock Speed
Deep Diving Into Datasheet & Source Code - Clock Speed
Deep Diving Into Datasheet & Source Code - Clock Speed
Deep Diving Into Datasheet & Source Code - Clock Speed
Deep Diving Into Datasheet & Source Code - Clock Speed
Deep Diving Into Datasheet & Source Code - Clock Speed

I 1. kulan definierar vi vår kristallfrekvens där vi kan se på utvecklingsbordet

Steg 2: Ställa in UART -register

Ställa in UART -register
Ställa in UART -register
Ställa in UART -register
Ställa in UART -register
Ställa in UART -register
Ställa in UART -register
Ställa in UART -register
Ställa in UART -register

För att kommunicera med UART måste du ställa in USART Baud Rate Registers - UBRRnL och UBRRnH korrekt, du kan beräkna det själv eller använda onlinekalkylatorn för att enkelt få rätt värden

Onlinekalkylator

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

Så MYUBBR -värdet beräknas då, I register UCSR0B aktiverar vi RXEN0 (recv enable) TXEN0 (sändningsaktivering) och RXCIE0 (RX för avbrott). I register UCSR0C väljer vi 8 bitars charstorlek.

När vi ställt in RX -avbrottsbit bör vi lägga till ISR -funktion för USART0_RX_vect

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

Du bör inte göra någon affärslogik i din avbrottsrutin. Du måste göra funktionen tillbaka så fort som möjligt.

Steg 3: PWM -inställningar

PWM -inställningar
PWM -inställningar

I funktion initPWM ställer vi in vår CPU -klockskalare, timer/räknarläge som snabb PWM och ställer in dess beteende med COM -bitar

Vi bör också ansluta likströmsmotorn till OC2 -stift som anges i tabell 66. Jämför utgångsläge, snabbt PWM -läge i vårt datablad, du kommer också att se att OC2 -stift är (OC2/OC1C) PB7

Steg 4: Resultat

Resultat
Resultat
Resultat
Resultat

När du laddar upp källkoden i bilagan.

Du kan ange ett nytt PWM-värde (0-255) från UART (du kan använda arduino seriell portterminal) för att ställa in DC-motorns varvtal.

Rekommenderad: