AVR Chronograph från koncept till PCB
I detta instructable, jag kommer att visa hur jag designade, programmerad och byggt en enhet som denna med ett par extra praktiska funktioner att göra det mer mångsidig än den på ditt lokala paintball område. Men först, en liten bakgrund...
Jag experimenterade med hemgjorda raketmotorer (enbart för helgunderhållning), och en kompis och jag började prata om att optimera bränsleblandning. Vi insåg snabbt att vi kunde aldrig uppskatta prestanda någonstans nära nog exakt för att kunna få några meningsfulla uppgifter om effekterna av små förändringar de bränsleförhållande. Konversationen sedan vände sig till mätteknik. Det dröjde inte länge innan jag var tänkande sensorer, räknare och lysdioder! Den ursprungliga idén var att använda en räknare drivs av en 555 oscillator som startar när raketen passerar en sensor och stannar när raketen passerar andra sensorn. Sedan helt enkelt Visa status för räknaren på en massa lysdioder i binär...
OK, som skulle kunna fungera, men jag skulle behöva ta en miniräknare med mig för varje lansering. Sedan finns det handeln mellan enkelhet och exakthet. En snabb oscillator skulle vara mer korrekt, men skulle kräva minst 2 eller 3 räknare kaskadkopplade för att räkna alla pulser under den korta tid som raketen är mellan sensorerna. En counter kan göra jobbet, men bara om oscillatorn är långsam nog att disken inte svämma över... Jag övergav den tanken omedelbart.
Jag hade några AVR Microcontrollers liggande (en arduino, men bygga din egen target-systemet är bättre på alla nivåer. Jag ska spara detta argument för en annan dag...) och jag insåg att en av dem kunde göra jobbet perfekt. Och jag skulle inte ens behöver en miniräknare! I det ögonblicket började jag på allvar designa detta projekt och detta instructable föddes.
En kort beskrivning av hur den fungerar innan vi går vidare:
Två 12VDC foto sensorer (projektor/mottagare med reflektorer) upptäcka raket, eller barn, eller ballistiska fruktkaka, eller vad du vill klocka och en signal till två externa avbrott stiften på en ATMega328P genom transistorn buffertar (vi ska komma in i avbrott och sånt senare, löfte.) De sensorer som jag använder är Omron E3F2-DS10B4-P1's. Dessa är lätt den dyraste komponenten, men jag var kunna låna ett par av dem för utvecklingen och testningen av denna krets. Alla enheter som kan upptäcka dina målobjekt och en signal kommer att fungera bra ändå. Kretsen jag visar här fungerar med 12VDC från dessa sensorer, men med en liten modifiering kan det också fungera på andra spänningar lika bra.
ATMega mäter tiden mellan avbrotten, läser användardefinierade avståndet mellan sensorerna från vissa DIP-switchar, gör alla matten, läser användaren definierat utmatningsenheter (MPH, KPH, etc...) från mer DIP-switchar, och slutligen multiplexer utdata till tre 7-segment visar genom en enda 74LS48 BCD till 7-segment-dekoder.
Låter inte alltför dålig rätt? Tja, alla utom fruktkaka ändå...
Sensorerna kan vara allt från 1 till 16 fot ifrån varandra, och resultatet kan vara i miles/tim, kilometer i timmen, fot per sekund eller meter per sekund. Inställningen avstånd för sensorer tillåter användaren att ändra högsta och lägsta mätbara målhastighet utan att behöva Programmera chip. Detta är praktiskt när, efter flyger en raket eller två, barnen vill tävla sina cyklar... Finns det fortfarande frågan om timer overflow och variabla avståndet är ett sätt att få något runt den. Ett annat sätt som jag också använt att jag ska tala om senare: timer prescaling.
Detta instructable är (förhoppningsvis) att vara allomfattande. Varje steg i processen kommer att diskuteras i detalj från planeringen av hårdvaran, till programmering AVR, du ritar schematiska och kretskort layout, att slutligen etsning och lödning i styrelsen. All den programvara som jag använder är helt gratis och mycket funktionell. Atmel studio 6 är för AVR utveckling och ExpressPCB är Schematisk och styrelsen layout. Därför kommer att alla skärmdumpar och förfaranden baseras på dessa program. Det finns andra lika fri och, vågar jag påstå, mer funktionell alternativ där ute, så välj det som är bäst för dig. På maskinvarusidan, jag kommer att använda en AVR Dragon (~ $50) för programmering, en skärbräda för prototyptillverkning och förhoppningsvis en dator med en USB-port är självklart :)
En komplett verktyg, material och delar lista kommer att publiceras på steg 11 ***
Förresten, kräver AVRDragon minst en 6-stifts bandkabel göra programmering. Det behöver ett 2 x 3 kvinnliga huvud i varje ände (2,54 mm.)
Som för etsning styrelsen, jag använde en pre sensibiliserade dubbel dubbelsidig hästhandlare klädda styrelse (1oz, 1 / 2oz skulle vara ok,) några positiva utvecklare att ta bort den exponerade fotoresist, och järnklorid till etch koppar. Jag har aldrig använt toner överföringsmetoden, så jag inte är säker på om de små spår skulle komma ut ren med denna teknik.
Mer om etsning senare. Först, kan bara ta en titt på schematiskt...