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...
Żeby otrzymać wynik w ms mnożę wartość licznika przez 1,024. Żeby otrzymać wynik w ms dzielisz wartość licznika przez 1000
Dziękuje za tą uwagę na pewno to sprawdzę i dam znać jak będą pozytywne efekty.
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...
Witam ponownie Zrobilem tak : ustawiam jedna z koncowek portu procesora, co jest sygnalem dla pozostalej czesci ukladu do rozpoczecia generowania impulsu. W tym samym czasie uruchamia sie Timer2 zaczyna sie zliczanie przepelnien. Po zakonczeniu impulsu jego opadajace zbocze jest zrodlem przerwania INT1, co powoduje zatrzymanie Timer2. Teraz mnoze ilosc...
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...
Ma 6 kabli bo ma gaszenie dodatkowo, co do sterowania wyprzedzeniem za pomocą mikrokontrolera to taki mikrokontroler można wpiąć przed fabrycznym zapłonem - między czujnikiem na magnecie a modułem zapłonowym. Mikrokontroler - wystarczy AVR np Atmega8. Cała zasada jest taka że mikrokontroler z impulsów dawanych przez czujnik w magnecie oblicza prędkość...
Jest pewien, maleńki problemik z dekodowaniem sygnału żyro. Powiedzmy, że pobudzamy go sygnałem średnim tzn. 1,5ms. Jak wiadomo, żyro powinno skorygować wartość tego sygnału o +/-0,5ms. Nie może jednak tego zrobić, do czasu zakończenia impulsu wejściowego, w związku z czym sygnał na wyjściu zacznie się, dopiero kiedy ten na wejściu się skończy. Niestety...
A czy bedą czesciej impulsy czy rzadziej to i tak sie nie doczeka. Na to jest prosta rada: Gdy impulsy nie przychodzą przez okreslony czas to znaczy że samochod stoi i na wyswietlaczu pojawia sie zero i żadna filozofia to zrelizować programowo gdzy wystarczy liczyc przepelnienia przerwan. Nie zmienia to faktu że gdy impulsy są duzej czestotliwosci to...
TRIG potrzebuje impulsu 10us by wyzwolić pomiar. W odpowiedzi na pinie ECHO mamy impuls o różnej długości, zapewne dłuższej niż 10us. Pin Echo HCSR04 połączyłeś z pinem TRIG. Sprawdzałeś, czy nie będzie sam siebie wzbudzał?
Do zrealizowania tego zadania nie trzeba nawet wykorzystywać TSOPa. Wystarczy prosty detektor na diodzie IRED i fotodiodzie. Za pomocą procka możesz wykonać prosty i bardzo efektowny licznik impulsów, ale pomiar przechodzących osób bd jedynie szacunkowy...
Dla mnie wydaje się być dosyć oczywiste, że jeżeli sygnały na dwa wejścia przychodzą jednocześnie i niezależnie, to też jednocześnie, a nie po kolei, należy je obsługiwać. Zatem cała idea Twojego programu jest niepoprawna. Poprawnie, to w programie powinny się (z grubsza) jednocześnie i niezależnie wykonywać trzy rzeczy: - odczyt czujnika nr 1 (pomiar...
http://obrazki.elektroda.pl/8007934500_1... Witam szanownych kolegów! Do zaprezentowania mam swoją nową konstrukcje tj. Mikroprocesorowy miernik ESR. Parametrami które w pierwszym przybliżeniu charakteryzują kondensator elektrolityczny i mogą podlegać nieniszczącym pomiarom są: pojemność kondensatora oraz szeregowa ekwiwalentna rezystancja...
Będziesz musiał zjechać częstotliwością PWM na tyle aby łapać czas między impulsami z wentylatora, gdy PWM jest na H.
chyba to powinno byc jako pierwsze : $regfile = "m8def.dat" $crystal = 8000000 i nie zapomnij przestawic fusebity na zewnetrzny zegar jaki ma byc algorytm pracy ? bo najczesciej jest to uklad dzialajacy podobnie jak radar wyslanie krotkiego impulsu o czestotliwosci ok 40khz pomiar czasu przelotu i odebranie odbitego impulsu. Twoj moze ma pracowac w...
http://obrazki.elektroda.pl/3185739500_1... Witam. Przedstawiam dziś kolejne urządzenie z serii: Atmega8 + LCD z nokii 3310. Jest to graficzny rejestrator napięć oparty na mikrokontrolerze ATMEGA8A - AU i jego wewnętrznym Przetworniku A/C. Jest to coś ala oscyloskop cyfrowy, jednak do oscyloskopu sporo mu brakuje głównie ze względu na ograniczenia...
Powinieneś raczej mierzyć prąd na rezystorze diody (tylko że ten rezystor dla ułatwienia pomiaru musi być od strony masy). Żeby mierzyć w połowie impulsu to musisz uruchomić przerwanie od Timera1 i w nim dać funkcję Getadc. A jeżeli już mierzysz napięcie zasilania a nie prąd diody, to nie musisz trafiać w połowę impulsu więc już teraz powinno działać.
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ł...
Przykład na ATmega8: http://mikrokontrolery.blogspot.com/2011...
Witam Może zostałem źle zrozumiany :) opisywaliśmy jedną z koncepcji, czyli zastosowanie Atmegi i jej przetwornika, ale : - nie sugerowałem zasilania PT100 z wewnętrznego źródła Atmegi, tylko wykorzystania źródła wewnętrznego do ADC (zakres 0V - 2,56V ), - jak starałem się zasugerować pomiar bezpośredni napięcia nie wypali z powodu braku rozdzielczości,...
Witam. Robie stanowisko na uczelnie o silniku krokowym. Zrobilem sterownik na Atmega8. Silnik unipolarny. Problem jest taki ze przy wolnym ipulsowaniu silnik co krok drga. Tarcza po kroku trzesie sie. Tak jakby wal byl z jakies sprezynowej stali. Jest impuls, silnik obraca sie o krok i wyglada to jakby jechal krok do przodu i 1/4 kroku do tylu. Przy...
...nie odrzucam sposobu mierzenia prędkości poprzez pomiar czasu pomiędzy kolejnymi impulsami. Lecz nie bardzo mam pomysł jak to zrealizować programowo. Będe wdzięczny za podpowiedzi. W sumie to jest bardzo proste, wykorzystaj do tego jakiś timer z dość dużą częstotliwością (czym większa tym dokładniejszy pomiar). Zerujesz go w momencie przyjścia impulsu,...
Dziękuję janbernat za fantastyczną i rzeczową pomoc oraz wkład pracy w rozwiązanie mojego problemu. Konrad Nie sadze aby ta metoda pomiarowa i sposob realizacji daly oczekiwany rezultat. Przeciez w aparatach fotograficznych czas otwarcia migawki nie jest zalezny od czasu 'wcisniecia przycisku', za wyjatkiem powiedzmy pracy w trybie "na czas" (B), a...
Czyli przyjmujemy, że nie ma problemu z drganiami styków i innymi zakłóceniami. Jeżeli dobrze zrozumiałem zasadę działania czujników oraz Twój cel i chcesz wykorzystać obydwa INTx, to zrobiłbym tak: 1. pod INT0 podpinasz sygnał decydujący o starcie i końcu zliczania 2. pod INT1 podpinasz sygnał, który ma być zliczany Pseudo kod: 1. inicjacja: 1.1 INT0...
a jak możnaby ściągnąć jakiś kod z pilota, żeby zaprogramować go na ATmega8? Czy ktoś mógłby podać mi taką instrukcję, dla przykładowego bitu - nawet nie RC5, ale np 110001101010 przy częstotliwości impulsu 36KHz. Ja używam takich komend: ... ...//przed wejściem do nieskończonej pentli, uruchamiamy przerwanie INT0 od opadającego zbocza sygnału cbi(MCURC,...
Do pomiaru czasu pomiędzy impulsami proponuje zastosować ICP (Timer/Counter1 Input Capture Pin). Po pojawieniu się impulsu z miernika będziesz miał w rejestrze ICR1 (Input Capture Register) wartość licznika Timera1. Możesz obliczyć długość trwania impulsu w taki oto sposób: volatile uint16_t PulseWidth; volatile bool flPrzerwanieICR1=false; ISR(TIMER1_CAPT_vect)...
jej indukcyjność to 150uH ale opór prawie 17Ω :| . No i co z tego? Ten opór po prostu dokłada się do impedancji "widzianej" dla impulsu poboru prądu, to nawet lepiej. A dla statycznego poboru prądu rzędu nawet 1mA masz tam spadek 17mV. I wydaje mi się że ładowanie kondensatora na VREF powoduje spory spadek napięcia na AVCC, przez co przetwornik...
Jak już Kolega nabierze wprawy z przerwaniami i timerami to można osiągnąć zamierzony cel w następujący sposób: Dajemy sygnał (którego długość trwania chcemy mierzyć) na wejście INT0 oraz INT1 jednocześnie, przy czym pierwsze ustawiamy na zbocze rosnące a drugie na spadające, w przerwaniu INT0 startujemy timer1 a w przerwaniu INT1 zatrzymujemy go, potem...
Witam Mam prosty układ z Atmega8A i czujnikiem HC-SR04. uC taktowany fabrycznie 1MHZ. Wszystko niby działa poprawnie - dostaję poprawne pomiary od 2cm do 4m. Problem w tym że nie wiem do końca dlaczego. Z tego co rozumiem żeby otrzymać zmierzoną odległość, należy: 1. Podzielić szerokość impulsu w us przez 58 2. Obliczyć: Czas trwania stanu wysokiego*prędkość...
imer2 ma odmierzać czas między przerwaniami INT0 i INT1 z dokładnością 1uS Koniecznie musi być pomiar pomiędzy tymi wejściami? Do takich precyzyjnych pomiarów używa się trybu przechwytywania. Używanie do tego przerwań zewnętrznych jest nieporozumieniem. Wystarczy, ze będziesz miał aktywne inne przerwania i co jakiś czas wejście w INT0 czy INT1 będzie...
masz rację na temat enkodera praktycznie nie ma zbyt wiele informacji , może kontakt z tym co pozostało po PZO pozwoli na otrzymanie dokładniejszych informacji http://www.pzo.warszawa.pl/ myślę że jednak to 512 impulsów na obrót , zapytam czy zastosowałeś układ kształtowania impulsu z enkodera , z informacji które można jeszcze znaleźć wynika że były...
Staram się zrobić prosty enkoderek do pomiaru przebytej drogi. Składa się on z QRD1114 i tarczy z naniesionymi naprzemian czarnymi i białymi wzorami, pasami, wycinkami koła (jak zwał tak zwał, swego rodzaju szachownica, chyba wiadomo o co chodzi). Od białego promień się odbija, od czarnego nie, itd. i to daje nam sygnał który podaje na licznik T1 mikroklocka...
Witaj, Za co jest odpowiedzialny Timer0? Za określenie częstotliwości granicznej? Czy masz wolny Timer 1? Jeżeli tak, to moim zdaniem strasznie sobie to komplikujesz. W końcu Twoim zadaniem jest zmierzenie okresu przebiegu o częstotliwości, którą podajesz z generatora, a od tego jest tryb Capture, czyli pomiar długości impulsu. strona 83: Input Capture...
Witam Od pół roku montuję i modyfikuję wielozadaniowy układ do samochodu osobowego, oparty o Atmega8 (program Bascom). Funkcje: -pomiar temperatury i ciśnienia oleju -pomiar składu mieszanki -pomiar temperatury cieczy chłodzącej -odczyt zerowego położenia przepustnicy -pomiar prędkości obrotowej silnika (pomiar czasu między impulsami zapłonowymi) -regulacja...
Nie da się zrobić pomiaru co 0,01 s dla takiego przedziału częstotliwości bo to bez sensu. Dla 20 Hz masz przecież impuls co 1/20 s czyli 0,05 s a dla 10Hz masz co 0,1 s. Musisz przyjąć jakieś sensowne odświeżanie. Co do pomiaru to licznik 8 bitowy wystarczy po prostu po każdym przepełnieniu licznika zwiększaj jakąś zmienna o 1 a po odczytaniu impulsu...
Pytanie jak szybko kręci się koło. Jeżeli nawet będzie to 3000 obr/min, to jeden obrót zajmie 20 ms. Przerwanie od timera możesz uruchomić co 5 ms, a przy krótkim programie to nawet znacznie częściej. Czyli w najgorszym przypadku będziesz miał cztery odczyty licznika na jeden obrót koła. To będzie jeszcze mało? Z obrotami nie bedzie az takiego problemu...
Witam Od początku dzisiejszego dnia "męczę" się z ultradźwiękowym miernikiem odległości HC-SR04. Poszperałem w internecie napisałem program itp. Nawet działa, ale tylko do określonej odległości (ok. 30cm). Połączenia raczej mam dobre, próbowałem odmierzać impulsy z wykorzystaniem wejścia ICP1 (PB0 i wtedy diody wskazujące odległość bardzo słabo świeciły),...
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....
Witam. Zrobiłem układ jak w załączniku. Mam pytanie do Kolegów mianowicie: Chce by układ po wykryciu zera wykonał pomiar czyli .. . zero = input if zero=0 then getadc(x) . ale mam problem z wykryciem zera tzn. układ stale jest w stanie wysokim i nie wykrywa spadku - impulsu z transoptorów. Jak powinien wyglądać fragment programu by poprawnie to działało??...
w końcu zrozumiałem co miał na myśli tmf , jeśli dobrze rozumiem to miałbym podać te 6 sygnałów na wejścia i nie korzystać z timera jako countera tylko zrobić przerwania min połowę od najkrótszego impulsu, stany zapisywać w zmiennych, zrobić porównanie poprzedniego i jeśli zaszła zmiana np z 0 na 1 to wtedy tak jakby robię timer na zbocze narastające,...
Dobra pierwsze podejście do kodu: Atmega8 ustawiona fusami na 8Mhz Najpierw dobór preskalera. Jak już wcześniej pisałem pomiar jest od 1,2-1,9ms więc zliczanie czasu moim zdaniem powinno być mniejsze od 0,05ms. Dobrałem preskaler 64 po czasie 524.288ms następuje przepełnienie T1 dla 0xFFFF, a więc jeden takt zliczania ma 524.288/65535 czyli 0,008ms...
Start Timer1 If R = 1 Then Stop Timer1 A = Timer1 End If Locate 1 , 1 Lcd A Wait 1 Ale chyba coś ze sprzętem mam nie tak, bo ciągle A wyświetla że jest zero (nie wchodzi do IFa) Hmm... ok załączasz Timer1 i odliczasz impulsy do czasu wystąpienia impulsu na R(z odbiornika) ale nie uwzględniłeś że ten impuls jest bardzo krótki i może wystąpić podczas...
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...
Ślicznie dziękuję wszystkim, kod działa, i to jak=]. Poprawiony kod, z eliminacją zakłuceń #include <avr/io.h> #include <avr/interrupt.h> #include "remote.h" #include <compat/deprecated.h> #define OSC 4 #define LED_ON PORTC |= 0x02 #define LED_OFF PORTC &= 0xFD unsigned int licznik=0; void waitms(unsigned char x)...
Witaj. Skądś znam ten problem, ktoś mnie o coś takiego prosił. Tyle, że wartości częstotliwości i wypełnienia były ustawiane potencjometrami. Programik był napisany na ATtiny26, wartości częstotliwości i wypełnienia nieco sie różnią, ale możesz sobie to zmienić. Programik testowałem (ale bez oscyloskopu). W razie błędów proszę o łagodny wymiar kary...
Obecna wersja testera stanów logicznych CMOS/TTL wygląda następująco: http://obrazki.elektroda.net/95_12693130... krótki opis: P1 - złącze programujące uC P2 - VDD + GND podłączone do badanego układu P3 - zasilanie układu z bateri 9V J1 - sonda Przycisk S1 - rozpoczynamy pomiar Przycisk S2 - CMOS/TTL U4 - Bufor - sygnał CMOS za jego pomocą...
Kod na wyświetlacz dałem tylko poglądowo aby mieć możliwość podglądu działania programu w czasie testów. W takim razie bez wyświetlacza i z cofaniem sie bramy przy wykryciu przeszkody. Testuje przyciski , styczniki i pobór prądu cały czas około 100 razy /sek. w zależności od częstotliwości procka , i reaguje natychmiast . Przeszkody wykrywa przy zamykaniu...
Źródłem wszystkich problemów jest LM358 i sposób jego podłączenia. To nigdy nie będzie działać prawidłowo. Zobacz tutaj: http://www.ti.com/lit/ds/symlink/lm158-n... Możesz spróbować z układem z rysunku 33 lub 39. A na rysunku 1 widać, że minimalne napięcie na wejściu + to ~2V. Na wyjściu też nie uzyskasz więcej niż ~3,5V, ponieważ ten układ ma ograniczenie...
r"]Idę w jakimś kierunku ....... ? Niezupełnie, nie najlepsza ta droga..... Po pierwsze: wybór processora i parametrów. -Attiny13; praktycznie nie masz możliwości taktowania go 10 Mhz. Masz do wyboru: 1.2, 4.8, 9.6 Mhz. albo też 'zasilić' go (CLK1) z gotowego (zewnętrznego) źróła zegarowego co nie ma w zasadzie ekonomicznego sensu. Jego timer0 z przyjętym...
... wysłanie sygnału analogowego ... Wysyłanie kojarzy się z jakimś sposobem komunikacji itp, a nie z zamianą odległości (wyrażonej długością impulsu na wyjściu czujnika) na sygnał analogowy, który ma zakres np. 0-5V. Skoro napisałeś, że potrafisz zmierzyć odległość, to powinieneś podać jakie wartości skrajne ten pomiar przyjmuje i jakie chciałbyś...
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.
Filtr to R5 i C2 na schemacie który wstawił Paweł Es, właściwie to ja pierwszy go wyrzuciłem. A teraz myślę czy właśnie to filtrowanie napięcia zasilającego wzmacniacz nie jest konieczne. Podaj też tu parametry tego regulatora PWM (częstotliwość - czy stała wartość, ile? czy też zmienna, a stała wartość impulsu, ile?). Co to jest za silnik (typ, model)?...
To może dodaj rezystor o wartości równej R1 między diodę i PD5? Możesz też wstawić dodatkowe rezystory rzędu R1 x20 do masy? W ten sposób każdy kanał ADC będzie mierzył coś sensownego dla każdej polaryzacji i nie będzie problemu z podciąganiem wejścia do zasilania przez wewnętrzny pull-up. Rozważyłbym też podłączenie do PB1 i PB2, które są wyjściami...
Rozumiem Twoją ideę, ale nie za bardzo wiem jak ją zaimplementować w Bascomie. Na razie mam coś takiego: http://obrazki.elektroda.pl/7270697700_1... Nie wiem czy coś takiego się sprawdzi przy większej prędkości pracy i transmisji radiowej, czy tam nie będzie zbyt dużych rozbieżności w czasie trwania? Co do Twojego pomysłu spróbuje coś...
http://obrazki.elektroda.pl/4328489600_1... Urządzenie jest przeznaczone do pomiarów napięcia i prądu stałego w laboratoryjnym zasilaczu. Funkcje i parametry dwuzakresowy woltomierz nr 1, zakres pomiaru od 0 do 100V 1. Od 0,00 do 9,99V, rozdzielczość pomiaru 0,01V, 2. Od 10,0 do 100,0V, rozdzielczość pomiaru 0,1V. Amperomierz od 0,00...
Ależ szanowni koledzy, programując procesory pozbywajmy się zakłóceń (drgań styków) metodami programowymi (stosując filtrację cyfrową). A więc: Proponuję zastosować timer do generowania przerwań co około 2.5ms. W przerwaniu testujemy wejścia portów nie zawracając sobie głowy jakimiś 'drganiami styków'. Sprawdzone, pewne, proste. Czas 2.5ms dobrany jest...
To jest fragment kodu, którego używałem , żęby zrobić obsługę licznik, ale nie działa w symulacji $sim $regfile = "m8def.dat" 'Informacja dla kompilatora. $crystal = 8000000 'Też dla kompilatora,zastosujemy kwarc zewnętrzny 10MHz. Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E =...
Witam, Napisalem program na atmega8 do regulatora dwukierunkowego, którego schemat można znaleść tutaj. [url=http://www.modelhobby.republika.pl/... Licznik pracuje z zegarem 8Mhz i prescalerem 64. Czyli licznik powinien zapelnić sie minimalnie po 2ms. Sygnał z odbiornika trwa od 1ms do 2ms. Najpierw zliczam czas impuslu. W zależności...
Witam Na poczatek proponuje przecztac wątek http://www.elektroda.pl/rtvforum/topic39... a szczególnie przyjrzeć się 2 wypowiedzi użytkownika RSP "Sprawdzona metoda reanimowania akumulatorów ołowiowych ( wszystkich ).... " a później przeczytać sobie to http://www.ipenz.org.nz/ipenz/Publicatio...
Witam Kod jak poniżej służy do zliczania czasu trwania jednego impulsu (ta funkcja działa prawidłowo) oraz do zliczania czasu (w celu zliczania ilości impulsów na jednostkę czasu). volatile unsigned char pomiar = 0; volatile uint32_t cw_impuls,impuls = 0; unsigned char sreg; float tc1; char czas[8]; void Inicjalizacja(void) { LCD_init();...
Cześć. Mój problem dotyczy Atmegi8 i obsługi Timera2 w trybie CTC. Poniżej przedstawie napisany kod i problem który próbuję rozwiązać od pewnego czasu. [syntax=c] #define F_CPU 1000000UL #include <avr/io.h> #include <avr/interrupt.h> volatile int zrob_pomiar=0; volatile int odswiez_wyswietlacz=0; int main() { TIMSK |= (1 << OCIE2);...
Witam, Napisałem prosty program wysyłający i odbierający sygnał z diody podczerwonej. Układ nadajnika składa się z: uC ATMEGA16, trzech przycisków i diody IR TSAL6200, a układ odbiorika z uC ATMEGA8, odbiornika IR TSOP1138 i diody led. Obok odbiornika dałem też elektrolit 47uF. Oto program nadajnika: [syntax=c] #define F_CPU 8000000L #define SET(port,...
Witam. Mam następujący problem z niedziałającym TWI. Mam kod na atmegę w C. /* Czujnik ultradzwiekowy sterowany z magistrali i2c C= 2010 Grzegorz Eliszewski grzegorz(at)eliszewski.pl esio.eu */ #define F_CPU 12000000UL // czestotliwosc kwarcu 12MHz #include <avr/io.h> #include <util/delay.h> // obsluga opoznien #include <compat/twi.h>...
A czy wiesz o tym ,że liczniki (nie wszystkie) mogą wprost liczyć impulsy pochodzące z zewnątrz? Po co używać Inty i co każdy impuls przerywać główny program, skoro masz do tego piękne narzędzie?
Program przepisałem całkowicie z http://student.agh.edu.pl/~coni/avr_1wir... zmieniłem tylko port na PC5. Najpierw podłączyłem dobrze i otrzymywałem takie coś: -16.1\0x00\0x00\0x00-16.1\0x00\0x00\0x00... No w moim mieszkaniu to tak ok 24°C. Potem wyciągnąłem...
Oto reszta kodu. Jak policzyłeś dokładność? Tzn. jak uzasadnić to, że dla 4 impulsów mam 25% dokładności? Rozumiem, że 4 impulsy to w sumie 100%, ale nie rozumiem źródła tej niepewności. Gwoli wyjaśnienia - kilku zmiennych nie używam, to pozostałości po starych kodach (wiem, że powinienem je skasować :) ) a przetwornik ADC jest po to, że uruchamiam...
Witam Mam problem z programem odmierzającym czas. Mikrokontroler współpracuje z czujnikami ultradźwiękowymi. Ogólne założenie programu jest takie że generuje paczkę 8 impulsów prostokątnych o częstotliwości 40KHz następnie 4ms na wyciszenie układu. Generowanie paczki wykonywane jest za pomocą Timera2 w trybie CTC. Następnie za pomocą Timera1 powinien...
Witam Piszę program, który ma mierzyć długość impulsu podawanego z zew. źródła jakim jest odbiornik RC, częstotliwość impulsów to 50Hz, a ich długość mieści sie w przedziale 1ms-2ms. To mój pierwszy program na AVR w którym obsługuje przerwania zew. i mam pewien problem, program już napisałem, sprawdziłem go na symulatorze i wydaje się działać poprawnie,...
Poniżej źródło w którym mam: -pomiar ADC -pomiar szerokości impulsu PWM wysterowanie przekaźnika -USART Mikrokontroler ma spełniać funkcję sterownika do ledów jako oświetlenie samolotu z wyróżnieniem wszystkich etapów startu jak kołowanie włączenie silników itp. [syntax=c] #include <avr/io.h> #include <inttypes.h> #include <util/delay.h>...
Masz rację, ale maje pytanie bardziej dotyczyło samochodów w których są wskaźniki wychyłowe. Chyba w Pandzie jest to tak zrobione. Przecież zanim weszły silniki krokowe musiało coś takiego powstać? Jak dotrzec do takich instrukcji. A może z innego zastosowania można podpatrzeć? Jakies sugestie? A tak przy okazji. Macie pomysł na pomiar prędkości, raczej...
Witam! Mam problem co do odczytu temperatury z czujnika DS18B20. Jest podłączony pod PD7. Wynik to -0.1. Jeżeli odepnę czujnik wynik jest ten sam. Wie ktoś dlaczego ? Kod: ... #define WE 7 #define PORT_1Wire PIND #define SET_1Wire DDRD &=~_BV(WE) #define CLEAR_1Wire DDRD |=_BV(WE) char buf[8]; //resetujemy magistrale - czekamy...
Witam to mój pierwszy post na tym forum, stąd możecie mi wierzyć jak bardzo jestem zrozpaczony:) jeśli temat jest w złym miejscu to prosiłym moderatora o przeniesiegnie i z góry przepraszam:) zwykle staram się rozwiazywać wszystkie problemy sam ale tym razem mam coś czego nie jestem w stanie zrozumieć. Pracuję chwilę nad programem którego działanie...
Czyli wyczyszczenie magistrali następuje w pierwszej linijce tej funkcji, tak? Mam cały program i coś jest nie tak. Temperaturę z MCP9700 odczytuje prawidłowo, a z dallasa mam ciągle "cisza". Poza tym wszystko działa bardzo wolno i jak wyjmę kondensator filtrujący spomiędzy pinów MCP9700 to nie reaguje na zmianę napięcia. Procesor to ATmega8 i jest...
http://obrazki.elektroda.pl/9589280700_1... HPS 2014 Hybrydowy laboratoryjny zasilacz sieciowy. Parametry użytkowe zasilacza w skrócie: 1. Wykorzystanie tanich i łatwo dostępnych elementów. 2. Wydajność prądowa min 3A (dla niskich napięć może dochodzić do 5A). 3. Rozdzielczość DAC 12bit. (filtrowany PWM 4.9kHz) 4. Rozdzielczość ADC...
1. Każdy moduł lokalny ma oddzielne przewody sterowania do centralki? 2. Moduły mają jakieś połączenia do komunikacji między sobą, czy komunikacja odbywa się przez centralkę? Ad1. Każdy moduł ma 2 przewody komunikacji z centralką, z czego jeden jest wspólny(informacja z centralki do wszystkich sterowników "leci" po jednym przewodzie) Ad.2 Komunikacja...
operuj na zmiennych typu uint8_t (osobno część całkowita, osobno dziesiętna), wówczas nie będziesz musiał marnować kodu na float i jego konwersję, co jest " trochę nieoptymalne". poszukaj w sieci bibliotek Petera Danneggera - będzie szybciej. poszperaj w postach na forum, było już chyba wszystko na temat tego czujnika. Wydaje mi się że unit8_t nie...
Podobny temat był ostatnio tylko dotyczył takiej zabawki do roweru. Z obliczeń wyszło, że pomiar impulsów na sekundę jest mało dokładny. Wypada liczyć ilość ms jednego obrotu. Przy motocyklu będzie tylko wyższa prędkość maksymalna.
Lecz jeśli jest to wystarczające może mierzyć kanały kolejno. Jeden po drugim. Tak, ale kolega chce uzyskać dokładność 1 obr/min , oraz jak kolega pisze mają być jednocześnie wyświetlane, mierząc kanały kolejno w danej chwili brany pod uwagę jest tylko jeden czujnik. Jeszcze taka uwaga, o jakich prędkościach mówimy? Dla małych prędkości obrotowych...
Witam, Chciałem obsłużyć 1-wire na atmega8 z czujnikiem ds18b20, napisałem program i zaczęło wszystko działać dobrze. Ale jak zwiększyłem taktowanie uc powyżej 1MHz to już komunikacja z termometrem nie działa i nie mam już pomysłów dlaczego? Do DS18B20 jest podpięty GND, VCC i rezystor 4,7k między VVC - DQ. Diody podpięte do PC0, PC4, PC5 sygnalizują...
Witam od dobrych paru dni męczę się z wyświetleniem temperatury na wyświetlaczu 7-segmentowym. Sam wyświetlacz działa bez najmniejszych zarzutów :[syntax=c] #include<avr/io.h> #include<util/delay.h> #include<avr/interrupt.h> #define wyjA (1<<PB0) #define wyjB (1<<PB1) #define wyjC (1<<PB2) uint8_t tab[]={0x40,0xf9,0x24,0x30,0x19,0x12,0x0...
Witam! Posiadam następujący przepływomierz: http://obrazki.elektroda.pl/8616298100_1... O parametrach: Pomiar bez reduktora: od 60l/h do 2100l/h 1 litr to 492 impulsy Pomiar z reduktorem od 30l/h do 600l/h 1litr to 1200 impulsów Napięcie zasilania12V. Chciałbym mierzyć jego impulsy za pomocą atmega8. Sygnał wychodzący z impulsatora ma...
Witam potrzebuje układ który wykonywał by pomiar obrotów 100tys/min plus odczyt z termopary typu K Czy układ Atmega8 podoła zliczaniu impulsów z częstotliwością 3500Hz? prosiłbym o sprawdzenie poprawności narysowanego układu ewentualnie jakieś propozycje lub sugestie Jako układ do odczytu danych z termopary zastosowałem Układ MAX6675 http://silaresearch.com/data/max6675.pdf...
No, tak dobrze to nie jest. AVR-y (a w nich timery) nie mogą poprawnie zliczać impulsów o częstotliwości większej niż połowa częstotliwości zegara zakladając na wejsciu wypełnienie przebiegu 50%. Niezbędne będzie zatem zastosowanie preskalera. Proponowałbym ATMEGA8 z kwarcem 16MHz i z prescalerem /4 zbudowanym np z cyfrówki 74F74. Mamy zatem poniżej...
Uzupełniając poprzedni pomysł - spinasz wszystkie sondy na komparator cyfrowy, drugi komplet wejść komparatora spinasz z sondami przez zatrzask. Pojawienie się zbocza (zmiana poziomu) na wyjściu komparatora sygnalizuje zmianę stanów wejściowych (wystarczy jeden pin przerwania w procesorze). Po pobraniu danych przez procesor aktywizujemy programowo zatrzask...
Jaki uC określa dział;) To jaka będzie amplituda sygnału (oraz kształt) wymaga jedynie użycia odpowiednich elementów wejściowych. Do ustawienia rejestrów nic Ci bardziej nie pomoże jak dokumentacja techniczna - wpisz w googlach nazwę procka i odpal PDF'a (datasheet). Co do sposobu pomiaru częstotliwości to masz na szybko dwie metody - pomiar okresu...
Poczytałem trochę bo właściwie nie wiedziałem nic, na temat timerów i napisałem ich subrutyny. Podczas liczenia prędkości zmienne czas_s/czas_ch będę mnożył przez 0.004 i dzielił przez podaną drogę. Co ty na to? Dalej jest nie dobrze....., bardzo nie dobrze(!) Zacznijmy od Timera2: Predkosc_chwilowa: Timer2 = 1536 Timer2 ma rejestr 8-bitowy, więc nie...
Moim zdaniem najlepszym rozwiązaniem będzie - "podpiąć impulsy" pod wejście licznikowe i niech zajmuje się liczeniem wewnętrzny licznik. Nie obciążamy wtedy procesora. Drugi licznik (np. cztery razy na sekundę) wylicza obroty i resetuje ten pierwszy licznik. Wadą jest problem z liczeniem powolnych impulsów. Zalety - prosty, szybki, zużywający mało zasobów...
Intencją było głównie szukanie piorunochronu. Uszkodzenie na skutek EMP czyli impulsu elektromagnetycznego podczas burzy jest małoprawdopodobne, a jeszcze mniejsze jest prawdopodobieństwo bezpośredniego trafienia pioruna, a jeżeli już trafi to i tak nie ma siły, żeby uchronić przed popaleniem. Stosowanie zabezpieczeń w tym przypadku uważam za zbyteczne....
chyba chcialeś powiedzieć 1s, bo 1ms nie chce mi wyjść w żaden sposób. Więc działa to mniejwięcej w taki sposób: za każdym impulsem zwiększamy zmienną "częstotliwość" pomiar trwa 3.9ms i T1 wywołuje przerwanie, i przechodzi do programu czas, potem ilość impulsów jest mnożona przez 256(wartość presklera), otrzymujemy ilość impulsów na sekundę, czyli...
Wygoda, wolę kręcić niz kombinowac z przyciskami, zwłaszcza te strt/stop. Chodziło mi o to że nie ma płynnej regulacji w locie (a jest w opisie). Takie zaglitch-owaneraczej trudno nazwać płynną i w locie. Płynna to nie, w locie to tak (raczej tak) PS nie pytałem o R-MIK tylko o ten projekt. A pytania zadałem bo IMO nieuczciwie kolega (at)gdL prezentuje...
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...
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)...
W kwestii formalnej, ten kod się nazywa kodem Gray'a (od nazwiska Franka Gray'a 1887-1969, pracownika laboratoriów Bella, który go opracował) Co do samego problemu, to - prędkość obrotową wyliczysz z jednego kanału mierząc ilość impulsów w jednostce czasu lub mierząc czas trwania jednego okresu i przeliczając to na obroty (wiadomo ile masz impulsów...
Zależy od wymaganej dokładności. Można pomiary zrobić tak: uint32_t motogodziny; const uint8_t precyzja = 10; /* 10 bitów ułamkowych = ok. 1/32 motominuty */ const uint16_t nominalne_rpm = 400; for (;;) { uint16_t impulsy = 0; while (!minela_minuta) { /* zliczaj_impulsy */ } /* zeruj licznik impulsów i odliczanie minuty...
Sorry, Wiesz ja to sie z tym bawie tylko i program pisze w bascomie metoda prob i bledow. Nie ma większego znaczenia w jakim środowisku programujesz (Basic albo C). Istotny jest koncept projektu i sposób rachunkowy, reszta to tylko inna forma zapisu programu. Wybrałeś za narzędzia: Timer1 i jeden z interruptów zewnętrznych. Zatem jest tez bez znaczenia...
Witam Ekperymentatorów i Ciekawskich...:) Jestem świeżo zarejestrowanym użytkownikiem , moją pasją ( jedną z kilku :)) jest strzelectwo wiatrówkowe. Cały ambaras w tym hobby to to , aby karabinek wystrzeliwał śrut z mozliwie jak najbardziej stabilną energią. ( o ogromnym uproszeniu ) I stąd cały zwariowany pomysł... :) Projekt powstaje od około dwóch...
Dysponujemy z paroma kolegami fordami z roczników 86 do 89. Część to diesle a część benzynowe. Zamierzamy je trochę "ubogacić" przez założenie obrotomierzy cyfrowych. Problemem jest brak doświadczenia i wiedzy w programowaniu. Jakich procesorów użyć by mierzyły obroty do 9,9tys obr/min (2 cyfry LED OK) -przez pomiar częstości impulsów zapłonowych lub...
Co do samego prędkościomierza to sprawa nie jest skomplikowana. Podstawowe założenie zapewne będzie takie: jeden obrót koła = 1impuls. Procek natomiast niech zajmie się pomiarem czasu pomiędzy tymi impulsami (uruchamiasz sobie TIMER na czas pomiędzy kolejnymi imulsami). Mając te dane jesteś w stanie obliczyć prędkość oraz przejechane kilometry. Potrzebujesz...
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ą...
Tylko nie wiem czy mierząc ilość impulsów przypadających na jakiś okres czasu uda się osiągnąć precyzję 0.1 km/h przy tak niskich prędkościach a co za tym idzie obrotach. Chyba bardziej precyzyjny był by sposób z pomiarem czasu (z dokładnością do 1ms), między kolejnymi impulsami.
pomiar impulsu pomiar impulsu prądu bascom pomiar impulsu
wiertarka kinzo elektryczny schemat motocykl szukanie stacji radiowych
Jak odblokować urządzenie bez PIN i e-maila? Aktualizacja firmware Sony KDL-32EX500: Jak to zrobić?