Skocz do zawartości

Problem ze sterowaniem serwomechanizmem


AntekBezak

Pomocna odpowiedź

Nie byłem pewien czy ten temat powinien wylądować w programowaniu, zasilaniu, elektronice czy tu, dlatego w razie potrzeby proszę moderatorów o przeniesienie 😁. Buduję prosty lidar z arduino i czujnika TF mini plus i natknąłem się na bardzo dziwny problem, którego nie jestem w stanie nawet zdiagnozować. Normalnie lidar pracuje normalnie ale czasem zaczyna bardzo szybko poruszać się na boki w małym zakresie. Nie widzę za bardzo prawidłowości kiedy to się dzieje i problem nie znika po odłączeniu od komputera i podłączeniu z powrotem. Za to kiedy podłączę układ do powerbanka (powerbanku?) 15w pracuje normalnie i po ponownym podłączeniu do komputera znowu pracuje dobrze przez jakiś czas. Używam tego kodu (przyznaję się że nie rozumiem co się dzieje w funkcji getTFminiData):

#include <Servo.h>
#include <SoftwareSerial.h>
#include "TFMini.h"

TFMini tfmini;
SoftwareSerial SerialTFMini(2, 3);

void getTFminiData(int* distance, int* strength) {
  static char i = 0;
  char j = 0;
  int checksum = 0; 
  static int rx[9];
  if(SerialTFMini.available())
  {  
    // Serial.println( "tfmini serial available" );
    rx[i] = SerialTFMini.read();
    if(rx[0] != 0x59) {
      i = 0;
    } else if(i == 1 && rx[1] != 0x59) {
      i = 0;
    } else if(i == 8) {
      for(j = 0; j < 8; j++) {
        checksum += rx[j];
      }
      if(rx[8] == (checksum % 256)) {
        *distance = rx[2] + rx[3] * 256;
        *strength = rx[4] + rx[5] * 256;
      }
      i = 0;
    } else 
    {
      i++;
    } 
  }  
}

Servo s;

int pos;
int dist;

void setup() {
  s.attach(11);

  pinMode(10, OUTPUT);//Used to trigger
  int ledPin = 10;
  
  // Step 1: Initialize hardware serial port (serial debug port)
  Serial.begin(115200);
  // wait for serial port to connect. Needed for native USB port only
  while (!Serial);

  // Step 2: Initialize the data rate for the SoftwareSerial port
  SerialTFMini.begin(TFMINI_BAUDRATE);

  // Step 3: Initialize the TF Mini sensor
  tfmini.begin(&SerialTFMini);

}

void loop() {
  int distance = 0;
  int strength = 0;
  getTFminiData(&distance, &strength);
  while(!distance) {
    getTFminiData(&distance, &strength);
  }

  if (pos==180){
    pos=0;
  }
  
  
  pos++;
  s.write(pos);
  delay(10);
  Serial.println(String(distance) + "-" + String(pos));
}

Jeśli uda mi zreprodukować ten błąd to załączę filmik.

Z góry dziękuję za podpowiedzi i pozdrawim.

Link do komentarza
Share on other sites

Sam sobie odpowiedziałeś - skoro z powerbankiem jest wszystko ok, to znaczy że port USB ma zbyt małą wydajność prądową.

Jak się zsumuje pobór prądu czujnika (do 500mA), serwa i samego Arduino to trochę tego będzie.

  • Pomogłeś! 1
Link do komentarza
Share on other sites

@jand Dzięki za odpowiedź! Nie jestem mistrzem w elektronice 😅. Jak mogę to rozwiązać? Maszynka ma docelowo działać podłączona do usb w raspberry pi 4B, a jak podłączałem + i - serwa do powerbanku a resztę do komputera to to się w ogóle nie rusza...

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

(edytowany)

A wiesz czemu w gniazdku w ścianie są dwie dziurki a nie jedna? Poza tym maksymalny prąd pobierany z USB dla RPi4 to 1.2A, czyli powinno wystarczyć bez kombinowania z oddzielnym zasilaniem.

 

Edytowano przez ethanak
  • Pomogłeś! 1
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.