Inhoudsopgave:

Bouw je eigen (goedkope!) multifunctionele draadloze cameracontroller. 22 stappen (met afbeeldingen) - Ajarnpa
Bouw je eigen (goedkope!) multifunctionele draadloze cameracontroller. 22 stappen (met afbeeldingen) - Ajarnpa

Video: Bouw je eigen (goedkope!) multifunctionele draadloze cameracontroller. 22 stappen (met afbeeldingen) - Ajarnpa

Video: Bouw je eigen (goedkope!) multifunctionele draadloze cameracontroller. 22 stappen (met afbeeldingen) - Ajarnpa
Video: 10 MUSTHAVE gaming-producten van ACTION🕹🎧| Glimlachadds 2024, Juli-
Anonim
Bouw je eigen (goedkope!) multifunctionele draadloze cameracontroller
Bouw je eigen (goedkope!) multifunctionele draadloze cameracontroller
Bouw je eigen (goedkope!) multifunctionele draadloze cameracontroller
Bouw je eigen (goedkope!) multifunctionele draadloze cameracontroller
Bouw je eigen (goedkope!) Multifunctionele draadloze cameracontroller
Bouw je eigen (goedkope!) Multifunctionele draadloze cameracontroller

Inleiding Ooit al eens uw eigen cameracontroller willen bouwen? BELANGRIJKE OPMERKING: condensatoren voor de MAX619 zijn 470n of 0.47u. Het schema is correct, maar de componentenlijst was verkeerd - bijgewerkt. Dit is een deelname aan de Digital Days-competitie, dus als je het nuttig vindt, beoordeel/stem/reageer dan positief! Als je het echt leuk vindt en een struikelblok bent, klik dan op "ik vind het leuk!":) Update: uitgelicht op hackaday! hackaday.com/2009/10/13/a-different-breed-of-camera-controllers/ Update: nieuwe foto's van de lasertrigger in actie! Update: Eerste Prijs =D, bedankt voor het stemmen en/of beoordelen! Dit instructable is vooral in het voordeel van SLR-gebruikers die wat meer kilometers uit hun camera's willen halen, maar als er een punt is en schiet met IR-interfaces, zou je dit interessant kunnen vinden. Dit zal zeker ook werken (met een beetje aanpassing) met camerahacks waarbij je logische uitgangen kunt aansluiten op cameratriggerterminals. Dit begon als een volledige tutorial, maar vanwege een aantal onverwachte beperkingen die ik later tegenkwam, kan het meer een gids zijn over hoe je verschillende dingen kunt bereiken - ik laat je vaak de keuze over hoe je dingen zou kunnen doen die ik denk dat het een betere manier is om dingen te doen dan blindelings te zeggen "je moet dit doen". Zie dit als een les in het ontwerpen van cameracontrollers. Ik heb schema's en volledige code verstrekt, zodat je het altijd gewoon kunt kopiëren. Het zal voor de meeste mensen een eenvoudig geval zijn om het ontwerp over te zetten naar een stripboard en het LCD-scherm toe te voegen. Ik heb doorgenomen hoe ik het moet breadboarden omdat het proces erg op elkaar lijkt en het mogelijk maakt om fouten te corrigeren voordat je het ontwerp permanent maakt! Kenmerken: Single shot-modus Interval (time-lapse)-modus Getriggerde opname (trigger van externe sensor) modus met variabele omstandigheden Meegeleverde sensorontwerpen - licht, geluid (veel meer mogelijk!) Totale kosten - minder dan £ 25 (exclusief gereedschap) LCD-scherm voor eenvoudige wijziging van instellingen Compatibel met Nikon/Canon (gecodeerd), mogelijke ondersteuning (niet getest) voor Olympus/Pentax Geen firmware aanpassing nodig Maakt gebruik van IR, is dus zowel draadloos als je camera niet beschadigt. Ik kwam op het idee nadat ik uren buiten in de kou op mijn afstandsbediening had gezeten. Ik deed een interval van 8 seconden voor ongeveer 1000 schoten. Ik dacht, hé, het is toch maar een IR-led? Waarom kan ik het niet repliceren en mijn eigen afstandsbediening maken met een ingebouwde vertraging? Ik kwam er toen achter (enigszins beschaamd, omdat ik dacht dat ik een enorme hersengolf had) dat dit is gedaan en er zijn zelfs een paar instructables over het onderwerp. Waar mijn implementatie verschilt van de meeste intervalmeters en doe-het-zelf-afstandsbedieningen, is dat het veel maatwerk en modulariteit mogelijk maakt, compatibel is met zowel Nikon/Canon (en waarschijnlijk later anderen) en de mogelijkheid combineert om een foto te maken op een bepaalde trigger. Het idee is eenvoudig. Je wilt een foto maken van iets dat vrij snel is (momenteel beperkt door de vertraging van je sluiter, voor mij 6 ms). Er zijn verschillende methoden om dit te doen: 1. Met vallen en opstaan probeer je de foto op het juiste moment te maken 2. Verbeterde vallen en opstaan je verduistert de kamer, zet je camera op gloeilamp (open sluiter) en vuurt een flits af op het juiste moment 3. Koop een speciale triggercontroller met een soort van audio-/lichtsensor om de foto op jouw bevel te maken 4. Bouw er zelf een! Ok, 1 en 2 zijn prima om mee te rommelen en kunnen zeer goede foto's opleveren. Maar wat ik je ga laten zien, is dat het mogelijk is om een circuit te construeren dat je keer op keer consistente resultaten geeft. Het belangrijkste is dat in deze krappe tijden de kosten lager zijn dan bij alternatieve modellen (sommige mensen hebben kits gemaakt die dit soort dingen doen, maar ze kosten een fortuin, zie links). De veelzijdigheid van het ontwerp is dit: als uw sensor een uitgangsspanning tussen 0 en 5V genereert, kunt u deze gebruiken om uw camera te activeren! Op het eerste gezicht is dit een saaie uitspraak, maar zodra je de implicaties begint te begrijpen, wordt het heel krachtig. Door simpelweg een spanningsniveau te bewaken, kan uw trigger op licht gebaseerd (LDR), op geluid gebaseerd (microfoon of ultrageluid), op temperatuur gebaseerd (thermistor) of zelfs een eenvoudige potentiometer zijn. Eigenlijk zo ongeveer alles. Je zou het circuit zelfs kunnen koppelen aan een andere controller en op voorwaarde dat het je een logische output kan geven, dus je kunt er vanaf triggeren. De enige grote beperking van het ontwerp op dit moment is dat het alleen werkt met IR-interfaces, het zou vrij eenvoudig zijn om de software en hardware aan te passen voor uitvoer via mini-USB of welk soort interface dan ook. Opmerking: Broncode: ik heb in stap 13 enkele toepassingen geleverd. De code die ik vanaf nu op mijn controller uitvoer, staat daarboven in een hex-bestand samen met het belangrijkste c-bestand en zijn afhankelijkheden. U kunt mijn code gewoon uitvoeren als u niet zeker bent van het compileren. Ik heb ook wat voorbeeldcode bijgevoegd die je in verschillende stappen kunt gebruiken (ze heten duidelijk de naam remote_test, intervalometertest en adc-test. Als ik in een stap naar code verwijs, is de kans groot dat het daarin zit. EDIT: een update over ballonnen knallen - het lijkt erop dat ik een beetje bijziend was toen ik zei dat je gemakkelijk foto's kunt maken van knallende ballonnen. Het blijkt dat de huid van de gemiddelde ballon zo snel reist dat hij volledig is uitgeklapt tegen de tijd dat je camera afgaat. Dit is een probleem met de meeste camera's, NIET de controller (die de ADC detecteert met een snelheid van ongeveer 120 kHz). De manier om dit te doen is om een geactiveerde flits te gebruiken, wat te doen is als je een extra draad uit en een ander klein circuit toevoegt. Dat zei, je zou in theorie iets anders kunnen gebruiken om het te laten knallen en met de vertraging te spelen (of zelfs de vertragingscode te veranderen om microseconden op te nemen). Alleen al het verplaatsen van het pistool zou een rudimentaire vertraging van een paar microseconden opleveren s. Nogmaals excuses hiervoor, ik ga vanavond spelen of ik wat ballonnen kan bemachtigen, maar er zijn nog steeds veel toepassingen voor een audio-trigger, zoals vuurwerk! Ik heb hieronder een quick and dirty time lapse gezet om te laten zien dat het wel werkt:) Vergeet niet te lezen, beoordelen en/of stemmen! Proost, JoshDisclaimer In het onwaarschijnlijke geval dat er iets gruwelijk misgaat of je op de een of andere manier je camera/dremel je kat blokkeert, ben ik nergens aansprakelijk voor. Door een project te starten op basis van deze instructable, accepteer je dat en ga je verder op eigen risico. Als je een van deze maakt, of mijn instructable gebruikt om je te helpen, stuur me dan een link/foto zodat ik deze hier kan opnemen! De respons is tot nu toe overweldigend geweest (althans volgens mijn normen), dus het zou geweldig zijn om te zien hoe mensen het interpreteren. Ik werk aan revisie 2 terwijl ik typ;)

Stap 1: Enkele eerste gedachten…

Dus, hoe gaan we dit ding bouwen? MicrocontrollerHet hart en de ziel van dit project is een AVR ATMega8. Het is in wezen een licht getrimde versie van de ATMega168-chip die Arduino gebruikt. Het is programmeerbaar in C of Assemblage en heeft een aantal echt nuttige functies die we in ons voordeel kunnen gebruiken." 28 pinnen, waarvan de meeste input/output (i/o) zijn" Onboard analoog naar digitaal converter" Laag stroomverbruik " 3 ingebouwde timers " Interne of externe klokbron " Veel codebibliotheken en voorbeelden online Veel pinnen hebben is goed. We kunnen communiceren met een LCD-scherm, hebben 6 knopingangen en hebben nog genoeg over voor een IR-LED om mee te fotograferen en enkele status-LED's. De Atmel AVR-serie processors heeft veel online ondersteuning en er zijn tal van tutorials om begonnen (ik zal dit kort bespreken, maar er zijn betere speciale tutorials) en stapels en stapels code om over na te denken. Ter referentie, ik zal dit project in C coderen met behulp van de AVR-LibC-bibliotheek. Ik had dit gemakkelijk met PIC kunnen doen, maar AVR wordt goed ondersteund en alle voorbeelden die ik heb gevonden voor afstandsbedieningen zijn gebaseerd op AVR! zijn twee hoofdtypen weergave, grafisch en alfanumeriek. Grafische displays hebben een resolutie en je kunt pixels plaatsen waar je maar wilt. Het nadeel is dat ze moeilijker te coderen zijn (hoewel er bibliotheken bestaan). Alfanumerieke displays zijn gewoon een of meer rijen tekens, het LCD-scherm heeft een ingebouwde opslag van basistekens (d.w.z. het alfabet, enkele cijfers en symbolen) en het is relatief eenvoudig om strings enzovoort uit te voeren. Het nadeel is dat ze niet zo flexibel zijn en het weergeven van afbeeldingen vrijwel onmogelijk is, maar het past bij ons doel. Ze zijn ook goedkoper!Alfanumerieke tekens zijn gecategoriseerd op basis van het aantal rijen en kolommen. De 2x16 is vrij gebruikelijk, met twee rijen van 16 tekens, waarbij elk teken een 5x8-matrix is. Je kunt ook 2x20 s krijgen, maar ik zie de noodzaak niet. Koop waar je je prettig bij voelt. Ik heb ervoor gekozen om een rood verlicht LCD-scherm te gebruiken (ik wil dit gebruiken voor astrofotografie en rood licht is beter voor nachtzicht). U kunt zonder achtergrondverlichting gaan - het is helemaal uw keuze. Als u een route zonder achtergrondverlichting kiest, bespaart u stroom en geld, maar heeft u in het donker misschien een zaklamp nodig. Als u op zoek bent naar een LCD-scherm, moet u ervoor zorgen dat deze wordt bestuurd door de HD44780. Het is een industriestandaardprotocol ontwikkeld door Hitachi en er zijn veel goede bibliotheken die we kunnen gebruiken om gegevens uit te voeren. Het model dat ik kocht was een JHD162A van eBay. InputInput zal worden gedaan door knoppen (eenvoudig!). Ik koos 6 - modus selecteren, ok / schieten en 4 richtingen. Het is ook de moeite waard om nog een kleine knop te krijgen om de micro te resetten in geval van een crash. Wat betreft de trigger-ingang, zijn enkele basisideeën een lichtafhankelijke weerstand of een elektreetmicrofoon. Dit is waar je creatief of gierig kunt worden, afhankelijk van je budget. Ultrasone sensoren kosten wat meer en vereisen wat extra programmering, maar je kunt er heel leuke dingen mee doen. De meeste mensen zullen blij zijn met een microfoon (waarschijnlijk de meest bruikbare algemene sensor) en elektreten zijn erg goedkoop. Houd er rekening mee dat het ook moet worden versterkt (maar ik zal dit later bespreken). Uitgang - Status De enige echte uitvoer die we nodig hebben is status (naast het display), dus een paar LED's werken hier prima. Uitgang - Opnamen Voor het nemen foto's, moeten we communiceren met de camera en daarvoor hebben we een lichtbron nodig die infrarode straling kan produceren. Gelukkig zijn er een groot aantal LED's die dit doen en je moet proberen een redelijk hoog vermogen op te pikken. De eenheid die ik heb gekozen, heeft een stroomsterkte van 100 mA max (de meeste LED's zijn ongeveer 30 mA). Let ook op de golflengte-output. Infrarood licht bevindt zich in het langere golflengtegedeelte van het EM-spectrum en je zou moeten zoeken naar een waarde van rond de 850-950nm. De meeste IR-LED's neigen naar het 950-uiteinde en je ziet mogelijk een beetje rood licht wanneer het is ingeschakeld, dit is geen probleem, maar het is verspild spectrum, dus probeer indien mogelijk dichter bij 850 te komen. dit? Nou, het wordt draagbaar, dus batterijen! Ik heb ervoor gekozen om 2 AA-batterijen te gebruiken die vervolgens worden opgevoerd tot 5V. Ik zal de redenering hierachter in de volgende paragrafen bespreken. 'Behuizing en constructie' Hoe je dit stukje doet, is geheel aan jou. Ik besloot om stripboard te gebruiken voor het circuit na het prototypen, omdat het goedkoop en flexibel is en het bespaart op het ontwerpen van een aangepaste PCB. Ik heb de schema's verstrekt, zodat je vrij bent om je eigen PCB-lay-out te maken - maar als je dat doet, zou ik dankbaar zijn om een kopie te hebben! in een redelijk intuïtieve lay-out indien mogelijk) en de batterijen. Zoals printplaten gaan, deze is niet zo ingewikkeld, veel van de verbindingen zijn gewoon naar dingen zoals de knoppen / LCD.

Stap 2: Energiebeheer

Stroombeheer
Stroombeheer

EnergiebeheerVoor een project als dit is het duidelijk dat draagbaarheid een belangrijk aspect moet zijn. Batterijen zijn dus de logische keuze! Voor draagbare apparaten is het nu vrij belangrijk dat u een batterijbron kiest die ofwel oplaadbaar is, ofwel gemakkelijk verkrijgbaar is. De twee belangrijkste opties zijn de 9V PP3-batterij of AA-batterijen. Ik weet zeker dat sommige mensen zullen aannemen dat een 9V-batterij de beste optie is, want hey, 9V is beter dan 3 toch? Nou, in dit geval niet. 9V-batterijen, hoewel zeer nuttig, produceren hun spanning ten koste van de levensduur van de batterij. Gemeten in mAh (milliampère-uur), vertelt deze classificatie u in theorie hoe lang een batterij meegaat op 1mA in uren (hoewel u het met een korreltje zout moet nemen, deze zijn vaak onder ideale omstandigheden met weinig belasting). Hoe hoger de classificatie, hoe langer de batterij meegaat. 9V-batterijen hebben een vermogen tot en rond 1000mAh. Alkaline AA's daarentegen hebben bijna drie keer zoveel op 2900mAh. NiMH-oplaadbare apparaten kunnen dit bereiken, hoewel 2500mAh een redelijke hoeveelheid is (merk op dat oplaadbare batterijen werken op 1,2V en niet op 1,5!). Het LCD-scherm heeft een ingang van 5V nodig (10%) en de AVR (de microcontroller) heeft ongeveer hetzelfde nodig (hoewel het zo laag kan zijn als 2,7 voor kloksnelheden met lage frequentie). We hebben ook een redelijk stabiele spanning nodig, als deze fluctueert kan dit problemen veroorzaken met de microcontroller. Hiervoor gebruiken we een spanningsregelaar, je moet nu een keuze maken tussen prijs versus efficiëntie. Je hebt de mogelijkheid om een eenvoudige 3-pins spanningsregelaar te gebruiken, zoals de LM7805 (78-serie, +5 volt uitgang) of een kleine geïntegreerde schakeling. Een eenvoudige regelaar gebruiken Als je ervoor kiest om met deze optie te gaan, moet je een paar punten in gedachten. Ten eerste hebben driepolige regelaars bijna altijd een ingang nodig die hoger is dan hun uitgang. Vervolgens verlagen ze de spanning naar de gewenste waarde. Het nadeel is dat ze een vreselijke efficiëntie hebben (50-60% is goed in de omgang). Het voordeel is dat ze goedkoop zijn en werken op een 9V-batterij, je kunt een basismodel kopen voor 20 pence in het VK. Houd er ook rekening mee dat regelaars een uitvalspanning hebben - de minimale kloof tussen invoer en uitvoer. U kunt speciale LDO-regelaars (Low DropOut) kopen met uitval van ongeveer 50 mV (vergeleken met 1-2V bij andere ontwerpen). Met andere woorden, kijk uit voor LDO's met een +5V-uitgang. Een geïntegreerde schakeling gebruikenDe ideale manier om te gaan is een schakelende regelaar. Voor ons doel zijn dit normaal gesproken 8-pins pakketten die een spanning opnemen en ons een gereguleerde output geven met een hoog rendement - in sommige gevallen bijna 90%. Je kunt step-up of step-down-converters krijgen (respectievelijk boost/buck), afhankelijk van wat je erin wilt stoppen, of je kunt regelaars kopen die boven of onder de gewenste output zullen zijn. De chip die ik voor dit project gebruik is een MAX619+. Het is een 5V step-up regelaar die 2 AA's nodig heeft (het ingangsbereik is 2V-3,3V) en een stabiele 5V geeft. Het heeft slechts vier condensatoren nodig om te werken en is zeer ruimtebesparend. Kosten - € 3,00 inclusief de doppen. Het is ongetwijfeld de uitgave waard om wat meer uit uw batterijen te halen. Het enige grote nadeel is dat het niet beveiligd is tegen kortsluiting, dus wees gewaarschuwd als er een stroomstoot is! Dit is echter redelijk triviaal om op te lossen met een add-on-circuit: een ander handig chipontwerp - hoewel lang niet zo'n nette oplossing, is de LT1307. Nogmaals, een 5V-regelaar, maar deze kan verschillende ingangen gebruiken en heeft handige dingen zoals detectie van een bijna lege batterij. Het kost nogal wat meer, bijna € 5 met inductoren, grote condensatoren en weerstanden. Spanningsrails We gaan twee hoofdspanningsrails gebruiken (plus een gemeenschappelijke aarde). De eerste is de 3V van de batterij, deze zal worden gebruikt om de LED's en andere relatief krachtige componenten van stroom te voorzien. Mijn MAX619 heeft slechts een nominale waarde tot 60 mA (hoewel het absolute maximum 120 mA is), dus het is gemakkelijker om de microcontroller op een MOSFET aan te sluiten om LED's te bedienen. De MOSFET trekt bijna geen stroom en fungeert als een onderbreking in het circuit wanneer de gate-ingang minder dan 3V bedraagt. Wanneer de microcontroller logische 1 op de pin verzendt, is de spanning 5V en gaat de FET aan, en werkt dan gewoon als een kortsluiting (dwz een stuk draad). De 5V-rail voedt het LCD-scherm, de microcontroller en eventuele versterkingscircuits voor ingangssensoren. Stroomverbruik Als we naar verschillende datasheets kijken, merken we dat de AVR bij maximale belasting niet meer dan 15-20mA nodig heeft. Het LCD-scherm heeft slechts 1 mA nodig om te werken (tenminste toen ik het heb getest, budget voor 2). Met de achtergrondverlichting aan, is het echt aan jou om te beslissen. Het rechtstreeks aansluiten op de 5V-rail (ik heb het geprobeerd) is prima, maar zorg ervoor dat het een ingebouwde weerstand heeft (volg de sporen op de PCB) voordat je het doet. Het trok 30mA op die manier - verschrikkelijk! Met een weerstand van 3,3k is hij nog steeds zichtbaar (perfect voor astrofotografie) en trekt hij slechts 1mA. Je kunt nog steeds een behoorlijke helderheid krijgen met een 1k of anderszins. Ik vind het prima met de mijne die net onder de 2mA trekt met de achtergrondverlichting aan! Als je wilt, is het triviaal om een helderheidsknop toe te voegen met behulp van een 10k-potentiometer. De IR-LED kan maximaal 100 mA gebruiken, maar ik heb goede resultaten gehad met 60 mA over de mijne (experiment!). U kunt die stroom dan halveren omdat u effectief werkt met een inschakelduur van 50% (wanneer de LED is gemoduleerd). Hoe dan ook, hij staat maar een fractie van een seconde aan, dus we hoeven ons hier geen zorgen over te maken. Met de andere LED's waar je mee zou moeten spelen, zul je misschien merken dat slechts een stroom van 10 mA voldoende is om je een goede helderheid te geven - kijk zeker voor LED's met laag vermogen (exclusief de IR-led), ontwerp je geen zaklamp! Ik heb ervoor gekozen om geen stroomindicator aan mijn circuit toe te voegen, simpelweg omdat het veel stroom trekt voor niet veel gebruik. Gebruik de aan/uit-schakelaar om te controleren of hij aan staat! In totaal zou je niet meer dan 30 mA tegelijk moeten gebruiken en met een theoretische levering van ongeveer 2500 (variatie mogelijk) mAh, dat zou je meer dan 80 uur moeten geven rechtdoor met alles erop en eraan. Als de processor het grootste deel van de tijd inactief is, zal dit ten minste verdubbelen/verdrievoudigen, dus u hoeft uw batterijen niet vaak te vervangen. Conclusie Daar gaan we, dat was gemakkelijk, nietwaar! Je kunt ofwel goedkoop en vrolijk gaan met een 9V-batterij en een LDO-regelaar ten koste van de efficiëntie of iets meer betalen en een speciale IC gebruiken om het te doen. Mijn budget was nog steeds onder de € 20, zelfs MET de IC, dus je kunt het nog verder verlagen als dat nodig is.

Stap 3: Een nadere blik op de ATmega8

Een nadere blik op de ATmega8
Een nadere blik op de ATmega8

PinsImage 1 is het pinout-diagram voor de ATMega8 (exact hetzelfde als de 168/48/88, het enige verschil is de hoeveelheid intern geheugen en interrupt-opties). Pin 1 - Reset, moet op VCC-spanning worden gehouden (of op zijn minst logisch 1). Indien geaard, zal het apparaat soft-resettenPin 2-6 - Poort D, algemene input/outputPin 7 - VCC, voedingsspanning (+5V voor ons)Pin 8 - GroundPin 9, 10 - XTAL, externe klokingangen (onderdeel van Poort B)Pin 11 - 13 Poort D, algemene input/outputPin 14 - 19 Poort B, algemene input/outputPin 20 - AVCC, analoge voedingsspanning (zelfde als VCC)Pin 21 - AREF, analoge spanningsreferentiePin 22 - GroundPin 23-28 Poort C, algemene invoer/uitvoer Bruikbare i/o-poorten: D = 8, C = 6, B = 6A in totaal 20 bruikbare poorten is geweldig, voor de eenvoud moet u uw uitgangen groeperen in poorten (zeg, D als de uitvoerpoort) of in groepen op het bord - misschien wilt u dat het LCD-scherm vanaf poort C loopt om de draden netjes in die hoek te houden. Er zijn drie extra pinnen die nodig zijn voor het programmeren. Dat zijn MISO (18), MOSI (17) en SCK (19). Deze zullen indien nodig echter graag als i/o-pinnen fungeren. Klokken Het signaal dat we naar de camera sturen, moet nauwkeurig worden getimed (nauwkeurig tot ongeveer een microseconde), dus het is belangrijk dat we een goede klokbron kiezen. Alle AVR's hebben een interne oscillator waaruit de chip zijn klok kan halen. Het nadeel hiervan is dat ze rond de 10% kunnen schommelen met temperatuur/druk/vochtigheid. Wat we kunnen doen om dit te bestrijden, is een extern kwartskristal gebruiken. Deze zijn beschikbaar in alles van 32768kHz (horloge) tot 20MHz. Ik heb ervoor gekozen om een 4Mhz-kristal te gebruiken omdat het een behoorlijke hoeveelheid snelheid biedt, maar toch redelijk energieconservatief is in vergelijking met misschien 8Mhz +. Energiebeheer aan boord Ik wilde echt slaaproutines in mijn code gebruiken. In feite heb ik de eerste versie geschreven om sterk afhankelijk te zijn van het stationair draaien van de processor terwijl de tijd verstreek. Helaas kwam ik door tijdgebrek enkele problemen tegen met het extern draaien van de klok en het onderbreken van het gebruik van de timers. In wezen zou ik de code moeten herschrijven om te voorkomen dat de controller gewoon niet wakker wordt - wat ik zou kunnen doen, maar de tijd is tegen mij. Als zodanig trekt het apparaat slechts 20 mA achtig, dus je kunt ermee wegkomen. Als je er echt klaar voor bent, speel dan vooral met de code, het enige wat je hoeft te doen is intern te klokken en dan Timer 2 in asynchrone modus te laten draaien met behulp van het 4MHz-kristal voor de meer nauwkeurige vertragingen. Het is eenvoudig om te doen, maar tijdrovend. ADCHet Zwitserse zakmes in de AVR-toolset, de ADC staat voor Analogue to Digital Converter. Hoe het werkt is relatief eenvoudig van buitenaf. Een spanning wordt bemonsterd op een pin (van een sensor of andere ingang), de spanning wordt omgezet in een digitale waarde tussen 0 en 1024. Een waarde van 1024 wordt waargenomen wanneer de ingangsspanning gelijk is aan de ADC-referentiespanning. Als we onze referentie instellen op VCC (+5V), dan is elke divisie 5/1024 V of ongeveer 5mV. Dus een toename van 5mV op de pin zal de ADC-waarde met 1 verhogen. We kunnen de ADC-uitgangswaarde als een variabele nemen en er dan mee spelen, het vergelijken met dingen, enz. In de code. De ADC is een ongelooflijk handige functie en stelt je in staat veel coole dingen te doen, zoals je AVR in een oscilloscoop veranderen. De bemonsteringsfrequentie ligt rond de 125 kHz en moet worden ingesteld in verhouding tot de hoofdklokfrequentie. Registers U heeft misschien al eerder van registers gehoord, maar wees niet bang! Een register is gewoon een verzameling adressen (locaties) in het AVR-geheugen. Registers worden geclassificeerd op basis van hun bitgrootte. Een 7-bits register heeft 8 locaties, omdat we bij 0 beginnen. Er zijn registers voor zo ongeveer alles en we zullen ze later in veel meer detail bekijken. Enkele voorbeelden zijn de PORTx-registers (waarbij x B, C of D is) die bepalen of een pin hoog of laag wordt ingesteld en pull-upweerstanden instellen voor ingangen, de DDRx-registers die instellen of een pin wordt uitgevoerd of ingevoerd, enzovoort. The DatasheetEen kolos van literatuur, met een gewicht van ongeveer 400 pagina's; de AVR-datasheets zijn een onschatbare referentie naar uw processor. Ze bevatten details van elk register, elke pin, hoe timers werken, welke zekeringen op wat moeten worden ingesteld en nog veel meer. Ze zijn gratis en u zult het vroeg of laat nodig hebben, dus download een exemplaar! www.atmel.com/dyn/resources/prod_documents/doc2486.pdf

Stap 4: Pins toewijzen

Pins toewijzen
Pins toewijzen

Ik heb al de in- en uitgangen genoemd die we nodig hebben, dus we moeten ze pinnen toewijzen! Nu heeft POORT D 8 pinnen, wat handig is omdat het kan fungeren als onze uitvoerpoort. Het LCD-scherm heeft 7 pinnen nodig om te werken - 4 datapinnen en 3 besturingspinnen. De IR-LED heeft slechts één pin nodig, dus dat maakt onze 8. PORTB onze knoppoort, hij heeft 6 ingangen, maar we hebben er maar 5 nodig. Dit zijn de modus- en richtingsknoppen. PORTC is speciaal, het is de ADC-poort. We hebben maar één pin nodig voor de trigger-ingang en het is logisch om deze op PC0 te plaatsen (een gebruikelijke afkorting voor poortpinnen in dit geval Port C, Pin 0). We hebben dan een paar pinnen voor status-LED's (de ene licht op wanneer de ADC-waarde boven een bepaalde voorwaarde is, de andere licht op wanneer deze onder een bepaalde voorwaarde is). We gaan hier ook onze ok/shoot-knopinvoer plaatsen, om redenen die later duidelijk zullen worden. Na dit alles hebben we de meerderheid van de poorten opgebruikt, maar we hebben er nog een paar over als je het project wilt uitbreiden - misschien meerdere triggers?

Stap 5: Communiceren met de camera

Communiceren met de camera
Communiceren met de camera
Communiceren met de camera
Communiceren met de camera

Eerste prijs in de Digital Days Photo Contest

Aanbevolen: