ETSA01 Digitala Projekt (I) VT- 13. Projektarbete AC- 58008. Handledare Bertil Lindvall



Relevanta dokument
Effektpedal för elgitarr

Växtviskaren EITF11 Digitala projekt VT15, I12

Bilen som inte kan krocka

Digitala Projekt(EITF40) - Larm

Digitala Projekt(EITF40) - Larm

LARMANLÄGGNING. Digitala Projekt, EITF11. Oskar von Knorring Emin Karimov Henrik Akej Handledare: Bertil Lindvall

Digitala Projekt (EITF11)

WALL E. WALL EVADER EDI021 DIGITALA PROJEKT

Feeding Daisy. EITF11 Lunds Tekniska Högskola. Grupp 12: Pontus Akervall Louise Landare Anton Schölin. En automatisk blomvattnare

JOFEN-Prototypes. Målsökande pansarvagn. Projektarbete i Kursen EITA15. Jonatan Claesson, Olle Jonasson, Felix Rödén, Edvin Rossi & Nils Olén

Larmcentral. Digitala Projekt. Cecilia Olsson & Erika Björck Handledare: Bertil Lindvall LUNDS TEKNISKA HÖGSKOLA

LOOKY LUKE. Caroline Hellström och Ville Orlander Arvola Industriell ekonomi I10. - Att välja en lyckosam väg EITF11 Digitala projekt

High Core Remote Car X8000 Cool

Linjeföljare Digitala projekt Johan Engström e02je Henrik Persson e02hp

Thunder s Truck projektrapport

Laboration 5. Temperaturmätning med analog givare. Tekniska gränssnitt 7,5 p. Förutsättningar: Uppgift: Temperatur:+22 C

Lunds Tekniska Högskola Elektro- och informationsteknik Digitala projekt (EITF11)

TEMPERATURMÄTARE MED GRAFRITARE

/* * dancing3.c * * Created: :53:20 * Author: digpi10 */ #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.

Projektrapport - Feststation

Rafiki Wa Kupanda. EITF11, Digitala projekt VT18. Linnea Håkansson, Anton Gunneberg, Ruben Schultz

LARMANLÄGGNING. Digitala Projekt, EITF11. Oskar von Knorring Emin Karimov Henrik Akej Handledare: Bertil Lindvall

LTH. EITF11- Digitalaprojekt. Projektrapport WEB

Innehållsförteckning. Figur- och tabellförteckning. Figure 1 Blockschema över hårdvaran...4 Figure 2 Blockschema över programet...

EITF11: Bandkanon Grp 05

Laboration 4: Knappstuds Drivrutiner för att eliminera störningar.

AVR 3 - datorteknik. Avbrott. Digitala system 15 hp. Förberedelser

Självgående fordon Rapport i kursen digitala projekt, EDI021

DIGITALA PROJEKT Väderstation

Digitala projekt Linjeföljande bil

Projekt EITA15. Väckarklocka. LTH Ingenjörshögskolan vid Campus Helsingborg Datateknik

Snake. Digitala Projekt (EITF11) Fredrik Jansson, I-12 Lunds Tekniska Högskola,

Digitala Projekt (EITF11) Hemlarm

Projektrapport i Digitala System

Mekanisk solros, Digitala projekt(edi021) Kristoer Nordvall, Stefan Windfeldt, Inlämmnad: 4 december 2006

Projektrapport - Roterande digital LED-klocka

Rapport. Fyra i rad-spel. Rapport Digitala Projekt EITF11 Grupp 9 Emma Rasmusson & Louise Ragnarsson Handledare: Bertil Lindvall

PlantPuppy Räddaren för den som inte kan hålla växterna vid liv

DIGITALA PROJEKT (EITF40) Fartmätare

Konstruktion av en radiostyrd legobil. Digitala projekt av Arbon Vata Leonardo Vukmanovic Amid Bhatia

EITF40 - RFID-terminal. Joakim Marculescu (dt08jm6), Eric Johansson (dt08ej6)

The Phenomenal Doorbell Bilaga 2. Källkod

EITF11 - Digitala projekt. Hastighetsmätare. Hugo Backmyr Mattias Karlsson

The Intelligent Timer

Pulsmätare med varningsindikatorer

TETRIS. LTH, Campus Helsingborg EITA15 Digitala System

Temperaturmätare med lagringsfunktion DIGITALA PROJEKT EITF11 GRUPP 14, ERIK ENFORS, LUDWIG ROSENDAL, CARL MIKAEL WIDMAN

Ett urval D/A- och A/D-omvandlare

Digitalt Projekt: Radiostyrd Bil

LUNDS TEKNISKA HÖGSKOLA. Väderstation. Digitala Projekt, EITF11. Martin Olofsson, I08 & Fredrik Oher, I08 Vt 2012

RAPPORT: DIGITALA PROJEKT

Digitala projekt, EDI021 Rapport Handledare: Bertil Lindvall

Digitala projekt - Radiostyrd bil

Väderstation. Digitala Projekt EITF11 Institutionen för Elektro- och Informationsteknik Lunds Tekniska Högskola

Digitala System Projekt - EITA15 VT *SUPER DUPER KLOCKAN*

Robotfotboll med Arduino

Digitala Projekt (EITF11) Larmanläggning

Linjeföljare. Digitala projekt

TEMPERATUR OCH VINDMÄTARE MED HÖGTALARFUNKTION

EITF11. WormFight. Axel Eriksson, Felix Geuken Handledare: Bertil Lindvall EITF11

EITF11 Digitala Projekt TIC TAC TOE. Lukas Ljungblom & Johan Lyckenvik I-13 Handledare: Bertil Lindvall

Från idé till skapelse av en äkta RoomBot

Institutionen för informationsteknologi

Projektrapport Målgång

Liftmaestro. Lunds Tekniska Högskola Elektro- och informationsteknik. Olle Gemfors, I13 Dayanand Sagar, I13 Mattias Wendler, I13

Rapport i Digitala Projekt (EDI021)

Pulsmätare Digitala Projekt EITF11

Digitala Projekt: Digitala Projekt, EITF11 - VT17 Oscar Ahlgren, Patrik Lorentsson och Sten Hellberg Handledare: Bertil Lindvall

Lunds Tekniska Högskola EITF11 Digitala projekt. Bandspelaren

1 Bakgrund 4. 2 Kravspecifikation Definitioner Grundläggande krav Användarfall 5

DANCING ROBOT. EITF11, Grupp 10. Kajsa Salomonsson, Hugo Hedin och Petter Mårtensson

General Purpose registers ALU I T H S V N Z C SREG. Antag att vi behöver skriva in talet 25 till register R18

Digitala projekt rapport

Systemkonstruktion LABORATION REALTIDSPROGRAMMERING

Laboration 5 C-programmering på AVR TSEA57 Datorteknik I

Enchipsdatorer med tillämpningar LABORATION 7, ROBOT

Avståndsmätare. Digitala System EITA Grupp 7. Abdelsalem Yabrag, Abdulhadi kikar, Fredrik Peterson, Jesper Annefors

RemoteBud. Inlämnas: Patrik Johnsson, e01pjo Viktor Karlsson, e01vk

Projektrapport i Digitala projekt EITF11. Institutionen för Elektro- och informationsteknik, Lunds tekniska högskola

Innehåll. 1 Inledning 3

Accelerometer. Rikard Ekström Mattias Kindborg. Informationsteknologi Lunds Universitet

#include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> unsigned char num;

The Secure Light. Digitala Projekt EITF11. Hanna Tinglöf, I-12 Anna Horvath, I-12 Filippa Österlin, I-12. Handledare: Bertil Lindvall

Digitalteknik: CoolRunner-II CPLD Starter Kit

Enchipsdatorns gränssnitt mot den analoga omvärlden

Digitalteknik: CoolRunner-II CPLD Starter Kit Med kommentarer för kursen ht 2012

Rapport Digitala Projekt EITF11 Grupp 4 Axel Sundberg, Jakob Wennerström Gille Handledare: Bertil Lindvall

Digitala Projekt VT13. PING-Pong

FRAMTAGNING AV DEMONSTRATORER

Systemkonstruktion Z3

Pulsmätare. EITF11 Digitala Projekt VT15. Grupp 9: Emma Albertz, Mathilde Hagander & Alexandra Mansner Handledare: Andreas Johansson & Bertil Lindvall

Gustaf Backman, Anton Nystedt, Nicholas Peebo Battleships. Lunds tekniska högskola. EITF11 Digitala projekt

Microprocessor / Microcontroller. Industrial Electrical Engineering and Automation

Rapportsammanfattning. Optima Sous Vide

TENTAMEN Datorteknik (DO2005) D1/E1/Mek1/Ö1

Laboration 1: Styrning av lysdioder med en spänning

PROJEKT LJUD. KOPIERINGSUNDERLAG Martin Blom Skavnes, Staffan Melin och Natur & Kultur Programmera i teknik ISBN

EV3 Roboten. Sida 1 av 13

Enchipsdatorns gränssnitt mot den analoga omvärlden

Datorteknik 1 (AVR 1)

Transkript:

ETSA01 Digitala Projekt (I) VT- 13 Projektarbete AC- 58008 Victor Bodin Albert Strömberg Alexander Söderberg Handledare Bertil Lindvall 1

Sammanfattning Rapporten behandlar processen kopplat till konstruktionen av ett självgående fordon vars uppgift är att undvika uppkommande hinder. Processen bestod av två delar; komponentkoppling och design, samt programmering. Konstruktionens grundläggande delar var en mikroprocessor ansluten till två elmotorer, ett servo och en analog avståndsmätare. Mikroprocessorn programmerades med ledning av initialt uppställda krav. Rapporten inleds med en kravspecifikation följt av en beskrivning av hårdvarukomponenter samt nödvändiga mjukvarubegreppsförklaringar. Detta följs av en genomförandebeskrivning och en slutsats. 2

Table of Contents Kravspecifikation... 4 Primära krav... 4 Sekundära krav... 4 Komponenter... 4 Batteri 6V... 4 AVR ATMega16... 4 H- brygga L298... 5 Spänningsregulator MCP1827 5- LD TO- 550... 5 Avståndsmätare SHARP 2Y0A02... 6 Toddler servo Mini F/BB... 6 Bandhjulsmotorer... 7 LED... 7 Mjukvara... 7 A/D- omvandlare... 7 Oändlig loop... 7 Avbrott och klockfrekvens... 7 Genomförande... 7 Resultat... 9 3

Kravspecifikation Specifikationen av krav är uppdelat i primära och sekundära krav. De primära kraven är grundläggande krav som projektets konstruktion bör uppfylla för att uppnå sin huvudsakliga funktion. De sekundära kraven är krav som i mån av tid bör uppfyllas efter att de primära kraven infriats fullständigt. Primära krav Krav 1: Fordonet ska vara självgående. Krav 2: Fordonet ska undvika hinder. Krav 3: Fordonet ska vid påträffande av hinder kunna avgöra åt vilket håll som det finns mest utrymme och svänga däråt. Sekundära krav Krav 1: Fordonet ska efter angiven tid kunna hitta tillbaka till sin ursprungliga position. Krav 2: Stopptid för beslut om svängriktning då fordonet påträffar hinder ska inte överstiga 3 sekunder Krav 3: Fordonet ska kunna undvika stup. Komponenter Under följande del beskrivs de komponenter som ingår i konstruktionen. Framförallt behandlas grundläggande funktion och anslutningar. Batteri 6V För att konstruktionen ska vara mobil krävs en kraftkälla som kan ingå i konstruktionen. För detta valdes ett uppladdningsbart batteri på 6V. AVR ATMega16 Med en matningsspänning på 5V drivs projektets processor med en klockfrekvens på 8MHz. Den har 40 pinnar och flertalet inre funktioner. De som används i detta projekt är dels 16- bitarsklockan och dels A/D- omvandlaren. Dessa aktiveras genom den kod som laddas in i processorn. Av de 40 pinnarna som processorn har är 32 utav dessa så kallade I/O- pinnar, de kan alltså antingen ställas in på att ta in eller skicka ut signal. Då signal skickas ut antar den aktuella pinnen ett potentiellt högre eller lägre läge beroende på den kod som processorn för tillfället exekverar. Tar pinnen istället in signal lyssnar den på om spänningen den blir matad med är potentiellt hög eller låg. Dessa I/O- pinnar är fördelade över fyra portar benämnda A, B, C respektive D. Övriga pinnars funktioner är knutna till att bland annat driva processorn genom att ta in matningsspänning. A/D- omvandlarens funktion är knuten till port A varför denna reserverades för detta i projektet.

16- bitarsklockan däremot är en intern resurs som genererar avbrott i den takt koden som exekveras ger. Dessa avbrott kan sedan användas till att initiera särskilda kodavsnitt som i förlängningen mynnar ut i ett särkilt utsignalmönster för processorns I/O- pinnar. Den aktuella processorn som användes i projektet var från början förberedd för anslutning till PC via JTAG. H- brygga L298 H- bryggan används för att reglera den ström som skickas till motorerna. Beroende på vad för signaler H- bryggan får från processorn släpper den igenom, stoppar eller byter riktning på strömmen. H- bryggan har stöd för två motorer med sina 15 pinnar. Den är kopplad till processorn där den tar upp 3 pinnar per motor, dvs 6 pinnar i det här fallet. Av dessa 3 pinnar används en för att stänga av/sätta på strömmen och de andra två används till att bestämma riktningen på den. Motorerna får sin ström via två pinnar var på H- bryggan. De resterande fem pinnarna används för matningsspänning (6V), logisk matningsspänning (5V), jord, samt sensing. Spänningsregulator MCP1827 5- LD TO- 550 Då konstruktionens kraftkälla levererade 6V och processorn samt den logiska delen av H- bryggan krävde 5V fordras en spänningsregulator som reducerar spänningen från 6V till 5V. Spänningsregulatorns fem pinnarna har funktioner enligt tabellen nedan. Pin SHDN VIN GND VOUT Funktion Styr huruvida spänningsregulatorn skall vara igång eller ej. Detta styrs på så sätt att hög signal är på och låg signal av. Tar emot matningsspänningen på 6V. Jord Skickar ut utspänning på 5V. PWRGD Ger hög spänning som indikator på att regulatorns funktion är god. Måste kopplas samman med VOUT via ett motstånd på 100 kω. Funktionen nyttjades ej i projektet utan monterades endast för att säkerställa regulatorns funktion. 5

Avståndsmätare SHARP 2Y0A02 I konstruktionen används en optisk avståndsmätare av typen Sharp 2Y0A02 vilken kan mäta avstånd mellan 20 till 150 cm. Avståndsmätaren genererar en analog spänningssignal som varierar med avståndet enligt Bild 1. Inom ramen för avståndsmätarens avmätningsspann genereras en högre signal för ett kortare avståndet än för ett längre. Avståndsmätaren har tre anslutningar; spänning, jord och utsignal. Figure 1: http://www.pololu.com/picture/view/0j1124 Toddler servo Mini F/BB För att styra avståndsmätarens mätningsriktning används ett Toddler- servo med ett vridspann på 180 grader. Servot kontrolleras med pulssignaler av varierad längd inom ett intervall på 20 ms. Pulslängder mellan 1-2 ms ger ett utslag på - 90 till +90 grader från central position med linjärt förhållande. Servot har tre anslutningar; spänning, jord och insignal. Figure 2 http://en.wikipedia.org/wiki/file:sinais_controle_servomotor.jpg 6

Bandhjulsmotorer Fordonet drivs av två separata bandhjulsmotorer med två strömanslutningar. Elmotorn har stöd för ström i olika riktning för att möjligöra drift åt valfritt håll. LED En röd LED används som indikator på strömtillförseln. Mjukvara Processorn ansluts till datorn via anslutningstypen JTag för att ha möjlighet att exekvera kod och ladda upp mjukvara. Programmering skedde i den integrerade utvecklingsmiljön AVR Studio och processorn programmerades i programmeringsspråket C. A/D- omvandlare Port A på processorn har stöd för A/D- omvandling vilket är nödvändigt för att omvandla avståndsmätarens analoga utsignal till en digital representation. Genom kommandon i mjukvaran kan A/D- omvandlaren konfigureras. Den digitala omvandlingen representerar den analoga signalen i registrena ADCH och ADCL som kan nås från utvecklingsmiljön. Oändlig loop För att upprätthålla en oändlig process krävs att processorn aldrig slutar läsa kod. Detta kan åstadkommas genom att skriva en oändlig loop som håller processen igång. Avbrott och klockfrekvens Processorn har stöd för avbrott med hjälp av tre olika timers. Detta innebär att processorn efter specificerad period gör ett tillfälligt avbrott i inläsning av kod och hoppar in i en metod i en annan del av koden. Processorns klockfrekvens uppmäts till 8 MHz och timerns intervall kan i mjukvaran specificeras till önskad upplösning. Genomförande Med tillgång till konstruktionens samtliga komponenter påbörjades arbetet med att konstruera ett kopplingschema för att skapa en uppfattning om hur komponenterna skulle anslutas till varandra. Enligt kopplingsschemat virades och löddes senare samtliga anslutningar. Alla komponenter kopplades direkt till processorn och spänning med undantag för bandhjulsmotorerna som kopplades via H- bryggan. Specifikt för LED:en var att den endast kopplades via ett motstånd till spänningskällan. Dess funktion var begränsat till att indikera 7

strömtillförsel. Under programmeringsprocessen genomfördes kontinuerligt förändringar av anslutningarna mellan komponenter för att öka robusthet och för att underlätta programmeringsarbetet. Det första steget i programmeringsprocessen innefattade att testa motorernas funktion i utvecklingsmiljön. Dessa primitiva test genomfördes genom att i skicka konstanta ettor på processorn två pinnar som var kopplade till en av motorerna via H- bryggan. När servot skulle programmeras uppstod svårigheter. Servot krävde en puls på 1.5 ms var 20 ms för att anta grundposition. Lösningen låg i att aktivera en av processorns timers. Timern fungerar som så att den räknar processorns tick, vilket sker 8 miljoner gånger per sekund, och genererar ett avbrott när den räknat till ett visst tal. Timern ställdes in på att räkna till 500, vilket ledde till ett avbrott 16 gånger i millisekunden. Detta möjliggjorde att en reguljär puls kunde skickas till servot och att pulsen kunde justeras med relativt hög upplösning. Avståndsmätaren skickade en analog signal till processorn vilket innebar att A/D- omvandlaren fick användas. Den ställdes in så att en omvandling gjordes på kommando. Omvandlingen sparade signalen från avståndsmätaren till 10 bitar i registrena ADCH och ADCL. Vid en färdig omvandling utförs ett avbrott där de 10 bitarna sparades undan i en variabel. Ett medelvärde av de senaste två omvandlingarna beräknades som jämförelsevärde. Detta för att minska brus från avståndsmätaren. Medelvärdet står i 10 bitar vilket representerar ett decimalt tal mellan 0-1023. Ett medelvärde på 500 testades fram vilket representerade ett ungefärligt avstånd på 20 cm. Värdet kunde dock skilja sig ganska dramatiskt åt beroende på färgen på det föremål avståndsmätaren tittade på. Vita föremål gav ett högre värde än svarta då dessa på ett bättre sätt reflekterade det ljus som sändes ut ifrån avståndmätaren. När alla komponenter fungerade var för sig initierades en process med att få respektive komponent att fungera ihop. Detta var det mest tidskrävande momentet i projektet då de första försöken misslyckades. Efter ett antal försök upptäcktes att AVR Studios optimeringsfunktion försvårade processen. Optimeringsfunktionen stängdes av och konstruktionens olika komponenter började fungera allt bättre tillsammans. Projektet hade nu kommit till ett stadium där endast finjustering i form av avslutande kalibrering återstod. Elmotorernas varierande motoreffekt försvårade kalibreringsprocessen något. När de primära kraven var uppfyllda genomfördes en avslutande optimering av koden för att reducera stopptiden vid avmätningsförfarande för att kunna uppfylla en av de sekundära kraven. 8

Resultat Projektet mynnade ut i en fungerande konstruktion som infriade alla primära och ett utav de sekundära kraven. De lärdomar som dragits av projektet är bland annat en fördjupad förståelse för hur kod översätts till logiska signaler som så småningom ger fysiska förändringar i elektroniska komponenter samt kontrollen av detta. Vidare har programmeringsspråket C blivit mer bekant. Möjligheter till vidareutveckling finns dels genom att infria de två sekundära krav som återstår och dels genom diverse påhängssatser som exempelvis skulle kunna samla in damm eller klippa gräs. Det sekundära kravet om att fordonet skall kunna hitta tillbaka till dess utgångspunkt anses svårt då det skulle kräva en komponent som höll koll på fordonets nuvarande och tidigare position/- er. Att fordonet skall kunna undvika stup anses däremot lättare då detta endast skulle kräva ytterligare en avståndsmätare riktad mot underlaget framför fordonet. Svårigheterna med detta tros vara kalibreringen av det tröskelvärde som skall generera en undvikande sväng. Detta anses svårt dels då avståndsmätaren ger såpass olika resultat beroende på vilken färg underlaget har och dels att värdet måste finnas i ett intervall vilket alltså medför två gränsvärden. Att ansluta påhängssatser för ytterligare funktioner ses mer som ett mekaniskt och konstruktionsmässigt problem än programeringsmässigt. Detta då vi begränsar fordonets roll till att förflytta tillbehöret samt eventuellt leverera spänning till detta. 9

Bilagor Kod #include <avr/io.h> #include <avr/interrupt.h> int adcresult; int prevadc; int median; int a; int angle; int looking; int check; int rightvalue; int leftvalue; int turning; int isturning; int microspeedl; int speedl; int microspeedr; int speedr; int leftwheel; int rightwheel; int main(void) // Bit 7 input, rest output. DDRA = 0b01000000; PINA = 0b10000000; // Turn all B- ports output DDRB = 0b11111111; PINB = 0b00000000; //Turn off all other ports DDRC = 0b00000000; PINC = 0b00000000; DDRD = 0b00000000; PIND = 0b00000000; //Enable ADC for bit 7 ADMUX = 0b00000111; //Set the left adjust result to 10 bit.

ADMUX = (1<<ADLAR); //Set AVCC with external capacitor at AREF pin ADMUX = (1<<REFS0); //ADMUX = (1<<REFS1); //Enable ADC.PORTA 0 27 ADCSRA = (1 << ADEN); // Prescaler // 8000000 / 6128PORTB 1 24 //Set prescaler to 128 bit; ADCSRA = (1 << ADPS2); ADCSRA = (1 << ADPS1); ADCSRA = (1 << ADPS0); //Enable interrupts. ADCSRA = (1 << ADIE); //ADCSRA = (1 << ADATE); //Aktiverar användningen av klockan TCCR1B = (1 << WGM12); //Aktiverar CTC TIMSK = (1 << OCIE1A); //Tillåter interuptions sei(); //Set interruptresolution OCR1A = 500; // Starts the ADConversion ADCSRA = (1 << ADSC); TCCR1B = (1 << CS10); setup(); start(); return 1; int setup(void) adcresult = 0; prevadc = 0; median = 0; a = 0; angle = 342; looking = 0; check = 0; 11

rightvalue = 0; leftvalue = 0; turning = 0; isturning = 0; speedl = 0; microspeedl = 0; microspeedr = 0; speedr = 0; leftwheel = 1; rightwheel = 1; PORTB = 0b00100001; return 1; int start(void) while(1) if(check == 0) ADCSRA = (1 << ADSC); cli(); if(median > 500) if(median > 500) check = 1; PORTB = 0b00100001; else forward(); sei(); if(check == 1) return 1 lookaround(); if(check == 2) turn(); forward(); 12

int forward(void) if(leftwheel == 1) if(speedl > 1 && speedl < 4) PORTB &= 0b11111101; if(speedl > 4) PORTB = 0b00000010; speedl = 0; if(rightwheel == 1) if(speedr > 1 && speedr <5) return 1; PORTB = 0b00010000; if(speedr > 5) PORTB &= 0b11101111; speedr = 0; int turn(void) if(turning < 35) if(leftvalue < rightvalue) leftwheel = 0; else rightwheel = 0; else rightwheel = 1; leftwheel = 1; isturning = 0; 13

turning = 0; check = 0; return 1; int lookaround(void) if(looking < 20) angle = 330; else if (looking < 22) ADCSRA = (1 << ADSC); rightvalue = adcresult; else if (looking < 42) angle = 355; else if (looking < 44) ADCSRA = (1 << ADSC); leftvalue = adcresult; else if(looking < 64) angle = 342; else check = 2; looking = 0; isturning = 1; ISR(TIMER1_COMPA_vect) a++; microspeedl++; microspeedr++; //Inträffar var 10:e millisekund. if(a == 160) 14

if(check == 1) looking++; if(isturning == 1) turning++; if(a > 320) PORTA = 0b01000000; if (a > angle) a = 0; PORTA &= 0b10111111; if(microspeedl > 40) speedl++; microspeedl = 0; if(microspeedr > 40) speedr++; microspeedr = 0; ISR(ADC_vect) prevadc = adcresult; uint8_t thelow = ADCL; uint16_t tenbitvalue = ADCH << 2 thelow >> 6; adcresult = tenbitvalue; median = adcresult + prevadc; median = median >> 1; 15

Kopplingsschema