Inhoudsopgave:

Arduino Film Camera Shutter Checker - Ajarnpa
Arduino Film Camera Shutter Checker - Ajarnpa

Video: Arduino Film Camera Shutter Checker - Ajarnpa

Video: Arduino Film Camera Shutter Checker - Ajarnpa
Video: Shutter Speed Detector with Arduino 2024, November
Anonim
Arduino Film Camera Sluiter Checker
Arduino Film Camera Sluiter Checker
Arduino Film Camera Sluiter Checker
Arduino Film Camera Sluiter Checker

Onlangs kocht ik twee gebruikte oude filmcamera's. Nadat ik ze had schoongemaakt realiseerde ik me dat de sluitertijd kon worden vertraagd door stof, corrosie of oliegebrek, dus besloot ik iets te maken om de echte belichtingstijd van een camera te meten, omdat ik het met mijn blote ogen niet kan meten precies. Dit project gebruikt Arduino als het belangrijkste onderdeel voor het meten van de expositietijd. We gaan een opto koppel maken (IR LED en een IR fototransistor) en lezen hoe lang de sluiter van de camera open staat. Eerst zal ik de snelle manier uitleggen om ons doel te bereiken en aan het einde zullen we alle theorie achter dit project zien.

Lijst met componenten:

  • 1 x filmcamera
  • 1 x Arduino Uno
  • 2 x 220 Koolfilmweerstand
  • 1 x IR-LED
  • 1 x fototransistor
  • 2 x kleine breadboards (of 1 grote breadboard, groot genoeg voor de camera in het midden)
  • Veel jumpers of kabel

*Deze extra componenten zijn nodig voor de uitlegsectie

  • 1 x normale kleur LED
  • 1 x kortstondige drukknop

Stap 1: Bedrading Stuff

Bedrading spullen
Bedrading spullen
Bedrading spullen
Bedrading spullen
Bedrading spullen
Bedrading spullen

Bevestig eerst de IR-LED in het ene breadboard en de IR-fototransistor in het andere, zodat we ze tegenover elkaar kunnen plaatsen. Sluit een weerstand van 220 aan op de LED-anode (het lange been of de zijkant zonder de platte rand) en sluit de weerstand aan op de 5V-voeding op de Arduino. Sluit ook de LED-kathode (korte poot of de kant met de platte rand) aan op een van de GND-poorten in de Arduino.

Verbind vervolgens de Collector-pin op de fototransistor (voor mij is dit de korte poot, maar u moet uw transistorgegevensblad controleren om er zeker van te zijn dat u deze op de juiste manier bedraden of dat u de transistor kunt opblazen) naar de 220 Ω-weerstand en de weerstand naar de pin A1 op de Arudino, sluit vervolgens de emitterpin van de fototransistor aan (de lange poot of degene zonder een platte randzijde). Op deze manier hebben we de IR LED altijd aan en de fototransistor ingesteld als een gootsteenschakelaar.

Wanneer het IR-licht de transistor bereikt, zal het stroom doorlaten van de Collector-pin naar de Emitter-pin. We zullen de A1-pin instellen om omhoog te trekken, dus de pin zal altijd in een hoge staat zijn, tenzij de transistor de stroom naar massa laat dalen.

Stap 2: Programmeren

Stel uw Arduino IDE (poort, bord en programmeur) in op de configuratie die nodig is voor uw Arduino-bord.

Kopieer deze code, compileer en upload:

int leesPin = A1; // pin waar de 330-weerstand van de fototransistor is aangesloten

int ptValue, j; // het opslagpunt voor de gegevens die zijn gelezen van analogRead () bool lock; // een bolean die wordt gebruikt om de status van readPin unsigned long timer, timer2 te lezen; dubbel gelezen; String select [12] = {"B", "1", "2", "4", "8", "15", "30", "60", "125", "250", "500", "1000"}; lang verwacht [12] = {0, 1000, 500, 250, 125, 67, 33, 17, 8, 4, 2, 1}; void setup(){ Serial.begin(9600); // we stellen seriële communicatie in op 9600 bits per seconde pinMode (readPin, INPUT_PULLUP); // we gaan de pin altijd hoog zetten, behalve wanneer de fototransistor zinkt, dus we zouden de logica "omkeren" // het betekent HOOG = geen IR-signaal en LAAG = IR-signaal ontvangen vertraging (200); //deze vertraging is om het systeem te laten starten en om foutieve aflezingen te vermijden j = 0; // initialisatie van onze teller } void loop () { lock = digitalRead (readPin); // de status van de gegeven pin lezen en deze toewijzen aan de variabele if (!lock) { // alleen uitvoeren als de pin LOW is timer = micros (); // stel de referentietimer in terwijl (! lock) {// doe dit terwijl de pin LAAG is, met andere woorden, sluitertijd voor het openen van de sluiter2 = micros (); // neem een verstreken tijd sample lock = digitalRead (readPin); // lees de pinstatus om te weten of de sluiter is gesloten} Serial.print ("Positie: "); //deze tekst is voor het weergeven van de benodigde informatie Serial.print(select[j]); Serieel.print(" | "); Serial.print("Tijd geopend: "); afgelezen = (timer2 - timer); // bereken hoeveel tijd de sluiter open was Serial.print (gelezen); Serial.print(" ons"); Serieel.print(" | "); Serial.print("Verwacht: "); Serial.println(verwacht[j]*1000); j ++;// verhoog de positie van het rolluik, dit kan met een knop } }

Nadat het uploaden is voltooid, opent u de seriële monitor (Extra -> Seriële monitor) en bereidt u de camera voor op metingen

De resultaten worden getoond na de "tijd geopend:" woorden, alle andere informatie is voorgeprogrammeerd.

Stap 3: Instellen en meten

Instellen en meten
Instellen en meten
Instellen en meten
Instellen en meten
Instellen en meten
Instellen en meten
Instellen en meten
Instellen en meten

Doe je cameralenzen af en open het filmcompartiment. Als je al een film hebt geladen, denk er dan aan deze af te maken voordat je deze procedure uitvoert, anders beschadig je de gemaakte foto's.

Plaats de IR-LED en de IR-fototransistor aan weerszijden van de camera, één aan de zijkant van de film en de andere aan de kant waar de lenzen waren. Het maakt niet uit welke kant je gebruikt voor de LED of de transistor, zorg er gewoon voor dat ze visueel contact maken wanneer de sluiter wordt ingedrukt. Zet hiervoor de sluiter op "1" of "B" en controleer de seriële monitor bij het "nemen" van een foto. Als de sluiter goed werkt, moet de monitor een meting weergeven. U kunt er ook een ondoorzichtig object tussen plaatsen en het verplaatsen om het meetprogramma te activeren.

Reset de Arduino met de resetknop en maak één voor één foto's met verschillende sluitertijden, beginnend met "B" tot "1000". De seriële monitor drukt de informatie af nadat de sluiter sluit. Als voorbeeld ziet u op de bijgevoegde afbeeldingen de tijden gemeten van een Miranda en Praktica filmcamera's.

Gebruik deze informatie om correcties uit te voeren bij het maken van foto's of om de staat van uw camera vast te stellen. Als je je camera wilt schoonmaken of afstellen, raad ik je ten zeerste aan om deze naar een deskundige technicus te sturen.

Stap 4: Geeks-dingen

Geeks-dingen
Geeks-dingen
Geeks-dingen
Geeks-dingen
Geeks-dingen
Geeks-dingen
Geeks-dingen
Geeks-dingen

Transistors vormen de basis van alle elektronische technologie die we tegenwoordig zien, ze werden voor het eerst gepatenteerd rond 1925 door een Oostenrijks-Hongaarse Duits-Amerikaanse natuurkundige. Ze werden beschreven als een apparaat voor het regelen van stroom. Voorheen moesten we vacuümbuizen gebruiken om de operaties uit te voeren die transistoren tegenwoordig doen (televisie, versterkers, computers).

Een transistor kan de stroom regelen die van de collector naar de emitter vloeit en we kunnen die stroom regelen, in de gewone transistors met 3 poten, door stroom toe te passen op de transistorpoort. In de meeste transistoren wordt de poortstroom versterkt, dus als we bijvoorbeeld 1 mA op de poort toepassen, krijgen we 120 mA uit de emitter. We kunnen het ons voorstellen als een waterkraan.

De fototransistor is een normale transistor, maar in plaats van een poortbeen te hebben, is de poort verbonden met een fotogevoelig materiaal. Dit materiaal genereert een kleine stroom wanneer het wordt geëxciteerd door fotonen, in ons geval IR-golflengtefotonen. We besturen dus een fototransistor die de kracht van de IR-lichtbron wijzigt.

Er zijn enkele specificaties waarmee we rekening moeten houden voordat we onze elementen kopen en bedraden. Bijgevoegd is informatie die is opgehaald uit de transistor- en LED-gegevensbladen. Eerst moeten we de doorslagspanning van de transistor controleren, dit is de maximale spanning die hij aankan. Mijn doorslagspanning van emitter naar collector is bijvoorbeeld 5V, dus als ik hem verkeerd aansluit met 8V, bak ik de transistor. Controleer ook op de vermogensdissipatie, dit betekent hoeveel stroom de transistor kan leveren voordat hij sterft. De mijne zegt 150mW. Bij 5V betekent 150mW dat er 30 mA wordt geleverd (Watt = V * I). Daarom heb ik besloten om een limiterweerstand van 220 te gebruiken, omdat een 220 Ω-weerstand bij 5V slechts een maximale stroom van 23 mA doorlaat. (Wet van Ohm: V = I * R). Hetzelfde geval geldt voor de LED, de informatie op het gegevensblad zegt dat de maximale stroom ongeveer 50 mA is, dus nog een 220 Ω-weerstand is in orde, omdat onze Arduino-pin-maximale uitgangsstroom 40 mA is en we de pinnen niet willen verbranden.

We moeten onze opstelling aansluiten zoals op de foto. Als je knoppen zoals de mijne gebruikt, zorg er dan voor dat je de twee ronde uitsteeksels in het midden van het bord plaatst. Upload vervolgens de volgende code naar de Arduino.

int leesPin = A1; //pin waar de 220weerstand van de fototransistorint ptValue, j is aangesloten; // het opslagpunt voor de gegevens die zijn gelezen van analogRead () void setup () {Serial.begin (9600); } void loop () { ptValue = analogRead (readPin); // we lezen de spanningswaarde op de readPin (A1) Serial.println (ptValue); //op deze manier sturen we de gelezen gegevens naar de seriële monitor, zodat we kunnen controleren wat er gebeurt delay(35); // gewoon een vertraging om schermafbeeldingen gemakkelijker te maken}

Open na het uploaden uw seriële plotter (Extra -> Seriële plotter) en kijk wat er gebeurt als u op uw IR LED-schakelknop drukt. Als je wilt controleren of de IR-LED werkt (ook tv-afstandsbedieningen), plaats je de camera van je mobiele telefoon voor de LED en maak je een foto. Als het goed is, zie je een blauw-paars licht uit de LED komen.

In de seriële plotter kunt u onderscheiden wanneer de LED aan en uit is, zo niet, controleer dan uw bedrading.

Ten slotte kunt u de analogRead-methode voor een digitalRead wijzigen, zodat u alleen 0 of 1 kunt zien. Ik raad aan om een vertraging te doen na de Setup() om een valse LOW-uitlezing te voorkomen (afbeelding met een kleine LOW-piek).

Aanbevolen: