- Pulsbreedtemodulatie (PWM)
- ATtiny13 programmeren met Arduino
- Componenten vereist
- Schakelschema en werking
Servomotor werkt op het principe van pulsbreedtemodulatie (PWM) en de rotatiehoek wordt geregeld door de duur van de puls toegevoerd aan de stuurpen. Hier in deze tutorial zullen we een servomotor besturen met ATtiny13-microcontroller met behulp van PWM-techniek. Dus voordat we verder gaan, zullen we eerst leren over PWM, Servomotor en hoe ATtiny13 te programmeren met Arduino Board.
Pulsbreedtemodulatie (PWM)
Pulsbreedtemodulatie (PWM) wordt gedefinieerd als een methode voor het genereren van een analoog signaal met behulp van een digitale bron. Een PWM-signaal bestaat uit twee hoofdcomponenten: duty-cycle en frequentie. Deze componenten bepalen zijn gedrag. Duty cycle beschrijft de hoeveelheid tijd dat het signaal in een hoge staat is. Het wordt weergegeven als een percentage van de totale tijd die nodig is om een cyclus te voltooien.
Duty Cycle = Inschakeltijd / (Inschakeltijd + Uitschakeltijd)
De frequentie bepaalt hoe snel de PWM een cyclus voltooit en hoe snel het signaal schakelt tussen hoge en lage toestanden. Een frequentie van 100 Hz betekent 100 cycli per seconde. Door een digitaal signaal met een hoge snelheid en met een bepaalde duty cycle AAN en UIT te schakelen, zal de output verschijnen als een analoog signaal met constante spanning. Een van de krachtige voordelen van PWM is dat het vermogensverlies zeer minimaal is.
Alle servomotoren werken rechtstreeks met + 5V-voeding, maar we moeten voorzichtig zijn met de hoeveelheid stroom die de motor zou verbruiken. Als we meer dan twee servomotoren gebruiken, moet een goed servoschild worden ontworpen.
Voordat u Servo op Attiny13 aansluit, kunt u uw servo testen met behulp van dit Servomotor-testcircuit. Hier hebben we servomotor met veel microcontrollers gekoppeld:
- Koppeling van servomotor met ARM7-LPC2148
- Koppeling van servomotor met MSP430G2
- Meerdere servomotoren aansturen met Arduino
- Koppeling van servomotor met PIC-microcontroller met behulp van MPLAB en XC8
- Servomotorbesturing met Raspberry Pi
- Servomotorbesturing met Arduino Due
- Koppeling Servomotor met AVR Microcontroller Atmega16
ATtiny13 programmeren met Arduino
Attiny13 kan worden geprogrammeerd met Arduino Uno of een ander Arduino-bord. Verbind Attiny13 met Arduino Uno zoals weergegeven in de onderstaande afbeelding.
- Arduino 5V - ATtiny13 pin 8
- Arduino GND - ATtiny13 pin 4
- Arduino pin 13 - ATtiny13 pin 7
- Arduino pin 12 - ATtiny13 pin 6
- Arduino pin 11 - ATtiny13 pin 5
- Arduino pin 10 - ATtiny13 pin 1
Arduino is ingesteld als een programmeur om ATtiny13 te programmeren. Dit wordt gedaan door de ArduinoISP-schets naar Arduino te uploaden. Deze Arduino-sketch is beschikbaar in de voorbeelden in Arduino IDE. Open de Arduino IDE en ga naar Bestanden> Voorbeelden> ArduinoISP .
Nu verschijnt het programma voor ArduinoISP. Upload het programma naar de Arduino Uno.
Arduino Uno is nu klaar om Attiny13 te programmeren. Maar we moeten de Attiny instellen door de kernbestanden te installeren. Ga hiervoor naar Bestand >> Voorkeuren in Arduino IDE
Er verschijnt dan een nieuw venster. En voeg in de " Extra Board Manager URL's " de onderstaande link toe en klik op "OK".
"Https://raw.githubusercontent.com/sleemanj/optiboot/master/dists/package_gogo_diy_attiny_index.json"
Ga nu in je Arduino IDE naar Tools >> Board >> Boards Manager
Dan verschijnt er een ander venster waarin je in het zoekvak 'Attiny' typt, dan krijg je “DIY ATtiny” en klik je op de knop 'installeren' (ik heb het al geïnstalleerd, daarom is de installatieknop in grijze kleur)
Om ATtiny 13 te gaan programmeren, moeten we Bootloader erop branden. Ga daarvoor naar Tools> Board> ATtiny13.
Ga nu naar Tools> Processorversie en controleer of de juiste versie van ATtiny is geselecteerd. Selecteer ATtiny13 of ATtiny13a, afhankelijk van uw chip.
Klik vervolgens op de knop Bootloader branden onder aan het menu Extra.
Na het branden van de bootloader is ATtiny nu klaar om te worden geprogrammeerd. Nu kunt u uw programma uploaden.
Componenten vereist
- ATtiny13 Microcontroller
- Servomotor
- Potentiometer
- + 5V batterij
- Arduino IDE
- Draden aansluiten
Schakelschema en werking
Het schakelschema om een servomotor te besturen met pot met ATtiny13 wordt hieronder gegeven.
Hieronder staan de aansluitingen
- Verbind de servomotorbesturingspin met pin 5 van ATtiny13
- Verbind de aarde van de servomotor met pin 4 van ATtiny13
- Sluit de VCC van de servomotor aan op pin 8 van ATtiny13
- Verbind de middelste pin van de potentiometer met pin 7 van ATtiny13
- Verbind de eerste en derde pinnen van de potentiometer met de VCC en GND.
- Sluit de plus van + 5V batterij aan op pin 8 van ATtiny13
- Verbind de min van + 5V batterij met pin 4 van ATtiny13
Een potentiometer is verbonden met pin 7 (PB2) van de ATtiny13 en de stuurdraad van de servomotor is verbonden met pin 5 (PB0).
Hier wordt de potentiometerwaarde uitgelezen en geconverteerd naar een waarde tussen 0 en 180. Vervolgens wordt deze hoekwaarde omgezet naar microseconden en wordt een puls gegeven aan de stuurpen van de servomotor met de berekende microseconden vertraging. Nu zal de servomotor draaien volgens de waarde van de potentiometer, zoals aangetoond in de onderstaande video.