INHOUDSOPGAWE:

Atmega128A proporsionele motorbestuur - ATMEL ICE AVR -timer UART PWM -beheer: 4 stappe
Atmega128A proporsionele motorbestuur - ATMEL ICE AVR -timer UART PWM -beheer: 4 stappe

Video: Atmega128A proporsionele motorbestuur - ATMEL ICE AVR -timer UART PWM -beheer: 4 stappe

Video: Atmega128A proporsionele motorbestuur - ATMEL ICE AVR -timer UART PWM -beheer: 4 stappe
Video: PID Controlled Inverse Pendulum Robot Based on AVR ATMEGA8 2024, November
Anonim
Atmega128A proporsionele motorbestuur - ATMEL ICE AVR -timer UART PWM -beheer
Atmega128A proporsionele motorbestuur - ATMEL ICE AVR -timer UART PWM -beheer
Atmega128A proporsionele motorbestuur - ATMEL ICE AVR -timer UART PWM -beheer
Atmega128A proporsionele motorbestuur - ATMEL ICE AVR -timer UART PWM -beheer
Atmega128A proporsionele motorbestuur - ATMEL ICE AVR -timer UART PWM -beheer
Atmega128A proporsionele motorbestuur - ATMEL ICE AVR -timer UART PWM -beheer
Atmega128A proporsionele motorbestuur - ATMEL ICE AVR -timer UART PWM -beheer
Atmega128A proporsionele motorbestuur - ATMEL ICE AVR -timer UART PWM -beheer

In hierdie instruksies sal ek u verduidelik hoe u dit moet doen

  • beheer 'n GS -motor met PWM
  • kommunikeer via UART
  • hanteer timer onderbreek

In die eerste plek gebruik ons 'n AVR Core -stelselontwikkelingskaart wat u op Aliexpress ongeveer 4 USD kan vind. Die skakel vir ontwikkelingsbord is hier. Ons sal ook Atmel ICE Debugger en Atmel Studio gebruik om ons sagteware te programmeer en te ontfout.

Stap 1: Diep in die datablad en bronkode - kloksnelheid

Diep in die datablad en bronkode - kloksnelheid
Diep in die datablad en bronkode - kloksnelheid
Diep in die datablad en bronkode - kloksnelheid
Diep in die datablad en bronkode - kloksnelheid
Diep in die datablad en bronkode - kloksnelheid
Diep in die datablad en bronkode - kloksnelheid

In 1. die koeël definieer ons ons kristalfrekwensie waar ons op die ontwikkelingsbord kan sien

Stap 2: Stel UART -registers op

Stel UART -registers op
Stel UART -registers op
Stel UART -registers op
Stel UART -registers op
Stel UART -registers op
Stel UART -registers op
Stel UART -registers op
Stel UART -registers op

Om met UART te kommunikeer, moet u USART Baud Rate Registers - UBRRnL en UBRRnH korrek stel, u kan dit self bereken, of u kan die aanlyn sakrekenaar gebruik om die korrekte waardes maklik te kry

Aanlyn sakrekenaar

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

So word die MYUBBR -waarde dan bereken: in register UCSR0B aktiveer ons RXEN0 (recv enable) TXEN0 (transmit enable) en RXCIE0 (RX vir onderbreking). In register UCSR0C kies ons 8 bit char grootte.

Nadat ons die RX -onderbreekbit ingestel het, moet ons die ISR -funksie byvoeg vir USART0_RX_vect

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

U moet geen logika in u diensroetine doen nie. U moet die funksie so gou moontlik laat terugkeer.

Stap 3: PWM -instellings

PWM -instellings
PWM -instellings

In funksie initPWM stel ons ons CPU -klokskaler, Timer/Counter -modus as Fast PWM in en stel die gedrag daarvan op met COM -bisse

Ons moet ook die GS -motor aansluit op die OC2 -pen wat in tabel 66 gespesifiseer word. Vergelyk die uitvoermodus, die vinnige PWM -modus in ons datablad, u sal ook sien dat die OC2 -pen (OC2/OC1C) PB7 is

Stap 4: Resultaat

Uitslag
Uitslag
Uitslag
Uitslag

As u die bronkode in die aanhangsel oplaai.

U kan 'n nuwe PWM-waarde (0-255) vanaf UART invoer (u kan die arduino-seriële poortterminal gebruik) om die DC-motorsnelheid in te stel.

Aanbeveel: