Stránka 1 z 1

Jedno servo jede a druhe ne - proc ?

Napsal: 06 kvě 2018, 09:56
od Vladimir66
Ahoj,

vzhledem k tomu, ze pouze potrebuji otocit servem o 180stupnu, zdalo se mi zbytecne kvuli tomu linkovat do Arduina knihovnu. - (nechci pouzit
Timer1)
tak jsem pouzil tuto funkci.
se servem Vigor to slape, ale s SG90 ani tuk.. (s knihovnou Servo.h mi SG90 funguje)
nejake napady na zmenu parametru ?
pripadne poradit, jak odlehcit/zmensit knihovnu servo.h , aby fungovalo jen jedno servo sem-tam bez zadnych dalsich pridavnych features.

Kód: Vybrat vše


int servoPin = 9;

void SERVOUP()
{
int pos = 400;
int inc = 60; 
int servopos;
do {
  pos += inc;
  digitalWrite(servoPin, HIGH); 
   delayMicroseconds(pos);
  digitalWrite(servoPin, LOW);
  delay(20);
  }
  while(pos < 2100);
  delay(400); 

}




Re: Jedno servo jede a druhe ne - proc ?

Napsal: 06 kvě 2018, 14:12
od gilhad
Pokud vim, tak serva se ridi prez PWM s konstantni frekvenci, tady potrebujes 50Hz a tu frekvenci dodrzet, jen menit rozsah te jednicky od 1 do 2 ms
http://akizukidenshi.com/download/ds/towerpro/SG90.pdf

takze o co je "pos" delsi, o to musi byt nasledna nula kratsi
https://www.arduino.cc/reference/en/lan ... roseconds/
Currently, the largest value that will produce an accurate delay is 16383

cili delayMicroseconds jde pouzit maximalne na 16 ms, zbytek musi jit prez klasicky delay (nebo jeste lepe prez klasicke odecitani milis a porovnani s intervalem, pokud by mely vypocty uvnitr trvat nezanedbatelnou dobu, nebo bys pri tom chtel delat neco jineho)

Kód: Vybrat vše

do {
  pos += inc;
  digitalWrite(servoPin, HIGH); 
   delayMicroseconds(pos);
  digitalWrite(servoPin, LOW);
  delayMicroseconds(3000-pos);  // maximalne (16000-pos) v extermnim pripade
  delay(17); // dopocet do 20 ms (20-3=17; 20-16=4 v exremnim pripade)
  } while(pos < 2100); // pos < 2100 us, cili 2.1ms proto nam staci dopocet do 3000us a cekat 17ms

Re: Jedno servo jede a druhe ne - proc ?

Napsal: 06 kvě 2018, 14:14
od Vladimir66
teorie je jasná.. dík

Tak jsem to vyresil.
trochu jsem si upravil tento kod.
http://privateblog.info/prostoj-sposob- ... odom-sg90/
jo " Maladcí, to jsou hekři " :)

ale, ze to servo SG90 je ale zmlsane.
-V66