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



Teraz jest 8 lut 2025, o 00:08


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 15 ] 
Autor Wiadomość
PostNapisane: 22 sie 2012, o 13:44 
Offline
Nowy

Dołączył(a): 22 sie 2012
Posty: 19
Pomógł: 0

Witam. Napisałem program obsługi miernika napięcia. Posiadam płytkę startową ATB.

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


EDIT: W przyszłości proszę używać znaczników syntax=c zamiast code

Problem w moim programie jest taki że Przeliczona wartość pomiaru jest zupełnie inna od prawidłowej wartości.
Nie wiem gdzie popełniam błąd ponieważ gdy przeliczam wartość ADCW za pomocą kalkulatora według funkcji przelicznik to wartość wychodzi poprawna. A na wyświetlaczu pojawiają się dziwne wartości zmienych cz_c i cz_u.
Proszę o wskazówki gdzie popełniłem błąd.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 sie 2012, o 14:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 paź 2011
Posty: 581
Pomógł: 17

Na stronie głównej bloga jest świetny artykuł.
http://www.mirekk36.blogspot.com/2012/0 ... u-int.html



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 sie 2012, o 15:55 
Offline
Nowy

Dołączył(a): 22 sie 2012
Posty: 19
Pomógł: 0

Dziękuję za szybką odpowiedź. Wszystko już zrozumiałem. Temat do zamknięcia.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 sie 2012, o 17:33 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 lut 2012
Posty: 123
Lokalizacja: Reda
Pomógł: 0

Witam,
Nie chce tworzyć nowego tematu, ten zszedł i tak na inny (choć cały czas w ADC) temat.
Mam pytanie to praktyków, chcę robić pomiary wszystkich 8 kanałów na raz.
Układ pomiarowy w przyszłości będzie na ATmega128 TQFP64, 20MHz.
Obecnie testy robię na ATmega32 20MHz.
Mirek napisał w książce że to w jakiej obudowie jest uC, ma znaczenie dla pomiaru (nie wiem jeszcze dlaczego).

Mnie najbardziej interesuje najmniejszy możliwy czas pomiaru pomiędzy każdym kanałem? Chciałbym żeby uC miał czas "złapać oddech" i nie pogubić/zakłucić pomiaru. Obecnie mam 1ms i działa dobrze, ale gdzieś wyczytałem że można zejść do 250us.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 sie 2012, o 17:59 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27354
Lokalizacja: Szczecin
Pomógł: 1042

Hass-pol --> gdzieś czytałeś ;) gdzieś coś pisano ;) gdzieś coś słyszałeś ;) .....(nie wiesz jeszcze dlaczego)

ale na te wszystkie twoje pytania są odpowiedzi i wyjaśnienia w PDF'ach szczególnie odnoście ADC i czasów pomiarów

zobacz otwieram notę m32 i zaglądam na pierwszą stronę rozdziału o ADC

no przecież od razu pewne informacje rzucają się aż w oczy

Obrazek

rozumiałbym, żebyś napisał wcześniej np że może masz kłopoty z czytaniem not po angielsku, co rozumiem bo przecież nie każdy zna perfect angielski, ja też nie znam aż tak biegle tego języka ....

ale nie wiem też czy nie dotarła do ciebie jedna z najważniejszych myśli, którą z uporem maniaka przypominam co chwilę w pierwszej książce - noty PDF , panowie - noty - to podstawa....

Jeśli więc gdzieś coś tam w necie czytasz i nie wiesz o co chodzi to zawsze staraj się przynajmniej sprawdzić w nocie i jak tu czegoś nie rozumiesz to wtedy śmiało dopytuj .... bo zobacz sam ile czasu tracisz na te poszukiwania ....

zaznaczyłem też fragment mówiący o czasach konwersji, i dalej w kolejnych podrozdziałach jest to wyjaśnione co do pojedynczych taktów - a ty piszesz że ci się udało co 1ms .... to nie jest kwestia czy się uda czy się nie uda ....

jak odpowiednio dobierzesz preskaler ADC do F_CPU i będziesz działał w zakresie dopuszczalnej częstotliwości ADC, która też jest podana w PDF to uzyskasz dokładne czasy bez żadnej zbędnej zwłoki ....

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 sie 2012, o 18:55 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 lut 2012
Posty: 123
Lokalizacja: Reda
Pomógł: 0

Czytałem to :) spokojnie znam angielski.
Czyli mogę z zamkniętymi oczami, nic nie licząc zastosować przerwę 260us ? :)
Chodziło mi o praktyczne podejście. W teorii wszystko może pięknie wyglądać.

Nigdy nie miałeś zderzenia teorii z rzeczywistością ? :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 sie 2012, o 19:01 
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

A dlaczego w przerwaniu od ADC nie zmieniać kanału i wrzucać pomiaru do bufora?

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 sie 2012, o 19:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 lut 2012
Posty: 123
Lokalizacja: Reda
Pomógł: 0

Tak robię.

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


zastanawiałem się tylko czy zamiast:

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


mogę zamiast opóźnienia wstawić funkcję wyświetlenia wyniku, zamiast wyświetlania wszystkich, po tym jak już je odczytam (sorry za za dużo zamiast :) )

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: 26 sie 2012, o 19:51 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27354
Lokalizacja: Szczecin
Pomógł: 1042

Wiesz co ???? a może opisz co ty chcesz w ogóle osiągnąć bo może brniesz jak owad do świeczki żeby się poparzyć ?

przy okazji przeczytaj sobie podrozdział w ADC od m32 pt:

"Prescaling and Conversion Timing"

i napisz ew czego tam nie rozumiesz to może będzie łatwiej wyjaśnić bo te przykłady które tu podajesz powodują że nie wiem w ogóle jak myśleć o tych twoich pytaniach.....

dlatego jak mówię - napisz co mierzysz że aż tak często niby potrzebujesz

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 sie 2012, o 20:20 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 lut 2012
Posty: 123
Lokalizacja: Reda
Pomógł: 0

Czytałem o tym w wersji polskiej w Twojej książce na stronie 236 :) proszę nie miej mnie za nieuka czy lenia, bo co bym nie napisał to wychodzi na to że nic nie czytam i liczę tylko na to że Wy napiszecie mi cały kod.

Chcę wyznaczać charakterystykę prądową (trójfazową), zależy mi na tak częstym próbkowaniu jak to jest możliwe. Nie interesuje mnie teoria i twierdzenie Nyquista i wiem że 100Hz będzie za mało, bo w sieci nie mamy idealnego źródła, że o idealnie symetrycznym odbiorniku nie wspomnę.

Zależy mi na zoptymalizowaniu tak kodu żebym mógł wykreślić przybliżoną charakterystykę.

Poradzę sobie. Dziękuję za pomoc. Temat uważam za zamknięty.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 sie 2012, o 22:19 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27354
Lokalizacja: Szczecin
Pomógł: 1042

Hass-pol --> zdecydowanie źle odbierasz to co mówię a szczególnie gdy piszesz że mogę cię mieć za nieuka. Ok jeśli czytałeś tylko to o ADC co w mojej książce to jest hmmm na prawdę strasznie mało (przyznaję się sam jak widzisz że mało napisałem na ten temat). Nie wiem też co może być strasznego w przyznaniu się np do tego że ciężko idzie czytanie not PDF np ze względu na słabszą znajomość angielskiego. Kurczę - sam piszę ci i przyznaję się że wcale nie znam super angielskiego, ale jeśli ktoś pyta czego nie rozumie a nocie a ja akurat wiem to chętnie wytłumaczę .... A na pewno nie opisywałem w książce wprost tego co jest w PDF'ie. Poza tym ktoś tu na naszym forum zdaje się kolega Jaglarz - przechowuje na swojej stronce różne PDFy do avr'ków w języku polskim więc i chociażby z nich można skorzstać. Więc nie rozumiem twojego oburzenia za to że zwracam tylko uwagę na tak istotną rzecz. A już na pewno nie mam zamiaru pisać za kogoś programu....

I tym bardziej, że jak teraz napisałeś piszesz go w zakresie pomiarów o których do tej pory - od strony praktycznej, nie miałem zielonego pojęcia. Za to teraz przychodzi mi na myśl że rozwiązaniem które może warto ci podsunąć w takim przypadku jest skorzystanie z tzw trybu "Free runing mode" i to na przerwaniach.

Bo co z tego że ty piszesz o jakichś 260us pomiędzy czym ? pomiędzy pomiarem pomiędzy zmianą kanału ? czy pomiędzy w ogóle kolejnymi próbkami ? Bo przecież skoro korzystasz aż z 8 kanałów to przecież zaczyna to mieć spore znaczenie. A jednocześnie po drodze może wykonujesz jakieś operacje na TFT (tu może się mylę) ale jeśli np takich szczegółów nawet nie możesz napisać bo się obrażasz jakbym ci dokuczał no to trudno ....

Tymczasem - odpalenie pomiaru na przerwaniach z cykliczną zmianą kanałów, pozwoliłoby ci uniezależnić się z marszu od zależności czasowych związanych z operacjami na TFT a jednocześnie tak dobrać częstotliwość pomiarów aby uzyskać precyzyjnie największą możliwą częstotliwość samych pomiarów.

Tymczasem ty cały czas trzymasz się tych "ręcznych" pomiarów ..... No i kolejna sprawa warto abyś się np zastanowił jaka precyzja przetwornika jest ci potrzebna ? bo jeśli niekoniecznie 10-bitów, i wystarczyłoby 8 bitów do ustalenia charakterystyki to pozwoliłoby ci dobierając najmniejszy możliwy preskaler uzyskać na prawdę największą możliwą do przyjęcia częstotliwość pomiarów .....

no... wszystko ładnie - można się nagadać - tylko autor uciekł - trudno.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 sie 2012, o 19:39 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 lut 2012
Posty: 123
Lokalizacja: Reda
Pomógł: 0

Nie tak do końca uciekł ;-)

Nie dało mi to spokoju i trochę zgłębiałem temat przetworników. Przetestuję "Free runing mode", zobaczę jak się będzie zachowywał.
Jedną z funkcji mojego projektu ma być "kreślenie" charakterystyk z tego co odczyta dany kanał ( to czy wyniki będą wyświetlane w czasie rzeczywistym, czy po pomiarze zostaną podane wyniki uśrednione, max czy min to jest kwestią ustawień) jednak zbieranie sampli będzie musiało się odbywać po każdym cyklu 8'miu kanałów (lub - odczyt kanal (0) -> zapisać wynik, odczyt kanal(1) -> zapisać wynik.... ) muszę tylko policzyć czy czas na zapisanie pomiaru będzie na tyle długi aby zmieścił się w przedziale "13 μs - 260 μs Conversion Time" Chciałbym uzyskać maksymalną ilość sampli na sekundę.

Obecnie mam ustawiony prescaler na 128 - 20MHz / 128 = 156,25 kHz czyli mieści się w przedziale 50k - 200kHz.

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


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


Moje pomiary nie muszą być precyzyjne co do miejsca po przecinku, bo mój pomiar np napięcia będzie do 1500V, wiec przy takim zakresie 932,1 czy 932,2 nie robi większej różnicy.

I teraz proszę kolegów o pomoc, czy dobrze rozumiem: ustawienie 10 bit'owej rozdzielczości daje mi 1023 możliwe pomiary (licząc 0)
czyli nie mogę uzyskiwać wyników z podziałką co np. 0,1V ? mogę przypisać np ADC 1 = 1V czyli przy ADC 1023 = 1023V. Jeśli chciałbym dokonywać pomiaru do 1500V to pewnie muszę przyjąć podziałkę 2V tak ? czyli np ADC 50 = 100V. Dobrze rozumiem ?

Jak bym nie liczył i jaki bym nie przyjął VREF to i tak mam 1024 zakres pomiarowy, prawda ?

Żeby liczyć z większą dokładnością co do podziałki, musiałbym utworzyć zakresy (jak w multimetrze uniwersalnym) uwzględniając odpowiedni współczynnik podziału, a tego wolałbym uniknąć. Chociaż dokładność napięciowa z 2V podziałką też mogłaby być :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 sie 2012, o 20:12 
Offline
Użytkownik

Dołączył(a): 10 sie 2012
Posty: 91
Lokalizacja: Wąbrzeźno
Pomógł: 0

1.
Hass-pol napisał(a):
Obecnie mam ustawiony prescaler na 128 - 20MHz / 128 = 156,25 kHz czyli mieści się w przedziale 50k - 200kHz.

Mi wychodzi 6,4ns.


2.
Cytuj:
I teraz proszę kolegów o pomoc, czy dobrze rozumiem: ustawienie 10 bit'owej rozdzielczości daje mi 1023 możliwe pomiary (licząc 0)
czyli nie mogę uzyskiwać wyników z podziałką co np. 0,1V ? mogę przypisać np ADC 1 = 1V czyli przy ADC 1023 = 1023V. Jeśli chciałbym dokonywać pomiaru do 1500V to pewnie muszę przyjąć podziałkę 2V tak ? czyli np ADC 50 = 100V. Dobrze rozumiem ?


Dobrze myślisz
Nie lepiej zrobić podział np. 1,46



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 sie 2012, o 22:42 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27354
Lokalizacja: Szczecin
Pomógł: 1042

lukas12 napisał(a):
1.
Hass-pol napisał(a):
Obecnie mam ustawiony prescaler na 128 - 20MHz / 128 = 156,25 kHz czyli mieści się w przedziale 50k - 200kHz.

Mi wychodzi 6,4ns.


Może jest już późno ale mi się wydaje że to będzie jednak 6,4 us czyli ~156 kHz czyli tu OK

------------------------ [ Dodano po: 5 minutach ]

Hass-pol napisał(a):
I teraz proszę kolegów o pomoc, czy dobrze rozumiem: ustawienie 10 bit'owej rozdzielczości daje mi 1023 możliwe pomiary (licząc 0)
czyli nie mogę uzyskiwać wyników z podziałką co np. 0,1V ? mogę przypisać np ADC 1 = 1V czyli przy ADC 1023 = 1023V. Jeśli chciałbym dokonywać pomiaru do 1500V to pewnie muszę przyjąć podziałkę 2V tak ? czyli np ADC 50 = 100V. Dobrze rozumiem ?


Za to tutaj nie za bardzo rozumiem jak kolega rozumuje i o co chodzi z tym przyjmowaniem podziałki. Jeśli nie chcesz zakresów robić to robisz dzielnik i przy napięciu odniesienia VREF=1,1V otrzymujesz minimalną rozdzielczość 1,46V. I tego nie przeskoczysz, gorzej z uwagi na błędy przetworników i tak musisz się wręcz liczyć ze stratą co najmniej jednego najmłodszego bitu a zatem taka średnia rozdzielczość wyjdzie ci ok 3V. Jeśli cię to zadowala to ok a jeśli nie to trza sięgnąć po zewnętrzny i lepszy przetwornik.... Ale pewnie przy tak gigantycznym zakresie taka dokładność pewnie cię też zadowoli ?


Hass-pol napisał(a):
Jak bym nie liczył i jaki bym nie przyjął VREF to i tak mam 1024 zakres pomiarowy, prawda ?

Ale to nie jest kwestia nawet liczenia, bo 10 bitów to max 1024 i skąd miałoby być więcej albo mniej ?

Hass-pol napisał(a):
Żeby liczyć z większą dokładnością co do podziałki, musiałbym utworzyć zakresy (jak w multimetrze uniwersalnym) uwzględniając odpowiedni współczynnik podziału, a tego wolałbym uniknąć. Chociaż dokładność napięciowa z 2V podziałką też mogłaby być :)


Dokładnie albo zakresy albo zewnętrzny lepszy przetwornik, np 12-bitowy

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 sie 2012, o 20:47 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 lut 2012
Posty: 123
Lokalizacja: Reda
Pomógł: 0

Trochę podkręciłem rozdzielczość do 1V. Nie jest to idealne rozwiązanie, ale widzę że 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.



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

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