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



Teraz jest 25 cze 2026, o 05:08


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
PostNapisane: 17 lis 2014, o 12:02 
Offline
Nowy

Dołączył(a): 20 wrz 2014
Posty: 22
Pomógł: 0

Witajcie koledzy.
Robię mały projekcik gdzie potrzebny mi jest pomiar ADC z potencjometru. W moim głównym programie potencjometr działa jakbybył logarytmiczny, a ja potrzebuję żeby działał normalnie. W innym programie testowym ADC potencjometr działa poprawinie.
Wstawiam program ADC i mój z projektu BLDC. Kod z wykorzystaniem przetwornika który działa źle jest w pliku bldc.c, w funkcji przewrwania.
Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Dodam że przetwornik musi być włączony tylko na chwilę, bo w całym procesie działania programu potrzebny jest też komparator dlatego też na końcu case'a wyłączam ADC.


Załączniki:

Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lis 2014, o 15:54 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 20 sie 2013
Posty: 795
Lokalizacja: Poznań
Pomógł: 59

A może masz potencjometr logarytmiczny a nie liniowy? Sprawdź miernikiem



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lis 2014, o 16:08 
Offline
Nowy

Dołączył(a): 20 wrz 2014
Posty: 22
Pomógł: 0

100% liniowy, bo
- taki kupiłem
- działa dobrze (tzn. jak liniowy) w tym drugim programie co wrzuciłem - ADC328p
- problem występuje na 4 liniowych potencjometrach 1k, 10k, 110k i 240k



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lis 2014, o 17:31 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

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

...no i to przesuwanie zera (0<<REFS1)?
Może zamieść swój kod oficjalnie to wtedy więcej osób go obejrzy.

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lis 2014, o 17:15 
Offline
Nowy

Dołączył(a): 20 wrz 2014
Posty: 22
Pomógł: 0

Dobra. Kod prezentuje się następująco:

to jest program w którym wszystko działa jak potrzeba:
Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Teraz drugi program i w nim jest problem z działaniem potencjometru. Tutaj program główny:
Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


tutaj program bldc.c gdzie wykonuje pomiar ADC (w przerwaniu na samym końcu - case komut_7)
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 biblioteka do programu
Składnia: [ Pobierz ] [ Ukryj ]
język cpp
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 lis 2014, o 13:40 
Offline
Nowy

Dołączył(a): 20 wrz 2014
Posty: 22
Pomógł: 0

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

zapewnia jednokkrotny pomiar ADC.
ponowne przywrócenie multipleksera było zrealizowane za pomocą
Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

silnik się kręcił dalej, więc przerwania działały dobrze.

No dobrze, poprawiłem kod i zmieniłem trochę koncepcję. Teraz pomiar nie będzie realizowany w przerwaniu, ale w pętli głównej, zaraz po tym jak nastąpi przerwanie od pierwszej komutacji o czym inforumuje
Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Tera program main w którym odbywa się pomiar:
Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


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


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


Bibliotek do UARTA nie wrzucam do są na pewno dobrze, robione ze stronki mirekk36.blogspot.com, tam wszystko działa.
No i na koniec program o który się opierwałem z pomiarem ADC który DZIAŁA
Składnia: [ Pobierz ] [ Ukryj ]
język cpp
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 lis 2014, o 19:03 
Offline
Nowy

Dołączył(a): 20 wrz 2014
Posty: 22
Pomógł: 0

coś znalazłem:
zamieniłem te dwie linijki:
Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


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


i pomiar jest ok. Pod PC5 mam potencjomert właśnie.
Ale pojawił się inny. Silnik działa dobrze pomiędzy wartościami 130-255, poniżej takich się nie kręci, ale uwaga ! nawet jak nie używam zmiennej wynik jako wypełnienie PWM (!)
Do tego jest teraz nieco głośniejszy - troszkę piszczy, można temu zaradzić?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 lis 2014, o 09:36 
Offline
Użytkownik

Dołączył(a): 26 lut 2014
Posty: 227
Lokalizacja: LDZ
Pomógł: 22

Na piszczenie pomoże podniesienie częstotliwości PWM poza pasmo akustyczne, ale silnik nie będzie Ci się kręcił przy niskim wypełnieniu i wysokiej częstotliwości PWM. Tutaj jeśli chcesz, żeby pracował w szerszym zakresie wypełnienia to zmniejsz częstotliwość PWM, no i znów silnik będzie się odzywał(im niższa częstotliwość tym grubszym głosem). Musisz wybrać co bardziej Ci odpowiada.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lis 2014, o 17:48 
Offline
Nowy

Dołączył(a): 20 wrz 2014
Posty: 22
Pomógł: 0

Problem z piszczeniem ustąpił po przeniesieniu funkcji pomiar z przerwania do głównej pętli - może procek nie wyrabiał.

Co to potencjometru to chyba źle się wyraziłem. Silnik przestaję się kręcić przy poniżej wypełnienia 150 (przy podzieleniu wyniku ADC na 4, tak żeby dostosować do zakresu PWM od 0-255) przy pomiarze z potencjometru, natomiast przy ustawieniu na sztywno PWM_akt = 30 kręci się. Dodatkowo jeżeli wyniki pomiarów podzielę np. nie na 4 jak tu:
Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

a na 16 tak aby wynik był z przedziału 0-63 to silnik przestaje działać przy wartości 12.
Może sposób pomiaru jest jednak nie właściwy? Nie zależnie jak ustawię skalowanie wyniku potencjometru, silnik przestaje się kręcić jeżeli skręcę potencjometr mniej więcej od 1/3 zakresu w dół.

Dlatego myślę że to nie chodzi o częstotliwość PWM, bo ustawienie na sztywno wartości w PWM_akt 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 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