• 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
#21
Witam,
Jeszcze co by serwo nie wykonywało gwałtownych ruchów:
Kod PHP:
#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 
volatile byte pozycja 0//Aktualna pozycja serwa 0-180
unsigned long przerwa//czas miedzy 'mignieciami' niskiego stanu halla

void setup() { 
 
pinMode(hallPinINPUT_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(hallPinLOW);
 
 // sprawdzenie czy w zakresie
 
 if ((odczyt 2200)&&(odczyt 3250))
 
   {
 
     // jesli tak to dodanie wyniku do poprzednich
 
     srednia += odczyt;
 
     licznik++;
 
   }
}
// obliczenie sredniej
srednia /= 10;
// Obliczenie pozycji ktora serwo powinno osiagnac
byte obl_pozycja map(srednia32502200900);
// warunki sluzace "dazeniu" serwa do obliczonej pozycji
if(pozycja obl_pozycjapozycja++;
if(
pozycja obl_pozycjapozycja--;
serwomechanizm.write(pozycja); //Wykonajujemy ruch

delay(250);


Jeśli nadal będzie niezadawalająco to zrealizujemy określanie prędkości nie w oparciu o funkcję pulseIn().
Pozdrawiam,
Tomek.
 
Odpowiedź
  


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

Skocz do:


Przeglądający: 1 gości