AVR Assembler Övningsexempel 9 (6 / 7 steg)
Steg 6: Low-pass filter och spänning förstärkare
För att rensa upp ljudet lite och göra våra knappsatsen fungerar bättre vill vi lägga till ett par low-pass filter. Dessa filtrerar bort högfrekventa brus och tillåta lågfrekventa signalen passera. I huvudsak sättet att göra detta är helt enkelt att lägga till en 68 pf kondensatorn mellan våra analog ingång och marken och även en 0.1 microfarad (dvs. 104) kondensator mellan våra PD4 (INT0) avbrott och marken. Om du spelar med dessa samtidigt trycka på knapparna på knappsatsen kommer du att kunna se vad de gör.
Nästa vi vill göra en spänning förstärkare. Det visar sig att den nedersta tangentraden på knappsatsen (liksom nyckeln återuppringning) lägger ut för låg på en spänning att resa på INT0 avbryta. Den analoga ingången är tillräckligt känslig för att läsa de låga spänningarna från dessa nycklar men vår avbrott stift är inte att få en bra nog stigande kanten att avbryta när vi trycker de nycklarna. Därför vill vi ha några sätt att se till att en fin spänning stigande kanten träffar PD4 men samma lågspänning träffar ADC0. Detta är en ganska kämpigt eftersom båda signalerna kommer från samma utgång tråd av våra knappsats. Det finns ett antal sofistikerade sätt att göra detta, men vi kommer inte att använda våra knappsatsen längre efter denna tutorial så låt oss bara kluge tillsammans en metod som fungerar (knappt).
Du bör först koppla in en extern knapp att ersätta INT0 mellanjobbet och kontrollera displayen genom att hålla en knapp på knappsatsen och klicka på. Detta har färre knappsatsen problem och gör att du kan vara säker på att dina spänningar är korrekt på knappsatsen utseende-upp bord. När du vet knappsatsen är wired korrekt då bli av med knappen och sätta på INT0 avbryta tillbaka. Det finns några allvarliga buller och spänning frågor styr knappsatsen detta sätt så det är bra att veta att allt fungerar så att framtida problem kan isoleras till INT0 nyckel.
När du binder din knappsats och förstärkaren spänning, är det mycket troligt att samma motstånd värden som jag har använt inte kommer att fungera. Så måste du göra några experiment för att få värden som arbetar för dig.
Om man tittar på diagrammet jag har bifogat till detta steg kommer du se hur spänningen förstärkaren kommer att fungera. Vi använder några motstånd och två transistorer. Sätt transistorerna arbete (se datablad!) är det finns en lägsta spänning som du måste skriva in till bas stift på transister (det mellersta stiftet) som kommer att mätta den och låta nuvarande mellan samlare stiftet och utsändaren pin. När det gäller 2N3904 transistorn är att vi använder här spänningen 0.65V. Nu tar vi den spänningen från vår produktion från knappsatsen och vi vill inte ändra på det produktionen så vi kommer att sätta ett stort motstånd mellan utdata från knappsatsen och basen för den första transistorn (jag använde 1Mohm). Jag har märkt detta som R_1 i diagrammet. Då vi vill ställa in en spänningsavdelare så att basen av transistorn är "nästan" på 0,65 volt redan och bara en liten pytteliten bit mer kommer att skjuta den över toppen och mätta den. Att teeny pytteliten bit kommer från produktionen av knappsatsen när vi trycka på en knapp. Eftersom den lägre knapparna på knappsatsen bara lägger ut en liten spänning måste vi vara mycket nära mättnad redan i att vara tillräckligt. Spänningsavdelare resisters märks R_a och R_b i diagrammet. Jag använde R_a = 1Mohm och R_b = 560Kohm men det är nästan säkert att du kommer att behöva leka med dessa nummer för att få det rätt för din setup. Du kanske vill ha en vägg i närheten att banka huvudet mot och två eller tre glas scotch på hand (jag skulle rekommendera Laphroaig--dyrt, men värt det om du röker. Om saker och ting blir riktigt sinnessjuk, sedan bara få en kanna BV och bosätta sig i för natten)
Nu kan titta på hur transistorerna kommer att få oss en fin stigande kant kommer att nyckeln INT0 och generera våra knapptryckning avbrott. Först låt oss titta på vad som händer när jag är inte en tangenttryckning. I så fall är den första transistorn (märkt T1 i diagrammet) avstängd. Så flödar ingen aktuell mellan kollektor och emitter stiften. Thus basen av andra transistorn (märkt T2) kommer att dras höga och således kommer det mätta så att nuvarande mellan dess stift. Detta innebär att utsläppare av T2 kommer att dras låg eftersom den är ansluten till samlaren som själv är ansluten till marken. Således de utdata som går till vår INT0 knapptryckning avbrott stift (PD4) kommer att vara låg och det blir inga avbrott.
Nu vad som händer när jag trycker en nyckel? Ja då basen av T1 går över 0.65V (vid lägre nycklarna det bara knappt går över!) och sedan strömmen får flöde som kommer att dra basen av T2 till låg spänning och detta kommer att stänga av T2. Men vi ser att när T2 är avstängd, sedan produktionen är drog höga och därmed får vi en 5V signal ska vår INT0 stift och det kommer att orsaka ett avbrott.
Märka vad resultatet är här. Om vi trycka på knappen 1, vi få 5V går till PD4 utan att väsentligt ändra utdata kommer att ADC0, och viktigare, även om vi trycker Asterisk, 0, Hash eller ring igen, vi får också en 5V signal ska INT0 och orsakar ett avbrott! Detta är viktigt eftersom om vi gick bara direkt från knappsatsen utdata till INT0 stift, de nycklarna som genererar nästan ingen spänning och de kommer inte vara tillräckligt för att utlösa att avbryta pin. Vår spänning förstärkare har löst detta problem.