Girino - snel Arduino oscilloscoop (14 / 26 stap)

Stap 14: Hoe de Pulse Width Modulation werkt


Zoals eerder gezegd, een puls breedte modulatie (PWM)-signaal is een vierkante signaal met vaste frequentie maar variabele breedte. Op de afbeelding zien we een voorbeeld. Op elke rij is er een dergelijke signalen met een verschillende taakcyclus (id est de periode gedeelte waarin het signaal hoog is). De gemiddelde signaal overname van een periode, krijgen we de rode lijn die overeenkomen met het pulserend sproeien met betrekking tot het signaal maximale.

Elektronisch "het nemen van het gemiddelde van een signaal" kan vertaald worden naar "doorgegeven aan een low-pass filter", zoals gezien op de voorafgaande stap.

Hoe genereert de Arduino een PWM-signaal? Er is een echt een goede tutorial over PWM hier:
http://Arduino.CC/en/tutorial/SecretsOfArduinoPWM
We zullen zien slechts de punten die nodig zijn voor dit project.

In de ATMega328P zijn er drie timers die kunnen worden gebruikt voor het genereren van de PWM-signalen, ieder van hen heeft verschillende kenmerken die u kunt gebruiken. Voor elke timer overeenkomen met twee registers genoemd Output vergelijken registreert A / B (OCRnx) die worden gebruikt om het signaal pulserend sproeien.

Wat betreft de ADC is er een prescaler (zie afbeelding), die de belangrijkste klok te hebben een nauwkeurige controle van de PWM-frequentie vertraagt. De klok vertraagd naar beneden wordt gevoed aan een teller die een Timer/teller registreren (TCNTn verhoogt). Dit register wordt voortdurend vergeleken met de OCRnx, wanneer ze gelijk zijn een signaal wordt verzonden naar een golfvorm Generator die het genereren van een puls op de uitgang-Pins. Zo is de truc het OCRnx-register instelt op een waarde om te wijzigen de gemiddelde waarde van het signaal.

Als we een 5 V-signaal (maximale willen) Wij moeten stellen een taakcyclus van 100% of een 255 in de OCRnx (maximaal voor een 8-bits getal), terwijl als we een 0,5 V-signaal willen we een 10% duty cycle of een 25 in de OCRnx instellen moet.

Aangezien de klok invullen van het TCNTn-register moet voordat u vanaf het begin voor een nieuwe puls de uitgangsfrequentie van de PWM is:

f = (Main klok) / prescaler / (TCNTn maximaal)

exempli gratia voor de Timer 0 en 2 (8-bits) met geen prescaler zal: 16 MHz / 256 = 62, 5 KHz terwijl voor Timer 1 (16-bits), zal zij 16 MHz / 65536 = 244 Hz.

Ik besloot om de Timer nummer 2 gebruiken omdat

  • Timer 0 wordt intern gebruikt door de Arduino IDE voor functies zoals millis();
  • Timer 1 heeft een te traag uitvoerfrequentie omdat er een 16-bits timer.

In de ATMega328P er zijn verschillende soorten Werkingsmodus van de timers, maar wat ik wilde was het Snel PWM met geen prescaling om de maximale mogelijke uitvoerfrequentie.

Gerelateerde Artikelen

Hoe maak je een goedkope 16 MHz Arduino oscilloscoop met behulp van Excel en uw computerscherm naar Display

Hoe maak je een goedkope 16 MHz Arduino oscilloscoop met behulp van Excel en uw computerscherm naar Display

Vaak zal een elektronica-hobbyist ontwerpen en bouwen iets alleen te vinden dat het de juiste manier hij of zij zich niet gedraagt. Soms is het probleem in dit soort situaties gerelateerd aan een elektrisch signaal, maar dat spul met de snelheid van
Hoe maak je een Arduino oscilloscoop sonde

Hoe maak je een Arduino oscilloscoop sonde

deze instructabe zal u tonen hoe te maken van een arduino oscilloscoop sonde voor deze links, van een poorman oscilloscoop en een multi-kanaal oscilloscoop voor arduino /Stap 1: Materialen en onderdelen Toolssoldeerboutsoldeerhobby boor (hebt u niet
Arduino oscilloscoop jonger dan 5 $ - 3-kanaals

Arduino oscilloscoop jonger dan 5 $ - 3-kanaals

Oscilloscopen worden gebruikt door elektronica-liefhebbers, hobbyisten en het is een van de gemeenschappelijke instrumenten op een werkbank. Maar het kopen van een dure dus uiteindelijk heb ik besloten dat de reden waarom niet kan krijgen te maken me
Arduino oscilloscoop

Arduino oscilloscoop

Een zeer eenvoudige en makkelijk te maken van de arduino PC oscilloscoop.Kenmerken:50K monsters/seconde(eigenlijk het maximaal 110K kan gaan maar het signaal zal worden luidruchtig)Auto trekkerFrequentie counterRedelijk nauwkeurige spanning lezingen
Arduino - oscilloscoop (arme man oscilloscoop)

Arduino - oscilloscoop (arme man oscilloscoop)

Hi guys,een paar dagen geleden vond ik deze code in de github en het is het beste wat die ik tot nu toe gevonden dus ik besloten heb om dit project te verspreiden zo veel als ik kan, voor iedereen die wil dat een goedkope oscilloscoop rond dit is de
Snelle Arduino MIDI Laser Harp

Snelle Arduino MIDI Laser Harp

Hoi!Ik heb een paar Arduino (en meer recentelijk, Olimexino) ingelijst MIDI laser harpen (zie een hier), en ik krijg regelmatig e-mails te vragen voor meer informatie over hoe een te bouwen. Ik zet dit instructable samen om een basiscursus volgen bet
Nokia 5110 Arduino oscilloscoop

Nokia 5110 Arduino oscilloscoop

Een nieuwe video over mijn nieuwe oscilloscoop. Vragen laat ze in de comments.---Downloads---https://github.com/adafruit/Adafruit-PCD8544-Nokia...https://github.com/adafruit/Adafruit-GFX-LibraryDe Arduino schets is gekoppeld aan dit instructable.----
Eenvoudig goedkoop Arduino oscilloscoop

Eenvoudig goedkoop Arduino oscilloscoop

Hallo iedereen!Ik kwam met dit interessante project, als ik beginnen ben te leren verwerken, dus ik dacht dat het zou gaaf zijn om het te delen met u. Hoop dat u zult genieten!OK, gewoon om dingen duidelijk, absoluut dit geen een oscilloscoop profess
Draadloos Arduino oscilloscoop

Draadloos Arduino oscilloscoop

In deze handleiding zal ik uitleggen hoe een Windows 8.1 telefoon, Arduino Uno bestuur en HC-05 Bluetooth-module gebruiken om te bouwen van een draadloze oscilloscoop. De telefoontoepassing heeft de kritieke functies van een oscilloscoop, hoewel de b
Snelle Arduino Hygrometer (vochtigheid Sensor)

Snelle Arduino Hygrometer (vochtigheid Sensor)

Wij zijn geweest having sommige condens en schimmel problemen in ons appartement onlangs moet, denk ik, de luchtvochtigheid. Ons eigendom is relatief nieuw gebouwd en als zodanig heeft zeer goede isolatiewaarde (dubbele beglazing enz.). De bijwerking
81 seconden besparen: snel Arduino Bootload/programma voor de productie van

81 seconden besparen: snel Arduino Bootload/programma voor de productie van

Vereist: AVRISP mkII en een Linux computer (of virtuele machine)Dit Instructable laat zien hoe te automatiseren en versnellen van de installatie van een bootloader en demo programma op een Arduino-compatibel apparaat.De Arduino bootloader en IDE make
OFFscope - off line oscilloscoop (Arduino + SD kaart snel logboekregistratie)

OFFscope - off line oscilloscoop (Arduino + SD kaart snel logboekregistratie)

Dit is geen real time oscilloscoop!Eerst verwerven u signaal door besparing/logging het naar SD-kaart. U bekijkt het verworven signaal op uw PC.Deze off line oscilloscoop is bedoeld voor auto sensor diagnose. 99% van de automotive sensoren werken in
Arduino - meerkanaals oscilloscoop (Poor Man's oscilloscoop)

Arduino - meerkanaals oscilloscoop (Poor Man's oscilloscoop)

ik presenteer software-upgrades voor de Arduino oscilloscoop (Poor Man's oscilloscoop) die het mogelijk maken om te visualiseren van gegevens voor twee of drie tegelijk kanalen. De belangrijkste functies zijn identiek aan de oorspronkelijke oscillosc
Arduino High speed oscilloscoop met PC-interface

Arduino High speed oscilloscoop met PC-interface

Uw Arduino en PC gebruiken als een Snelle geheugenoscilloscoop.De Arduino kunt spanning lezingen met een frequentie van betrouwbaar verzamelen tussen 141 en 153 KiloHertz.1000 kan data worden afgelezen in ongeveer 6.8ms.Overgedragen aan een PC, deze