Add files via upload
This commit is contained in:
parent
6737a19acc
commit
6c873a1405
|
@ -1,4 +1,178 @@
|
||||||
#define rpmPin 2
|
|
||||||
|
#include <SPI.h>
|
||||||
|
#include <Wire.h>
|
||||||
|
#include "Arduino.h"
|
||||||
|
|
||||||
|
int ontime,offtime,duty;
|
||||||
|
float freq,period;
|
||||||
|
|
||||||
|
#define pulse_ip 3
|
||||||
|
#define Cutting_Output 2
|
||||||
|
#define Activate_Input 4
|
||||||
|
#define LaunchRPM_Input A0
|
||||||
|
#define LaunchDelay_Input A1
|
||||||
|
|
||||||
|
#define BAUDRATE 115200
|
||||||
|
|
||||||
|
int LaunchRPM = 3500;
|
||||||
|
int CutRPMWindows = 500;
|
||||||
|
int CurrentRPM = 0;
|
||||||
|
int SmoothRPM[] = {0, 0, 0};
|
||||||
|
int SmoothRPMBuffer[] = {0, 0, 0};
|
||||||
|
bool Cutting2Step = false;
|
||||||
|
int PotRpmValue;
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Serial.begin(BAUDRATE);
|
||||||
|
|
||||||
|
pinMode(pulse_ip,INPUT);
|
||||||
|
pinMode(Cutting_Output, OUTPUT);
|
||||||
|
pinMode(LaunchRPM_Input, INPUT);
|
||||||
|
pinMode(LaunchDelay_Input, INPUT);
|
||||||
|
pinMode(Activate_Input, INPUT);
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
ontime = pulseIn(pulse_ip,HIGH);
|
||||||
|
offtime = pulseIn(pulse_ip,LOW);
|
||||||
|
period = ontime+offtime;
|
||||||
|
freq = 1000000.0/period;
|
||||||
|
duty = (ontime/period)*100;
|
||||||
|
|
||||||
|
if (duty > 0 && duty < 100) {
|
||||||
|
CurrentRPM = freq * 30;
|
||||||
|
AddToSmooth(CurrentRPM);
|
||||||
|
|
||||||
|
GetLaunchRPM();
|
||||||
|
GetCutRPM();
|
||||||
|
Check2Step();
|
||||||
|
|
||||||
|
SerialPrinting();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Disable2Step();
|
||||||
|
Serial.print("Unknown RPM detected!");
|
||||||
|
Serial.println("");
|
||||||
|
}
|
||||||
|
|
||||||
|
delay(1);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void GetLaunchRPM() {
|
||||||
|
PotRpmValue = analogRead(LaunchRPM_Input);
|
||||||
|
if (PotRpmValue>203)
|
||||||
|
{
|
||||||
|
LaunchRPM = map(PotRpmValue, 203, 1023, 4500, 9000);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (PotRpmValue>126)
|
||||||
|
{
|
||||||
|
LaunchRPM = map(PotRpmValue, 127, 203, 3200, 4500);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LaunchRPM = map(PotRpmValue, 0, 126, 2500, 3200);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
LaunchRPM = (LaunchRPM +24)/25;
|
||||||
|
LaunchRPM = LaunchRPM * 25;
|
||||||
|
}
|
||||||
|
|
||||||
|
void GetCutRPM() {
|
||||||
|
CutRPMWindows = analogRead(LaunchDelay_Input);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SerialPrinting() {
|
||||||
|
Serial.print("Freq:");
|
||||||
|
Serial.print(freq);
|
||||||
|
Serial.print("Hz");
|
||||||
|
|
||||||
|
Serial.print("\tDuty");
|
||||||
|
Serial.print(duty);
|
||||||
|
Serial.print("%");
|
||||||
|
|
||||||
|
|
||||||
|
Serial.print("\tRPM:");
|
||||||
|
Serial.print(GetSmoothRPM());
|
||||||
|
//Serial.print(CurrentRPM);
|
||||||
|
|
||||||
|
|
||||||
|
Serial.print("\t2Step:");
|
||||||
|
Serial.print(Cutting2Step);
|
||||||
|
Serial.print("\tLaunch:");
|
||||||
|
Serial.print(LaunchRPM);
|
||||||
|
Serial.print("\tCut:");
|
||||||
|
Serial.print(CutRPMWindows);
|
||||||
|
|
||||||
|
/*Serial.print("\ton");
|
||||||
|
Serial.print(ontime);
|
||||||
|
Serial.print("\toff");
|
||||||
|
Serial.print(offtime);
|
||||||
|
Serial.print("\ttime");
|
||||||
|
Serial.print(period);*/
|
||||||
|
|
||||||
|
Serial.println("");
|
||||||
|
}
|
||||||
|
|
||||||
|
void Check2Step() {
|
||||||
|
bool CanLaunch = false;
|
||||||
|
if (digitalRead(Activate_Input) == LOW) {
|
||||||
|
CanLaunch = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (CanLaunch) {
|
||||||
|
if (GetSmoothRPM() > LaunchRPM && !Cutting2Step) {
|
||||||
|
//if (CurrentRPM > LaunchRPM && !Cutting2Step) {
|
||||||
|
Cutting2Step = true;
|
||||||
|
digitalWrite(Cutting_Output, HIGH);
|
||||||
|
}
|
||||||
|
if (GetSmoothRPM() < LaunchRPM - CutRPMWindows && Cutting2Step) {
|
||||||
|
//if (CurrentRPM < LaunchRPM - CutRPMWindows && Cutting2Step) {
|
||||||
|
Cutting2Step = false;
|
||||||
|
digitalWrite(Cutting_Output, LOW);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Cutting2Step = false;
|
||||||
|
digitalWrite(Cutting_Output, LOW);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Disable2Step() {
|
||||||
|
|
||||||
|
Cutting2Step = false;
|
||||||
|
digitalWrite(Cutting_Output, LOW);
|
||||||
|
}
|
||||||
|
|
||||||
|
void AddToSmooth(int AddThisRPM) {
|
||||||
|
for (int i = 0; i < 3; i++) {
|
||||||
|
SmoothRPMBuffer[i] = SmoothRPM[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
SmoothRPM[0] = AddThisRPM;
|
||||||
|
|
||||||
|
for (int i = 0; i < 2; i++) {
|
||||||
|
SmoothRPM[i+1] = SmoothRPMBuffer[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int GetSmoothRPM() {
|
||||||
|
int TotalRPM = 0;
|
||||||
|
for (int i = 0; i < 3; i++) {
|
||||||
|
TotalRPM += SmoothRPM[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
return TotalRPM / 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
//#########################################################
|
||||||
|
//#########################################################
|
||||||
|
//#########################################################
|
||||||
|
//#########################################################
|
||||||
|
|
||||||
|
|
||||||
|
/*#define rpmPin 2
|
||||||
#define outputRPM 3
|
#define outputRPM 3
|
||||||
#define potPinDelay A0
|
#define potPinDelay A0
|
||||||
#define potPinRPM1 A1
|
#define potPinRPM1 A1
|
||||||
|
@ -102,4 +276,4 @@ void CalcCutting() {
|
||||||
|
|
||||||
void rpm_engine() {
|
void rpm_engine() {
|
||||||
revs++;
|
revs++;
|
||||||
}
|
}*/
|
||||||
|
|
Loading…
Reference in New Issue