wilk125: jeszcze mam takie pytanie, jeśli kwarc zew. mam 8MHz i preskaler ustawiony jest na 8, to jeden takt timera1 w tym przypadku będzie odpowiadał 1us ? Tak Tak powinno być TCCR1B, moja pomyłka Przy odczycie wartości z TCNT1, sróbuj najpierw odczytac TCNT1L(młodszy bajt TCNT1), i następnie TCNT1H (starszy bajt). Chociaż odczyt jak wyżej tez powinien...
Ponieważ tzw. casting w BASCOMie jest nieco zbyt prosto zrobiony to proponuję zrezygnować z: Dim Xl As Word Dim Xh As Word A w przerwaniu pobierać zawartość z rejestru ICR za pomocą specjalnie generowanej dla tego celu zmiennej typu Word: Capture1 . Pętlę Do..Loop zamieniłbm na sprzętowe porównywanie i kasowanie licznika przez CTC. Niech takimi rzeczami...
W dalszym ciągu nie poprawiłeś WGM12. Jak wspominałem bit ten znajduje się w TCCR1B a nie w TCCR1A.
Problem masz ewidentnie z programowaniem Flash, a nie z kompilacją. Może spróbuj z innym programatorem.
Musze cie zmartwic. Timer 2 jest tylko 8 bitowy i przy maksymalnym czasie 5 sek dokladnosci 1ms nie uzyskasz. Maksimum 19 ms z chakiem. Jedynym rozwiazaniem to musisz ten licznik wydluzyc o jeden bajt zatrudniajac do tego przerwanie od Timet2, wtedy jest ta dokladnosc mozliwa do uzyskania.
[syntax=c]x = 0; for (p = bufor; *p >= '0' && *p <= '9'; p ++) x = x * 10 + *p - '0';[/syntax]
Wspomniana przez CH.M. metoda (opisana przez Atmela) nadaje się wyłacznie do sygnałów wolnozmiennych, takich jak z czujnika ciśnienia czy mostków. Z precyzyjnym źródłem napięcia nie byłoby duzo kłopotów - maxim robi gotowce o dokładności kilku ppm niemniej precyzyjne źródło napięcia przy metodzie oversamplingu nie jest konieczne. Założenie tej metody...
Czy dasz rezystory 2W, czy 5W to będą się nagrzewać tak samo (pomijam ew. wzrost masy i co za tym idzie powierzchni rozpraszającej energię). W końcu na obu wydzieli się taka sama moc...
Nie chciał bym za Ciebie pisać tego programu, bo jest to naprawdę proste zadanie i dlatego spróbuj sam napisać go jeszcze raz od początku wg np. takiego algorytmu: Ustaw timer powiedzmy na 10khz aby każde przerwanie wykonywało się co 100 mikrosekund. Możesz też gęściej od tego zależy dokładność - tu 100us czyli 0,1ms Zdefiniuj sobie zmienną licznikową...
Pomyśl nad zastosowaniem rejestru przesuwnego. Np 74HC595. Można te układy łączyć. Potrzebne będą trzy linie procesora. Jedna do ustawienia wprowadzanego bitu druga to zegar rejestru przesuwnego a trzecia służy do przeniesienia danych z rejestru na wyjścia. Układ ma 8-io bitowe wyjście czyli do podwójnego wyświetlacza będą potrzebne dwie takie kostki....
Nie wystarczy itoa? http://pl.wikibooks.org/wiki/C/itoa Ja wiem, wiem - biblioteki zwiększają zajętość flash... , ale myślę (w tym przypadku), że jeżeli projekt jest mały i masz jeszcze trochę flash'a i RAM oszczędzanie - poprzez pisanie własnych funkcji konwertujących int na string nie ma sensu. Ale wracając do twojego kodu: W twoim przykładzie brak...
Jeśli masz detekcję otwarcia/zamknięcia migawki to nie ma najmniejszego problemu z pomiarem. Nawet ATMega8 ma timer z możliwością pomiaru czasu - tryb capture. Podajesz sygnał na wjście timera i potem odczytujesz rejestr zawierający timestamp zdarzenia. Parę linii kodu. Ale jak wykryć otwarcie/zamknięcie migawki? Laserek i mierzenie odbicia od migawki?
Po pierwsze to kup nowego DS a tego wyrzuć- bo gdzieś go schowasz, zapomnisz że zepsuty- a za jakiś czas będziesz się znowu użerał. Ale zanim go wyrzucisz zmień us na ms na końcu programu. Zresztą powinno być 900ms a nie 200.
Zrobiłem coś takiego i nadal nic $regfile = "m8def.dat" $crystal = 1000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Rs = Portb.1 , E = Portd.0 , Db7 = Portd.1 , Db6 = Portc.4 , Db5 = Portd.7 , Db4 = Portb.0 Cursor Off Dim Wynik As Single Config Timer1 = Timer Enable Interrupts Enable Timer1 Do If Pind.5 = 1 Then Timer1 = 0 Start Timer1 Do...
Raczej ten przebieg podaj na wejście CLK licznika, a drugi licznik np. przepełniany co 1s (albo częściej, co polepszy responsywność) ma odmierzać wzorcowy czas i odczytywać CNT pierwszego licznika. CTN będzie zawierać liczbę impulsów zegara w mierzonym czasie.
Będziesz musiał zjechać częstotliwością PWM na tyle aby łapać czas między impulsami z wentylatora, gdy PWM jest na H.
Przykład na ATmega8: http://mikrokontrolery.blogspot.com/2011...
Zastosować dzielnik
1. Faktycznie, trzeba je do masy podciągnąć. 2. http://www.tme.eu/pl/details/ld-bzeg-090... , wielokrotnie już go w innych projektach używałem. 3. Cyfrowe 10cm, znalazłem sobie wygodne mocowanie wraz z elementami pasywnymi : http://botland.com.pl/cyfrowe-czujniki-o...
Nie wiem czy chcesz się nauczyć czy potrzebujesz program. Na początek te uwagi: 1. Nie wiem co tam robi dyrektywa $eeprom. Jest niepotrzebna w tym kodzie 2. Zmienna Ds jest zwiększana w przerwaniu niezależnie od tego czy jesteś w Menu czy nie. Tak więc po powrocie z Menu już na pewno nie zdążysz załapać się na warunek If Ds = 2 i wyzerować jej wartość....
Połączyć wejście ADC z mierzonym potencjałem. Jeśli ten potencjł jest odłączany, to np. z masą przy użyciu jakiegoś opornika o dużej wartości. Generalnie, między tym wejściem a jakimś ustalonym potencjalem w układzie (masa, zasilanie, wartość mierzona - cokolwiek, co dopuszcza nota katalogowa ATmegi8) musi istnieć galwaniczne połączenie, aby nie gromadziły...
Proponuję zamiast mierzyć czas 5 obrotów sprawdzać ilość impulsów co stały czas.
Ale jak pisałem ten projekt Duch ma błędy i forumowicze mają same problemy. W Twoim przypadku było kilka błędów które się na siebie nałożyły. 1. to nadpisywanie zmiennej ss string as 6(za krótka) powinna być 7 lub 8 2. złe pozycjonowanie napisów na LCD 3. złe podłączenie DSów (zasilanie) to że u innych działa to nie znaczy że jest dobrze) jeśli miałbyś...
Jednak źle mi się wydawało. Opis znaczenia bitu ADSC jest jednoznaczny: "The first conversion afterADSC has been written after the ADC has been enabled, or if ADSC is written at the same time as the ADC is enabled, will take 25 ADC clock cycles instead of the normal 13. This first conversion performs initialization of the ADC." Czyli nie ma bata, pierwszy...
Pomysł właściwy, ale zrób to, co doradził kol: Dodaj rezystor stały szeregowo z potencjometrem R6.
Na zasilanie Megi daj 100nF a także na ADC0. Często na podobnych schematach widać na wejściu AREF oraz na wejściu ADC0 rezystory. Czy ktoś może mi dokładniej powiedzieć do czego one służą i jak je dobrać? Jedyne co wiem to że bez nich może dojść do uszkodzenia przetowrnika. Daje się raczej diody zenera żeby nie przeholować z napięciem na wejściu przetwornika....
Jeśli nie robisz przetwornicy sterowanej z uC, to natężenie prądu diod musisz przyzwoicie ustabilizować układem stabilizatora. Nie da się tego zrobić przez PWM - PWM może regulować jasność kluczując prąd o znanym, stałym natężeniu, odpowiednim dla konkretnego typu diody. Proponuję, żebyś najpierw zapoznał się z zasadami i typowymi układami sterowania...
Twój LM75 jest na I2C, zakładam więc że umiesz odczytać z niego te dwa bajty z wartością temperatury. Sprawdzasz najstarszy bit, starszego bajtu w odczytanym z czujnika wyniku. jeśli jest równy 0, to znaczy że temperatura jest dodatnia i wynik liczysz poprzez: 1. przesunięcie otrzymanego z czujnika wyniku o 5 bitów w prawo 2. pomnożenie rezultatu tej...
Witam. Zdaje sobie sprawę, że temat ten był poruszany na elektrodzie wielokrotnie, jednak po przeczytaniu kilkudziesięciu wątków nie znalazłem rozwiązania które może mi pomóc. Otóż potrzebuje mierzyć położenie obracającego się wału silnika w czasie, uzyskując wynik do dalszych obliczeń w kaskadowej strukturze sterowania. Ponieważ posiadam (niestety)...
Ustawiasz napięcie odniesienia na Vcc, ale ... w funkcji pomiaru z powrotem ustawiasz napięcie odniesienia z pinu AREF, czyli zewnętrzne, bo nadpisujesz wartość ADMUX. Wzór OK. [syntax=c]return ADCW;[/syntax] zmień na [syntax=c]return ADC;[/syntax] Przykłady ADC: http://mikrokontrolery.blogspot.com/2011...
Mnie sie wydaje ze dokladnosc pomiaru nie zalezy od uzytego jezyka. W przypadku 1MHz bedzie to 0.001mS oczywiscie to jest rozdzielczosc (1 mln probek na sek)bo co do dokladnosci to trzba uwzglednic czy ten 1MHZ to rzeczywiscie 1MHz
Dzięki. Pokombinuje coś z tym. Aktualnie walcze z timerami i próbą obliczenia prędkości z przyspieszenia i czasu na zegarze. Pozdrawiam
Potrzebuje zmierzyć częstotliwość w zakresie do 200kHz(w tym przypadku 3,2MHz) procek: to ATmega8 Kombinuje jak koń pod górę, na czym polega mój błąd ? Timer 2 odmierza czas 1s. Timer 1 w założeniu ma zliczać impulsy z zewnatrz. (wartość 0xFF w OCR1A,-impulsy dochodzą z T1,-po zrównaniu TCNT1H/L zerują się-i cykl się powtarza.) Oróż Timer2 wchodzi w...
Witam. Próbuję napisać program odpowiedzialny za pomiar odcinków czasowych pomiędzy impulsami sygnału S1 i S2 (zgodnie z załącznikiem). Proszę o prześledzenie kodu, wszelkie uwagi i sugestie mile widziane. Nie mam pewności co do poprawności pobierania wartości licznika TIMER1 za pomocą TCNT1. 'program do pomiaru okresu sygnałów podpiętych do PD.2(INT0)...
Po generacji fali wystaw na oba wejścia nadajnika stan niski, co wytłumi drgania. Potem dopiero zabierz się za pomiar echa. I owszem - w momencie wysłania paczki startujesz 'sekundnik' na timerku i zliczasz czas do nadejścia echa. A dalej to już proste równania matematyczne.
Kolego shg Również dotknął mnie ten problem, jednak jako źródło sygnału w moim projekcie występuje źródło prądowe, które powoduje spadek napięcia na rezystorze. Spadek napięcia od -2,5V do 2,5V czy zastosowanie dzielnika jaki zaproponowałeś wcześniej nie wprowadzi jakiś znaczących błędów odczytu? Interesuje mnie dokładność ok 0,1V.
jack63 to wcale nie jest liniowa charakterystyka! Oczywiście, tylko ta nieliniowość jest niewielka. Dla 200oC wynosi mniej niż 6oC. Czyli 3% ,jeśli dobrze policzyłem :D. Przetwornik ADC jest 10 bitowy z dokładnością do 2 LSB czyli 0,4%. Można przeprowadzić ew. linearyzację po ADC programowo. (at)PiotrPitucha próbujesz "wymusić" stosowanie rozwiązań...
Witam, Piszę program do atmega8 i mam problem z ustawieniem Timer1. Dopiero zaczynam programować więc proszę o wyrozumiałość. Chciałbym ustawić tak timer1 aby zaczął liczyć czas od pojawienia się na portd.3 pierwszego impulsu do drugiego impulsu, zapisał wartość do zmiennej, wyzerował się i zaczął zliczać czas od drugiego do trzeciego impulsu zapisał...
Ad 1. Jeżeli zmienisz program to tak. Ad 2. Nie będziesz mógł. Temat wałkowany wielokrotnie na forum.
Zgadza się, procesory mają możliwośc pracy w konfiguracji z wejściami różnicowymi - i znów człowiek dowaiduje się czegoś oczywistego ;)
Witam! Buduję woltomierz mierzący napięcie w danym momencie na baterii akumulatorowej. Prosiłbym o wyliczenie dzielnika napięciowego który będzie podłączony do Atmegi - max. 5V! :D
Docelowo urządzenie ma być sterownikiem opryskiwacza i dlatego potrzebny jest dokładny pomiar prędkości.
Jeśli chcesz uzyskać stabilny pomiar napięcia to usypiaj procesor na czas pomiaru, na wejściu ADC zastosuj też filtr dolnoprzepustowy.
jak chcesz takie duze czestotliwości mieżyć to musisz użyć timera żeby liczył zewnętrzne impulsy, wtedy drógim timerem wyzwalasz przerwanie co określony czas (im dłuższy tym lepszy bo pomiar dokładniejszy) liczysz ile było ilmpusów z zewnątrz w okreslonym czasie. wydaje mi się że tą metodą dało by sie mieżyć nawet do 100Mhz ale jest jedno zalożenie...
Łatwiej by było jakby ten rezystor był od strony masy a nie plusa. Poza tym Atmega8 nie ma pomiaru różnicowego z tego co pamiętam. Dodatkowo jakiś filtr by się przydał na wejściu przetwornika. Dodano po 7 Dodatkowo pytanie gdzie tu jest zasilanie do AVCC podpięte? ja jakoś nie widze.
Czyli liczy 10x za wolno. A czy dobrze ustawiłeś w programatorze fusebit odpowiedzialny za to z jakiego generatora ma korzystać? Bo wygląda że korzysta z wewnętrznego 1MHz
Witam! Bawię się czujnikiem ultradźwiękowym mierzącym odległość, z którym komunikuje się za pomocą interfejsu I2C. Dane z czujnika za pośrednictwem amtegi8 (8MHz) wyrzucam na kompa za pomocą RS-232 (9600 baudrate). Problem polega na tym aby obliczyć czas jaki upływa pomiędzy kolejnymi pomiarami i wyświetlać go z resztą danych na komputerze. Trochę poczytałem...
I mam pytanie czy to: while (!ADIF ); jest dobrze a zastanawiałeś się kiedyś co oznacza zapis np (1 << ADSC) ? to co napisałeś to jakaś stała będąca numerem bitu. Jaki to numer to można sprawdzić w dokumentacji albo w pliku nagłówkowym. Jak napisałem wyżej taki kod kompiluje się do while(0) więc nigdy ta pętla się nie wykona. Pływanie może brać...
Dokładnie tak, względny , ale stabilny w długim okresie pomiar czasu.
Ja bym zrobił na przerwaniu + timer.
Chcałem prosić o poradę. Chcę zastosować ATMega8 i wewnętrzne przetworniki A/C. Pomair ma być dokonywany z dwóch kanałów. Ma to wyglądać tak że kanał jest podawany jako argument w funkcji (program w C). Np. unsigned int adc(unsigned char kanal); W nocie katalogowej czytałem ze pierszy pomiar po uruchomieniu przetwornika (wpisaniu do ADEN) zajmuje najdłużej...
Po tym jak ustalisz wejście musisz dać kilka uS czasu na ustalenie się napięcia na wejściu ADC zanim wywołasz konwersję. Generalnie DS zaleca nawet odrzucenie pierwszego pomiaru po zmianie kanału.
No więc zgodnie z moimi przypuszczeniami masz tam sygnał cyfrowy, w którym informacja o położeniu jest kodowana jako czas trwania impulsu - 1,5ms położenie neutralne, 1 lub 2ms położenia skrajne. W takim przypadku to co potrzebujesz to: 1. Porzucić pomysły związane z ADC, 2. Zająć się timerem, a dokładniej układem pomiaru czasu trwania impulsu - input...
witam Mam do zrealizowania coś takiego: Wejścia INT0 oraz Int1 muszą reagować na pojawiające się na nich sygnały (zbocza narastające ) po czym muszę zliczać czas trwania stanu wysokiego na powyższych wejściach gdy pojawi się zbocze opadające na int0,1 liczenie czasu ma być przerwane i wartość ta zapamiętana. W skrócie jest to pomiar czasu trwania stanu...
Dzięki SHG jak wywaliłem ten kondensator to jest lepiej tz szybciej odczytuje wynik. Tylko na 100% nie jestem pewien czy jest prawidłowy wynik. Przykładowo po włożeniu do wody elektrody po ok 1min pokazuje jakiś tam wynik przykładowo 7pH ale po 30 minutach jest już 6,8pH, czyli do pełnego pomiaru potrzebuje trochę czasu.
..... Znalazłem w data sheet'cie informację o konieczności podpięcia zewnętrznych kondensatorów lub właczniu w fuse bitach wewnętrznych, wieczorem wyprubuję i jutro dam znać co wyszło. Chcesz powiedzieć, że od początku próbowałeś bez żadnych kondensatorów? Gratuluję!
Widzę, że moje programy znajdują uznanie i dobrze. Co do podawania impulsów na uC to nie można zmieniać dowolnie końcówek bo timery mają wejścia przypisane do konkretnych wyprowadzeń. Dla M8 są to T1 - 11, T0 - 6. Trzeba to brać pod uwagę przy projektowaniu układu. Dotyczy to końcówek używanych jako alternatywne. Po przeróbce czas odmierza T0 (8bit)...
Ja bym się nie bawił w analogówke ... Sam zrobiłem stację meteo podłączoną do serwera , dane zbierane były do bazy danych mysql a stronka z odpowiednimi skryptami wyświetlała wyniki w postaci wykresów ( gnuplot ) oraz wskaźniki we flaszu bieżącą pogode. Zastosowałem mikrokontroler atmega8 pomiary temp czujnik DS18B20 pomiar wilgotności czujnik analogowy...
Witaj Twoje obliczenia wyglądają na poprawne jednak wydaje mi się, że to cli() jest w złym miejscu. Z ustawień timera widze, że mierzysz "powolne" sygnały. Zatem twój program może nie zdążyć złapać przerwania od INT lub złapie tylko zbocze opadające, ale narastającego już nie, bo zostanie wyłączone globalne przerwanie. cli() jest w dobrym miejscu jest...
Komparator analogowy wyzwalający pomiar ADC.
Witam. Od jakiegoś czasu zacząłem uczyć się programować ATmega8. Chciałbym teraz zrobić pomiar ADC - pomiar temperatury na czujniku KTY 81/210. Z dokumentacji czujnika wyczytałem takie informacje jak na rysunku niżej: http://obrazki.elektroda.pl/7222411300_1... Czy wystarczy bezpośrednio wpiąć KTY do atmegi?
kolega juz napisał ze stosował klika kwarców po za tym do doliczania czasu w bascom słuzy clock a nie odlicza sie czas za pomocą timerów (duzo bardziej niedokładny pomiar)
Diody nie świecą pełnym światłem ponieważ gasisz je na okres czasu równy pomiarowi przez ADC. Musisz robić to tam gdzie je zapalasz. dodatkowo znowu masz dziury w przedziałach więc zrób tak: [syntax=c] if(pomiar<30){ PORTB&=~(1<<PB1); }else if((pomiar>=30)&&(pomiar=<... PORTB&=~(1<<PB2); }else{ PORTB&=~(1<<PB3);...
Nie musisz pchać się dokładnie w jeden okres. Po prostu zapuść pomiary na stałe. I co ileśtam (dużo) pomiarów licz wartość skuteczną. Synchronizacja z okresem sieci nie jest konieczna (pod warunkiem że na jedno obliczenie wartości skutecznej wejdzie co najmniej kilka okresów sieci).
Chce wykonać pomiar prądu pobieranego przez atmege i diode. Do Atmegi podłaczyłem rezystor 1ohm na wejściu , wartość mierzona woltomierzem okolo 30mV, gdy naciskam button zapala sie dioda i wartość spada do 24mV. Vcc=5V. Dodakowo mam jeszcze uklad Max232 podłączony. http://obrazki.elektroda.pl/7791968300_1... Sprawdzałem w dokumuntacji...
Jest parę błędów które widzę już teraz. Pozwoliłem sobie wstawić to w syntax bo nie dało się czytać :) unsigned char ilosc_imp=0; powinno zostać opatrzone jeszcze etykietką volatile. Czyli: [syntax=c] volatile unsigned char ilosc_imp=0; [/syntax] Volatile wyłącza dla tej konkretne zmiennej optymalizację. Jest to konieczne jeżeli korzystasz ze zmiennej...
A usypiasz uC na czas pomiaru? Ważne też jak doprowadzasz sygnał do nogi ADC.. Czym zasilasz uC.. Jak filtrujesz całe zasilanie mikrokontrolera. Może pokaż schemat jak robisz, wtedy lepiej można Ci będzie podpowiedzieć co możesz dodać, poprawić. Jaki sygnał mierzysz? Jak często musisz mieć wynik?
W INT0 - STARTUJ dodałbym DISABLE INT0, a dopiero potem w INT1 komendę ENABLE INT0 Drgania styku "startującego" spowodują ci wielokrotne wywołania INT0 i zerowania timera i fałszowanie czasu. Drgania przycisku stopującego nie wpływają na pomiar i można je zignorować.
Daj mostek _przed_ rezystorem obciążającym przekładnik. Pamiętaj o tym, że nie wolno używać nieobciążonego przekładnika.
napij sie lipki i zastosuj to o czym piszemy tutaj caly czas. 4\/3!!
V1 - jeśli nie zależy nam na TCNT1: [syntax=c]uint16_t zm1=0 ... Start pomiaru: TCNT1 = 0; ... Koniec pomiaru: zm1 = TCNT1 / 2; //zm1 zawiera czas pomiaru w uS[/syntax] V2 - jeśli nie chcemy niszczyć zawartości TCNT1: [syntax=c]uint16_t zm1=0 ... Start pomiaru: zm1 = TCNT1; ... Koniec pomiaru: zm1 = (uint16_t)TCNT1 - zm1; zm1 = zm1 / 2; //zm1 zawiera...
Jest pełno modułów radiowych które można wykorzystać w tym projekcie. Warto by się tylko zastanowić co będzie gdy ktoś przy odbiorniku zacznie nadawać z dopałką lub siejącym CB, czy przypadkiem nie stracimy sygnału z mety. No i jeśli sprzęt ma być dokładny to musimy nadawać z dużą prędkością. Ja osobiście wykorzystuję przewód do tego, a cały mój sprzęt...
Widziałem w sieci schemat gdzie do wejść komparatora w atmedze podłączony był bezpośrednio opornik 0,1Ω. Czy możliwe jest by w taki sposób wykonać pomiar prądu?
Witam ponownie! Ostatnio zamknięto mi temat i nie zdążyłem podpytać o kilka spraw. Muszę nadmienić że na jednym uC mierzę dwa napięcia -25 do 0 i od 0 do 25 (2 podłączone ADC nr 4 i 5) na wejściu napięcia dodatniego mam dzielnik 7,5k/100k na wejściu napięcia ujemnego mam LM358 działający jako układ odwracający z rezystorami po 10k i wzmocnieniu=-1....
polecam pisać ten program w C. Kompilator opanujesz w kilka dni, a wygoda w stosunku do asm jest nieporónywalnie większa, przede wszystkim szybkość pisania kodu. W razie konieczności można użyć wstawek asm. Jak zajdzie potrzeba poznania nowego procka (np. ARM) lub przeniesienia kodu na inną machinę, to się nie namęczysz przy translacji kodu, tak jak...
tyle co wymęczyłem aparatem... zrobiłem chyba z 30 fotek... cały artykuł podzielony... [url=http://members.lycos.co.uk/mishot/e...
A czy mierzyłeś ten prąd jakimś miernikiem i czy na nim pomiar prądu nie pływa?
Witam. Chciałbym zbudować urządzenie do pomiaru odległości za pomocą ultradźwięków. Tor nadawczy i odbiorczy jest taki jak na schemacie. http://obrazki.elektroda.net/19_11579220... Teraz trzeba by było zająć się programem w Bascomie, uC to Atmega8 (sterowanie nadajnikiem to PC.2 ; sygnał z odbiornika po uformowaniu trafia na PC.3) Proszę o jakieś...
A ja zacznę od początku. Co autor miał na myśli? Czy uzyskanie precyzyjnego przebiegu na wyjściu o częstotliwości 1kHz czy precyzyjne generowanie Przerwania? I teraz poprawcie mnie jeśli się mylę. Jeżeli mam precyzyjnie generowane przerwanie i softwarowo generuję przebieg na wyjściu to i tak otrzymam przebieg tak dokładny jak dokładne przerwanie generuje....
Nie mam żadnego urazu ;-) Stosuje zmienne double ponieważ prędkość śrutu jest bardzo duża i zależy mi na jak dokładniejszym pomiarze, tak samo z timerem0 chciałem mieć pomiar czasu z dokładności do 4 miejsca po przecinku. W innym projekcie stosowałem taki pomiar napięcia jak proponujesz i było dużo za duże. Wartość dobrałem doświadczalnie i jet OK,...
Przerwania tutaj są zbędne. Polecam zrobić tutaj pomiar na flagach, ale tych sprzętowych. Z jaką częstotliwością działa ta atmega ?
Jak zwykle Kolega ma rację, wyrzucenie Waitms 750 załatwiło sprawę. Oczywiście wstawienie timera jest chyba najlepszym rozwiązaniem. Tylko coś nie tak mi wychodzi. Dołożyłem Timer co 800 milisekund [syntax=basic4gl] Sub Pomiar: Disable Interrupts If Flaga_delay_ds = 1 Then 1wreset 1wwrite &H55 1wverify Dsid1(1) 1wwrite &HBE I1 = 1wread(2) Flaga_delay_ds...
AVE... Układ używa przetwornika AD do pomiaru czasu ładowania i rozładowania kondensatora...
Kondensator mam w tej chwili 47uF, ale niewiele zmienił. Co do migania z podpiętym czujnikiem temperatury to fakt - pojawia się. Podłączyłem DS18B22 i mam wskazanie 31 stopni, mimo temperatury około 22 stopni - możliwe że walnięty DS ?? To tak przy okazji, bo pomiar temperatury traktuje jako bajer, dla mnie istotne przy wyborze projektu było: prosta...
Oprócz obowiązkowego RC, a zwłaszcza kondensatora na wejściu ADC, ja bym jeszcze dorobił filtr dolnoprzepustowy w oprogramowaniu. Regulacja czegokolwiek na podstawie pojedynczego, nieuśrednionego pomiaru jest dość ryzykowna.
Jestem ciekaw w jakim mieście studiowałeś? Ogólnie to przychylam się do większości wypowiedzi - projekt jest mizerny. Szczerze, trochę wstyd to było pokazywać na obronie. Jeżeli chodzi o wykonanie to rozumiem, że mogłeś nie mieć potrzebnych narzędzi, ale myślę że jakąś wkrętarkę/wiertarkę, "kawałek" wiertła i mały pilnik może gdzieś byś pożyczył. Nie...
No i bardzo dobrze podaje, jak sądzę podajesz 5,1V przez ten dzielnik z rezystorów 4k7 i 15k? To napięcie po tym dzielniku (to które widzi ADC) to właśnie 1,21V, czyli masz idealnie. Jerdyne co trzeba zrobić to uwzględnić wartość dzielnika w finalnych obliczeniach.
Witam. Najpierw wysyłasz rozkaz pomiaru temperatury, później z pomocą timera lub nawet zmiennej zwiększanej w pętli odliczasz czas pomiaru lub większy (mikroprocesor w międzyczasie normalnie wykonuje program). Po tym odczytujesz wynik pomiaru z DS1820, co nie trwa zbyt długo. Pozdrawiam. EDIT: Uzupełniłem posta
A te potencjometry to mają jaką wartość? Zauważ, że na wejściu ADC w AVR jest kondensator, który trzyma napięcie w czasie samplowania. On musi się naładować, a po przełączeniu kanału naładować/rozładować. W zależności od częstotliwości sygnału impedancja wyjścia samplowanego układu nie powinna przekraczać 3-4kOm. No i przełączając kanały ADC musisz...
Zanik napięcia zasilania powinieneś mierzyć przed diodą D3, żeby kondensator filtrujący C1 nie wpływał na wynik pomiaru (po wyłączeniu zasilania, napięcie na C1 powoli opada i mikrokontroler po wykryciu zaniku napięcia może mieć za mało czasu na zapis do pamięci EEPROM). Podłącz rezystor R2 przed diodą D3. Dobrze by było trochę zmniejszyć wartości rezystorów...
OK, to Ciebie naprowadzę :) Masz zegar 8MHz. Używasz preskalera ADC, który dzieli sygnał zegarowy przez 128 (patrz Twój program). Czyli sygnał taktujący ADC wynosi: ... oblicz sam Następnie oblicz ile czasu trwa jeden cykl sygnału taktującego ADC. Jeden pomiar ADC trwa X cykli sygnału taktującego ADC. X znajdujemy w datasheet w tabelce: ADC Conversion...
Wg dr powinienem wykorzystać 51 "bo jest lepsza" Mam wrażenie, że twój promotor zatrzymał się w poprzedniej "epoce". Generator w oparciu o ATMEGA8 (z wykorzystaniem wbudowanych liczników) jest wystarczająco dokładny i stabilny do tych celów. Nawet jeśli już generator zrobić osobno to wykorzystaj do tego przerzutnik schmitta (konstrukcja spotykana czasem...
Z tego co wiem pomiar metodą kolejnych przybliżeń z ADC trwa jakiś czas. Co będzie, jeśli w tym czasie nastąpi przerwanie? Konwersja ADC realizowana jest sprzętowo, to co w tym czasie robi procesor nie ma na nią wpływu. Także ew. przerwanie z pewnością nie wpłynie na wynik konwersji.
Cześc. Pytanie jest takie: Czy istnieje możliwośc pomiaru napięcia w/w procesorku dodatniego i ujemnego?? Np +5 i -5 v czy pomiar dokonuje sie tylko w gałęzi dodatniej?? Chodzi mi oczywiście o pomiar w jednym czasie. Dziękuje za odpowiedzi.
Bo tam masz 23 a nie 230 - w funkcji pomiar() juz dzielisz wynik przez 10. Chyba zamiast: temp1=(double)ADCW; chciales zrobic: temp1+=(double)ADCW; BTW, na AVR double=float, a w tym przypadku w ogole obliczen zmiennopozycyjnych nie potrzebujesz, ale jesli masz miejsce i czas na nie to czemu nie :)
Wszystko zależy od tego jaką dokładność pomiaru potrzebujesz. Jeśli plus minus sekunda, to stoper i ręka wystarczy. Szukasz gotowego urządzenia, czy jesteś wstanie sobie sam zrobić i zaprogramować proste funkcje Timera popularnego mikrokontrolera np. Atmega8, a wynik wyrzucać na LCD albo poprzez UART do terminala komputera?
Witam. Chciałem w celach edukacyjnych zrobić częstotliwościomierz. Ponieważ nie mam za bardzo skąd wziąć zewnętrznych impulsów postanowiłem, że jeden pin procka będzie je generował, a przerwanie int0 będzie liczyć ile tych impulsów było. Do odmierzenia czasu posłużył timer1, który ma odliczyć sekundę (więc wynik od razu w Hz). Po upływie sekundy ma...
Podłącze się pod temat: Postanowiłem pobawić się trochę dalmierzem opartym na SRF05 i korzystając z innego rozwiązania przekodowałem (ze zrozumieniem) program, który ma za zadanie pokazywać odległość od przedmiotu. Istotą mojego problemu jest to, że atmega32 idzie w maliny i nie bardzo wiem dlaczego... pomiary wykonują się, ale czasami procek wiesza...
- Nie mierzysz bez obciążenia, bo obciążenie stanowi sam układ pomiarowy. - kondensatory nie są doskonałe, z czasem wytracają zgromadzoną energię - mostki prostownicze nie są doskonałe, mają jakiś określony recovery time (nie wiem jak to po polsku), polega to na tym, że przez pewien moment po zmianie polaryzacji na zaporową dioda przewodzi w kierunku...
Widzę, że ponad miesiąc czasu upłynął, więc jeśli ktoś ruszył to pod BASCOMem, to niech się pochwali :-)
atmega8 pomiar pomiar atmega8 pomiar czasu sprint
sterowanie dwoma obwodami compaq 6720s bateria programy skanera brother
satel powiadamianie radiowe komunikacja radiowa satel
Czy można podłączyć soft start do lodówki? Zmiana jasności wyświetlacza w Blaupunkt Tokio 110