Stap 1: Het creëren van een analoge spanning
Afgelopen zomer, kocht ik een oude analoge oscilloscoop. Niets bijzonders, enkel de grondbeginselen die ik nodig had om vertrouwd te raken met het gebruik van een scope. Ik wilde om erachter te komen hoe met dit stuk van testapparatuur, en plus de gloeiende groen scherm en de overvloed aan zeer clicky knoppen ziet (en voelt) vrij koel.
Een van de problemen die ik had nadat ik kreeg mijn it, was dat ik had geen signalen te meten! Met een Arduino of andere microcontroller-platform kun je gemakkelijk een blokgolf 0-5V door te trekken een pin hoog en laag in een regelmatige patter. Dit is enigszins interessant, maar geen gebruik maakt van het toepassingsgebied tot bijna zijn volledige potentieel.
Mijn Arduino Uno kunnen tevens een PWM-signaal, (afkorting voor pols-breedte-gemoduleerd signaal) produceren. Dit betekent dat het kan zeer snel (in de hoge kHz tot MHz bereik) gaan van 0-5V met variërende plicht cycli (hoeveelheid tijd 0V t.o.v. bedrag op 5V). Dit verschijnt op mijn oscilloscoop als een blokgolf die de breedte van time high verandert.
Dit signaal wordt geproduceerd door de volgende code:
voor (int iii = 0; iii < 256; iii ++)
{
analogWrite (outuptPin, iii);
}
Een PWM-signaal kan nabootsen een analoge spanning doordat het dezelfde gemiddeld vermogen, maar het is niet echt een analoge waarde. De 0V en 50% 5V 50% haalt het niet bij 2.5V, vooral als uw sample-rate hoog is.
Dus, nu we met een probleem geconfronteerd: hoe krijgen we een analoge spanning van pins die alleen 0 of 5V kunnen produceren? Een apparaat dat dit doet heet een DAC (digitaal naar Analoog Converter). Één manier is om de condensatoren gebruik "glad" een PWM-signaal. Het doel is om te kiezen van een condensator groot genoeg zodanig dat het langer dan de breedte van de puls duurt te laden of ontladen. Dit zal het produceren van een spanning die ligt tussen 0 en 5 v afhankelijk van het pulserend sproeien, maar is ook vrij traag, omdat het nodig heeft om de condensator te brengen en het wijzigen van de spanning.