Witam w internecie znalazłem programik do pomiaru napięci do 4,9 [V] z 3 punktów programik wygląda tak. 'Program obsługi wbudowanego w mikrokontroler '10-bitowego przetwornika A/C $regfile = "m8def.dat" 'informuje kompilator o pliku 'dyrektyw mikrokontrolera $crystal = 8000000 'informuje kompilator 'o częstotliwości oscylatora 'taktującego mikrokontroler Config Lcd = 16 * 2 'konfiguracja typu wyświetlacza 'LCD Config Lcdpin = Pin , Db4 = Portd.5 , Db5 = Portd.6 , Db6 = Portd.7 , Db7 = Portd.4 , E = Portd.3 , Rs = Portd.2 'konfiguracja linii 'mikrokontrolera, do których dołączono wyświetlacz LCD Config Adc = Single , Prescaler = Auto , Reference = Avcc 'konfiguracja wewnętrznego przetwornika A/C Dim Wart_ac1 As Word 'zmienna na wartość odczytaną z przetwornika Dim Wart_ac2 As Word Dim Wart_ac3 As Word Dim V1 As Single 'zmienna przechowująca obliczon Dim V2 As Single 'wartość zmierzonego napięcia Dim V3 As Single Dim Wart_nap1 As String * 3 'zmienna, do której wpisywana Dim Wart_nap2 As String * 3 'zostaje przetworzona wartość zmiennej V na tekst Dim Wart_nap3 As String * 3 Start Adc 'uruchamia wbudowany przetwornik Do 'początek pętli programu Wart_ac1 = Getadc(0) 'odczytanie wartości z wejści ADC0 mikrokontrolera V1 = Wart_ac1 * 0.0049 'zamiana odczytanej wartości z A/C na napięcie 'Wart_ac * ok. 4,8 mV Wart_nap1 = Fusing(v1 , "#.&&" ) 'formatowanie wartości zmiennej 'V do do formatu x.xx i zamiana 'tej wartości na postać tekstu Wart_ac2 = Getadc(0) V2 = Wart_ac2 * 0.0049 Wart_nap2 = Fusing(v2 , "#.&&" ) Wart_ac3 = Getadc(0) V3 = Wart_ac3 * 0.0049 Wart_nap3 = Fusing(v3 , "#.&&" ) Cls 'czyszczenie wyświetlacza 'wyświetlenie obliczonej wartości Wart_nap Lcd "V1=" ; Wart_nap1 Waitms 1500 Cls Lcd "V1=" ; Wart_nap2 Waitms 1500 Cls Lcd "V1=" ; Wart_nap3 Waitms 1500 Loop 'koniec pętli Do...Loop End 'koniec programu Chciał bym go troszkę zmodernizować, mianowicie zamiast tego że wyniki same kolejno wyskakują po 1500ms chciał bym sam decydować kiedy który chce odczytywać. Wyświetlenie wyniku miało by się zmieniać wraz z przyciśnięciem przycisku podłączonego do Pinb.3 np. przyciskam raz wyskakuje V1, przyciskam drugi raz wyskakuje V2, przyciskam trzeci raz wyskakuje V3, przyciskam czwarty raz wyskakuje V1 itd. Config Pinb.3 = Input 'linia PB1 jako wejściowa P Alias Pinb.3 'przypisanie nazwie Pinb.2 nazwy P Set Portb.3 Do Lcd "pomiar nap" If ..... Then Cls 'czyszczenie wyświetlacza 'wyświetlenie obliczonej wartości Wart_nap Lcd "V1=" ; Wart_nap1 Elseif ..... Then Cls Lcd "V2=" ; Wart_nap2 Elseif ..... Then Cls Lcd "V3=" ; Wart_nap3 End If Loop End 1. Jak powinna wyglądać instrukcja warunkowa IF i jaką dodatkową zmienną musiał bym wprowadzić? 2. Wejścia wbudowanego przetwornika analogowo cyfrowego - ADC w Atmega 8 to 6 pinów oznaczonych od ADC0 do ADC5? Fotorezystor którego bym chciał użyć to A906012 16-33kOHM 90mW. Rezystancja dla 0[lx]=180[k?],dla 10[lx]=33[k?],dla 100[lx]=5[k?] dokładne dane katalogowe są pod adresem A906012 3. Jak zrobić pomiar takim fotorezystorem aby wyświetlony został wynik natężenia oświetlenia w [lx].?
|
|||
Re: Pomiar napięcia Atmega8
dopisz sobie w dim'ach coś takiego:
następnie wyzeruj jego wartość
zadeklaruj jakiś pin procka jako wejście, żeby móc zmieniać sobie wyświetlany wynik
a tą część softu:
zmień na:
Moja strona w powijakach
odp pomiar
Dzięki, jakie to proste że też sam na to nie wpadłem.
A jak odczytać pomiar z tego fotorezystora?
Rezystancja dla 0[lx]=180[kOm],dla 10[lx]=33[kOm],dla 100[lx]=5[kOm]
To trzeba jakąś tablice utworzyć, że np dla 33kOm jest10 lx, dla 32kOm jest11 lx,itd. Czy to się robi jakimś innym sposobem?
Re: pomiar
z tym fotorezystorem też podepnij się pod ADC i ściągnij napięcie jakie będzie panowało na danym wejściu.
Moja strona w powijakach
Re: fotorezystor
Czyli zależność zmiany napięcia od natężenia światła ustawić liniowo?
Napięcie można sczytywać np. tak?
W N0 jest wtedy wartość napięcia gdzie 1023 to 5V a 0 to 0V.
Fotorezystor podłącza się normalnie, to znaczy jeden koniec pod pin ADC0 i drugi pod GND? Czy jakoś inaczej i trzeba jeszcze dodać jakiś rezystor lub kondensator?
Jeśli tak to jaką wartość ma mieć ewentualny kondensator lub rezystor?
Rezystor np. do 5v foto do
Rezystor np. do 5v foto do gnd połąćzyć razem i z sordka brać napiecie do adc nie wiem tylko czy foto jest liniowy jesli tak to pestka z programem inaczej funkcja do linearizacji i załatwic to programowo smile
Re: Fotorezystor
Fotorezystor jest strasznie nieliniowy i tablica przeliczeniowa jest konieczna na 100% albo zebranie i sparametryzowanie charakterystyki fotorezystora
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
A jest jakiś element foto-
A jest jakiś element foto- liniowy może fototranzystor tablica pewnie mało nie zajmie a i na kompie cza jakis progs znalezc do generowania danych do tablicy.
fotorezystor
A z jakiego wzoru się liczy wartość rezystora? Fotodioda ma rezystancje 16-33kOHM i 90mW.
Jak takie dane do tablicy się zbiera? Skoro ja mam tylko 3 punkty odniesienia 0[lx]=180[kOHM],dla 10[lx]=33[kOHM],dla 100[lx]=5[kOHM].
Taki program po prostu sczytuje napięcie i zapisuje do tablicy, tylko skąd brać natężenie oświetlenia w luksach przy sczytanym napięciu?
Re: pomiar
ja zrobił bym to tak:
1 - zmierzył bym rezystancję fotorezystora kiedy jest najmniej oświetlony
2 - dał dzielnik między +5V a masę, składający się od strony masy z fotorezystora a od plusa z potencjometru montażowego i rezystora. łączna rezystancja = trochę więcej niż najmniej oświetlony fotorezystor
3 - skonfigorował GETADC na INTERNAL, co da napięcie odniesienia 2.56V ?
dzięki temu uzyskałbym:
- przy najmniej oświetlonym fotorezystorze połowę napięcia czyli blisko napięcia odniesienia
- przy najbardziej oświetlonym fotorezystorze prawie 0V na wejściu GETADC
dalej trzeba sobie radzić programowo.
Moja strona w powijakach
fotorezystor
Tylko ze prawie to samo uzyskam przy zastosowaniu
A jaką wartość w tym przypadku musiał by być rezystor?
Re: pomiar
ale mi chodziło o coś innego, mianowicie o to że dając tylko fotorezystor nie uzyskasz napięcia na wejściu GETADC, a dając dzielnik będziesz miał połowę napięcia a do tego dobrze było by wykorzystać wewnętrzne źródło napięcia odniesienia.
Moja strona w powijakach
Re: Pomiar na foto
Raczej lepiej w tym przypadku dać referencję z AREF 5V albo poprostu z zasilania AVCC. Na internal 2.56 przetwornik i tak będzie mierzył 0-5V o ile zasilanie avcc będzie 5V.
Co do fotorezystora to należy to wykonać z dzielnikiem, tylko że R należy dobrać większy niz max fotorezystora, napięcie wtedy będzie zbliżało się do 5V jak rezystor będzie duzo większy niz fotorezystor.
Co do tabelki to poprostu należy wyskalować to za pomocą światłomierza, i zrobić sobie tabelkę rezystancji od natężenia światła. Potem albo interpolować resztę punktów albo lepiej narysowac na wykresie, dopasować jakąś krzywą w gnuplocie i wpisać do programu wzór
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
fotorezystor
Jaka jest różnica między pinami AREF i AVCC?
AREF służy do podłączenia napięcia odniesienia gdy chcemy mieć inne niż 2,56, jednak nie może być większe od 5.5V.
Dużo większy to znaczy ile?
Czyli bez wyskalowania się nie obędzie:(
Re: Pomiar
Daj 2-3 razy większy rezystor do gnd (fotorezystor do +5V, rezystor do masy, wyjście między nimi) i miernikiem oceń jaki jest zakres napięcia na fotorezystorze. potm daj 5x wiekszy rezystor i znowu sprawdź.... nie da się zrobić nic dobrego bez pomiarów i kalibracji.
drugim rozwiązaniem jest zastosowanie mniejszego niż fotorezystor rezystora do +5V, w podobnej proporcji. Nie da się tu tego jednoznacznie powiedzieć, ja przeważnie daje potencjometr montażowy njp 220k i reguluje sobie mierząc zakresy napięć
Aref -> referencja
avcc -> zasilanie ADC
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
fotorezystor
Czyli muszę zrobić tak.
Montuje potencjometr od strony GND od +5V daje fotorezystor, między nimi wyciągam sobie końcówkę. Zaczynając od R= 2 x fotorezystor kręcąc potencjometrem tak aby napięcie między wyciągniętą końcówką i GND przy najbardziej oświetlonym fotorezystorze było bliskie napięciu odniesienia, czyli w moim przypadku +5V.
Czytałem że mi między Aref a +5V lub Avcc a +5V dobrze dać kondensator aby zniwelować szumy, niestety nie napisano tam jakiej wartości by on miał być?
A fototranzystory są elementami liniowymi?
Czy w programie do pomiaru napięcia nie powinno być wpisane
Wart_ac1 = Getadc(0)
pźniej
Wart_ac2 = Getadc(1)
później
Wart_ac3 = Getadc(2)
bo jest tak?
michal512 wrote:Czytałem że
z tego co pamiętam to ma być kondensator 10uF.
Moja strona w powijakach
tablica
A jeśli dokonam już niezbędnych pomiarów to tablicę trzeba wypełniać w następujący sposób
Czy istnieje jakiś inny sposób np przedzielając kolejne wartości ";" a program sam po kolei każdemu elementowi przypisze indeks?
Jak zdefiniować instrukcje warunkową aby np przy wartości zmiennej N0=327 wyświetlił się 327 element tablicy?
Re; Przeliczenie
po pierwsze to do worda napewno nie wpiszesz:
tablica(2)=0,5
bo word ma wartości 0-65535
po drugie to jak już tablica to w pamięci programu, w ramie na pewno się nie zmieści.
Po trzecie najlepiej zrobić to wzorem, wyznaczyć charakterystykę i zapisać wzorem. Trzeba mieć jakis miernik żeby zrobić odniesienie. Zrobić sobie tabelkę na karce gdzie w jednej kolumnie będzie liczba z ADC a w drugiej natężenie światła lub inna wielkość która potem będziesz chciał wyznaczać. Potem mając punkty narysujesz wykres i zobaczysz na oko jaki to typ zależności. Wyznaczysz parametry tej zależności i dostaniesz funkcję: Wynik = f(ADC)
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
fototranzystor
A fototranzystory są elementami liniowymi?
Gdyby tak było to po co ta
Gdyby tak było to po co ta dyskusja, nie dość że nieliniowe to każdego producenta inne( inna rezystancja przy tym samym oswietleniu)
Gnuplot
Może ktoś wie jak wyznaczyć wzór na funkcje za pomocą gnuplot?
Re: Fitowanie
Rozumiem że chodzi ci o dopasowanie linii prostej do danych pomiarowych:
1. Robisz sobie plik tekstowy z danymi który zawiera dwie kolumny: x y i zapisujesz np pod nazwą; "data.txt"
2. rysujesz żeby zobaczyc czy działa: plot "data.txt" using 1:2
3. deklarujesz funkcję liniową: f(x) = a*x +b
4. fitujesz paramtry(najlepiej wywołać to co najmniej 2 razy): fit f(x) "data.txt" using 1:2 via a, b
5. rysujesz całość: plot "data.txt" using 1:2 with points ,f1(x) with lines
Najlepiej napisac skrypt w postaci pliku tekstowego w którym są po kolei wszystkie te komendy a nastepnie wywołać: gnuplot "skrypt.txt" lub jak juz gnuplot jest odpalony to chyba jest polecenie "load"
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
gnuplot
Witaj Mirley
Chodzi mi o to że zrobiłem charakterystyke fotorezystora ale nie mam pojęcia jak to dalej wykorzystać.Myślałem że gnuplot z danych punktów stworzy jakiś wzór który podstawie
w programmie :).
Pozdrawiam
Re: funkcja
Nigdy tak nie ma aby program wymyślał za ciebie wzór funkcji. Prześlij tą tabelkę z danymi, lub wrzuć te dane tutaj na stronie
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
chcarakterystyka fotorezystora
Wrzucam charakterystyke fotorezystora
Re: Fotorezystor
To dla ciebie jest tabelka z danymi? ... wykres z calca do niczego się nie nadaje. Wklej tabelkę i napisz co jest w każdej z kolumn. Co to jest to 0-16, bo to 0-1800 to chyba rezystancja?
Do czego ma służyć ten wzór? co chcesz potem z niego wyliczać względem czego?
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Tabelka
Nie chcę żebyś wyliczał wzór za mnie .Potrzebuję jakiś przykład jak to się robi.Ten wzór potrzebuje do podstawienia w programie przy pomiarze światła zamiana napięcie-lux , ale fotorezystor jest nie liniowy.Może jest jakaś strona gdzie dobrze jest to opisane.
pzdr
Re: Wzory
1. Wykonujesz serię pomiarów parametrów które cię interesują. Robisz tabelkę tak jak mówiłem wcześniej: w jednej kolumnie znajduje się natężenie oświetlenia a w drugiej odpowiadające mu napięcie.
2. Chcesz wyznaczyć natężenie światła a zatem w kolumnie y musi być natężenie a w x napięcie na fotorezystorze. Wtedy wzór który wyznaczysz y = f(x) po wstawieniu napięcia za x da od razu wartość natężenia. Osobiście to dopasował bym od razu funkcję gdzie x nie będzie napięciem a liczbą z przetwornika w mikrokontrolerze ale to potem można zrobić drugi raz
3. Rysujesz sobie wykres punktowy natężenia światła= f(napięcie na fotorezystorze)
4. Teraz należy wymyślić wzór ogólny jakim może być narysowana zależność. Przeważnie można wstawić zalezność kwadratową w postaci: y = aX^2+bX +C , albo pierwiastek: y = a*sqrt(x) +b itp może być też coś z e^x
5. potem gnuplot dopasuje ci już parametry funkcji (stałe współczynniki) ktore wstawisz do wzoru.
6. Wyrysujesz na koniec krzywą i dane pomiarowe aby zobaczyć czy krzywa leży na danych.
W twoim przypadku spróbował bym z funkcją y=a*ln(b*x) +c
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Dzięki.Teraz załapałem że
Dzięki.Teraz załapałem że muszę dopasować sam krzywą podstawiając wzory.
pzdr
---------------------------------------------------------------------------
Wyznaczyć wzór na funkcje można programem Graph.
Importuje się serie punktów następnie "ctrl+T"i program sam znajduje najlepiej pasującą krzywą i oczywiście pokazuje wzór.
Re: Dopasowanie Krzywych
Każdy używa takiego programu jaki mu odpowiada...
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Jak najbardziej zgadzam się z
Jak najbardziej zgadzam się z tym ,dlatego pokazałem innym że można inaczej.
Gnuplot
Ja niestety nie jestem w posiadaniu przyrządu do pomiaru lux, więc na razie zrobię sobie termometr na termistorze NTC. Myślę że zasada jest ta sama, tylko zależność będzie temp do napięcia lub od razu x nie będzie napięciem a liczbą z przetwornika w mikrokontrolerze. Jak będę wiedział co i jak to później tylko sobie zmienię przyrządy. Tylko że
1. Czyli po prostu piszę w pliku tekstowym x tabulator y i pod spodem moje wartości w dwóch kolumnach pod x i pod y? np x-liczba z przetwornika w mikrokontrolerze; y-temperatura
x y
0 125
. .
. .
. .
1023 -40
Czy to się robi w innej formie? np zamiast tabulatora musi być spacja? Nigdy jeszcze nie korzystałem z programu Gnuplot więc zapewne jeszcze czeka mnie sporo pracy z zapoznaniem się z programem.
Oczywiście termistor w całym swoim zakresie pomiarowym nie będzie pracować i tu moje drugie pytanie.
2. Wystarczy jak zrobię pomiary tylko w przedziale temperatury która mnie interesuje np od 0 do 100 stopni? Czy musi to być pełen zakres od -40 do 125 stopni. Skoro już jesteśmy przy wartościach ujemnych to zapisuje się je tak jak w przykładzie czyli normalnie -40 czy musi być zachowana jakaś inna forma?
3. Od ilości pomiarów zależy dokładność mojego przyrządu pomiarowego? Czyli im więcej pomiarów tym dokładniej będą dobrane współczynniki mojej funkcji. Czy pomiary należy wykonać tak aby uchwycić ogólny zarys wykresu czyli np co 5 lub 10 stopni?
4. W gnuplot wpisuje ogólną postać wzoru sprawdzam czy wykres który otrzymałem jest podobny kształtem do mojego uzyskanego z pomiarów, jeśli tak to wpisuje odpowiednią komendę i Gnuplot wyznacza mi współczynniki a,b i c. Jeśli tak to zasadnicza rolę w tym przypadku będzie odgrywało doświadczenie i wiedza jak wyglądają wykresy podstawowych funkcji.
5. W gnuplot jest jakiś zestaw funkcji z którego w razie braku wiedzy można skorzystać i np spośród 30 funkcji można znaleźć funkcje y=a*ln(b*x) +c i porównać jej kształt z szukanym? Czy to się robi w inny sposób?
Re: Gnuplot
1.Robisz sobie tabelkę, może być spacja ale lepiej tabulator. Ogólnie gnuplot może rozpoznawać inne znaki oddzielające kolumny.... mozna zdefiniować inny znak jesli dane sa juz w jakimś formacie. Ja przeważnie korzystałem z arkusza kalkulacyjnego, wpisywałem dane a potem zaznaczałem obszar komórek i wklejałem do zwykłego edytora tekstu. Pamiętaj że separatorem dziesietnym jest kropka a nie przecinek, jakbys chciał zrobić np 34.5
2. Tylko przedział który Cię interesuje... trudno by było dopasowac wykres do całego zakresu
3. Jak masz więcej punktów to wzór będzie miał mniejsze niepewności.... pamiętaj że to wszystko statystyka. Oczywiście jak pomiary będziesz miał takie że w tej samej temperaturze raz będzie 23 a raz 25stopni wskazywał miernik kalibrujący to i tak ustawi ci sie jakaś średnia
4. musisz wymyslic wzór i doswiadczenie przyda się tutaj napewno. Czym bardziej skomplikowany wzór tym wieksze problemy z dopasowaniem. Jak dasz coś bardzo złożonego to prawdopodobnie będziesz musiał tez ustawić samemu parametry startowe współczynników... chodzi o to czy program ma np spodziewać się "a" rzędu 0.01 czy morze rzędu 1000000. Przy prostych wzorach samo się to ustawi
5. gnuplot ma zdefiniowane funkcje typu sin, cos, log itp ale wzór z parametrami musisz podać samemu. Funkcje definiuje sie przypisując poprostu: "f(x) = a*ln(b*x) +c". najpierw popróbuj z linia prostą. Napisz sobie prostą tabelkę i sprawdź czy dasz radę dopasować prostą
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Re: wykres
Czyli że Gnuplot zawsze dopasuje jakieś parametry do podanej funkcji, haczyk tkwi w dokładności z jaką on to zrobi. W formie ćwiczenia wymyśliłem sobie funkcje y=5x+6 stworzyłem odpowiedni plik txt i wynik był następujący
dla
f(x)=a*x+b tu akurat znałem funkcje z jakiej były tworzone dane do txt, a wynik i tak nie był taki jak się spodziewałem.
Final set of parameters Asymptotic Standard Error
======================= ==========================
a = 4.92857 +/- 0.07143 (1.449%)
b = 6.14286 +/- 0.3194 (5.2%)
Po skorygowaniu o wartości +/- uzyskamy 5 i 6,ale jak wygląda to w przypadku gdy nie znamy funkcji i współczynników a oraz b?
Przyjmujemy jakiś zestaw funkcji wpisujemy je kolejno i patrzymy na ich błędy procentowe, po czym wybieramy tą która ma je maj mniejsze? Następnie w arkuszu kalkulacyjnym np Excel wpisujemy nasze x ;y i naszą funkcję. Po czym korygujemy współczynniki a i b zgodnie z błędami +/- tak aby nasza funkcja dawała wynik jak najbliższy otrzymanemu z pomiarów?
Re: Dane
Jak wygenerowałeś te dane? Jeśli zrobiłeś tabelkę wyliczoną z wzoru to po dopasowaniu musisz otrzymac ten sam wzór. jesli dane sa rozstrzelone losowo wokół prostej dopasowanej to wynik który uzyskałes jest prawidłowy, ma byc tak jak dostałeś czyli 4.9... i 6.1.... bo to najlepsza możliwa prosta do tych punktów pomiarowych i koniec.... nie ma tu z czym dyskutować bo to matematyka.
Nie ma żadnych zestawów funkcji... jak cos robisz to przeważnie zależnośc jest znana z podstaw fizycznych. a jak nie to trzeba wymyslić wzór w oparciu o funkcje elementarne. Błędy powinny byc jak najmniejsze ale czasami trzeba sie pogodzić z takimi jak dają pomiary
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
re:dane
Dane wyliczałem z wzoru, ale robiłem to dosyć późno i szybko, więc może pomyliłem jakiś wynik i przez to ta różnica. Dziś zrobiłem jeszcze raz i wyszło 5 i 6.
A takie pytanie praktyczne, po wpisaniu wyników z pomiarów do excela i wygenerowaniu temperaturu dzięki otrzymanej funkcji to jaką otrzyma się mniej więcej dokładność. Np dla temperatury o zakresie od 0 do 50 stopni, to najgorszym przypadku otrzymamy jaką różnice temp otrzymanej dzięki pomiarom a wynikiem wyliczonej funkcji. Rozumiem że to wszystko zależy od wymyślonego wzoru ogólnego i nigdy nie otrzymam idealnego wyniku, ale łatwo można dojść do różnicy rzędu 0,5 stopnia czy np 2 stopnie, a żeby otrzymać 0,5 to już trzeba się napocić?
Re: Dokładność
Zależy to głównie od przetwornika ADC. Jeśli masz 10 bitowy przetwornik to ma on 1024 schodki napięcia. Zatem jeśli zrobisz charakterystykę i uzyskasz zalezność temp od liczby z adc to licząc z tego wzoru D = |Temp(x)-Temp(x+1)| uzyskasz w każdym punkcie skok temperatury i to będzie błąd jaki na pewno będziesz miał. Dodatkowe błędy wynikają z krzywej dopasowanej ale nie da sie tego przewidzieć, błąd będzie zależał tez od temperatury. 0.5 stopnia raczej napewno nie będzie bo tyle maja cyfrowe czujniki DS18B20 i podobne
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
ADC
Napisałem sobie taki programik do sczytywania napięcia i liczby z przetwornika w mikrokontrolerze.
Podczas symulacji było wszystko dobrze, lecz po wgraniu programu na mikrokontroler bez podłączania czegokolwiek do końcówki PC0 (ADC0) nap na ADC skacze do 1[V] do około1,9[V] (odczyt z LCD "wart.nap:" ; Wart_nap1 ; "[V]")
Przy tak skonfigurowanym ADC należy pod końcówkę AVCC podłączyć napięcie zasilania czyli w moim przypadku +5[V]?
Gdzie należy dać kondensator 10uF bo w pomocy bascoma pisze że między AREF a AGND czy lepiej miedzy AREF a +5V?
AGND to jest po prostu GND?
Re: M8
Jak już mówiłem wiele razy. Procesor podczas działania ma mieć podłączone wszystkie nóżki zasilania do +5V(VCC, AVCC itp) Nieważne czy uzywasz przetwornika czy nie. Wszystkie masy(GND, AGND itp) mają byc tez zwarte do głównej masy.
AVCC to zasilanie ADC jak chcesz żeby on działał bez zasilania.
Kondensator od AREF do masy
Wisząca końcówka wejściowa = może gonić wskazanie
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
RE ADC
Faktyczne gdy zwarłem PC0 (ADC0 z GND i podłączyłem AVCC do +5V to wyskoczyło 0. A gdy zasilanie zamiast 5[V]jest 4.6[V] to wtedy jest tylko taka różnica dla wyświetlanego napięcia, że liczba 1023 nie oznacza 5[V] tylko 4,6[V] tak?
Czyli wtedy gdy byśmy chcieli zmierzyć dobrze napięcie to trzeba by było zmienić z
na
Aby obliczyć tą liczbę to napięcie należy podzielić przez 1023 czy przez 1024?
Bo dla podłączonego termistora to jest bez różnicy czy jest +5[V] czy +4,6[V], no może dla +5[V] będzie odrobinę dokładniejsza zależność temperatury do liczby z przetwornika w mikrokontrolerze.
RE: ADC
jesli napieciem referencyjnym będzie zasilanie AVCC to wtedy 1023 oznacza napięcie zasilania. Wydaje mi sie że powinien być podział przez 1023, czyli: wynik = odczyt/1023*AVCC , zeby dla wartości 1023 było AVCC. Ja zawsze wykonuję krzywą kalibracyjną więc i tak wstawiam to do dokładnego wzoru i nie zastanawiam się czy jest to 1024 czy 1023 itp
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Gnuplot
Witam potrzebuje pomocy w wyznaczeniu wzoru charakterystyki fotorezystora. Poniżej dane
luksy wartość odczytana z ADC
0 0
10 22
22 52
30 70
42 98
51 118
61 132
74 155
94 179
133 229
164 257
202 300
248 325
300 361
375 405
442 429
520 462
590 485
660 506
763 535
877 560
970 577
1057 591
1179 610
1283 625
1391 636
1527 648
1670 662
1916 683
2280 710
2450 721
2680 732
2900 746
3190 759
3310 766
3600 775
3840 783
4060 787
4330 795
4760 805
5110 813
6140 830
7040 843
8210 857
10900 885
19000 918
chciał bym wykorzystać wzór do napisania programiku który zamiast wartości z ADC wyświetlał będzie mi pomiar w luksach. Najbardziej interesuje mnie zakres wartości z ADC od 506 do 857. Z jakich funkcji mógł bym skorzystać aby otrzymać najlepsze rezultaty?
Re: ADC
Zamień osie miejscami i spróbuj funkcji potęgowych lub wykładniczych. Zawęrz dane do interesującego przedziału i spróbuj dwumian kwadratowy lub funkcję tego typu.
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
funkcja
Mając znalezioną funkcje F(x)=ax^3+bx^2+cx+d jak ją wpisać do programu aby Bascom nie wyrzucał błędu.
Po próbie kompilacji wyskakuje błąd nr 35 "spodziewano się 3 parametrów". O co chodzi z tym błędem?
Bascom nie radzi sobie z takimi obliczeniami?
Trzeba wszystko w osobnych
Trzeba wszystko w osobnych liniach, takie rzeczy to tylko w C :D
L1
W osobnych liniach to znaczy jak? Jakieś dodatkowe zmienne i całość rozbita na kilka działań? Zauważyłem że błąd ten wyskakuje gdy próbuje pomnożyć zmienną F1 przez liczbę z wartością po przecinku.
Może ktoś pokazał by przykład jak to równanie zrobić w tych osobnych liniach.
Czyli jak np. masz
Czyli jak np. masz zmienna=a1+a2*a3 to trzeba zapisac: zmienna=a1+a2 oraz w drugiej linijce zminna=zmienna*a3, bascom pozwala na tylko 3 argumenty w jednym działaniu, i trzeba pisać w osobnych linijkach.
osobne linie
W końcu mi ruszył. Robiłem tak jak pisałeś już wcześniej lecz nadal wyskakiwał mi ten błąd, ponieważ kopiowałem sobie liczby z Excela i zapomniałem że w BASCOM trzeba stosować "." a nie ",". No ale działa, dzięki wszystkim za pomoc.
Re: Pzeliczenia
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.