Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 18 kwi 2024, o 03:06


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
PostNapisane: 19 wrz 2020, o 21:35 
Offline
Nowy

Dołączył(a): 23 sie 2017
Posty: 5
Pomógł: 0

Panowie, problem mam ;)
Chciałem sterować wieloma silnikami BLDC poprzez sterowniki prędkości (ESC; steruje się jak serwo) jednakże mam problem z sterowaniem więcej niż dwoma silnikami przez własne ograniczenia wiedzy. czy ktokolwiek mógłby mi podpowiedzieć bądź zaspokoić moją ciekawość gotowym już kodem sterującym wieloma silnikami/serwami?

Poniżej dołączam jakiś kod który udało mi się napisać do dość prymitywnego sterowania dwoma silnikami dla testów


Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 wrz 2020, o 22:11 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2015
Posty: 183
Pomógł: 10

Zapewne jesteś ograniczony sprzętowo z generowaniem sygnału PWM. Można podejść inaczej do tematu i manualnie określać czas trwania stanu wysokiego/niskiego. Innym rozwiązaniem jest wykorzystanie specjalnego sterownika np. PCA9685, który posiada kilkanaście kanałów PWM.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 wrz 2020, o 10:20 
Offline
Nowy

Dołączył(a): 23 sie 2017
Posty: 5
Pomógł: 0

Draxter32 napisał(a):
Zapewne jesteś ograniczony sprzętowo z generowaniem sygnału PWM. Można podejść inaczej do tematu i manualnie określać czas trwania stanu wysokiego/niskiego. Innym rozwiązaniem jest wykorzystanie specjalnego sterownika np. PCA9685, który posiada kilkanaście kanałów PWM.


Nie da się wykorzystać w AVR dwóch timerów? Timer 1 i 2 mają własne wyprowadzenia portów jednakże ja nie jestem w stanie a raczej brakuje mi wiedzy jak w tym samym czasie wykorzystywać wszystkie 4



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 wrz 2020, o 12:10 
Offline
Użytkownik

Dołączył(a): 26 lut 2014
Posty: 288
Lokalizacja: Gdańsk
Pomógł: 13

W Bluebooku był opisywany sposób generowania sygnału PWM dla 6 kanałów (choć może być ich jeszcze więcej) w sposób programowy.
Chodziło o wygenerowanie przerwania zmiana stanu pinu w sposób programowy po przekroczeniu określonej wartości licznika.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 wrz 2020, o 20:34 
Offline
Nowy

Dołączył(a): 23 sie 2017
Posty: 5
Pomógł: 0

Zgadza się, w bb jest bardzo ładnie opisany sposób generowania sygnału pwm jednakże nie jestem w stanie znaleźć w nim odpowiedzi na swoje pytanie. Może ujmę to inaczej. W swoim programie używam Timera1 ustawionego do sygnału 50hz w preskalerze 64 aby używać jego portów (PD4 i PD5 podpisanych pod 0CR1A i OCR1B) do kontrolowania sterowników silników BLDC; potrzebuje sterować czterema takimi silnikami do czego próbowałem użyć portów Timera2 (PD6 i PD7) przy tej samej konfiguracji co Timer1 jednakże z moją wiedzą nie jestem w stanie ich uruchomić. Szukając w internecie i w książkach pana Mirka nie znajduje odpowiedzi co skłania mnie do myśli że może to być problem sprzętowy. Używam Atmega 644PA.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 wrz 2020, o 22:33 
Offline
Użytkownik

Dołączył(a): 26 lut 2014
Posty: 288
Lokalizacja: Gdańsk
Pomógł: 13

Pokaż kod z timerem 2



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 wrz 2020, o 11:37 
Offline
Nowy

Dołączył(a): 23 sie 2017
Posty: 5
Pomógł: 0

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 wrz 2020, o 15:01 
Offline
Użytkownik

Dołączył(a): 26 lut 2014
Posty: 288
Lokalizacja: Gdańsk
Pomógł: 13

Spójrz na linię 36 i 37 - zaraz na początku jest błąd
powinno być TCCR2A a jest TCCR1A
w 37
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


pisane z głowy ;) sprawdź w nocie

Po prostu nie było inicjacji timera 2



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 wrz 2020, o 18:18 
Offline
Nowy

Dołączył(a): 23 sie 2017
Posty: 5
Pomógł: 0

Tak ale to nie problem :) zwyczajnie kiedy poproszono o kod napisałem tak jak było bez kopiowania. Niestety nie usuwa to mojego błędu, wciąż nie działa.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO