Skocz do zawartości

Zakłócenia ? czyli widzę zygzaki.


Piotr4d

Rekomendowane odpowiedzi

Do tej pory do zasilania setupu używałem trzech zasilaczy i wszystko był w porządku. Od dwóch tygodni jestem posiadaczem astrohuba Made by Iluvatar. Dlatego niejako wymuszonym krokiem był zakup jednego mocnego zasilacza zamiast tamtych trzech, wybór padł na zasilacz od xboxa. Wszystko by było OK. gdyby nie zakłócenia jakie widać na wszystkich fotkach, im krótsza ekspozycja, co naturalne, te zakłócenia są wyraźniejsze.

Na pierwszej klatce jest poprawny obraz na drugim zniekształcony z liniami układającymi się w zygzaki. Problem występuje jedynie w przypadku gdy zmotoryzowane koło filtrowe i kamera Atik 16HR są jednocześnie podłączone do tego samego źródła zasilanie, nie zależnie czy do zasilacza sieciowego czy akumulatora. Nie jest to wina astrohuba, bo kamera i koło podpięte bezpośrednio do komputera, ale na tym samym zasilaniu, zachowują się tak samo. Wystarczy że jedno z urządzeń podepnę do innego zasilania, a wszystko wraca do normy.

Na przewody założyłem ferrytowe filtry i zniekształcenia się troszkę zmniejszyły, zamieszczone zdjęcie, to z zygzakami, było zrobione właśnie po ich założeniu. Idąc tym tropem w przewód zasilający koło wpiąłem przetwornicę step-down ustawiona tak żeby nie zmniejszała znacząco napięcia (ostawiłem na 11,5 V). Zabieg ten znacząco poprawił obraz, tak na 90%, jednak dalej gdzie nie gdzie widać malutkie zygzaczki. Coś gdzieś z czymś dalej interferuje.

Czy jestem skazany na używanie osobnego zasilania do jednego elementu np. do kamery, czy może jest na to sposób.

CCD Image 15.jpg

CCD Image 18.jpg

Odnośnik do komentarza
Udostępnij na innych stronach

Jakie to koło filtrowe? Czy chodzi o to koło, które kolega forumowy robił na drukarce 3D? Zapewne chodzi o zakłócenia generowane przez silnik krokowy (lub jego sterownik). Jeśli jest to wspomniane koło, to czy na płytce znajdują się przy zasilaniu jakieś większe kondensatory rzędu 100 uF? Jeśli nie, to być może ich dolutowanie powinno rozwiązać problem.

Odnośnik do komentarza
Udostępnij na innych stronach

Jakie to koło filtrowe? Czy chodzi o to koło, które kolega forumowy robił na drukarce 3D? Zapewne chodzi o zakłócenia generowane przez silnik krokowy (lub jego sterownik). Jeśli jest to wspomniane koło, to czy na płytce znajdują się przy zasilaniu jakieś większe kondensatory rzędu 100 uF? Jeśli nie, to być może ich dolutowanie powinno rozwiązać problem.

To koło mojej roboty http://astropolis.pl/topic/49379-kolejne-zmotoryzowane-manualne-kolo-filtrowe/?hl=ko%B3o W projekcie nie był przewidzianego kondensatora, jednak szukając przyczyny zakłóceń wpadłem na ten sam pomysł i dolutowałem 100uF. Skutek był minimalny. Najbardziej zastanawia mnie dlaczego zakłócenia powstają w czasie pracy na akumulatorze. Przecież akumulator ma płaską charakterystykę.

Odnośnik do komentarza
Udostępnij na innych stronach

To koło mojej roboty http://astropolis.pl/topic/49379-kolejne-zmotoryzowane-manualne-kolo-filtrowe/?hl=ko%B3o W projekcie nie był przewidzianego kondensatora, jednak szukając przyczyny zakłóceń wpadłem na ten sam pomysł i dolutowałem 100uF. Skutek był minimalny. Najbardziej zastanawia mnie dlaczego zakłócenia powstają w czasie pracy na akumulatorze. Przecież akumulator ma płaską charakterystykę.

Wynika z tego, że problemem nie jest źródło zasilania, a podłączone urządzenie, czyli koło. Zasilanie z akumulatroa i zasilacza jest gładkie, ale koło wprowadza do niego zakłócenia (prawdopodobnie). Zapewne zakłócenia sieje A4988, który działa impulsowo (tam jest PWM). Najwyraźniej kamera jest bardzo czuła na takie rzeczy. Dziwne, że kondensator nie pomaga.

 

Wyłączanie sterownika na postoju silnika to dobry pomysł, choć jest to leczenie skutków, a nie przyczyny. No ale efekt powinno to dać dobry.

Edytowane przez MateuszW
Odnośnik do komentarza
Udostępnij na innych stronach

To może zrobić taki myk że po ustawieniu filtra sterownik wyłączyć (sleep lub enable) i PWM nie będzie "siał" zakłóceń. Silnik nie będzie "trzymał" pozycji ale koło samo nie powinno się ruszać.

A jak to zrealizować? Mówisz o fizycznym odłączeniu czy modyfikacji wsadu do arduino.

Odnośnik do komentarza
Udostępnij na innych stronach

Wynika z tego, że problemem nie jest źródło zasilania, a podłączone urządzenie, czyli koło. Zasilanie z akumulatroa i zasilacza jest gładkie, ale koło wprowadza do niego zakłócenia (prawdopodobnie). Zapewne zakłócenia sieje A4988, który działa impulsowo (tam jest PWM). Najwyraźniej kamera jest bardzo czuła na takie rzeczy. Dziwne, że kondensator nie pomaga.

 

Wyłączanie sterownika na postoju silnika to dobry pomysł, choć jest to leczenie skutków, a nie przyczyny. No ale efekt powinno to dać dobry.

Mam w planie zamianę a4988 na A3967 EasyDriver, który operuje na mniejszych prądach, może to pomoże.

Odnośnik do komentarza
Udostępnij na innych stronach

A jak to zrealizować? Mówisz o fizycznym odłączeniu czy modyfikacji wsadu do arduino.

Układ ma piny reset, enable i sleep. Jeden z nich powinien się do tego nadać (chyba najlepiej sleep, ale musisz doczytać w dokumentacji). Po prostu ustawiając jak dobrze pamiętam 0 na tym pinie układ się praktycznie wyłączy, wiec przestanie siać zakłócenia. Tak więc podłącz jeden z tych pinów do procka i ustawiaj 1 tylko na czas pracy, a potem dawaj 0.

Odnośnik do komentarza
Udostępnij na innych stronach

To koło mojej roboty http://astropolis.pl/topic/49379-kolejne-zmotoryzowane-manualne-kolo-filtrowe/?hl=ko%B3o W projekcie nie był przewidzianego kondensatora, jednak szukając przyczyny zakłóceń wpadłem na ten sam pomysł i dolutowałem 100uF. Skutek był minimalny. Najbardziej zastanawia mnie dlaczego zakłócenia powstają w czasie pracy na akumulatorze. Przecież akumulator ma płaską charakterystykę.

 

spróbuj dołożyć kondensator ceramiczny 100nF. Cudów się nie spodziewaj ale jakaś poprawa powinna być

aby całkowicie pozbyć się zakłóceń powinieneś w miejscu rozdziału zasilania do każdego odbiornika włożyć filtry RF

dodatkowo przydałoby się ekranowanie

 

pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

Ja bym próbował zrobić to tak:

-kabel do silnika koła położyć inaczej niż te do kamery (nie równolegle)

-lepszy kabel ekranowany do silnika koła (ekran podpięty do masy od strony zasilania)

-pewną protezą było by wpięcie rezystorów szeregowo do uzwojeń silnika, tak by sterownik pracował na "pełnym napięciu" (bez PWM) - kwestia sprawdzenia jak to się będzie grzało

-podpiąć SLEEP lub ENABLE sterownika A4988 do Arduino (przy SLEEPie chyba będzie pamiętał swoje położenie mikrokrokowe, przy ENABLE to tak jak odcięcie prądu - tak mi się wydaje) i dopisać 4 linijki kodu:

deklaracja nr portu w nagłówku:

int SLEEEP_PIN = 'wolny_nr_portu';

deklaracja kierunku we/wy w funkcji setup:

pinMode(SLEEP_PIN, OUTPUT);

włączenie i wyłączenie sterownika odpowiednio na początku i na końcu funkcji EasyDriverStep np:

digitalWrite(DIR_PIN,dir);

digitalWrite(SLEEP_PIN,HIGH);

delay(100);

.

.

.

}

digitalWrite(SLEEP_PIN,LOW);

}

 

SLEEP jest podciągnięty do plusa i jego podłączanie do RESETu tak na prawdę podciąga RESET. Do pełni szczęścia przydało by się rozpiąć RESET i SLEEP i RESET podłączyć do zasilania przez R100k

 

  • Lubię 1
Odnośnik do komentarza
Udostępnij na innych stronach

Wprowadziłem poprawki do kodu zgodnie z twoimi sugestiami.

Kod się kompiluje. Teraz jeszcze został hardware do zrobiena.

Wielkie dzięki!

 

int DIR_PIN = 2;
int STEP_PIN = 3;
int POWER_PIN = 4;
int SLEEP_PIN = 5;
int FilterPos[5] = {0, 217, 435, 651, 869};

int CurrentFilter = 0; //Holds the Current Filter position
int Direction = HIGH;

long NoOfSteps = 0; //required number of steps to make
long Position = 0; //used to keep track of the current motorposition

String cmdString;
String cmd;
String arg;

void setup() {

Serial.begin(9600);
Serial.flush();
pinMode(DIR_PIN, OUTPUT);
pinMode(STEP_PIN, OUTPUT);
pinMode(POWER_PIN, OUTPUT);
pinMode(SLEEP_PIN, OUTPUT);

digitalWrite(POWER_PIN, LOW);

}
void loop() {

String cmd;
if (Serial.available() > 0)
{
Serial.flush();
cmdString=Serial.readStringUntil('#'); // Read the serial buffer until we encounter #
cmd = cmdString.substring(0,1); // The driver will pass all 1-character commands
arg = cmdString.substring(1); // Everything else will be the position or distance to move.

if (cmd=="m")
{
// Serial.print("Who asks for a return value before completion?");
// Serial.println("#");
NoOfSteps = FilterPos[CurrentFilter] - FilterPos[arg.toInt()];
if (NoOfSteps < 0)
{
Direction = LOW;
EasyDriverStep(Direction, abs(NoOfSteps));
Position = Position - NoOfSteps;
}
else
{
Direction = HIGH;
EasyDriverStep(Direction, abs(NoOfSteps));
Position = Position - NoOfSteps;
}

CurrentFilter = arg.toInt(); //Set CurrentFilter to the position we just moved to
Serial.print(Position);
Serial.println("#");
}

else if (cmd=="n")
{
NoOfSteps = arg.toInt();

if (NoOfSteps < 0)
{
Direction = HIGH;
EasyDriverStep(Direction, abs(NoOfSteps));
Position = Position + NoOfSteps;
}
else
{
Direction = LOW;
EasyDriverStep(Direction, abs(NoOfSteps));
Position = Position + NoOfSteps;
}
Serial.print(Position);
Serial.println("#");
}

else if (cmd=="g")
{
Serial.print(CurrentFilter);
Serial.println("#");
}

}
}

void EasyDriverStep(int dir,long steps){

digitalWrite(DIR_PIN,dir);
digitalWrite(SLEEP_PIN,HIGH);
delay(100);
for(int i=0;i<steps;i++){
digitalWrite(STEP_PIN, HIGH);
delayMicroseconds(1000);
digitalWrite(STEP_PIN, LOW);
delayMicroseconds(1000);
digitalWrite(SLEEP_PIN,LOW);

if (Serial.available() > 0)
{
cmdString=Serial.readStringUntil('#'); // Read the serial buffer until we encounter #
cmd = cmdString.substring(0,1); // The driver will pass all 1-character commands
if (cmd=="g")
{
Serial.print(-1);
Serial.println("#");
}
else
{
Serial.print(999);
Serial.println("#");
}
}
}
}

Odnośnik do komentarza
Udostępnij na innych stronach

To:

digitalWrite(SLEEP_PIN,LOW);

Powinno być przed ostatnim nawiasem kodu (przed nawiasem zamykającym funkcję EasyDriverStep) a jest w pętli gdzie są wykonywane kolejne kroki - efekt będzie taki że sterownik się wyłączy po wykonaniu pierwszego kroku.

Podłączenie jest moim zdaniem OK.

 

  • Lubię 1
Odnośnik do komentarza
Udostępnij na innych stronach

Zadziałało :yahoo:

Wprowadziłem modyfikacje zaproponowane przez kuba_527 :respect: i nieszczęsne zygzaki zniknęły. Obraz gładziutki jak pupa niemowlęcia (no prawie)

Dodatkowym plusem jest to, że silnik w czasie spoczynku nie grzej się. Dzięki czemu mogę zwiększyć prąd podawany na silnik tym samym minimalizuję ryzyko zgubienia kroku, a co się wiąże z ustawieniem niepoprawnej pozycji filtra.

Wielkie dzięki dla wszystkich, a szczególnie dla Kuby.

Odnośnik do komentarza
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.