Arduino High speed oscilloscoop met PC-interface (3 / 7 stap)

Stap 3: Instellen van de Interrupt voor de software geactiveerd versie


Er zijn verschillende uitstekende instructables over het opzetten van gegevenssnelheden vangen op de arduino.

Ik heb de volgende uit allerlei bronnen ontwikkeld.

Ik gebruik de variabele prescalar om de frequentie van de bemonstering-interrupt.

In wezen we een interrupt die gegevens automatisch met een regelbare frequentie grijpt instellen.

Zodra de interrupt begint, gegevens wordt vastgelegd in een interrupt routine.

Als triggering aanstaat, gegevens niet worden doorgegeven aan de buffer totdat de activerende voorwaarde is voldaan.

De analoge poort is opgegeven door de variabele adport. (ADMUX | = adport)

De frequentie wordt gedefinieerd met behulp van een prescalar. (ADCSRA register: bits ADPS2, ADPS1 en ADPS0.)

Deze bits bepalen de factor van de verdeling tussen de klokfrequentie van het systeem en de input klok naar de ADC.

.

De 5V van de Arduino wordt gebruikt als een referentiespanning. (De REFS0-bit)

Merk op dat de spanning op mijn USB-poort wordt weergegeven om te rijden mijn Arduino op 4.76V.

Als ik verbinding maken met is een voeding van de Arduino de regel '5V' op 5.06V

Als u zijn op zoek naar nauwkeurigheid, externe spanning leveren!.

.

Stel het aantal bits in de opname van de analoge poort gebruikt. Maximumsnelheid van 8 bits worden gelezen. De ADLAR-bit bepaalt de presentatie van de ADC-conversie schrijf een ADLAR naar links aanpassen. Anders wordt de waarde direct aangepast. Dit heeft een onmiddellijk effect op de ADC gegevens registreren.

.

Het instellen van de bits in ADCSRA voor de prescalar van de frequentie. (ADPS0, ADPS1, ADPS2 bits)

.

Stel de interrupt op herhaaldelijk Auto Trigger wanneer de analoge poort wordt gelezen. (De ADATE en ADIE-bit)

Inschakelen van de ADC. (De ADEN bit)

Let op het gebruik van de sbi-functie. Dit en de cbi functie zijn zeer nuttig voor instelling en clearing gegevens registreren bits.

Start de ADC-interrupt. De ADSC (bit)

.

Instellen van de continue lezing van de adc poort 'adport' met behulp van een interrupt

//
cli(); interrupts uitschakelen, zodat we de registers veranderen kunnen zonder te worden onderbroken

Schakel registers van ADCSRA en ADCSRB

ADCSRA = 0;

ADCSRB = 0;

ADMUX | = adport; continue bemonstering van analoge pin adport instellen

ADMUX | = (1 << REFS0); set referentie spanning te AVCC

ADMUX | = (1 << ADLAR); links uitlijnen de ADC-waarde - zodat wij hoogste 8 bits van ADCH register alleen lezen kunnen

De prescalar instellen 8 is de snelst werkbare frequentie

8 prescalar 143Khz (na de vermindering van de snelheid van de maximaal toelaatbare interrupt)
Als (prescalar == 8) ADCSRA | = (1 << ADPS1) | (1 << ADPS0);

16 prescalar - 72 Khz sampling

Als (prescalar == 16) ADCSRA | = (1 << ADPS2);

32 prescaler - 16mHz/32 = 500 kHz - produceert 37 Khz sampling

Als (prescalar == 32) ADCSRA | = (1 << ADPS2) | (1 << ADPS0);

64 prescalar produceert 19,2 Khz sampling

if(prescalar==64) ADCSRA | = (1 << ADPS2) | (1 << ADPS1);

128 prescalar - 9.4 Khz sampling als (prescalar == 128) ADCSRA | = (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);

ADCSRA | = (1 << EENDATUM); inschakelen automatische trigger

ADCSRA | = (1 << ADIE); Activeren van de ADC-conversie voltooid Interrupt

SBI(ADCSRA,ADEN); inschakelen van ADC

ADCSRA | = (1 << ADSC); metingen van de ADC start op onderbreken

StartTime=Micros(); tijd vastleggen, zodat we periode en frequentie berekenen kunnen

inschakelen interrupts en off we go!

Sei();

.

De Interrupt-code

De adc-interrupt wordt onderhouden door de ISR(ADC_vect)-routine.

Variabele bufcount is de positie in de buffer, waarvan de grootte BUF_SIZE is (= 1000).

Vlag geactiveerd geldt wanneer gegevens kunnen worden vastgelegd.

Wanneer de buffer vol is vlag writeit true is ingesteld en de adc is uitgeschakeld. (cbi(ADCSRA,ADEN);)

Als u wilt activeren de interrupt ofwel geactiveerd is ingesteld op true in de setup en de gegevens begint onmiddellijk hercoderen.

Of de newval data item wordt vergeleken met de vorige oldval.

Als het verschil groter dan is de trigger geactiveerd is ingesteld op true en de gegevens in de buffer wordt opgeslagen.

De variabele trigcount wordt gebruikt om het tellen van het aantal gegevens items tijdens triggering gelezen.

Dit nummer wordt toegevoegd aan de buffergrootte tijdens de berekening van de frequentie te handhaven van de nauwkeurigheid van de waargenomen frequentie.

.

Dit is de sleutel tot het programma!!
ISR(ADC_vect) {}

Als (geactiveerde) {}

bufa [bufcount] = ADCH;

bufcount ++; Increment buffer teller

Als (bufcount == BUF_SIZE) {}

CBI(ADCSRA,ADEN); uitschakelen van ADC

EndTime=Micros(); record eindtijd voor het interval berekening

writeit = true; vlag dat een schrijven nodig is

}

} else {}

zoekt u een trigger

newval = ADCH;

trigcount ++;

reis = newval-oldval;

if(!trigplus) reis = - reis;

Als (reis > trigger) geactiveerd = true; anders oldval = newval;

}

}

Gerelateerde Artikelen

High-Speed fotografie met de Arduino en CHDK

High-Speed fotografie met de Arduino en CHDK

dit project wordt gebruikgemaakt van een Arduino microcontroller en een laser pauze-beam trigger brand via USB externe een Canon camera bewerkt met CHDK (Canon Hack Development Kit) firmware.Directe invloeden zijn de high-speed flitsfotografie geacti
Arduino high speed fotografie

Arduino high speed fotografie

In dit instructable ik zal je laten zien hoe ik een Arduino gecontroleerd High-Speed Fotografie tuig te kunnen nemen van de foto's voor vloeibare splashes gemaakt. Dit tuig kan ook worden gebruikt voor het fotograferen van andere tijd gevoelige dinge
Arduino High Speed Photography Trigger

Arduino High Speed Photography Trigger

[youtube]jsXu4jV2BiI[/youtube]
ARDUINO photogate voor HIGH SPEED fotografie

ARDUINO photogate voor HIGH SPEED fotografie

In de afgelopen paar weken die heb ik het internet voor hoge snelheid foto met behulp van een ARDUINO gezocht, vond dus veel meer dan 90% van de projecten ik gebruikte geluid als de trigger. Als u probeert om een beeld van een ballon knallen die prim
Hoe maak je een Arduino sound synthesizer met MIDI-interface

Hoe maak je een Arduino sound synthesizer met MIDI-interface

Met deze synthesizer kun je Arduino reproduceren van volledig aangepaste golfvormen. Als gevolg van de MIDI-interface, kan het worden aangesloten op alle instrumenten die dergelijke functie en spelen met het gewenste geluid.Stap 1: materialen(In dit
High-Speed Fotografie voor Beginners

High-Speed Fotografie voor Beginners

High-Speed fotografie wordt gebruikt voor het vastleggen van snelle beweging onmiddellijk. In het algemeen, high-speed fotografie is gedaan in een donkere kamer, met speciale apparatuur, zoals een externe flitser en een externe of geluid geactiveerde
Interactieve, licht-Up trommel tafel met aangepaste Interface

Interactieve, licht-Up trommel tafel met aangepaste Interface

Dit project was een geschenk voor mijn broer (drummer), wie heeft besloten een kick drum omzetten in een tabel voor zijn nieuwe appartement. Mij installateur sommige RGB LED's aan de binnenkant en een interface naar de controle van het licht op twee
Digilent ZYBO gebaseerd oscilloscoop met LabVIEW

Digilent ZYBO gebaseerd oscilloscoop met LabVIEW

Dit is eenvoudige "oscilloscoop" met behulp van Zynq - 7000 en NI LabVIEW programma. Ik heb ingebouwde 12 - bit, 1MSPS analoog naar digitaal converter gebruikt om gegevens uit externe generator.Voor het genereren van de signalen die ik heb gebru
Geiger Counter met Touch-Interface!

Geiger Counter met Touch-Interface!

Er zijn nogal wat geigerteller instructables. Het verschil met deze is dat ik wilde het een moderne interface, vergelijkbaar met slimme telefoon aanraakschermen geven, dat iemand comfortabel voelen zou met. De reden hiervoor is dat ik wil gebruiken a
Controle uw Arduino vanaf een PC met een Usb-kabel

Controle uw Arduino vanaf een PC met een Usb-kabel

als u weten hoe tou kunt bepalen van je Arduino met uw PC of laat je Arduino Toon gegevens op uw PC wilt, volg mijn stappen. Om dit te doen zal u sommige software voor het maken van interfaces. Met WD Interface Maker kunt u toepassingen maken en expo
Arduino robotarm en monitoring met verwerking

Arduino robotarm en monitoring met verwerking

de robotarm pakt een object nadat wordt gedetecteerd met behulp van de bewegingsmelder en vervolgens op een specifieke locatie verplaatst.lijst van onderdelen:1.3 servo 's2. passieve infrarood bewegingsmelder: http://www.sparkfun.com/products/86303.
Arduino zelf evenwicht Controller met behulp van digitale IMU, eindelijk!

Arduino zelf evenwicht Controller met behulp van digitale IMU, eindelijk!

Wat is het?DIY Segway/balans controller met moderne digitale IMU sensor.Software voor een Arduino waarmee het standpunt om gegevens te lezen van een van de nieuwere digitale accelerometer/gyroscoop eenheden, processen, de gegevens met behulp van Kalm
Oscilloscoop met hun handen

Oscilloscoop met hun handen

Hallo. Onlangs begon zijn studie elektronica. Er was behoefte aan een instrumentatie. Aangezien ik heb het monteren van audio versterkers, kostte het een oscilloscoop. Maar de kosten van een goede machine het is bedroevend. Ik heb besloten dat ik de
Arduino DS3231 Real timerklok met kleur TFT

Arduino DS3231 Real timerklok met kleur TFT

Het bouwen van een real timerklok met een kleuren TFT display is uiterst eenvoudig met behulp van de Arduino. Het display toont de tijd, de datum, de huidige temperatuur langs de MAX en MIN temperatuur die het heeft gemeten. Laten we bouwen het!Stap