View Single Post
  #8   Spotlight this post!  
Unread 11-01-2013, 16:14
billbo911's Avatar
billbo911 billbo911 is offline
I prefer you give a perfect effort.
AKA: That's "Mr. Bill"
FRC #2073 (EagleForce)
Team Role: Mentor
 
Join Date: Mar 2005
Rookie Year: 2005
Location: Elk Grove, Ca.
Posts: 2,350
billbo911 has a reputation beyond reputebillbo911 has a reputation beyond reputebillbo911 has a reputation beyond reputebillbo911 has a reputation beyond reputebillbo911 has a reputation beyond reputebillbo911 has a reputation beyond reputebillbo911 has a reputation beyond reputebillbo911 has a reputation beyond reputebillbo911 has a reputation beyond reputebillbo911 has a reputation beyond reputebillbo911 has a reputation beyond repute
Re: Disc Lauching Velocity

I have an Arduino Sketch that you are free to use to create a Chronometer. All you need is a couple of sensors to attach that can sense when the disk passes. You may have to change the Interrupt type from "RISING" to "FALLING" depending on the sensors you use.
Just edit the distance value in the code to match the separation distance between the sensors and it will spit out the velocity in ft/sec whenever the two sensors are triggered by a passing object.

Code:
/*******************************************************************************************
* This Sketch is for a Chronometer that uses the "micros" function to capture two points in*
* time and determines how much time has elapsed between them in microseconds. By knowing    *
* the distance between the to sensors, the velocity of the object can be determined.       *
* Bill Kendall, Jan. 11, 2013                                                              *
*******************************************************************************************/

#define SENSOR_DIST 6  //This value is the distance between the sensors in inches

unsigned long event1 = 0; // value in 'micros" at the time of this first trigger
unsigned long event2 = 0; // value in 'micros" at the time of this second trigger
int calculate = 0;  // If set to 1, a calculation and display of the velocity will occur
unsigned long duration = 0; // Amount of elapsed time between events
unsigned long velocity = 0;

void setup (void)
{
attachInterrupt (0, ISR0, RISING);  // Interupt 0 (pin 2) calls "ISR0" Thie is the first trigger
attachInterrupt (1, ISR1, RISING);  // Interupt 1 (pin 3) calls "ISR1" This is the second trigger
Serial.begin(115200); // connect to the serial port

}

void ISR0 (void)
{
  event1 = micros(); // record the microseconds counter
}

void ISR1 (void)
{
  event2 = micros(); // record the microseconds counter
  calculate = 1;  // Allow the velocity calculation code to run.
}


void loop (void)
{
  if (calculate != 0);
  {
    RunMath ();    
  }
}

void RunMath (void)
{
  duration = (event2 - event1); // elapsed time between triggers in u seconds
  velocity = ((SENSOR_DIST/duration)/12)*1000000;  // Calculate velocity in feet per second
  Serial.print("The projectile is moving at ");
  Serial.print(velocity);
  Serial.println(" ft./sec.");
  calculate = 0;
}
__________________
CalGames 2009 Autonomous Champion Award winner
Sacramento 2010 Creativity in Design winner, Sacramento 2010 Quarter finalist
2011 Sacramento Finalist, 2011 Madtown Engineering Inspiration Award.
2012 Sacramento Semi-Finals, 2012 Sacramento Innovation in Control Award, 2012 SVR Judges Award.
2012 CalGames Autonomous Challenge Award winner ($$$).
2014 2X Rockwell Automation: Innovation in Control Award (CVR and SAC). Curie Division Gracious Professionalism Award.
2014 Capital City Classic Winner AND Runner Up. Madtown Throwdown: Runner up.
2015 Innovation in Control Award, Sacramento.
2016 Chezy Champs Finalist, 2016 MTTD Finalist
Reply With Quote