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



Teraz jest 25 kwi 2024, o 18:00


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 
Autor Wiadomość
 Tytuł: ADC i PWM
PostNapisane: 22 wrz 2014, o 23:13 
Offline
Użytkownik

Dołączył(a): 28 cze 2013
Posty: 99
Pomógł: 2

Witam

Chciałbym potencjometrem sterować 16 bitowy PWM ale od wartości 100 do 500
ale jak używam 10 bitowy ADC tak nie moge użyć całego obrotu
tak to nie działa
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


jak to zrobić aby użyć całego obrotu ? jakis sposób obliczania


dziękuję



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: ADC i PWM
PostNapisane: 22 wrz 2014, o 23:32 
Offline
Nowy

Dołączył(a): 16 cze 2014
Posty: 21
Lokalizacja: Wrocław
Pomógł: 3

Możliwe, że zasilacz układ napięciem 5V, a napięcie odniesienia masz 1,1V bądź 2,56V. W takim wypadku będzie dostępne jedynie ~1/4 obrotu lub połowa. By był cały obrót ustaw napięcie odniesienia avcc z kondensatorem podpiętym do gnd, ewentualnie zastosuj dzielnik napięcia :)
@EDIT
A, to nie będzie to :D Przepraszam, teraz zauważyłem chyba gdzie leży błąd, ADC 10 bitowy ma zakres 0-1023, w twoim kodzie linia "if(wynik>500) wynik=500;" po prostu nie przyjmuje połowy wartości (od połowy obrotu), jeśli chcesz uzyskać wynik np. 0-511 to po prostu podziel wynik na dwa.
Jeśli chcesz uzyskać dokładny wynik 100-500 na pełnym zakresie potencjometru to możesz zrobić coś takiego:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Tylko w takim wypadku, zmienna wynik musi być minimalnie 32bitowa.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: ADC i PWM
PostNapisane: 23 wrz 2014, o 00:07 
Offline
Użytkownik

Dołączył(a): 28 cze 2013
Posty: 99
Pomógł: 2

Chciałabym taki joystick coś jako tutaj https://www.youtube.com/watch?v=LIedWYZ6RuU tylko to nie będzie od100 do 500
ale to się może zmieniać 200 do 300 ...... a to mi niepomoże podzielicz



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: ADC i PWM
PostNapisane: 23 wrz 2014, o 01:37 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1960
Lokalizacja: Lipsko
Pomógł: 125

@kuba, rany to jest matematyka na poziomie podstawówki. Weź na logikę - potrzebny Ci zakres od 100-500 czyli w sumie 400 jednostek + przesunięcie 100 jednostek. I teraz najważniejsze: pomyśl przez chwilę co zrobić aby, np. wartość ADC z zakresu 0-1023 dał po wyliczeniach (tu dosłownie dwa działania matematyczne, a w sumie to nawet jedno wystarczy, bo drugie można zastąpić stałą...) od 0-400 czyli dla maksymalnej wartości 1023 jakaś zmienna wyjściowa ma przyjąć wartość 400 (a oczywiście pośrednie wartości odpowiednio proporcjonalnie mniej). Teraz do wyniku wystarczy dodać te 100 jednostek przesunięcia i masz zakres 100-500. Nie powiem Ci od razu jak to ma wyglądać, bo się nie nauczysz :P Chcę Cię zmotywować.

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: ADC i PWM
PostNapisane: 23 wrz 2014, o 06:39 
Offline
Użytkownik
Avatar użytkownika

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

Witam
SylwekK napisał(a):
Nie powiem Ci od razu jak to ma wyglądać...

...może ja troszkę narysuję :) :
Obrazek

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: ADC i PWM
PostNapisane: 23 wrz 2014, o 16:54 
Offline
Użytkownik

Dołączył(a): 28 cze 2013
Posty: 99
Pomógł: 2

Nic nie mogę wymyśleć.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: ADC i PWM
PostNapisane: 23 wrz 2014, o 17:22 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 mar 2014
Posty: 580
Lokalizacja: Jastrzębie-Zdrój
Pomógł: 71

Witam,

Kolega najprościej to sobie stablicować:

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


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


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


Plus 100 jest aby było od 100 -> 500.
Generalnie jak byś chciał sobie takie tablice tworzyć to polecam MkAvrCalculator w pełnej wersji. Wersja free ma bodajże ograniczenie do 32 elementów - ale mogę się mylić.

z Niebieskim pozdRowieniem,
Doman89



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: ADC i PWM
PostNapisane: 23 wrz 2014, o 19:17 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1960
Lokalizacja: Lipsko
Pomógł: 125

...widzisz i nie grzmisz...

zakres=400, w zasadzie 100-500, ale to później
1023/zakres=2.5575 z tego wynika, że jakikolwiek wynik podzielony przez to 2.5575 z wyjścia ADC o zakresie 0-1023 da w efekcie śliczną wartość z zakresu 0-400, a teraz dodaj do tego na końcu 100 i będzie zakres 100-500.
Trudne było ?? ...nie ma za co ;) możesz kliknąć pomógł.
Ewentualna zamiana liczb zmiennoprzecinkowych na całkowite była poruszana setki razy, a jak nie wiesz jak to zrobić to korzystaj z float póki nie przetrawisz o co tu chodzi :)


Autor postu otrzymał pochwałę

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: ADC i PWM
PostNapisane: 28 paź 2014, o 21:00 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 paź 2013
Posty: 45
Pomógł: 2

To może i ja jeszcze coś dodam. Jest na stronie Arduino pewna funkcja, która przelicza wartości z jednego zakresu na inny np: od 0-1023 na taki 0-255
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


A używamy jej np tak podano na stronie Arduino:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Jak tego używać? Zakładamy, że pełny obrót to od 0 do 1023 ADC, a ty potrzebujesz przeliczyć ten pełny zakres i mieć zakres od 100 do 500.

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


Używam tego też do przeliczania ADC na napięcie. ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: ADC i PWM
PostNapisane: 29 paź 2014, o 22:53 
Offline
Użytkownik

Dołączył(a): 01 sty 2014
Posty: 116
Pomógł: 14

Według mnie to co kolega SylwekK napisał jest najlepszą opcją.. Wystarczy napisać:

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



Wszystko powinno ładnie i szybko działać. Można by wartość 400/1024 obliczyć już wcześniej i zapisać od razu wartość a nie iloczyn, procesor będzie miał mniej liczenia.



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 6 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:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO