• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Stabilizator obrotów silnika spalinowego
#19
Witam,
Proszę spróbować:

Kod:
#include <Servo.h> //Biblioteka odpowiedzialna za serwa
#define hallPin 2 //hall na pinie 2

Servo serwomechanizm;  //Tworzymy obiekt, dzięki któremu możemy odwołać się do serwa
byte pozycja = 0; //Aktualna pozycja serwa 0-180
unsigned long przerwa; //czas miedzy 'mignieciami' niskiego stanu halla

void setup() {
pinMode(hallPin, INPUT_PULLUP); //ustawienie halla
serwomechanizm.attach(11);  //Serwomechanizm podłączony do pinu 11
Serial.begin(9600);
}

void loop()
{
// zmmenna pomocnicza do oblicznia sredniej z 10-ciu pomiarow
byte licznik = 0;
// zmienna do obliczenia sredniej arytmetycznej
unsigned long srednia = 0;
// zmienna pomocnicza pojedynczego odczytu
unsigned int odczyt;
// petla w ktorej obliczana jest serdnia z 10-ciu pomiarow
// z eliminacja odczytow z poza zakresu
while (licznik < 10)
{
 // odczyt
 odczyt = pulseIn(hallPin, LOW);
 // sprawdzenie czy w zakresie
 if ((odczyt > 2200)&&(odczyt < 3250))
   {
     // jesli tak to dodanie wyniku do poprzednich
     srednia += odczyt;
     licznik++;
   }
}
// obliczenie sredniej
srednia /= 10;

pozycja = map(srednia, 3250, 2200, 90, 0); //Zamieniamy je na pozycję serwa

serwomechanizm.write(pozycja); //Wykonajujemy ruch

delay(250);
/*
przerwa = pulseIn(hallPin, LOW); //odczytujemy przerwy w impulsach halla, liczba maleje ze wzrostem obrotow

if(przerwa < 3250)
if(przerwa > 2200)
{
pozycja = map(przerwa, 3250, 2200, 90, 0); //Zamieniamy je na pozycję serwa

serwomechanizm.write(pozycja); //Wykonajujemy ruch

Serial.print("hall =\t");
Serial.print(przerwa);
Serial.print("\   servo =\t");
Serial.println(pozycja);
}
else
{
  Serial.println("poza skala");
}
delay(250); //Opóźnienie
*/
}

Póki co liczona jest średnia z 10-ciu pomiarów i nadal używana jest funkcja pulseIn().
Jeśli to nie pomoże to spróbujemy to zrealizować inaczej.
Pozdrawiam,
Tomek.
 
Odpowiedź
  


Wiadomości w tym wątku
RE: Stabilizator obrotów silnika spalinowego - przez Smaczek - 04-07-2017, 08:22

Skocz do:


Przeglądający: 1 gości