Projektrapport i Digitala System Stämapparat LTH Ingenjörshögskolan vid Campus Helsingborg Handledare: Bertil Lindvall Utförd: Vårtermin 2019 Utförd av: Markus Ljungqvist Nilsson, Gustav Wetterbrandt, Sabah Zafar och Nadjma Zaher
Abstract This report shows how a guitar tuner can be made using the ATMEGA1284 microprocessor. The input is both amplified and filtered by a separate circuit and is then processed in the ATMEGA. The processor computes the frequency and depending on the frequency some diodes will be switched on and different characters will be submitted to the display as well as the current frequency. In this case the frequency is created by a tone generator. 1
Innehållsförteckning Abstract 1 Innehållsförteckning 2 1 Inledning 3 1.1 Bakgrund 3 1.2 Syfte 3 1.3 Målformulering 3 1.4 Kravspecifikation 3 1.5 Avgränsningar 3 2 Teknisk bakgrund 4 2.1 Hårdvara 4 2.2 Mjukvara 5 3 Metod 5 3.1 Planering 5 3.2 Konstruktion 5 3.3 Programmering 5 4 Resultat 6 5 Diskussion 6 6 Slutsats 6 7 Källförteckning 8 8 Appendix 9 2
1 Inledning 1.1 Bakgrund I kursen EITA15 Digitala system skall man i grupp om fyra personer konstruera en prototyp baserad på en mikroprocessor. Detta genom att rita ett kopplingsschema, konstruera kretsen samt programmera tillhörande mjukvara. I samråd med handledaren ska det bestämmas vilken typ av krets som gruppen ska ta fram och slutligen presentera en fungerande prototyp av. 1.2 Syfte Syftet med arbetet är att konstruera en fungerande prototyp och i denna rapport beskriva utvecklingsprocessen för produktens funktioner och komponenter, samt kunna tillämpa detta med hjälp av de kunskaper som lärts ut tidigare i kursen. Det förväntade resultatet är att prototypen ska kunna analysera frekvenser så att en gitarr ska kunna stämmas. 1.3 Målformulering Målet med projektet är att utveckla ett prototyp som skall fungera som en stämapparat. Prototypen ska med en display kunna visa den nuvarande tonen. Den ska även kunna indikera med hjälp av en grön och två röda lysdioder om frekvensen är korrekt för tonen som skall stämmas eller om frekvensen är högre eller lägre än den närmsta korrekta tonen inom frekvensområdet. 1.4 Kravspecifikation - Stämapparatens upplösning ska vara inom intervallet +/- 1Hz - Displayen skall kunna visa tonnamn och frekvens - Grön lysdiod skall indikera att frekvensen är korrekt för tonen - Röda lysdioder skall indikera om frekvensen är högre eller lägre än den korrekta tonen - Koden skall vara läsbar och väl kommenterad 1.5 Avgränsningar Stämapparaten anger inte korrekt tonnamn för frekvenser över 330Hz. Den anger inte heller tonnamn för de toner toner som finns i intervallen mellan gitarrens stämtoner. Den kan alltså endast korrekt detektera de frekvenser som utgör gitarrens stämtoner. Dessa avgränsningar gjordes för att förenkla källkoden och minska projektets generella omfattning. 3
2 Teknisk bakgrund I detta avsnitt följer en beskrivning av hårdvara och mjukvara som utvecklades och kombinerades för att få en fungerande apparat. 2.1 Hårdvara Nedan finns en kort beskrivning på de hårdvarukomponenter som användes för att bygga upp stämapparaten. Hur dessa komponenter kopplas till varandra visas på kopplingsschemat som finns i appendix (se figur 1) och information om dessa komponenter hämtades från kursens databladsarkiv. Processor Processorn som användes var en AVR ATmega1284 som är en 8-bitars mikroprocessor[1]. Den har fyra portar med sammanlagt 40 pinnar. Processorn används för att kontrollera samspelet mellan de olika komponenterna. JTAG JTAG är ett kommunikationsprotokoll och används för att överföra koden från datorn, där mjukvaran skrivs, till processorn. Med hjälp av JTAG går det att programmera, felsöka och debugga mikroprocessorn. Display Eftersom möjligheten att visa alfanumeriska tecken krävdes föll valet av display på modellen Sharp Dot-matrix GDM1602K som har två rader och plats för totalt 16 tecken[2]. Det är en alfanumerisk teckendisplay som kan skriva ut alla tecken i teckenkodningsstandarden ASCII. Från displayen ska tonnamn och frekvens kunna avläsas. Analoga komponenter - 1st BC337 NPN kiseltransistor - Dioder: 1st 1N4001 och 1st 1N4148 - Motstånd: 1st 47, 2st 1k, 1st 4,7k, 1st 10k, 1st 20k potentiometer - Kondensatorer: 2st 22pF, 3st 100nF, 2st 10uF (elektrolytkondensatorer) - Lysdioder: 3st 5mm (två röda och en grön) - 1st 16MHz kristall Tre lysdioder används, en grön och två röda. De röda sitter på varsin sida om den gröna lysdioden. Den gröna indikerar att frekvensen är korrekt för den ton som skall stämmas. De två röda indikerar att frekvensen antingen är högre eller lägre än den närmsta tonen beroende på vilken av de röda lysdioderna som lyser. 4
2.2 Mjukvara Mjukvaran består av C-kod som programmerar mikroprocessorn med den funktionalitet som efterfrågas i kravspecifikationen. Koden skrevs i utvecklingsverktyget Atmel Studio 7. Kodens funktion beskrivs ytterligare i kapitel 3.3. 3 Metod Projektarbetet bestod av fyra faser: planering, konstruktion av hårdvara, programmering av mjukvara och testning. 3.1 Planering Projektet började med att gruppen bestämde vilken typ av prototyp som skulle konstrueras. Därefter skrevs kravspecifikationen. Utifrån det bestämdes vilka hårdvarukomponenter som är lämpligt att använda för att konstruera prototypen. Genom att studera databladen för respektive komponent och lära sig hur de fungerar kunde skissering av kopplingsschemat påbörja. Efter att ha fått kopplingsschemat godkänt av handledaren kunde konstruktionsfasen påbörjas med kopplingsschemat som utgångspunkt. 3.2 Konstruktion För att konstruera stämapparaten krävdes att mikroprocessorn hade möjlighet att detektera en analog signal från en elgitarr. För att det skulle vara möjligt krävdes det att en enkel förstärkare konstruerades. Konstruktion av analoga kretsar ligger utanför kursens (EITA15 Digitala System) innehåll och därför kommer inte de exakta detaljerna kring förstärkarens konstruktion att tas upp här men de problem som uppstod under projektets gång kommer att behandlas i diskussionen. Den slutgiltiga designen blev en förstärkare av typen gemensam emitter med endast en transistor[3]. Gitarren kopplades in via en kondensator och en spänningsdelare till transistorns bas. Signalen kopplades sedan ut från transistorns emitter till processorns 16-bitarstimer på B- porten. 3.3 Programmering Utmaningen med programmeringen var att bestämma frekvensen hos insignalen till mikroprocessorn. Detta gjordes med hjälp av två avbrottsrutiner där den ena såg till att en räkning på hur många toppvärden som förekom under en sekund gjordes. Antalet toppvärden var då lika med frekvensen för just den sekunden. För att få mikroprocessorn att räkna exakt en sekund användes ett 8-bitarsregister. Med denna uträkning fås antalet overflows som skall inträffa under en sekund om värdet i registret ökar med ett vid varje klockpuls förutsatt att prescalern är satt till 1024 och klockan är på 16 MHz. 5
(16000000 1024) 256 = 61,035 Det sker alltså 61 overflows och processorn hinner räkna upp till 9 i registret under en sekund. För att se till att processorn räknar de sista nio klockpulserna sätts talet 247 in i registret och processorn har hållit sig till en sekund vid frekvensberäkningen. Den andra biten av vårt program använde frekvensen för att bestämma vad som skulle skickas till displayen. Olika bokstäver för olika frekvenser som symboliserar en gitarrs strängtoner. Vid rätt frekvens lyser den gröna lysdioden och om frekvensen ligger under rätt frekvens men i samma frekvensområde lyser den vänstra röda lysdioden och om frekvensen ligger över lyser den högra röda lysdioden. 4 Resultat Den slutgiltiga prototypen som presenteras i den här rapporten klarar inte av att detektera signalen från en elgitarr och kan därmed inte fungera som en stämapparat vilket var målet med projektet. När gitarren kopplas in visar displayen en frekvens på 17 Hz oavsett vilken sträng som slås an på gitarren. Vad det beror på tas upp kapitel 6. Prototypen är dock kapabel att detektera en signal från en frekvensgenerator inställd att replikera den signal som en elgitarr ger upphov till, dvs en signal med amplituden 200mV och en frekvens i intervallet 80-440Hz. 5 Diskussion Att prototypen inte lyckades detektera signalen från elgitarren får anses vara tråkigt men får inte ses som ett misslyckande sett till kursens kontext. Kursen har inte fokus på konstruktion av analoga kretsar eller på analog signalbehandling. Med tanke på gruppdeltagarnas tidigare begränsade kunskaper i ämnet får ändå resultatet ses som lyckat. Att gitarrsignalen inte kunde detekteras beror sannolikt på att förstärkaren som behandlar signalen innan den går in i mikroprocessorn inte filtrerar bort tillräckligt mycket brus från signalen. En skiss över förstärkaren och en graf som visar hur in- respektive utsignalen ser ut i teorin kan ses i figur 2 i appendix. De mätningar som gjorts i verkligheten med oscilloskop har inte visat några stora avvikelser från simuleringen. Det är därför svårt att dra någon slutsats till varför mikroprocessorn inte kunde detektera signalen. 6 Slutsats Att detektera och analysera analoga signaler med digital hårdvara kan vara mycket svårt och tidskrävande. Vårt projekt har visat på ett sådant exempel där den analoga signalkällan var en elgitarr som genererade en svag och brusig signal som skulle analyseras med hjälp av en mikroprocessor. Hade en gitarr som genererar en starkare och mindre brusig signal använts finns 6
det en möjlighet att den stämapparat som konstruerades hade fungerat. Alternativt hade en bättre konstruerad förstärkarkrets kunnat bidra till ett lyckat resultat. Ytterligare arbete krävs alltså från vår (projektets deltagare) sida för att i framtiden kunna konstruera en prototyp som fungerar enligt projektets målformulering. 7
7 Källförteckning [1] Atmel Corporation, Atmega1284_Datasheet_Complete-10/2016, publicerad maj 2016. [Online]. Tillgänglig via: https://www.eit.lth.se/fileadmin/eit/courses/edi021/datablad/processors/atmega1284.pdf Hämtad 2019-05-20. [2] Xiamen Ocular, GDM1602K, Specifications of LCD Module, publicerad 2001-12-05. [Online]. Tillgänglig via: https://www.eit.lth.se/fileadmin/eit/courses/edi021/datablad/display/lcd.pdf Hämtad 2019-05-20. [3] Aspencore ElectronicsTutorials, Common Emitter Amplifier, publiceringsdatum okänt. [Online]. Tillgänglig via: https://www.electronics-tutorials.ws/amplifier/amp_2.html Hämtad 2019-05-20. 8
8 Appendix Figur 1. Kopplingschema för hela stämapparaten. 9
Figur 2. Kopplingschema för signalförstärkaren. Grafen till vänster visar den teoretiska insignalen med en amplitud på 200mV där hälften av signalen har negativ polaritet.. Grafen till höger visar den teoretiska utsignalen med en amplitud på 4,9V och utan någon negativ komponent. 10
Figur 3. Den slutgiltiga prototypen i fungerande tillstånd. Inkommande signal från en signalgenerator. 11