AVR Chronograph från koncept till PCB (4 / 13 steg)

Steg 4: Lägga till mer kretsar



Vi lägger ATMEL Studio åt sidan ett tag och komma tillbaka till kretsen. Detta steg kommer att vara i flera korta delar med en beskrivning av olika kretsen sektioner och ett förenklat schema att gå med var och en. Strömförsörjningen och programmering anslutningar täcktes i steg två, så jag inte kommer att gå över den delen igen.

En kort anmärkning innan vi fortsätter: stiften kommer vi att använda har flera funktioner som de är kapabla att utföra för oss. På schematiskt är bokstäver och nummer på utsidan av rutan som representerar chipet generiska pin namnen. PB1, står till exempel för Port B stift 1. I/O pins är grupperade i portar och kan användas individuellt eller i grupper om upp till port storlek. Port C är udda med bara 7 stift, och port B har flera av dess stift som används som programmering stift. Kom ihåg att vi kan återanvända alla utom Återställ PIN-koden, så enda PC6 är tabu. Också, PB6 och PB7 används som kristall oscillator stiften, så de är tabu också, men bara när du behöver använda en extern oscillator.

Låt oss börja med sensoringångar.

Titta på första bilden, kan du se att kretsarna som Q1 och Q2 är identiska. Sensorerna ger en 12VDC signal när de är aktiva. Detta är för mycket att skicka till en ingångsstift direkt, så jag använde dessa transistor switchar för att upptäcka när sensorn är aktiv och dra in PIN-koden till marken.

D4 och D5 är bara det att rada upp enklare sensorer. Jag använder en fotosensor med en reflektor för att studsa balken tillbaka, så när de är uppradade korrekt lysdioderna inaktivera och input stiften går hög. Den programvara som vi kommer att komma till senare kommer att titta på för dessa insatsvaror att gå lågt att ange bortgången av objektet. Resistorer R2 och R3 är pull-up motstånd på dessa indata stiften för att förhindra falska utlöser från buller. AVR har inre pull-up motstånd som kan aktiveras för varje ingång, men fann jag att de kunde inte tillräckligt snabbt vid uppstart, och ett avbrott utlöstes direkt varje gång. De externa pull-up motstånd förhindra detta. R14 och R15 tillkom sent i utvecklingen att förhindra utlöser avbrotten vid rörande trådarna i kretsen.

Ta en titt på funktionerna hos de två stiften ansluten till transistorerna. Ser du att de båda har PCINT(number) och INT(number.) PCINT står för Pin Change INTerrupt och, om aktiverad, kommer att utlösa ett avbrott varje gång stiftet ändrar tillstånd från 0 >> 1 eller 1 >> 0. Det är bra för vissa tillämpningar, men inte för den här. Den andra gemensamma funktionen, INT0/INT1, betyder yttre mellanjobb 0 och 1. Dessa är endast två avbrotten av detta slag på chip, och de kan konfigureras att trigga på gående det positiva eller negationen kommer kanten av en puls... Det är perfekt för våra behov! Vi vill att utlösa så snart stiftet går från 5V till marken Vi bryr oss inte när stiftet går hög igen (om du vill försöka mäta längden på passerar objektet, men det är ett annat projekt!)

Jag vet att jag lovade mer om avbrott... ha tålamod. För nu räcker det att veta att när ett avbrott utlöses programmet slutar vad det gör och exekverar koden vi skriver för att avbryta. Efter att kod körs går programmet tillbaka till vad det gjorde innan som om ingenting hänt. Vi kommer att konfigurera avbrotten i programvara, så mer om detta i avsnittet programvara, inklusive några fallgropar att se upp för!

Det var allt för sensoringångar! Så, få dessa tillägg på en skärbräda och sedan får vi gå vidare till några fler I/O anslutningar...

I den andra pic nu, är det vår första produktion! R4 och D2 gör "klar" ljuset som anger att programmet är redo att ta nästa mätning. Detta var ett sent tillägg efter att jag hade vissa problem med de andra sensorn utlösa flera gånger under en enda mätning. Nu varje sensor kan utlösa endast när när mätningen tas och sedan inte igen förrän vissa tiden går. Efter tiden passerar, lampan redo tänds och nästa mätning kan ske. SW4 var också ett sent tillägg. När avståndet mellan sensorerna är inställd (se nästa avsnitt), jag ville ha ett sätt att kunna kontrollera vilket värde som programmet använde för den sträcka i matten. Tryck på denna knapp orsakar att börvärdet till ska visas i utdata visas.

OK, SW3. Detta är en DIP paket med 8 växlar jag brukade få vissa data från användaren till chip vid körning. 6 växlar används de var med och ansluta till en ingångsstift inre pull-up resistor aktiverat (vi kommer att se hur man aktiverar dem senare i programvara.) De första 4 växlarna representerar avståndet mellan sensorer i fötterna. Utbudet är 1-16 fötter en fot i taget (0000 = 16.) Ursprungligen, det var 1-15 och 0000 0, men som orsakade ett dividera med noll villkor. Därför är alla 4 ingångar låg lika med 16. Observera att de 4 ingångarna inte är på varandra följande input stift. Som innebär lite av ett problem när de är tänkt för att vara en 4-bitars binära tal. Därför måste vi göra lite manipulation i programvaran för att få de 4 bitarna ihop innan de kan användas som ett binärt värde. De sista två växlarna av SW3 är två fler ingångar till tillåta förbrukaren till välja deras föredragna utmatningsenheter. Du kan se anteckning om detta på schematiskt. Möjliga output enheter är miles/tim, kilometer i timmen, meter/sekund och fot per sekund. Det är möjligt att använda alla enheter du vill naturligtvis. Om du gillar furlongs/två veckor, kan du göra det lika enkelt genom att ändra aritmetiskn i programmet! Mer godsaker att se fram emot!

Bild 3 visar de 4 biten BCD (Binary Coded Decimal, bara ett decimalt tal representeras av 4 bitar. Friska upp din BCD här: http://en.wikipedia.org/wiki/Binary-coded_decimal) utdata till BCD till 7-segment-dekoder, 74LS48. PortB0 - 3 är fint grupperade tillsammans vilket gör det enkelt att skicka dem till de dekoder BCD ingångar utan någon formatering. Avkodare stiften märkta * capitol * A, B, C och D är BCD ingångarna. Så, när vi har vårt nummer, kan vi bara skicka i binära ute på portB och låta dekodern göra resten. SW1 är valfri och säger bara dekodern att lysa upp allt på displayerna för teständamål. VCC och marken bör vara självförklarande här, och vi kommer att få * små * a, b, c, d, e och f nästa... En sista sak om dekodern. /LT PIN-koden använder vi för "lampa test" uppenbarligen, men vilka är de andra två konstiga stift? /BI- / RBO är inte-blanking ingång och inte-rippel blanking utgång (baren över namnet är ett logiskt 'inte' betyder aktiv låg som Återställ PIN-koden på AVR.) Det finns detaljer om hur dessa stift arbetar i databladet, men om inte annat, blanking ingång får inte gå till marken eller displayerna blir tom! Så jag bara anslutit den till den + 5v leverans.

Bild 4 ser mer komplicerad än den faktiskt är. Varje 7-segment display har var och en av dess anod (positiv) anslutningar märkta gement a - f. De tre visas bara seriekoppling tillsammans så att alla de Anderssons binds tillsammans och alla Berglunds binds ihop och så vidare... Sedan alla ansluta till motsvarande stift på dekodern så att data från dekodern går till alla tre skärmar samtidigt. Du kanske undrar hur du vill visa ett tresiffrigt nummer som hade olika siffror! Det är syftet med Q5 Q3 och Q4. Varje skärm kräver också en katod (negativ) anslutning till marken för att kunna lysa upp. Så, om vi kan kontrollera vilka som visas är jordad och kontrollera vilken siffra dekodern sänder ut, kan vi gå igenom de tre siffrorna och tre skärmar riktigt snabbt visa en annan siffra på var och en! Denna process kallas multiplexing. Användning av 7-segment dekodern och multiplexing minskar antalet utgångsstift behövs från 21 till endast 7! PortC0 - 2 används till att kontrollera växlarna transistor som marken displayerna. Denna del är kul i programvaran! Jag kan inte vänta!

Den sista bilden visar den färdiga kretsen. Om du inte redan, breadboard det noga och gör dig redo att komma tillbaka till ATMEL Studio...

Se Steg
Relaterade Ämnen

DIY ALLT I EN DATOR; Koncept till verklighet "komplett"

HejDess min första instructable. där jag ska försöka förklara visa dig hur du kan göra en billig alla i en PC.Men det är inte billigt men billigare än Orignal produkt veryyyyyyOKzzz min första bild är ett koncept bild förklara vad jag vill göra.Jag v...

Älskling, jag krympte Arduino: flytta från Arduino till ATtiny och skriva din kod i ren AVR-C

Arduino är en stor hård- och mjukvaruplattform, men med alla dess funktioner är det också lite uppsvälld och ofta behöver du bara en liten del av alla funktioner. Projektet kräver ibland för att ha mindre och billigare enheter. Vad du behöver är ATti...

Montering av Dragon Rider 500 för användning med AVR Dragon

inte länge sedan företaget Atmel kom ut med ett bra verktyg för användning med AVR microcontrollers kallas AVR Dragon. Denna lilla USB-enhet ger proffs och amatörer både förmågan att använda: I System programmering (ISP), JTAG, felsöka tråd och hög s...

Konvertera en NES gamepad till USB med Arduino

Hej!I detta instructable, jag visar dig hur du koppla in en Nintendo Entertainment System control pad till en arduino, arduino är i sin tur kör en särskild skiss som gör det möjligt att visa upp till en dator som en USB-HID-joystick!Och om detta inte...

PCB UV-exponering enhet

En UV exponering låda är ett mycket användbart att göra PCB.Jag har sökt och funnit att de är för stort och för dyrt för min använder. Dessutom kräver alla enheter en extern ström sorce.Därom bestämde jag mig att bygga en som passar bättre på mina be...

GameCube Controller till Wiimote

För det andra Instructable. Låt mig veta om något behöver fixas.Jag gjorde inte det krets eller program. Jag gör bara en guide som visar steg för steg montering av hur man gör en Gamecube till Wiimote controller.Den ursprungliga sidan finns här:http:...

Designa en Expansion PCB (Intel® IoT)

Detta Instructable har skrivits som utgångspunkt för dem som är angelägen om att använda Intel® Edison till dess fulla potential, genom att införliva det i en fullt utvecklad inbäddade projekt. För att göra detta, behöver du förmodligen att göra – so...

Snabb Digital termometer med billiga USB till TTL omvandlare och DS18B20 - utan Arduino eller Raspberry Pi

I min tidigare instructable jag gav en introduktion till Digital termometer med DS18B20 och ESP8266 nodemcu ombord med SPI OLED-skärm och programmering använder Arduino IDE. Det krävs kunskaper i programmering, grundläggande elektronik och krävs lite...

Universal programmerare för AVR: s och S51 plus ZIF socket!

Detta programmerare har utformats av företaget och har producerats minst 2500PCS av detta och det är ganska testad och standarder och nu vi inte tillverka denna version mer, här är en länk produkt (ledsen bara Farsi var tillgänglig)Universal AVR prog...

Billiga AVR/51 Development board

jag nyligen upptäckt STC microcontrollers tillverkas av TSMC. Att vara nyfiken på dessa microcontrollers började jag leta efter en utveckling styrelse för dem.Efter lite sökningar på google / ebay / AliExpress / jag beslutat att köpa denna PCB som ja...

Schweiziska AVR kniv

The Swiss AVR Knife buntar ett antal AVR programmering projekt tillsammans i en enda bekväm Altoids tuggummi tenn. På grund av den flexibilitet som erbjuds genom microcontroller programmering, ger det också en utgångspunkt för ett antal projekt baser...

LED Cube med Arduino och anpassade PCB

detta instructable Detaljer design och byggprocessen för en 5 x 5 x 5 LED cube, kontrolleras med en Arduino, som befinner sig på ett tryckt kretskort.Ytterligare information, foton och video finns på min hemsida.Den färdiga produkten visas i videon n...

PCB isolering spår fräsning med MyDIYCNC Desktop CNC maskin

Hej där,Tory @ MyDIYCNC här igen för att visa dig en annan cool projekt som är mycket lätt på din desktopen CNC-maskin. Vi ska vara fräsning ut isolering spår till Tom PCB material till manliga rapid prototyping mönsterkort. Med alla de rätta verktyg...

Lägga till knappar i musen

Jag har spelat FPS spel på min dator ett tag nu och jag fann mig ofta i behov av fler knappar på min mus. Det är därför jag köpte en gång en Logitech G9, utan i vissa spel även knapparna på det är extra 4 de tycktes vara några. Någon gång köpte senar...

En ram för att göra prisvärda & eleganta modulära styrsystem (USB till MIDI, gömde sig, eller seriella)

***JAG HAR SKAPAT EN NY INSTRUCTABLE FÖR DIY STYRENHETER:*************************************************************************************************************************************************************************************************...

Projektor lampa konvertering till LED

fick jag en projektor från en vän December 2010. Det är en kraftig D100U från 1997. Det hade inte den ursprungliga glödlampan, men allt annat fungerade bra. Jag gjorde lite efterforskningar på nätet för att se om jag kunde få en lampa för det och fic...

Hur man löda din fumeFan PCB KIT / några PCB KIT

Du är förmodligen en av de fantastiska människor som stöttat vår Kickstarter kampanj - fumeFan. Om du missade kampanjen kan du hitta mer om fumeFan på maketechnics.com.Detta instructable beskriver hur att löda den PCB KIT för varvtal styrkrets använd...

Tillägg lysdioder för sol dag lampa

Detta projekt föreslås för att öka nyttan av soldag lampa som publicerades tidigare i Instuctables:I det föreslagna projektet, är två ytterligare matriser av små lysdioder anslutna till solpanelen. Dessa tillägg LED matriser är utformade för att dra...

En enkel, låg spänning inverter för lysrör upp till 15 watt

tack till Burak Incepinar för att jag dokumentera hans design. Här är hans hemsida om du vill kolla in mer awesome mönster.Detta Instructable hjälper dig köra något fluorescerande ljus av låga spänningar, det har testats för att köra kompakt fluoresc...