Poniżej fragment: Odczyt = 0 For Krok = 1 To 100 W = Getadc(1) Odczyt = Odczyt + W Next Krok Wyn = Odczyt / 100 Zmienna wyn to uśredniony pomiar ze 100 odczytów. Pozdrawiam.
Do Autora wątku: Proszę. Nie taki diabeł straszny. Nie napisałeś jaki to procesor więc napisałem przykład dla Mega8. Funkcja odczytuje ADC(0-5) z włączony ADLAR czyli tylko osiem bitów. Wynik od 0 do 255. Zapewne działa nawet w symulatorze. To taki podstawowy. Można nie czekać a ustawić przerwanie, ale to pewnie jeszcze nie dla Ciebie :D Wpisz w Google...
Sortowanie w Bascom funkcjonuje bezbłędnie. Pobieram 50 próbek i uśredniam wynik z 10 "środkowych" - działa perfekcyjnie
Właśnie czas pomiedzy impulsami da ci wiarogodny wynik. Chyba, że czas pomiaru będzie na tyle długi, że da ci zadowalającą dokladnosc. Np. na wolnych obrotach w samochodzie(ok 900 obr/min) masz 15 obr/sek (co ok 60ms) natomiast przy 10000obr/min masz impuls co 6ms. Przy podstawie pomiaru 50us (liczenie czasu pomiedzy impulsami) masz dobrą dokładność...
No to po każdym pomiarze wynik dodaj do poprzedniego, zadeklaruj zmienną liczba pomiarów i jak osiągnie 100 to podziel wynik przez 100 i uśrednienie gotowe.
A ja bym użył kondensatora elektr. i opornika by uspokoić ADC. Zrobiłem kilka mierników i rozwiązanie daje sobie radę z uśrednianiem wyniku. Działa nawet idealnie w takim niestabilnym środowisku jak samochód.
Czyli Tobie chodzi o uśrednianie wyniku . Ja bym dał więcej próbek (np: 50). Są ciekawsze rozwiązania - filtr dolnoprzepustowy , ja robiłem z tego filmu (to jest pod arduino) przerobiłem i chodzi świetnie w bascom [youtube]https://www.youtube.com/watch?v... Tu jest obrabiany wynik z akcelerometru ale to bez znaczenia bo podasz wynik...
Próbuje zrozumieć programowanie procków, ( opornie mi to idzie ) jakies tam proste programiki już mi wychodza, ALE mam kłopocik z uśrednieniem wyniku pomiaru z przetwornika A/C pcf_8591. DOKŁADNIE - mam sygnał w zakresie 2500 mV do około 2440mV który już jest niestabilny +/- 2mV , zależy mi aby to uśrednic i i osiągnąć dokładność chociaż 0.5mV . Zapomłem-...
po pierwsze, program nie uśrednia wyników - usuń to w=getadc(0) po pętli for, a typ zmiennej w zmień na long to co Ci wyświetla to wartość pomiaru z adc * 0.0049 :D
...elektrolity. zrób ten układ i zobacz jak skacze pomiar bez nich! Jak mam zrobić bez schematu :?: Żeby pomiar nie skakał trzeba zrobić uśrednianie wyniku, a nie dokładać kondensatory. I to jeszcze o takich pojemnościach. Już na podstawie tego widać że cały układ jest.....daleki od poprawności.
1 opornik, kondensator. Z zasilania podłączasz się do opornika 10Kohm, opornik do kondensatora elektrolita (dobrać wartość).Masz od razu załatwione uśrednianie wyniku. Dodano po 1 Możesz zastosować np 100Kohm, wtedy dajesz mniejszy kondensator.
Napisałem program w bascomie który mierzy 16 razy napięcie na wejściu przetwornika AC, później uśrednia wynik i pokazuje na trzech wyświetlaczach 7 segment i program ten pokazuje głupoty, na wyświetlaczu wartości cały czas bardzo szybko się zmieniają. Gdy usunę część odpowiedzialną za uśrednianie wyniku jest ok. Może ktoś zerknąć na kod i powiedzieć...
Witam Propozycje dzielenia przez ilość próbek np. 10 są bezsensowne, jeśli już uśredniać to można to zrobić z głową, daj 16 próbek i przesuń wynik w prawo, to że w BASCOMie wygląda prosto to wcale nie znaczy ze po kompilacji wyjdzie prosto. Nie mam BASCOMa pod ręką ale poszukaj instrukcji Shift Right lub coś podobnego. Piotr
Poradziłem już sobie z uśrednianiem wyniku, ale mam dalej problem z tym zaokrąglaniem. Nie ma jakiegoś prostego sposobu na zaokrąglenie liczby ułamkowej ? Te funkcje round i int nie działają poprawnie. Zaokrąglają, ale pozostaje przecinek i zero na końcu, którego chcę się pozbyć.
Ten Twój program to, niestety, brak zrozumienia dla sprawy. W pętli Do Loop Until zbierasz 64 odczyty i je uśredniasz, ale tego wyniku w ogóle nie używasz... Zamiast tego robisz jeszcze raz odczyt zamazując poprzedni wynik uśredniania. Gdzie tu sens? :D Spokojnie możnaby też zrezygnować z użycia zmiennoprzecinkowej Single i program byłby mniejszy -...
Próbuje zrozumiec programowanie procków, (opornie mi to idzie) jakies tam proste programiki już (czytaj:dopiero)mi wychodzą,ALE mam klopocik z uśrednieniem wyniku pomiaru z przetwornika A/C pcf_8591. DOKŁADNIE- mam sygnał w zakresie 2500 mV do około 2440 mV który już jest niestabilny +/- 2mV,zależy mi aby to uśrednić i osiągnąć dokładność chociaż 0.5...
Chodzi mi o algorytm jaki zastosować do wyliczenia średniej tak aby była jak najmniej podatna na te niewielkie wahania w pomiarach? Odrzucasz N największych i N najmniejszych pomiarów (wyeliminowanie "ekstremów") - z pozostałych liczysz średnią. Im więcej pomiarów - tym bardziej stabilny wynik, ale nie zawsze się da zbierać dostatecznie dużo pomiarów...
AREF filtruję 100n do GND. AVCC mam podciągnięte przez dławik 100u do +5V i odfiltrowany 100n do GND Spróbuję zamienić napięcie z tabeli na wartość ADC. Kosmicznej dokładności tutaj nie potrzeba. Ma to raczej służyć jako "orientacyjne" wskazanie ponieważ pływak w czasie jazdy cały czas będzie pracować. Dlatego tez potrzebować będę średniej z co najmniej...
Witam Przykład z działającego urządzenia odczyt dwóch adc i uśrednianie wyniku [syntax=basic4gl] Incr Usrednianie Odczytco = Getadc(7) + Odczytco 'odczyt adc co Odczytbl = Getadc(4) + Odczytbl 'odczyt adc bojler If Usrednianie > 5 Then 'usrednianie odczytów 'żeby nie skakał pomiar Co = Odczytco / 10 Bl = Odczytbl / 10 Odczytco = 0 'zerowanie zmiennych...
Ja też pracuje nad takim urządzeniem i myśle sobie, ze sam pomiar tempa to pikuś. ale jak wysterować wyświetlacz LED? Myślę na programem częstotliwościomierza który będzie mierzył częstotliwość przez pewien czas (np. 2 sekundy), uśredniał wynik pomiaru i mnożył do przez 60. Do tego celu mam zamiar urzyć uP ATTINY2313. Chcę zrobić wyświetlacz z segmentów...
Kiedy w końcu zrozumiecie, że nie każdy chce zostać programistą i ludzie czasem programują sobie po to by coś zrobić i mieć z tego satysfakcje. Wiem jak oprogramować ADC i to nie tylko w Bascom, ale zauważ że piszemy tu o Bascom. Języku który upraszcza wiele rzeczy dając Ci określoną ilość prostych w użyciu funkcji. Jedną z takich funkcji jest Getadc()...
. Deklarując zmienną "dowpisania" jako bajt nic się nie zmienia. W czasie jednej pełnej pętli głównej licznik zwiększa się o 3, więc dla najwyższej możliwej częstotliwości pętla wykona się 16 razy zanim dojdzie do przerwania, nawet zostawiając w głównej pętli wysyłanie ocr2 przez uart, gdyby wywalić tę linijkę, pewnie trwałoby to jeszcze krócej. Nie...
Witam. Po dłuższej przerwie wracam do tematu stabilizatora. Zmagając się z regulatorem na wzmacniaczach operacyjnych postanowiłem jednak pójść w stronę regulatora na mikroprocesorze. W sieci znalazłem program PID-a w Bascomie na Atmege8, w którym wyłączyłem człon różniczkujący. Regulator działa średnio dobrze tzn. obroty wciąż oscylują wokół wartości...
Witam Zrobisz sobie tablicę powiedzmy 10-cio elementową i w pętli będziesz przesuwał wyniki o jedną pozycję. Po 9 krokach na pierwszą pozycję wpisujesz wynik bieżącego pomiaru i uśredniasz wszystko. Dosłownie kilka !!! linijek kodu jeśli chodzi o przesuwanie w tablicy. Przy takiej tablicy (z autopsji) będziesz miał wątpliwości czy układ jeszcze działa....
Średnia można liczyć na jednej zmiennej. Wymaga to operacji zmiennoprzecinkowych. Trzeba więc stanąć przed wyborem, duże zapotrzebowanie na ram czy większe zużycie czasu CPU. Bascom ma ograniczenia co do liczby operacji zmiennoprzecinkowych w jednej linii Uwagi personalne usunąłem. O przesuwaniu przecinka słyszał? Odczyt z ADC mieści się w zakresie...
Witam Troszkę przedobrzyłeś s tym licznikiem 16 bitowym, starczy połowa 8 bitowego, wróćmy do obliczeń, autor pisze o 4 impulsach na obrót, Ty o 2 i to wydaje mi się bliższe prawdy. Maksymalne obroty 7000, na sekundę daje nam to koło 117 obrotów, chcesz mierzyć 0,5 sekundy i i dwa impulsy na obrót czyli 117 impulsów przy maksymalnej prędkości obrotowej....
Autor nawet nie napisał jakie mcu , nie podał kodu ... Mam wrażenie że nawet trygonometrii nie zastosował tylko leci na "surowych" danych z akcelerometru i te uśrednianie to zapewne pętla , sumowane wyniki podzielone przez ilość wyników ehhh . Z takim podejściem to nie nauczysz dzieciaka elektroniki a raczej kupowania "gotowców" . Masz podany cały tutorial...
(...) wane są na narastających zboczach sygnału CLK gdy zmiany ich są na opadającym zboczu więc jest ok 100us na ustabilizowanie sygnału. https://obrazki.elektroda.pl/2868912000_... czy jest jakiś sposób na uzyskanie większej rozdzielczości pomiarów ADC niż deklarowane 12bitów tych ADC MCP3204? Zgodnie z zasadami IC, nie mogę komentować...
Męczysz tego kota :D Wystarczyłoby troszkę pomysłowości i sprawdziłbyś wszystko jak ja na tym filmie w kilka minut zamiast pisać posty. Niektórym się wydaje że Timery albo ADC się konfiguruje raz na początku kodu i już Amen. Wiele peryferii i urządzeń możesz sobie konfigurować wielokrotnie. Przy ADC trzeba brać poprawkę że pierwszy odczyt po zmianie...
Witam Mam problemy z fazami w domu. chciałbym mieć stały pomiar wyświetlany na LCD i w przypadku przekroczenia napięcia 240V zapalaną diodę led podpiętą do nóżek procka(docelowo będą to przekaźniki) i sygnał dźwiękowy na syrence. Wykonałem w bascomie miernik faz na atmega8, tryb zaokrąglania wyniku zaczerpnąłem z jednego kodu z forum. Płytka z układem...
Co do zasady to jest ona banalna. Próbkujesz z częstotliwością x razy większą i każde kolejne x próbek uśredniasz. Nic ponadto (od strony programu przynajmniej). W C wyglądało by to tak: #define N 8 /* rząd oversamplingu */ unsigned char licznik_probek = N; unsigned int akumulator = 0; unsigned int wartosc; while(1) { akumulator = akumulator...
Witam. Mając trochę wolnego czasu postanowiłem wrócić do zmagań z PIDem. W sieci znalazłem program PIDa w Bascomie na Atmegę8 (maluszek Attiny2313 okazał się niestety za mały). W programie wyłączyłem różniczkowanie - aby było łatwiej. Program działa dość dobrze tzn. obroty utrzymują się na żądanym poziomie ale troszkę oscylują wokół wartości zadanej....
1. jakie masz źródło napięcia podawanego na wej przetwornika? jeżeli jest to w potencjometr sprawdź odczyty bezpośrednie powinny być z zakresu 1....1023. Zastosuj potencjometr wieloobrotowy będziesz mógł dokładnie sprawdzić odczyty i ich stabilność . Gdy już będziesz miał stabilny odczyt to mierząc napięcie w zakresie 0 .. 5 V napięcie U = 5000 * wartość_odczytana...
http://obrazki.elektroda.pl/6948868900_1... Wzmacniacz samochodowy o mocy 400W. Oparty o przetwornicę push-pull na układzie KA7500 (TL494), o mocy do 500W pozwalającej na pracę czterech końcówek mocy TDA7294. Wzmacniacz na przednim panelu posiada trzy trzy-cyfrowe wyświetlacze LED, wyświetlające aktualne napięcie zasilania wzmacniacza,...
Wiedze na temat przerwań czerpałem z poradnika : http://std2.phys.uni.lodz.pl/mikroproces... Jest to dośc autorytatywne źródło, więc skąd masz te wątpliwości??? kolega raz pisze ze load timer0 250 jest nie poprawny a potem pisze że poprawny wiec od czego jest zależne jaki czas jest po jednym przepełnieniu czy to...
Z dokumentacji co przeczytałem masz wyjście analogowe więc jedyne co to musisz pokusić się o mikrokontroler z przetwornikiem analogowo-cyfrowym o odpowiedniej rozdzielczości lub o zewnętrzny przetwornik wtedy nie potrzebujesz przetwornika w mikrokontrolerze. Jak wiadomo przetwornik ma jakąś rozdzielczość taka atmega8 na przykład ma przetwornik 10-bitowy...
Może spróbuj uśredniać wyniki z ADC np 50 pomiarów i średnia z 50 pomiarów jako wyjściowa wartość, lub 52 pomiary, największy i najmniejszy pomiar odrzucasz i średnia z reszty.
ja już kila razy zastosowałem taki algorytm odrzucania błędów pomiarowych. liczysz 5 lub 7 (zależy na ile możesz sobie pozwolić czasowo) pomiarów. potem ustawiasz je rosnąco a następnie liczysz średnią tylko z 3 srodkowych wyników, reszte odrzucasz. to rozwiązanie daje sporą poprawa wyników. jak by tego było mało to mozesz pobierać np 11 pomiarów i...
Bez zwiększenia czasu pomiaru, raczej tego nie obejdziesz. Możesz sróbować jescze uśrednić wynik z dwóch ostatnich pomiarów, ale niewiele to pomoże. Pozdrawiam
... przy pierwszym pomiarze rzeczywiście nie wyświetlisz, a później w chwili wyświetlania będą pokazywane wyniki z poprzedniego pomiaru. Druga sprawa: czemu chcesz mierzyć aż przez sekundę? Czy musisz mierzyć czas wszystkich 50 okresów? Może wystarczy zmierzyć tylko kilka i wynik uśrednić?
U mnie czas pomiaru będzie wynosił ok. 1,5s od momentu startu do zatrzymania fotela. Myślę, że nie będzie odpływania wyniku od rzeczywistej wartości. Próbki będę odczytywał przypuśćmy co 10ms. I tak dla 10ms będzie ok 0,036m/s, dla 20ms - 0,072m/s, dla 30ms - 0,108m/s itd. Każde drgania się odbiją na przyspieszeniu więc również prędkość będzie rosła...
1. Zobacz czy nie masz zbyt wąskich ścieżek na VCC i GND do procka. 2. Zrób osobny kabelek do zasilania AVCC i AGND bezpośrednio z wejścia zasilania. 2. spróbuj dać opornik między wejście ADC i czujnik (zobacz 4.7k...10k) 3. możesz dać z AVCC do masy kondensator 100nF 4. zsumuj np 3 pomiary i uśrednij wynik (tj. tutaj podziel przez 3)
zaobserwowane: jeśli dokładam do zasilacza warsztatowego to wyniki są stałe napiecie jedno i 2 takie samo jak i prąd taki sam i nie skacze. Jeśli podłącze to do ładowarki i próbuje dokonywać pomiarów to dzieje się tak jak opisuje i napięcie i prąd skacze. na 250 pomiarów i uśrednienia jest miedzy 5 pomiarami nawet +,-1.4 odskoku. ładowarka ma napięcie...
wg cen w seguro : 3 x LM35 = 11.34 procek z przetwornikiem a/c np. ATMega8 = 18 w sumie = 29.34 3 x DS1820 = 63 dowolny procek np At89c2051 = 6.44 w sumie = 69.44 chyba że kupisz taniej... I2C jest na pewno doskonałym interfejsem ale dla 3 sztuk chyba lepiej sie będzie opłacało jednak dać LM35. Jest jeszcze pytanie na jakim mikrokontrolerze kolega zamierza...
Prosta, na wyjściu masz komparator Nie do końca tak. Taka praca sondy spowodowana jest jej charakterystyką która przebiega dość stromo kiedy sonda "wyczuje" tlen. Komputer sterujący pracą silnika nie jest z oczywistych względów - ciągłe zmiany zapotrzebowania silnika na paliwo - utrzymać idealnych warunków spalania. Z tego wynika, że sonda raz podaje...
I do tego ci potrzebne 20MHz? Na moje oko to wystarczy 1Mhz nawet w Bascomie podejrzewam. 20hz *120s to zaledwie 2400 wyników dwubajtowych. Czyli spokojnie zmiescic mozna w wewnetrznej pamieci RAM. Jak już koniecznie chcesz jeszcze więcej minut to zastosuj atmege1284p która ma 16kB RAM-u. Po co taki szybki ADC skoro pomiary co 20Hz a dodatkowo chcesz...
Witam Sprawa generalnie dość prosta a tym bardziej że masz zakres od 0 do 100 stopni Celsjusza z rozdzielczością 1 st. W pierwszej kolejności należy zasilić czujnik napieciem np. 5V - tym samym co procesor, Podłączyć woltomierz na zakres 2V i mierzyć temperaturę. Sposób prezentacji wyniku w tym wypadku jest chyba znany i nie trzeba go opisywać. Następnie...
Witam serdecznie Mam podobny problem z tym przetwornikiem MCP3202, oto kod: $regfile = "m8def.dat" $crystal = 8000000 $baud = 9600 ' use baud rate $hwstack = 48 ' default use 32 for the hardware stack $swstack = 20 ' default use 10 for the SW stack $framesize = 80 Enable Interrupts Config Serialout = Buffered , Size = 254 Config Lcd = 16 *...
Witam, robię obrotomierz do silnika o obrotach do 6000obr/min. Pomiar wykonuje następująco: - po 1 przerwaniu startuje timer1 - w obsłudze przerwania timera1 (co 100us) zwiększam zmienna X - po 20 takich pomiarach usrednam wyniki i poddaje kalkulacji: Impuls: Disable Int1 If Measure = 0 Then X = 0 J = 1 Timer1 = 65136 Enable Timer1 Measure = 1 Else...
Witam. Mam problem z xmega 128A3-AU. Zbudowałem prosty woltomierz do 20V lecz przy zwarciu pinu ADC z masą nie ma 0V tylko napięcie waha się od 0 do 0.06V. Czy jest jakiś sposób na uśrednienie tego nie niszcząc płytki PCB? Program napisany w bascomie. [syntax=basic4gl]$regfile = "xm128a3def.dat" $crystal = 32000000 $hwstack = 128 $swstack = 128 $framesize...
bascom uśrednianie wyświetlanie wyniku bascom ds18b20 uśrednianie
myszki logitech mocne iskrzenie szczotek szlifierka stroić kondensator
Błąd 68 w iRobot Roomba i7+: Problemy z kamerą Kawiarka Silvercrest - pompka uruchamia się po podłączeniu do sieci