Förbättrad Arduino Rotary Encoder behandlingen



Roterande pulsgivare är stor indataenheter för elektronik projekt - förhoppningsvis detta Instructable kommer att inspirera och hjälpa dig att använda en i ditt nästa projekt.

Varför skriva rotationsencoder kod?

Jag ville använda en låg kostnad rotationsencoder som en input mekanism för ett av mina kommande projekt och var från början förvirrade av koden alternativ att ta avläsningar från rotary encoder och avgöra hur många "spärrar" eller cykler kodaren hade klickat förbi och i vilken riktning. Jag tror att min huvudsakliga skiss behöver att använda de flesta av min Arduino minne så jag undviker de olika tillgängliga encoder bibliotek, som verkade vara svårt att fungera när jag försökte ett par av dem. De verkar också använda mycket mer kod budgeten än skiss-baserad kod metoder diskuteras här på.

Om du bara vill kringgå bakom min strategi och komma rakt in i Instructable, gärna du gå vidare till steg 1!

Andra metoder

Flera av de viktigaste skiss-baserade (dvs. de inte använder ett bibliotek) metoder diskuteras i rt's blogginlägg där de skriver rotationsencoder kod som gör de billigaste pulsgivare kan användas som insatsvaror i Arduino. De har också ett bra exempel på de logik signal som kodaren producerar. RT funnit att en timer avbryta systemet fungerat bäst för dem men jag är orolig att röstningen frekvensen skulle förringa skärmen uppdateringshastighet i huvudloop för min projektet skiss. Med tanke på att rotary encoder kommer att flytta för en mycket liten del av den tid, jag skärmen för att uppdatera, det verkar vara en dålig match för min ansökan.

Jag valde att börja med Steve Spence kod här, som var bra på egen hand men verkade riktigt sakta ner när jag tagit resten av min skiss kod (vilket kräver skriva display uppdateringar till en liten TFT-skärm). Först undrade jag om det eftersom huvudloop innehåller ett debounce uttalande.

Jag läste sedan Olegs rotationsencoder artikel på en avbrottstjänstens rutin version av hans tidigare inlägg, jag trodde också det kan vara en bra idé att använda direkt port manipulation för att läsa båda stiften samtidigt och så snart avbrottet bränder. Hans nummer kan användas på alla ingångsstift om port manipulation koden är omskrivet. Däremot bestämde jag mig att använda endast maskinvaruavbrott på digital stift 2 och 3, så vi kan sätta avbrott att bara skjuta på en stigande kanten av pin spänningen, snarare än på stift spänning förändring, vilket inkluderar faller kanter. Detta minskar antalet gånger ISR kallas, störande från den huvudsakliga loopen.

Olegs koden använder en uppslagstabell för att minska storleken på kompilerad kod till en riktigt liten storlek men jag kunde inte få tillförlitliga resultat som skulle fånga mycket långsam rotation samt hyfsat snabb rotation. Ha i åtanke att hårdvara debouncing (se steg 2) kan hjälpa mycket med tillförlitlighet av avläsningar men jag var efter en mjukvarulösning att förenkla den hårdvara bygget och vara lika portabel till andra hårdvara program som möjligt.

Detta avslutar införandet av min utmaning och överväganden. I steg 2 ska vi ta en titt på kodaren hårdvara, terminologi och några praktiska överväganden när du vill integrera en rotationsencoder i ditt projekt.

Se Steg
Relaterade Ämnen

Arduino Nano och Visuino: kontrollera stegmotor med Rotary Encoder

Ibland är det nödvändigt att ha en Stepper Motor Följ rotation av en Rotary Encoder för exakt positionering. Jag har planerat Instructable på detta under en lång tid, men äntligen par dagar sedan efter ännu en fråga av Visuino användare, på hur man g...

Arduino Nano och Visuino: styr Servo med Rotary Encoder

Det finns en hel del Instructables på hur man styr Servo med potentiometer, men ibland är det bra att styra med en Rotary Encoder. I detta Instructable kommer jag visa dig hur lätt det är att genomföra detta med hjälp av Visuino - en enkel att använd...

Arduino powered Rotary encoder - jag gjorde det på TechShop

som i några av mina senaste instructables, arduino handlar om kontroll. Förmågan att kontrollera vissa saker som visar, servon, motorer och andra elektriska mekaniska apparater på ett meningsfullt sätt. Jag har täckt med potentiometrar för att bestäm...

Arduino Nano: Rotary Encoder med Visuino

De roterande pulsgivare är mycket användbar exakt rotation sensorer, också ofta används som användaren kontrollerade indataenheter i stället för potentiometrar. De är lätta att ansluta till Arduino, och med hjälp av Visuino - en enkel att använda gra...

Rotary Encoder LED Strip ljusstyrka Controller

Helt enkelt LED strip ljusstyrka controller med roterande kodare och attiny 85 mikrokontrollerSteg 1: Intro:Jag kommer att visa dig hur du enkelt styra ljusstyrkan på LED strip. Detta är faktiskt en PWM controller. Det är endast avsedd för DC. Glömma...

ESP8266 och Visuino: fjärrstyra Servo över Wi-Fi med Rotary Encoder

ESP8266 -moduler är stor låg kostnad fristående styrsystem med inbyggd Wi-Fi. I detta Instructable kommer jag visa dig hur du kan fjärrstyra en Servo över Wi-Fi med en Rotary Encoder. Instructable är en liknande men mer avancerad version av "Arduino...

RGB Rotary Encoder exempel (ATmega328, AVR)

ovan installationsprogrammet använder avbryta tjänsten rutiner (ISRs) att tolka en rotationsencoder. Den särskild rotationsencoder används innehåller också en RGB LED, som drivs av PWM. Det finns en video i hela artikeln.Här är en länk till hela arti...

Vända mig Kit: Rotary Encoder till bakbord Access

roterande pulsgivare är enheter som kan förmedla position och riktning av rotation med hjälp av två ljudutgångar, A och B. Så har vi gjort en utbrytning styrelse som är både bakbord och super lätt att sätta ihop!Du hittar den här: https://www.tindie....

LED Dawn / Sunrise väckarklocka, nattlampa & säkerhet ljus - Arduino kompatibel

som nätterna förlängs successivt under hösten 2011, jag upptäckt glädjen med Arduino och trodde att det skulle vara ett bra sätt att genomföra något som jag har velat ha en lång stund - ett skonsamt sätt att vakna upp på en vintermorgon. Tyvärr, det...

Arduino programmerbar konstant nuvarande Power motstånd konstlast

Kul att se du har kommit på denna sida att lära sig hur man bygger en programmerbar konstant likström konstlast. Denna belastning kan du rita en uppsättning aktuella från någon källa. Denna belastning kan också anges till en konstant motstånd eller e...

Fristående WiFi Radio Control Panel (Arduino Powered)

jag ville ha en Internet-Radio för en lång tid, och var mycket glad över att hitta Tinkernut's Wifi-radion projekt (http://tinkernut.com/archives/2387 ), som jag byggt och har haft i några månader.Men brydde jag mig verkligen för Ario baserad kontrol...

Google spelar musik Internet Radio (Raspberry Pi och Arduino)

jag letade efter ett projekt att göra med min Raspberry Pi och hittade detta Instructable och tänkte jag skulle ha en gå på något liknande som arbetat med Google spela musik. Jag hade en ungefärlig uppfattning om vad jag ville ha det sista objektet t...

Lätt Arduino menyer för rotationsencoder

Roterande pulsgivare med centrum - tryckknappar är cool ingång hårdvara för projekt, särskilt om du vill kunna bläddra igenom menyer och väljer alternativ. Förhoppningsvis detta Instructable kommer att ge dig självförtroende att prova grundläggande m...

Bygga IllyClock - baserade Arduino väckarklocka i en kaffe kan

uppdaterad augusti 4, 2011En strömlinjeformad version är nu beskrivs här.Syftet med detta projekt är att bygga en väckarklocka som liknar den som presenteras i videon nedan.Bredvid inhägnad, den ursprungliga inslaget i IllyClock visar tiden i färger:...

Anpassade Arduino MIDI Controller

Hej och Välkommen till detta instructable om hur man bygger en anpassad, Billigt och enkelt USB MIDI-controller, baserat på Arduino. Den bästa nyheten: inget krångel med USB-till-MIDI-gränssnitt eller programvaruverktyg som Hårlösa MIDI, bara plug 'n...

Automatisk Arduino Powered sällskapsdjur mataren

Detta är min Automatisk Sällskapsdjur Mataren. Drivs med arduino, med hjälp av en 3D tryckt skruv och programmerbar med två utfodring gånger med en användare ange mängd livsmedel, med batteri backas upp interna klocka.Min katt köra mig nötter i morgo...

Baserade Arduino Bi-color LED Matrix Pong spel

Vi har skapat två game-projekt instructables hittills använda jolliFactory Bi-color LED Matrix Driver modul DIY kit vi har utformat. Denna ledde matrisen modul är utformad för att kunna kedja-så du kan seriekoppla moduler tillsammans med antalet modu...

Arduino + AD9850 30MHZ DDS Signal Generator i 12$

An Precession Signal generator är mycket enkel och prisvärd gör med hjälp av en arduino och dds synthesizer (ad9850). Dess världens första minsta bärbara signalgenerator bygga.Kan du göra anständiga 0-30 MHZ frekvens signalgenerator endast i 12$. Om...

Arduino LCD Metronome

Metronomer kan vara dyrt men med en Arduino och några delar kan du göra en extensible metronome.Steg 1: delarDelar:-Arduino (någon normal storlek Arduino kommer att vara bra)-Arduino IDE och kunskapen att använda den-Massor av ledningar-HD44780 LCD-s...