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



Teraz jest 26 sty 2026, o 14:43


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 28 ] 
Autor Wiadomość
PostNapisane: 27 gru 2013, o 00:55 
Offline
Użytkownik

Dołączył(a): 26 gru 2013
Posty: 62
Pomógł: 2

Witam,
Udało mi się przebrnąć przez temat, w którym odpowiadaliście koledze tworzącemu mini komputer samochodowy. Temat obszerny. Głównie chodzi mi o zastosowanie potencjometrów do sterowania napędem silników poprzez PWM. Poniżej zamieszczam schemat połączeń.
Obrazek
Oraz moje kodowe wypociny.
Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Dodatkowo jeszcze tworzę plik nagłówkowy.h, żebym ostatecznie mógł szybciej poruszać się po projekcie. Zaznaczam, iż nie jest on jeszcze ukończony.
Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

No i na koniec problem z tego wynikający. Program w zależności od wartości na potencjometrach ma sterować prędkością 2 silników. 3 silnik sterowany jest tylko za pomocą 3 przycisków ->lewo, prawo, stop.
Jednakże dla powyższego kodu rezultat jest troszkę inny, mianowicie: 2 silniki kręcą się na full, a trzeciego nie mogę nawet uruchomić. Myślę, że może to być spowodowane błędami w kodzie (raczej na pewno), jednak nie mam pomysłu co konkretnie poprawić. Obsługiwany uC to ATmega 328p.
Pozdrawiam serdecznie!



Ostatnio edytowano 27 gru 2013, o 17:02 przez jedfra6, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 gru 2013, o 02:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 sie 2013
Posty: 116
Pomógł: 0

Nie mam na czym sprawdzić programu a czytanie go z "przeglądarki" dzisiaj jest trudne;p.

Więc mogę tylko polecić:
zanim zaczniesz coś zmieniać w programie sprawdź czy na pewno hardware jest ok,
PWM-y mostków itp.

Postaram się coś ogarnąć ale dzisiaj nie obiecuję.

co do projektu o którym wspominałeś odnośnie komputera samochodowego, możesz podrzucić link?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 gru 2013, o 02:14 
Offline
Użytkownik

Dołączył(a): 26 gru 2013
Posty: 62
Pomógł: 2

topic1491.html bardzo proszę.
Co do hardware'u to wydaje mi się, że wszystko jest ok. W pierwszej wersji edukacyjnej użyłem jednego kanału ADC i wywoływałem przerwanie od zakończenia pomiaru, które odpowiednio wysterowywało PWM. Dlatego myślę, że ponieważ silniki kręcą się na full tak jakby PWM działał z całkowitym wypełnieniem, to raczej kwestia kodu.
Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 gru 2013, o 11:08 
Offline
Użytkownik

Dołączył(a): 04 paź 2011
Posty: 8629
Pomógł: 338

KODY UMIESZCZAMY W ZNACZNIKACH SYNTAX -- PROSZĘ POPRAWIĆ



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 gru 2013, o 12:58 
Offline
Użytkownik

Dołączył(a): 26 gru 2013
Posty: 62
Pomógł: 2

Witam, kody programu są poprawione. Czy ktoś ma jakieś pomysły?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 gru 2013, o 15:32 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

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

Takie coś masz w 2 miejscach i to jest źle, bo używasz iloczynu bitowego & zamiast logicznego &&

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 gru 2013, o 15:41 
Offline
Użytkownik

Dołączył(a): 26 gru 2013
Posty: 62
Pomógł: 2

Racja, przy czym nie zmienia to istoty problemu. Po zmianie nadal jest tak samo. Nie wiem kompletnie dlaczego



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 gru 2013, o 19:33 
Offline
Użytkownik

Dołączył(a): 26 gru 2013
Posty: 62
Pomógł: 2

Zastosowałem diodę jako debugger i wiem na pewno że do funkcji motor_set wchodzi. Następnie sprawdziłem profilaktycznie działanie mostka H, stosując kod (działający!):
Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Jednakże w momencie zastosowania dwukanałowego sterowania :
Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

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

A w rezultacie na wyjściu OC2A mam cały czas VCC. Anyone?:P



Ostatnio edytowano 30 gru 2013, o 20:01 przez jedfra6, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 gru 2013, o 19:44 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

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

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

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 gru 2013, o 20:03 
Offline
Użytkownik

Dołączył(a): 26 gru 2013
Posty: 62
Pomógł: 2

Poprawiłem. Na OC2A 0 a na OC1A VCC...;/ Nie reaguje na potencjometry. Nadal nie rozwiązane



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 gru 2013, o 20:53 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Skoro na jednym kanale działa to coś jest ze zmianą kanałów. Spróbuj "zakomentować" tą linię:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Autor postu otrzymał pochwałę

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 gru 2013, o 21:01 
Offline
Użytkownik

Dołączył(a): 26 gru 2013
Posty: 62
Pomógł: 2

O coś zaczęło się dziać. Reaguje. Jednakże dostaję dziwny efekt na drugim silniku. Jeden działa pięknie. A drugi Zamiast płynnie zmieniać od -5V do 5V przy -3V przeskakuje nagle na 0,7V. Niby funkcja analogiczna a efekt tak różny?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 gru 2013, o 21:08 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

skoro to freeruning to zobacz 5 część poradnika Mirka o ADC.
Pod koniec tej części jest opisany problem.

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 gru 2013, o 21:33 
Offline
Użytkownik

Dołączył(a): 26 gru 2013
Posty: 62
Pomógł: 2

No już nie jest to tryb FreeRunning skoro go wyłączyłem. Więc mówisz o którym problemie?:)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 gru 2013, o 22:04 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

zasugerowałem się komentarzem w kawałku który pokazał Krauser

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 gru 2013, o 01:04 
Offline
Użytkownik

Dołączył(a): 26 gru 2013
Posty: 62
Pomógł: 2

Zdaje się, że wiem w czym może być problem ale nie końca wiem, jak go dobrze rozwiązać. Doczytałem w nocie, że ten fiksujący silnik jest obsługiwany przez timer 16-bitowy. Oczywiście ustawiłem go w tryb PWM phase correct 8 bit. Jednakże w poprzednim przypadku przyrównuje po prostu OCR2A do odpowiedniej wartości.
Jak jednak odpowiednio wpisać wartość dla timera 16-bitowego kiedy ma dwa rejestry porównawcze OCR1AH i OCR1AL?
Czy ta wartość powinna być po prostu przypisana do OCR1AL?
EDIT: Nadal w kropce. Pomiary na wyjściu do silnika dają, że zmienia się od 5V do około 3 po czym przeskakuje nagle na 0,7 V i tak już zostaje;/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 gru 2013, o 17:23 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

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

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sty 2014, o 14:13 
Offline
Użytkownik

Dołączył(a): 26 gru 2013
Posty: 62
Pomógł: 2

Z jakiegoś powodu w tej chwili przeskakuje na -0,7 V. ;/ A poza tym cały czas tak samo. Naprawdę już nie rozumiem, z czego to wynika;/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 sty 2014, o 20:42 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Może wyjmij driver silnika i podepnij LED i zobacz czy płynnie zmienia się jasność.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 sty 2014, o 00:00 
Offline
Użytkownik

Dołączył(a): 26 gru 2013
Posty: 62
Pomógł: 2

Znaczy wyciągnąć L293D i sprawdzić na styku PWM jak się zmienia? Bo napięcie sprawdzałem nawet bez samego silnika ale to jak rozumiem raczej nie ma znaczenia. Czyli na dobrą sprawę sprawdzić napięcie na wyjściu z Atmegi? Jeśli macie jeszcze jakieś pomysły to dawajcie znać, bo niestety czas mnie powoli zaczyna gonić, a bez tego ani rusz.
Myślałem jeszcze o wysyłaniu info na wyświetlacz, bo nie mam USART'a narazie. Ale oczywiście inwentaryzacje w sklepach xD



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sty 2014, o 17:43 
Offline
Użytkownik

Dołączył(a): 26 gru 2013
Posty: 62
Pomógł: 2

Zrobiłem jak poradziłeś.. Wyciągnąłem mostki i mierzyłem napięcie na wyjściu PWM-a. W wyniku dostaję ładnie od 5 V do 3 później w okolicach położenia środkowego prawidłowe zero jednakże ze skokiem z 3V;/ Później w drugą stronę nagły skok na jakieś 1,5V, które może jest zbyt małe aby odpalić silnik w drugą stronę. Może jest to problem z podziałem napięcia na 255 próbek? Co myślicie?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sty 2014, o 22:15 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Nadal pozostaje problem z tym, że wynikADC może przyjąć wartość -128 i to co wcześniej pokazałem nic nie daje, bo -2 * -128 daje 256 co powoduje przeskok OCRxy z 254 na 0.
Spróbuj tak (od razu uprościłem kod)
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sty 2014, o 14:13 
Offline
Użytkownik

Dołączył(a): 26 gru 2013
Posty: 62
Pomógł: 2

Nadal klapa. Wprowadziłem do Twojego kodu jeszcze wyłączanie ADC przed zmianą kanału. W tej chwili jest tak, że zmienia się od +5 do +3 a następnie przeskakuje na 0 i zmienia się do około 1V. Wygląda to już lepiej. Wygląda tak, jakby źle było ustawione graniczenie ADC, dlatego z jakiegoś powodu przeskakuje.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sty 2014, o 15:22 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

jedfra6 napisał(a):
Wprowadziłem do Twojego kodu jeszcze wyłączanie ADC przed zmianą kanału.

A czemu to ma służyć?

Sprawdź czy napięcie na ADC zmienia się liniowo od 0 do 5V. Może masz potencjometr z charakterystyką B.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sty 2014, o 15:57 
Offline
Użytkownik

Dołączył(a): 26 gru 2013
Posty: 62
Pomógł: 2

Patrząc na multimetr wydaje się, iż zmienia się liniowo. Gdzieś czytałem, że dobrze jest wyłączyć ADC na czas zmiany kanału. Ale może nie jest to potzrebne;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 sty 2014, o 17:48 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

jedfra6 napisał(a):
Gdzieś czytałem, że dobrze jest wyłączyć ADC na czas zmiany kanału

Tak jak masz włączone automatyczne wyzwalanie pomiaru.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 sty 2014, o 19:58 
Offline
Użytkownik

Dołączył(a): 26 gru 2013
Posty: 62
Pomógł: 2

No ok, ale to nie zmienia faktu, że nadal nie działa;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 sty 2014, o 20:08 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Nic więcej nie dodam, bo uruchomiłem poniższy okrojony kod na zestawie ATB1.04 z Atmegą 644PA i było w porządku. LEDy dołączone do wyjść zmieniały jasność przy zmianie napięcia na wejściach analogowych.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Jak chcesz to wypróbuj u siebie, ale musisz "zakomentować" linie gdzie wysyłałem pewne rzeczy na LCD i zmienić konfigurację wyjść OC2A i OC1A.

_________________
Dragonus Cracovus: Biomagia



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: 28 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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