Mäta hastigheten på Nerf Dart (4 / 4 steg)

Steg 4: elektronik




Dart hastighet skall mätas med hjälp av två ljusa barriärer som finns på framsidan och i slutet av fat. De ljusa barriärerna bestå av en infraröd LED (Osram LD 274-3) och en fototransistor (Q3 och Q4) (SFH 3100 F) varje. Lysdioderna bestråla foto transistorer över fat (se bild) och tillåta en ström mellan 5V VCC och marken respektive. Detta leder till en mätbar signal i A1 och A0. Fototransistor innehåller också ett dagsljus filter som håller det omgivande ljuset från att störa mätningar.

När en dart passerar ljusbarriären blockerande IR-LED nuvarande sjunker omedelbart till noll. Vid denna tid börjar de micro controller räkna mikrosekunder tills den andra LED är blockerad. Som vi vet avståndet mellan lysdioderna kan vi beräkna dart hastigheten.
Värdet skickas till en LED driver chip (SAA 1064) så visas den på sju segment display ligger på sidan av fat.

Jag använde en Arduino UNO ladda upp följande kod till Atmega:

#include "Wire.h" / / I2C kontroll
#include "Bounce.h"

byte diaplayAddr = 0x70 >> 1. Adressen till I2C kontroll
int digitBytes [16] = {63 6, 91, 79, 102, 109, 125, 7, 127, 111, 119, 124, 57, 94, 121, 113}; 0 1 2 3 4 5 6 7 8 9, decimaltecken = +128

ljusbarriären
int LSFrontPin = A0; ljusbarriären framtill på fat
int LSBackPin = A1; ljusbarriären på baksidan av fat
int TriggerPin = 11;

flyta meanVal = 0;
flyta meanCount = 0;

Datenverarbeitung
int LSFrontVal = 0;
int LSBackVal = 0;
int BaseLineFront = 0;
int BaseLineBack = 0;

tröskel, att erkänna en dart
int TriggerFront = 0;
int TriggerBack = 0;

mäta hastigheten
int measuringBack = 0;
flyta längd = 0.173; m
int loopTime = 100; tid av mätpunkten i micro sekunder
osignerade långa measureLoops = 0;
osignerade långa hjärtslag = 0;

flyta TempBaseLineFront = 0;
flyta TempBaseLineBack = 0;

Studsa försmak = Bounce (TriggerPin, 10);

void setup() {
Serial.BEGIN(9600);
Wire.BEGIN(); starta upp I2C bussen
Delay(500);
createDisplay();

pinMode (LSFrontPin, indata);
pinMode (LSBackPin, indata);
pinMode (TriggerPin, indata);
Delay(1000);

skapa en baslinje
för (int ii = 0; ii < 100; ii ++) {
TempBaseLineFront = TempBaseLineFront + analogRead(LSFrontPin);
TempBaseLineBack = TempBaseLineBack + analogRead(LSBackPin);
Delay(10);
}
BaseLineFront = (int)(TempBaseLineFront / 100);
TriggerFront = (int)(0.8*BaseLineFront);
BaseLineBack = (int)(TempBaseLineBack / 100);
TriggerBack = (int)(0.8*BaseLineBack);

Visar att man aktiverar görs: blinkar tre gånger med baslinjen värden
writeNumber (TriggerFront, 500);
Delay(200);

writeNumber (TriggerBack, 500);
Delay(200);

writeNumber (888, 500);
Delay(200);
writeNumber (888, 500);
Delay(200);
writeNumber (888, 500);
Delay(200);

measuringBack = 1; starta mätning och vänta på dart
}

void createDisplay() {
Wire.beginTransmission(diaplayAddr);
Wire.write(B00000000); entgegen
Subadressing: B00000001 = siffran 1, Subadressing: B00000010 = siffran 2, Subadressing: B00000011 = siffran 3, Subadressing: B00000100 = siffran 4
Wire.write(B00110111); styra byte (dynamisk modus på 9 mA)
Wire.endTransmission();

Wire.beginTransmission(diaplayAddr);
Wire.write(1); instruktion byte - första siffran till kontroll är 1 (höger)
Wire.write(digitBytes[0]); siffran 1 (HS)
Wire.write(digitBytes[1]); siffran 2
Wire.write(digitBytes[2]); siffran 3
Wire.endTransmission();

Wire.beginTransmission(diaplayAddr);
Wire.write(1); instruktion byte - första siffran till kontroll är 1 (höger)
Wire.write(digitBytes[9]); siffran 1 (HS)
Wire.write (digitBytes [0] + 128); siffran 2 + Dezimal punkt
Wire.write(digitBytes[1]); siffran 3
Wire.endTransmission();
}

void writeNumber (int nummer, int waitTime) {
creat nummer och Visa för waitTime ms
int digit1 = antal/100.
int digit2 = (antal - (digit1 * 100)) / 10;
int digit3 = nummer - digit1 * 100 - digit2 * 10;

Serial.println(Number);
Serial.Print ("digit1:"); Serial.println(digit1);
Serial.Print ("digit2:"); Serial.println(digit2);
Serial.Print ("digit3:"); Serial.println(digit3);

Wire.beginTransmission(diaplayAddr);
Wire.write(1); instruktion byte - första siffran till kontroll är 1 (höger)
Wire.write(digitBytes[digit3]); siffran 1 (HS)
Wire.write (digitBytes [digit2] + 128); siffran 2 + decimalkommat
Wire.write(digitBytes[digit1]); siffran 3
Wire.endTransmission();

Delay(waitTime);
Wire.beginTransmission(diaplayAddr);
Wire.write(1); instruktion byte - första siffran till kontroll är 1 (höger)
Wire.write(0); siffran 1 (HS)
Wire.write(0); siffran 2 + decimalkommat
Wire.write(0); siffran 3
Wire.endTransmission();
}

void heartBeatBeat() {
låter den decimala punkten blinka
Wire.beginTransmission(diaplayAddr);
Wire.write(1); instruktion byte - första siffran till kontroll är 1 (höger)
Wire.write(0); siffran 1 (HS)
Wire.write(128); siffran 2 + decimalkommat
Wire.write(0); siffran 3
Wire.endTransmission();

Delay(100);
Wire.beginTransmission(diaplayAddr);
Wire.write(1); instruktion byte - första siffran till kontroll är 1 (höger)
Wire.write(0); siffran 1 (HS)
Wire.write(0); siffran 2 + decimalkommat
Wire.write(0); siffran 3
Wire.endTransmission();
}

void loop() {
Pulsslag intervall
om (millis() > (heartBeat + 5000)) {
heartBeat = millis();
heartBeatBeat();
}

Läs på-knappen
Taster.Update();
int TasterStatus = Taster.read();
osignerade långa längd = Taster.duration();
om ((TasterStatus == HIGH) & & (varaktighet < 2000)) {
writeNumber((int)(meanVal*10/meanCount), 1000);
}
annat if (TasterStatus == hög) {
Serial.println("reset");
writeNumber (0, 500); Delay(200);
writeNumber (0, 500); Delay(200);
writeNumber (0, 500); Delay(200);
meanVal = 0;
meanCount = 0;
Delay(500);
}

delayMicroseconds(loopTime);
om (digitalRead(TriggerPin) == hög) {Serial.println("Trigger!");}

om (measuringBack == 1) {
Pfeil wurde noch nicht detektiert
LSBackVal = analogRead(LSBackPin);
om (LSBackVal < TriggerBack) {measuringBack = 0; measureLoops = micros(); Serial.Print ("starta Trigger:"); Serial.println(TriggerBack); Serial.println(LSBackVal); }
}
annat
{
dart upptäcktes, men anländer inte i fronten
LSFrontVal = analogRead(LSFrontPin);
om (LSFrontVal < TriggerFront) {
osignerade långa stopTime=micros();
flyta deltaTus = (float)(stopTime-measureLoops);
deltaTus = deltaTus / 1.0e6;
flyta mSpeed = längd / deltaTus;
measuringBack = 1;

Serial.println(measureLoops);
Serial.println(stopTime);
Serial.println(deltaTus);
Serial.println(mSpeed);

meanCount = meanCount + 1.
meanVal = meanVal + mSpeed;

Serial.println(meanVal);
Serial.println(meanCount);

writeNumber((int)(mSpeed*10), 500);
Delay(200);
}
}

#Reset efter 1 s
om ((measuringBack == 0) & & (micros() > (measureLoops + 1000000)))
{
measuringBack = 1;
}
}

Se Steg
Relaterade Ämnen

Trasiga Nerf Dart? Fixa 'em upp!

Hej, folk av Instructables. Jag har haft två händelser som händer med mig nyligen:1. jag äntligen listat ut hur man får bilder på off min Nintendo DSi2. jag tillbringade $3.00 på en Nerf Raider CS-35 från en loppmarknad.Sak är dock att den Raider dar...

Exploderande nerf dart mod

denna mod visar hur man gör en exploderande Nerf dart modDet är inte farligt som det använder pop sin häxa min galna vän en gång lite en och det inte skada honommen bara använda huvudet när skjuta dem läsa sista sidan för varningarDETTA FUNGERAR INTE...

Giant NERF dart

Jag gjorde några jätte NERF dart för en födelsedagsfest. Ursprungligen avsedd för"dekoration", är de launchable med tillägg av en launcher som den med NightHawkInLight ().För säkerhet part resonerar jag slutligen beslutat att begränsa deras anvä...

Hur många Nerf Dart är existens?

"Hur många Nerf Dart har någonsin gjorts? Någonsin?"Det är en fråga som några människor, även de flitigaste av Nerf entusiaster - någonsin tror att be. Mitt i kaoset i våra vardagliga liv, det liv och rörelse för att förbereda för vår nästa skum...

Hur man gör Nerf Dart

jag kommer att visa hur du skapar din egen Nerf Dart utan att spendera massor av pengar.Kommentera gärnaSteg 1: material Behöver du: 1/2" fogtätning skum (du kan få på de flesta järnaffärer i ca 3$), Duck tape eller hockey tejp, sax.Steg 2: Skära sku...

Hur man gör en riktigt trevlig snygg nerf dart blåspistol för mindre än $10

Jag hade ett dilemma detta passerat jul. 6 syskonbarn och absolut ingen aning vad barn som åldras är in. Huckleberry hund? Sigmund sjöodjur? Beatles???Okej... Jag är egentligen inte att kopplas bort. ;-)Min 15-åriga styvson gillar dessa Nerf dart vap...

Hur till mod en nerf dart eld i din Longshot CS-6.

Detta är min första instructable och en extremt lätt.En dag jag tröttnade att kontrollera om walmart hade någon "effektivisera" dart för min longshot, varje gång jag går de säger theres inget i lager eller de bära inte dem längre, så jag bestämd...

Knexcluther's nerf dart mod (för maverick.)

Detta är bara en enkel mod jag listat ut varför jag var fiddleing med min maverick.Detta är också ganska kul för kex älskare och airsoft och nerf lika!Jag slår min hela ginormus balja med knex somebodys redan postat den här, och om de gjorde jag ger...

Lolerskaters hemlagade Nerf Dart (de få extrema avstånd)

dessa hemgjorda Nerf Dart rock! de är gjorda av skum backer rod och få söta avstånd. Förtroende för mig de är bättre än några andra. De passar också någon Nerf pistol!Steg 1: Få saker För detta projekt behöver du:1. vissa skum backer rod (grå spolen)...

Gör nerf dart från scratch

spela med Nerf guns är en rolig aktivitet rolig aktivitet som åtnjuts av många människor. Tyvärr går roligt ofta ut när alla pilar har gått förlorade. Att göra din egen dart är mycket billigare än att köpa ersättare.En varning för att använda dessa p...

Modding lager Nerf Dart

detta instructable visar det korrekta sättet att mod lager nerf dart för att bli bättre.Steg 1: material Få dessa:FickknivNerf dartlimpistolAirsoft bbSteg 2: Dart demontering Rippa isär dart. Därefter göra upp smidigt genom att skära den med en fickk...

Modding en Nerf dart tag pistol!

Hey guys och Välkommen till min första Nerf gun mod. Idag ska jag vara modding en Nerf dart tag pistol! Jag hoppas du njuter! :) ;)Steg 1: skruva! Först du vill skruva loss alla skruvar på Nerf pistolen och ta bort alla bitar acceptera delen av den g...

Nerf Dart Mod

har du problem med dart som bara inte hålla. Ja nu med bara ett fåtal material du kan göra en kula som kommer att hålla fast en kartong mål.Steg 1: leveranser TackNerf DartLimpistol (valfritt)Steg 2: Lägga den tillsammans slita av toppen av nerf dart...

Nerf Dart dart

Steg 1: Få saker Nerf Dart, stiftSteg 2: Spetsa det Hålla PIN-koden genom hålet i sidan så sticker detSteg 3: Skjuta den Uppenbarligen...

Kraftfulla Nerf Dart

här är vad du behöver2 eller 3 lego 1 x 1 lego dubbar/prickaren nerf dart med ingen spetsen nerf pistolSteg 1: Sätta den tillsammans Ta dubbar och sätta dem tillsammans. Lägg dem i nerf dart så bara lite visar.Där, du har det, men nackdelen är att ib...

Lätt Knex Nerf Dart innehavaren

jag har varit lite forskning på Instructables och funnit att såvitt jag vet, ingen har gjort en Nerf dart innehavare av K'NEX. Så jag gick direkt vidare och gjorde en. Det är ganska enkelt att göra, bara att följa bilderna i bildspelet för att göra d...

Knex tippas nerf dart

som namnet ger knex tippas nerf dartMedan du läser denna kompatibel Vänligen titta på alla bilder och läsa alla anteckningarSteg 1: saker du behöver 1) en limpistol och pinnar2) nerf dart (företrädesvis de du inte misstycker förstör)3) knex vita stav...

Vaselin Nerf Dart ändring

har du någonsin undrat vad man ska göra med vänster över Peteoleum gelé? Ja är detta rätt ställe för dig!Denna super enkel och lustiga Nerf Dart ändring kommer att lämna av en splatter av vaselin på din vän eller fiende!Ingredienser:Vaselin (märken s...

Nerf Dart ändring

denna enkla men effektiva nerf dart ändring kommer att bidra med livslängden på din dart och prestanda.Steg 1: material Behöver du:En nerf dartEtt stråEn limpistolOch sax eller hobby kniv(Limpistol ej på bilden)Steg 2: ändring In halm i dart sedan sk...