Arduino hög hastighet oscilloskop med PC-gränssnitt (3 / 7 steg)

Steg 3: Ställa in avbrottet för programvaran utlöste version




Har man flera utmärkta instructables om att inrätta snabb datainsamling på arduino.

Jag har utvecklat följande från olika källor.

Jag använder den variabla prescalar för att styra hur ofta provtagning avbrottet.

I huvudsak vi inrätta ett avbrott som tar tag i data automatiskt i en kontrollerbar frekvens.

När det avbrott startar, data fångas i rutinen avbrott.

Om utlöser är på, data inte överförs till bufferten tills utlösande villkoret är uppfyllt.

Den analoga porten anges av den variabla adport. (ADMUX | = adport)

Frekvensen definieras med hjälp av ett prescalar. (ADCSRA register: bitar ADPS2, ADPS1 och ADPS0.)

Dessa bitar Bestäm division faktorn mellan systemet klockfrekvens och input klockan för att ADC.

.

Arduino 5V används som referens spänning. (Den REFS0 biten)

Observera att spänningen på min USB-port visas att driva min Arduino vid 4.76V.

Om jag kopplar är en strömförsörjning till Arduino "5V" linjen på 5.06V

Om du söker noggrannhet, strömförsörjning extern!.

.

Ange antalet bitar som används i analoga port capture. Hastighet som 8 bitar läses. ADLAR lite styr presentationen av ADC konvertering skriva en till ADLAR till vänster justera. I annat fall justeras värdet direkt. Detta har en omedelbar effekt på ADC Data registrera dig.

.

Som bitarna i ADCSRA för frekvens prescalar. (ADPS0, ADPS1, ADPS2 bitar)

.

Inställd på avbrottet upprepade gånger automatisk utlösare när analoga porten läses. (ADATE och Ebba Grön lite)

Möjligt för att ADC. (Den ADEN lite)

Observera användningen av funktionen sbi. Detta och cbi funktionen är mycket användbar för inställning och clearing data registrera bitar.

Börja på ADC avbryta. (ADSC lite)

.

Setup kontinuerlig läsning av adc port "adport" med ett avbrott

//
CLI(); Inaktivera avbrott så att vi kan ändra register utan att bli avbruten

Rensa ADCSRA och ADCSRB register

ADCSRA = 0;

ADCSRB = 0;

ADMUX | = adport; Ställ in kontinuerlig provtagning av analoga pin adport

ADMUX | = (1 << REFS0); ange referens spänning till AVCC

ADMUX | = (1 << ADLAR); Vänsterjustera ADC värde - så vi kan läsa högst 8 bitar från ADCH register endast

Ange prescalar. 8 är snabbast fungerande frekvens

8 prescalar 143Khz (efter acceptabla avbrott hastighetsminskning)
om (prescalar == 8) ADCSRA | = (1 << ADPS1) | (1 << ADPS0);

16 prescalar - 72 Khz provtagning

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

32 prescaler - 16mHz/32 = 500 kHz - producerar 37 Khz provtagning

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

64 prescalar producerar 19,2 Khz provtagning

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

128 prescalar - 9,4 Khz provtagning om (prescalar == 128) ADCSRA | = (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);

ADCSRA | = (1 << ADATE); Aktivera automatisk utlösare

ADCSRA | = (1 << Ebba Grön); Aktivera ADC konvertering komplett avbrott

SBI(ADCSRA,ADEN); Aktivera ADC

ADCSRA | = (1 << ADSC); Starta ADC mätningar på avbrott

StartTime=Micros(); spela in tid så att vi kan beräkna tid och frekvens

Aktivera avbrott och ger vi iväg!

SEI();

.

Avbryta koden

Adc avbrottet är servad av rutinen ISR(ADC_vect).

Variabla bufcount är positionen i bufferten, vars storlek är BUF_SIZE (= 1000).

Flagga utlöste gäller när data kan fångas.

När bufferten är full är flaggan writeit sant och adc är inaktiveras. (cbi(ADCSRA,ADEN);)

För att utlösa avbrottet är antingen utlöste värdet true i setup och data börjar omkodning omedelbart.

Eller newval dataobjektet är jämfört med den tidigare oldval.

Om skillnaden är större än på avtryckaren, utlöste är värdet true och data sparas i bufferten.

Den variabla trigcount används för att räkna antalet data artiklar läses under utlöser.

Detta nummer läggs till buffertstorleken under frekvens beräkningen för bibehållen noggrannhet av observerade frekvensen.

.

Detta är nyckeln till programmet!
ISR(ADC_vect) {

om (utlösta) {

BUFA [bufcount] = ADCH;

bufcount ++; Increment buffert counter

om (bufcount == BUF_SIZE) {

CBI(ADCSRA,ADEN); Inaktivera ADC

EndTime=Micros(); spela in sluttid för intervall beräkning

writeit = sant; flagga att det behövs en skriva

}

} annat {

Leta efter en utlösare

newval = ADCH;

trigcount ++;

resa = newval-oldval;

IF(!trigplus) resa = - resa;

om (resa > trigger) utlöses = sant; annat oldval = newval;

}

}

Se Steg
Relaterade Ämnen

Göra ett oscilloskop med SainSmart Mega2560 med TFT LCD sköld och 3.5 "Cologne beröring skärm

Detta instructable visar dig hur man bygger en bärbar pekskärmOscilloskop för mindre än 40 U$!Oscilloskopet är en av de mest kraftfulla elektroniska instrument somär tillgänglig för elektronik hobby, praktiker och ingenjörer. Det äranvänds främst til...

Arduino Bluetooth Garage dörrkontroll med sensorer och anpassningsbara Android App

Använda en arduino till aktivera reläer för att öppna garageportar och elektriska dörrlås.En anpassningsbar Android App, ansluter till arduino via lösenordsskyddade bluetooth-ihopparningen.En bluetooth hc-05 modul tar emot kommandon från en android-t...

PWM Arduino fläkt hastighet controller

enkelt dubbla kanaler PWM Arduino fan speed controller sköldDu kan hämta pcb ett sch (gjorda med expresspcb) från min hemsida (ladda ner avsnitt): http://www.apcc.tkSteg 1: Del förteckning Del förteckning:-3,5 cm x 6 cm single sided PCB-2st BD139 eff...

Baserade Arduino House värmare Controler med SMS användargränssnitt

projektet innehåller instruktioner och koden för att bygga en uppvärmning controller för ditt hem eller avlägsna land hus, som kan kontrolleras och övervakas av GSM via SMS-kommandon. Jag började att utforma det så vi behövde en pålitlig och Register...

Arduino själv balans registeransvarige med DIGITAL IMU, äntligen!

Vad är det?DIY Segway/balans styrenhet med modern DIGITAL IMU sensor.Programvara för en Arduino som gör det möjligt att läsa positionsdata från en av de nya DIGITAL accelerometer/gyroskop enheterna, bearbetar data med hjälp av Kalman filtrering (rikt...

Digilent ZYBO baserat oscilloskop med LabVIEW

Detta är enkel "oscilloskop" med Zynq - 7000 och NI LabVIEW program. Jag har använt inbyggda 12 - bitars analog till digital omvandlare 1MSPS för att få data från externa generator.För att generera signaler jag har använt DAC produktionen av STM...

Stock Arduino produktionen för dagar med en BeagleBone

Här är en snabb hacka för felsökning av Sakernas Internet projektLåt oss du byggt säga en fin, Internet-ansluten Arduino projekt med fancy webbgränssnitt betjänas av, t ex Ethernet sköld. Efter en eller två dagar den på något sätt slutar fungera och...

Arduino ultraljud avståndsmätare med I²C lcd uppvisning!

Heji detta projekt vill jag Visa och förklara du en rad sensor med ultraljud och en 20 x 04 LCD-skärm. Jag skrev koden för detta projekt själv och lade till massor av kommentarer, så att alla kan förstå det och använda det för andra projekt (kanske e...

Arduino OLED termometer och Hygrometer med DHT11 för nybörjare

Hej! Jag ska visa dig hur man gör en Arduino OLED termometer och hygrometer * med DHT11.OLED vi använder idag är 1.3″ tum i storlek, funktioner 128 × 64 pixlar och använder SPI bussen. På nästa steg hittar du mer nyttig information om OLED tech och d...

Arduino röst / taligenkänning med Geeetech modul [Tutorial]

Hur till: Arduino röst / taligenkänning med Geeetech modul [Tutorial]. Denna video visar dig hur man talar med din Arduino med (billigt) Geeetech röst kontrollmodulen. Du kan sedan använda koden kontrollerar en motor eller göra röststyrda lampor. Det...

Arduino Tweetmas träd * uppdaterad med kod *

I år jag vill inreda mitt hus till jul.Jag har arduino och led strip ws2811; Vad är allt bra!Behöver det har en bra idé att vara originell; Det är med twitter!Jag hörde om cheerlights projektet. Det är en bra idé.Jag ska göra Tweetmas träd !Steg 1: S...

Arduino justerbar termoelement-baserade Controller med relä

jag nyligen skapat en Arduino justerbar Timer styrenhet med relä projekt att styra min veranda gasvärmare millivolt (thermopile). De bilder som används i projektet, liksom bilderna används i detta projekt är samma, eftersom det finns endast en minima...

Kontrollera din Arduino från en PC med en Usb-kabel

om du vill veta hur tou kan styra din Arduino med datorn eller låta din Arduino Visa data på din dator, följer mina steg. För att göra detta behöver du några program för att skapa gränssnitt. Med WD gränssnitt Maker kan du skapa program och exportera...

Geigermätare med Touch-gränssnitt!

Det finns en hel del geigermätare instructables. Skillnaden med detta är att jag ville ge det ett modernt gränssnitt, liknar smart telefon pekskärmar, att någon skulle känna sig bekväm med. Anledningen till detta är att jag vill använda den som ett p...

Hur man gör en billig 16 MHz Arduino oscilloskop med hjälp av Excel och skärmen till Visa

Ofta kommer att en elektronik hobby designa och bygga något bara för att upptäcka att det inte beter sig som han eller hon tänkt. Ibland i dessa situationer är problemet relaterat till en elektrisk signal, men att saker rör sig med ljusets hastighet!...

Kontrollera med en LED med Arduino & potten blinkande hastighet (med video)

Hej vänner,I denna handledning & video, kommer jag visa dig hur man styr blinkande hastighet av en LED använder Arduino Nano & ett variabelt motstånd eller en potentiometer aka potten (kort form av potentiometer).Denna handledning är liknande till...

Hur man drar på ett oscilloskop med Arduino!

Först gå låter över några grunderna. Ett oscilloskop är ett verktyg för att visualisera ändra elektriska signaler.Oscilloskop: svängning (ändra), räckvidd (läser). Tillsammans gör "oscilloskop"!Ett oscilloskop fungerar genom att rita en spänning...

Arduino hög hastighet fotografering

I detta instructable jag kommer att visa dig hur jag gjorde en Arduino kontrollerad hög hastighet fotografering rigg för att kunna ta bilder av flytande stänk. Denna rigg kan också användas att fotografera andra gången känsliga saker utan ändringar (...

Arduino TFT prognos väderstation med ESP8266

Detta projekt bygger på Wunderground väderprognos via Internet.Specifikationer:1. 3 dagar väderprognosen (låg & hög temps, antagligen av nederbörd, skick ikoner)2. aktuella väderförhållanden (nuvarande temp, feelslike temp, fuktighet, tryck)3. aktuel...