Skocz do zawartości

Sterowanie silnikiem bezszczotkowym


Pomocna odpowiedź

Przekierowanie sygnału PPM załączającego silnik nie musi odbywać się przez zmianę programu. Możesz zrobić jakiś przycisk (czy coś tam innego) podłączony do procesora i za pomocą tego operator może to zmienić. To także może być zapamiętane w pamięci nieulotnej procesora aż do następnej zmiany więc następne włączenia będą odpalały już inny silnik.

Pytałem o zasilanie regulatorów - nie odpowiedziałeś, a to się wiąże własnie z tym przełączaniem sygnału PPM. Niektóre moje regulatory wyją co kilka sekund silnikiem (choć nim nie obracają) w przypadku gdy w procedurze autotestu (ale także później) nie dostaną prawidłowego sygnału PPM. Jeżeli tylko jednemu będziesz zapodawał impulsy a pozostałe też będą włączone do zasilania, mogą piszczeć a nie jest to miłe. 4 wyjścia PPM pracujące równolegle będą prawidłowo sterowały wszystkimi 4 regulatorami: jeden wybrany rusza z kopyta a pozostałe dostają impulsy 1ms i stoją spokojnie.

Link to post
Share on other sites
1600 kV
KV, co by nie mylić z kilo woltami
Da się ten autotest jakoś ominąć ?
Własny soft 😉

Niektóre ESC są programowalne, ale nie obiło mi się o uszy by dało się ominąć startup - ale też wielkiej liczby ESC nie przerabiałem. Te "piszczenia" zazwyczaj dają znać o wykrytej ilości celi w szeregu i drugi beep po uzbrojeniu [niska wartość sygnału sterującego].

Link to post
Share on other sites
Możesz zrobić jakiś przycisk (czy coś tam innego) podłączony do procesora i za pomocą tego operator może to zmienić.

Racja, jakoś nieumyślnie obieram gorsze rozwiązania.

Pytałem o zasilanie regulatorów - nie odpowiedziałeś, a to się wiąże własnie z tym przełączaniem sygnału PPM. Niektóre moje regulatory wyją co kilka sekund silnikiem (choć nim nie obracają) w przypadku gdy w procedurze autotestu (ale także później) nie dostaną prawidłowego sygnału PPM. Jeżeli tylko jednemu będziesz zapodawał impulsy a pozostałe też będą włączone do zasilania, mogą piszczeć a nie jest to miłe. 4 wyjścia PPM pracujące równolegle będą prawidłowo sterowały wszystkimi 4 regulatorami: jeden wybrany rusza z kopyta a pozostałe dostają impulsy 1ms i stoją spokojnie.

Z zasilacza 12V. Rozsądniejsze to wyjście, tylko nie wiem jak mi to wyjdzie przy programowaniu.

W przyszłości mogę udoskonalać i testować inne rozwiązania, teraz na szybko muszę zrobić coś prostego, co załączy te silniki automatycznie.

Link to post
Share on other sites

Wykonałem płytkę, komunikacja z komputerem poprawna, bo dioda na płytce tak jak napisałem w programie mruga. Teraz trzeba napisać program dla silnika, z tego co patrzyłem to w testerach czas trwania impulsu wynosi 1,5ms czyli robię tak:

$regfile = "m8def.dat" 
$crystal = 12000000 
Config Servos = 1 , Servo1 = Portd.1 , Reload = 10 
Config Portd = Output 
Enable Interrupts 
Dim Zmienna As Integer 'Nasze "odchylenie" serwa 
Zmienna = 150 'Czas trwania impulsu będzie wynosić Zmienna*Reload=1500us (1,5ms) 
Do 
  Servo(1) = Zmienna 
  Waitms 1000 
Loop 
End 

A poprzez zmianę czego mam regulować częstotliwość ? Nie bardzo wiem na jakiej dany regulator pracuje dlatego będę musiał dobierać metodą prób i błędów.

Czyli potrzebuję taki sam kod jak jest w testerze serw tylko bez tego soft startu.

Link to post
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

A po co chcesz zmieniać częstotliwość? Jeżeli nie kupiłeś czegoś specjalnie pod latanie kopterami, to każdy normalny regulator przyjmuje typowy sygnał PPM 1-1.5-2ms/50Hz.

Gdybym był takim regulatorem, to w życiu bym nie zakręcił moim silnikiem gdybym dostał to co Ty generujesz. Podstawą jest bezpieczeństwo: po włączeniu zasilania regulator nie przejdzie do trybu normalnej pracy dopóki drążek gazu nie jest ustawiony na minimum (ok. 1ms). Dzięki temu śmigło samolotu nie rusza przypadkowo tylko dlatego, że ktoś włączył sprzęt z przypadkowo odchylonym drążkiem. Zauważ, że w aparaturze modelarskiej gaz jako jedyny nie ma sprężyny powrotnej. To jest wygodne gdy latasz długo - przynajmniej nie trzeba przez pół godziny walczyć ze sprężynką a raz ustawiony ciąg silnika zostaje na stałe i możesz skupić się na sterach. Dopiero po chwili (2-3s), gdy regulator zauważy i zaakceptuje sygnał minimalny możesz rozkręcać silnik przez zwiększanie długości impulsów. Chcesz czy nie, jeśli jest to regulator "modelarski" to tak powinien się zachowywać. A im lepszy i większy (droższy) tym zabezpieczeń będzie miał więcej, bo moce są coraz większe i trzeba być coraz bardziej głupotoodpornym (Uwaga w tym kubku znajduje się gorąca kawa, możesz się sparzyć...).

Moim zdaniem po włączeniu zasilania (regulatora - bo to dla niego jest ważne albo całego urządzenia jeśli to jest tożsame) powinieneś generować przez kilka sekund impulsy 1ms a dopiero potem zwiększyć ich długość do maxa, czy ile tam potrzeba. Czas początkowego "zastoju" dobierz doświadczalnie do danego regulatora bo tu nie ma reguły. Ludzie poznają to na słuch - po piszczeniu silnika, ale procesor raczej nie ma takiej szansy więc musi swoje odczekać.

EDIT:

1.5ms to czas"neutralny" - w przypadku serw oznacza położenie środkowe, ale w przypadku regulatora to już połowa zakresu czyli "pół gazu".

Link to post
Share on other sites

Z tego co sprawdziłem to mój regulator czeka jakieś 2 sekundy zanim silnik zacznie się obracać.

Myślałem, że poprzez zmianę częstotliwości reguluje się obroty, ale teraz już wiem, że to chodzi o szerokość impulsu. Czytałem, że atmega zaraz po kupnie ma ustawiony zegar na 1Mhz, ja ten kod skopiowałem, tam jest 12Mhz czyli obstawiam, że nie zadziała. Da się to zrobić bez ustawiania fusebitów ? Bo nie chcę czegoś przypadkowo popsuć. A może masz jakiś przykładowy kod gdzie mógłbym się wzorować na nim ?

A może ktoś jest w stanie na szybko napisać kod, generowanie impulsu 1ms przez 3 sekundy, a następnie 2ms już ciągle ?

Link to post
Share on other sites

Nie piszę w Bascomie choć wydaje mi się, że go rozumiem. Najprostszym rozwiązaniem byłaby zmiana w twoim programie liczby 12000000 na 1000000, ale to tylko pozory. Co prawda program pasowałby wtedy do procesora taktowanego domyślnym 1MHz, ale do obsługi serwomechanizmów Bascom wykorzystuje przerwanie od jednego z timerów. Taki programowy sposób generacji PPM bardzo obciąża procesor i wymaga dużej częstotliwości zegara. mam obawy, że przy 1MHz to po prostu nie zadziała. Musiałbyś poeksperymentować z dodatkowymi parametrami funkcji config servos.

Masz trzy wyjścia: albo szybki zegar (zmiana fuse bitów - ale bez kwarcu to tylko do 8MHz), pisanie w C (wtedy możesz wszystko) albo Bascom wykorzystujący bezpośrednio timery procesora do generacji impulsów (pisałem o tym na samym początku - specjalne wyjścia np. OC1A, OC1B).

Link to post
Share on other sites

Zewnętrznego kwarcu nie mam, a płytka już polutowana, jedynie mógłbym do 8mhz zwiększyć.

A dałbyś rade napisać mi ten program w C tak żebym tylko to wgrał do atmegi ?

Pwm mam pod portd.0, częstotliwość zegara 1Mhz i to jest Atmega16a

Link to post
Share on other sites
Jeżeli nie kupiłeś czegoś specjalnie pod latanie kopterami, to każdy normalny regulator przyjmuje typowy sygnał PPM 1-1.5-2ms/50Hz.
Już drugi raz to tu widzę. Mam koptera (chwilowo w kawałkach), mam różne ESC i wszystkie są sterowane klasycznym sygnałem do serwo. Co to za "specjalne kopterowe" regulatory, o których wspominacie? Nawet flashowałem kiedyś SimonK polecanym do kopterów i.. nadal zachowywał się normalnie.
Link to post
Share on other sites

Bo o ile to możliwe zachowywana jest kompatybilność wstecz. Jeżeli specjalny "kopterowy" regulator podepniesz do źródła typowego sygnału PPM 1-2ms/50Hz to będzie się zachowywał normalnie, bo dlaczego nie? A teraz spróbuj dołączyć sygnał pochodzący z nowego, kopterowego komputera pokładowego (1-2ms/400Hz) do normalnego regulatora lotniczego. Moje twierdzą, że sygnał jest nieprawidłowy i nie ruszają. Za to kopterkowy ESC będzie działał bardzo dobrze.

Ponieważ podniesiono częstotliwość repetycji z 50 do 400Hz to ilość informacji niesionych przez taki sygnał jest dużo większa (w jednostce czasu) a opóźnienia są dużo mniejsze. A o to wciąż w kopterkach walczymy, bo zamknięta pętla regulacji (której nie ma w samolotach z normalnym RC) zamykająca się na pokładzie latacza przez czujniki MEMS, kontroler lotu, ESC i silniki wymaga jak najkrótszych okresów powtarzania. Tutaj prostym chwytem wyeliminowano lag związany z 20ms okresem repetycji typowego sygnału PPM.

Link to post
Share on other sites

Jeżeli cały program sprowadza się do wygenerowania sygnału PPM 1ms przez 2 sekundy a potem 2ms do końca życia, to nie przesadzaj. Sam to w Bascomie zrobisz bez żadnych specjalnych funkcji i eksperymentów. W C to by wyglądało jakoś tak (piszę na żywca bez weryfikacji przez kompilator):

int main(void)
{
int licznik;
// Najpierw 100 impulsów o długości 1ms powtarzanych co 20ms. W sumie to 2 sekundy:
   for (licznik = 0; licznik < 100; licznik++)
   {
       _delay_ms(19);
       SET_PPM;
       _delay_ms(1);
       CLEAR_PPM;
   }
// A teraz sygnał PPM=2ms aż do wyłączenia zasilania:
   while(1)
   {
       _delay_ms(18);
       SET_PPM;
       _delay_ms(2);
      CLEAR_PPM;
   }
}

Teraz napisz to samo w tym swoim języku i po robocie. SET_ i CLEAR_PPM zamień na ustawianie i zerowanie odpowiedniego pinu procesora.

Link to post
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.