Jesli do funkcji getadc podajesz jako parametr numer kanału ADC (czyli nóżki ADC0..X) to tak... - getadc(0) zrobi pomiar na nóżce 0 getadc(1) na nóżce 1 itd.... - pamiętaj oczywiście o dzielniku napięcia - napięcie na nóżce nie powinno przekroczyć VCC - wiem coś o tym bo właśnie obok mnie leży sfajczony ATMega8 :( (coś na szybko montowałem.... i pośpiech...
Witam. Zaczynam zabawe z procesorkami i już mam pare pytań: 1 Jest formułka GetADC (czy coś, analog-digital conv.) -w jakim "formacie" czy formie dostaje z tego polecenia wynik?? 2 Jak te kilka wyników ustawić w kolejce? 3 I co można zrobić z danymi z adc? - np czy można przekonwertować na milisekundy?? :?:
No dobra działa. Mam teraz Przebieg PPM - o to mi chodziło! Moge mieć aż 6 kanałów na ATmega8
Ta funkcja jest napisana jako ogólna wykorzystująca tryb ADC Noise Reduction. W dodatku jest napisana dla konkretnego przypadku, kodu który zamiast odczytywać ADC w funkcji przerwania ADC, odczytuje go w ciele funkcji Owszem, nie ukrywam, że akurat w tym przypadku o taki efekt mi chodziło. ADC chodzi cały czas generując przerwania, za to podczas każdego...
Włącz timer1 i w jego przerwaniu wstaw getadc np co sekundę. To ma być woltomierz? Rozumię , że masz tylko jedną cyfrę na wyświetlaczu?
Witam wszystkich Dzisiaj zwracam się do Was po pomoc w uruchomieniu adc w atmedze 8a Tak więc bez zbytniego owijania w bawełnę Kod: [syntax=c] #include <avr/io.h> #include <util/delay.h> //void setAngle(int angle); //void InitServ(void); #include <inttypes.h> #include <avr/interrupt.h> #include <string.h> #include <stdint.h>...
Witam Programuje 2x ADC które szczytuje mi wartości z potencjometrów podłączonych przez dzielnik napięcia do portów PC0 PC1, za pomocą przerwania ADCSRA ( ADIE -Kiedy ten bit jest ustawiony wraz z I-bitem w rejestrze SREG wtedy aktywne jest przerwanie od zakończenia konwersji.) Robię tak za pomocą przerwania a nie timera bo nie chce aby mi ciągle czytał...
Witam, właśnie zaczynają się Mistrzostwa Europy :) , a ja utknąłem na wydawałoby się banalnej rzeczy jaką jest przetwornik A/C w ATmedze8 :( . Poustawiałem sobie ładnie wszystkie bity i biciki jakie tylko znalazłem w pdefie i wygląda na to, że przetwornik nie pracuje. Próbowałem trybu single i free run , próbowałem obsłużyć przerwanie od A/C jak i odczytywać...
Przy niewielkiej dokładności wystarczy układ dzielników rezystancyjnych (schemat z prawej strony rysunku). Na wszelki wypadek podaję też schemat z wtórnikami (niewiele drożej). Wejścia procesora są zabezpieczone diodami przed przepięciami, więc ewentualne śmieci, których pełno w instalacji samochodowej powinny się wytracić na nich i na rezystorze szeregowym....
Witam. Mam prosty woltomierz na ATmega8 i powstają problemy: Mam zabezpieczenie odwrotnego podłączenia napięcia badanego na tranzystorze IRF520 ale przecierz jak wpakuje mu te dajmy na to nawet 300V w dren to sie nie spali pomimo że napięcia nie będzie na żadnym innym pinie , przebije go czy nie? ile trzeba voltów aby go przebiło napięcie?? Czy dioda...
Zerknij do załącznika. Jest tam procedura obsługi ADC dająca na wyjściu wartość napięcia ze czterema miejscami po przecinku. Oczywiście BEZ UŻYCIA LICZB ZMIENNOPRZECINKOWYCH... Nie chce mi się teraz sprawdzać z ktorego wejścia korzysta, ale na pewno mogę powiedzieć, że źródłem referencyjnym jest napięcie zasilania procka. Dokładna wartość napięcia podawana...
Jeśli uruchomiłeś przetwornik A/C to musisz odczytać wynik za pomocą W = Getadc(channel) LCD "wartość";W wait 1 ........ ........
Porównaj: Moja propozycja Wartosc = Getadc(4) Wartosc = Wartosc / 5 Wartosca = Wartosc Twój kod Wartosc = Getadc(4) Wartosc = Wartosc / 5 Wartosc = Wartosca Widzisz różnicę :?: Piotrek
Tego się nie konfiguruje. Config Adc = Single , Prescaler = Auto , Reference = Avcc tylko włącza przetwornik i konfiguruje go ("go" czyli przetwornik a nie kanał). Ale kanału się nie czepia bo nawet nie ma takiej opcji. Kanał podaje się dopiero przy odczycie za pomocą Getadc. No chyba że używa się trybu Free Running, ale w takim przypadku polecenie...
Po pierwsze to z adc dostajesz zmienną w zakresie 0-1023 , a w pwm zadeklarowałeś 8 bitów czyli zakres 0 - 255. Spróbuj tak: Dim U As Word Dim P As byte Start Adc Do U = Getadc(0) U = Getadc(0) P=U/4 Pwm1a = P Loop End Przy konfiguracji przetwornika użyj Reference = avcc. Ewentualnie pisz na GG, a wyniki opiszemy w temacie :D . Pozdr. Daniel
Programik w porządku z małym ale Wart_ac = Getadc(1) Wart_ac = Getadc(1) ' dwa razy to samo zalecam i V = Wart_ac * 0.004884 ' też zalecam Jeśli nie zależy ci na czasach kolejnych odczytów to zalecane jest odczekać > niż 20ms przed kolejnym pomiarem z ADC Wart_ac = Getadc(1) Waitms = 50 Wart_ac = Getadc(1) to od strony programowej, teraz od elektroniki:...
Znalazlem jakis stary programik.... odczyt 2 kanalów ADC z częstościa 100 razy na sekunde... Analize pozostawiam Tobie...(podpowiem że Help wszystko wyjaśni) Pozdrawiam $regfile = "m8def.dat" $crystal = 11059200 $baud = 19200 Config Adc = Single , Prescaler = Auto , Reference = Off Config Timer1 = Timer , Prescale = 256 On Timer1 Pomiar Enable...
Gdzie to wyczytałeś, tak dla formalności? Oczywiście że nie, przecież masz napisane: Sample = Getadc(0) ' pobierz napięcie z ADC0 A gdzie jest w Uc ADC(0)? Dodano po 1 I jeszcze jedno, to wskaźnik MONO.
Problemem jest wyłączanie przetwornika. Przetworniki w ATMegach dają pierwszy pomiar błędny (wynika to z jakiejś wewnętrznej kalibracji przetwornika po włączeniu). Dlatego przetwornik trzeba włączyć raz. A później włączać i wyłączać jedynie konwersje, a nie cały przetwornik. Dodatkowo proponuję używać osobnej funkcji do pomiarów i osobnej do ustawiania...
Witam, Proponuję użyć fototranzystora jako dzielnik napięcia i wyjście tego dzielnika podłączyć do przetwornika analogowo-cyfrowego, który znajduje się na pokładzie ATMega8. ------------------------- $regfile = "m8def.dat" Config Adc = Single , Prescaler = Auto , Reference = Avcc Start Adc Dim W As Word W = Getadc(0) 'zero czyli, że fototranzystor został...
Spróbuj zmodernizować kod w ten sposób: Do A = Getadc(0) B = Getadc(3) C = A * 0.0049 D = B * 0.0049 T = Atn2(c , D) ' zwrócenie wartości arctan w radianach E = Rad2deg(t) 'zamiana rad na stopnie G = Fusing(c , "#.&&") 'zamiana wart. nap. sin na tekst H = Fusing(d , "#.&&") 'zamiana...
Czy ATmega8535 ma tylko mierzsyć napięcie i wysyłać? Jeśli tak to po co taki duży uK do tego? :) Program może wyglądać tak: $regfile = "m8535.dat" $crystal = 16000000 $hwstack = 32 $swstack = 10 $framesize = 40 Dim W As Word Config Watchdog = 2048 Start Watchdog Reset Watchdog Config Adc = Single , Prescaler = Auto , Reference = Internal Start...
Do print"napiecie" call sprawdz loop '*********stan napiecia akumlatora************************* Sprawdz: Incr Indeks 'sprawdzenie napiecia akumulatora Napiecie = Napiecie + Getadc(5) 'z dzielnika If Indeks = 10 Then '10 razy dla pewności Indeks = 0 'wyzeruj Napiecie = Napiecie \ 10 'wylicz 'print napiecie 'wyswietl na terminalu wynik If Napiecie <...
Nie zadziała to w tak prostej formie w jakim masz kody. 1. W kodzie 1 musisz ustawić PWM z timera 1 na 10bitowy (masz 8bitowy w konfiguracji). 2. W kodzie 2, nie masz ustawionego PORTC na wejście dla przetwornika. 3. W kodzie 2, samo przypisanie W = Getadc(channel) (po skonfigurowaniu timer1 i zmianie rozdzielczości PWM na 10bit) będzie zmieniało prędkość...
ja bym to zrobił tak: $regfile = "m8def.dat" $crystal = 4000000 Config Lcd = 20 * 2 Config Lcdpin = Pin , Db4 = Pb.2 , Db5 = Pb.3 , Db6 = Pb.4 , Db7 = Pb.5 , E = Pb.1 , Rs = Pb.0 Config Portc = Input Portc = &B000000 Dim Szyba1 As Word Dim Szyba2 As Word Dim Szyba3 As Word Dim Szyba4 As Word Dim Wzor As Word Dim A As Word Config Adc = Single...
Konwersja jest startowana w funkcji getADC : ADCSR |= 0x40; więc to raczej nie to.
$regfile = "M8def.dat" $crystal = 8000000 $hwstack = 32 $swstack = 32 $framesize = 32 '---------------------------------------... Dim Adc_data As Integer Dim S As Single Dim L As Long Dim Text As String * 30 '---------------------------------------... Portb = &B00000000...
W kodzie nadajnika wynik pomiaru ADC2 powinien być przesunięty w prawo o 3, a nie o 2. Jest: Pomiar = Getadc(2) Shift Pomiar , Right , 2 Powinno być: Pomiar = Getadc(2) Shift Pomiar , Right , 3
Stosowanie GETADC jest możliwe w trybie SINGLE przetwornika, a nie FREE.
AtTiny2313 nie ma wbudowanego przetwornika AD, więc w prosty sposób się nie da. Można zawsze używając kilku elementów zrobić prosty przetwornik, ale patrząc na ceny innych uK, np. AtMega8, który ma dużo większe możliwości, nie ma to sensu. A wystarczyłoby uruchomić PWM w rozdzielczości 10 bitowej i bezpiśrednio przypisywać mu wartość odczytaną z przetwornika,...
tak jak napisałem Zero = Getadc(2) If Zero < 780 Then Call Pomiar Call Diody End If
Ten silnik ma przekładnię i dla operacji pełnych kroków ma ich 2048 na pełen obrót a dla kroków "połówkowych" to już nawet 4096. To jest prosta wielokrotność rozdzielczości ADC (1024) więc nawet przeliczanie tego na volty jest niepotrzebne. Nie wiem jaki zakres potrzebujesz, ale jak wykonasz dwa kroki na każdy punkt ADC to od 0V do 5V to będzie pełen...
Nie wiem czy myślisz kompleksowo. Jeśli chcesz mierzyć napięcie to nie możesz ustawić AREF na AVCC bo one opadnie do 3,6V. Musisz więc ustawić wewnętrzne 2,56V. Przy takim znów na wejściu pinu ADC musiałbyś dać dzielnik rezystorowy, na przykład, na dwóch rezystorach 10K. Potem inicjalizacje warto robić tylko raz po wznowieniu zasilania. Można to rozwiązać...
gts wielkie dzięki! Ale mam problem jeszcze z układem :/ Gdy przyłożyłem 3V to pokazało tak jak trzeba. Ale gdy nie przykładam nic świecą mi się ciągle 2 diody. A można powiedzieć że zapalają się i gasną z dużą częstotliwością... Ehh chyba moja płytka coś fiksuje tzn zimne luty. jak stoi w pionie jest ok a w poziomie mi się zaświeca dodatkowa dioda....
Nie wiem jak teraz, ale kiedyś w BASCOMie każde polecenie GETADC robiło dwie konwersje i wynik brało z drugiej. Więc w BASCOMie nie trzeba odrzucać pierwszej konwersji bo robi to automatycznie polecenie GETADC (co jest bez sensu no ale mówię jak jest (lub było)).
Ad1,3. Napięcie z akumulatora koniecznie musisz puścić przez dzielnik napięcia np. w stosunku 1:3. Gdy napięcie na akumulatorze wyniesie 12V to na wyjściu dzielnika masz 4V. Dobrze byłoby także dodać diodę zenera na końcówkę ADC. Ad2,4. Niestety źle, ma być podłączone do nogi 15(OC1A). Żarówki daj między kolektor a zasilanie. Po za tym nie wiem jakiej...
Funkcja GETADC() zmienna = GETADC( nr_kanału [, offset ] ) Przetwornik musi być skonfigurowany do pracy w trybie SINGLE, gdyż funkcja inicjuje i czeka aż przetwornik wykona konwersję. Uwaga! Z powodu zmian w kodzie bibliotecznym w wersji 1.11.7.2, funkcję GETADC() najlepiej wywołać dwukrotnie: W = Getadc(channel) W = Getadc(channel) gdyż za pierwszym...
AT90S2313 nie posiada przetwornika analogowo-cyfrowego więc do mierzenia napięcia stosowano komparator. Ty masz ATmega8 który ma owy przetwornik - nim najlepiej mierzyć napięcie z LM35. Poza tym ATmega8 ma tylko jeden komparator. Dim w As Word 'właczenie przetwornika CONFIG ADC = single, PRESCALER = AUTO, REFERENCE = internal w = Getadc(0) 'odczyt...
Kod poniżej: [syntax=basic4gl] Wartadc1 = Getadc(5) V = Wartadc1 * 0.02795 / mnożnik z dzielnika rezystorowego dla napięcia Uwej = Fusing(v , "#.&") Wartadc2 = Getadc(4) V3 = Wartadc2 * 0.025 /mnożnik z dzielnika rezystorowego dla prądu Iwej = Fusing(v3 , "#.&") P1 = V * V3 Pwej = Fusing(p1 , "#.&") Cls Lcd "Pwej=" ; Pwej ; "[W]" Wait 1[/syntax] Po...
Niestety tamto nie zadziałało pojęcia nie mam czemu, ale udało mi się zrobić takie coś jak niżej. Da sie prostym sposobem skrócić zmienną single do postaci xxx.x ?? [syntax=basic4gl]Odczyt = Getadc(0) Temp = Odczyt * 0.0025 Temp_dz = Temp * 100[/syntax]
Witam Pytanie może nieco banalne ale musze je zadać Mam mikrokontroler atmega8 i zczytuje napięcia z trzech wejśc analogowych. Napięcia które zczytuje to napięcia zmienne sinusoidalne o równej wartości przesunięte względem siebie symetrycznie. Jeśli mam w programie polecenia: Ua = Getadc(0) 'Z wejścia PC0(ADC0) Ub = Getadc(1) 'Z wejścia PC1(ADC1) Uc...
Najprostszy dolnoprzepustowy filtr programowy: dim vs as single, sr as single, kfil as single, kfil1 as single, vi as integer coef=0.0049 kfil=... 'stała "czasowa" filtracji kfil1=kfil+1 vi=getadc(...) sr=vi*coef 'inicjowanie sredniej do ... vi=getadc(...) vs=vi*coef sr=kfil*sr sr=sr+vs sr=sr/kfil1 'średnia "ciągnięta"...
Odczytywałem kiedyś 3 potencjometry na ATmega8535 Podłączone było zewnętrzne Uref = Uzas = 4,98V konfiguracja Config Adc = Single , Prescaler = 16 port w procku jako wej "pływające" czyli u Ciebie byłoby: Config Portc = &B0000000 Portc = &B0000000 Odczyt u mnie Pot_1 = Getadc(7) Pot_2 = Getadc(6) Pot_3 = Getadc(5) zmienne Pot_x...
A jednak da sie w Bascomie zmieniac konfiguracje przetwornika ADC w trakcie wykonywania programu. Oto fragment dzialajacego programu: Do If Pinb.0 = 0 Then Config Adc = Single , Prescaler = Auto , Reference = Avcc '5V Start Adc Wart_ac = Getadc(0) End If If Pinb.1 = 0 Then Config Adc = Single , Prescaler = Auto , Reference = Internal '2.5V Start Adc...
dlaczego aż 4 MHz- procek nie wyrabia się przy 1Mhz? przy 4MHz szybciej wykona program i przejdzie do uśpienia - więc chyba naa to samo wyjdzie [przy 1MHz program wykona się 4 razy wolniej]. Ale spróbuję. ustawić 1MHz i po zakończeniu pomiarów przez ADC - Getadc=x, wyłączać przetwornik.
Dzięki za szybką odpowiedź. Co do precyzji pomiaru to myslę, że napięcie stabilizowane LM7805 wystarczy. Proszę jeszcze o zweryfikowanie programu do odczytu wartości napięcia. Oczywiście wynik będzie przeliczany na odpowiednią wartość. $regfile = "m8def.dat" $crystal = 8000000 Config Adc = Single , Prescaler = Auto , Reference = Avcc Dim Wart_ac...
Nie !!!! Nie w środku pętli to byłoby bez sensu. Ale ja to bym zrobił inaczej [syntax=basic4gl].. .... ...jakieś instrukcje.. .. Dim Pk As Byte Declare Sub PrzyciskC5 Ddrc = &B00000011 Set Portc.5 .... ...jakieś instrukcje.. .. Menu3: Pk = 0 Do Locate 1 , 8 Lcd "T" Start Adc Temp = Getadc(6) Temp = Getadc(6) C = Temp / 4.166 Celsius = Fusing(c , "###.#")...
Mam pytanie: Czy mikrokontroler rozumuje w ten sposób: Wartość 400 (1000mV) na ADC da mi w kodzie: [syntax=basic4gl]Do A = getadc(0) LCD A Loop[/syntax] na wyświetlaczu 1000? Kolejne pytanie: Czy poniższy kod jest prawidłowy? [syntax=basic4gl] Do A = getadc(0) Temp = A / 10 LCD Temp ; "C"[/syntax] Załóżmy że wartość napięcia to 1000mV (400), więc na...
Napisałem sobie prosty program w Bascomie AVR - wiem że bascom nie cieszy się najlepszą opinią ale jeszcze się nie przejechałem, wiele urządzeń działa do dziś i może zła opinia to po części zasługa początkujących którzy zwalają brak umiejętności na kompilator. Program w przerwaniu od timera mierzy wartość z ADC, jest to prąd silnika, i porównuje ją...
Użyj przetwornika A/C do mierzenia napięcia a potem to tylko przetwórz jak ci pasuje. Przykładowy program do miernika napięcia: Config Adc = Single , Prescaler = Auto Start Adc Dim W As Word do W = Getadc(0) Loop End
Witam , wklejam kod jaki udało mi się wypocić. Miało być tak pięknie a wyszło jak zawsze :-( Ten twój kod jest oczywiście błędny. Po pierwsze, jeżeli stosujesz napięcie referencyjne wewnętrzne, to dla AtMega 8 wynosi ono 2.56V. Zatem poziom napięcia mierzonego podanego na dowolny pin ADC nie może przekroczyc tej wartości. Jeżeli jednak ten warunek...
Witam, stosuje LM35 od wielu lat. Do odczytu temperatury jw Bascom stosuje następujący kod Zmienne zadeklarowane są następująco: Dim Volt As Word Dim Tp As Single Dim Tm As String * 4 ......... Volt = Getadc(0) Tp = Volt * 5 Tp = Tp / 10 Tm = Fusing(tp , "#.&") ......... Lcd Tm;" ";"C"
Witam, dopiero ucze się programowac w Bascomie i mam pare pytań. Ponumeruje je żeby łatwiej było odpowiedzieć: 1.Która częśc kodu odpowiada za pobranie napięcia Wart_acpomoc = Getadc(2) 2.Która częśc kodu wyświetla napięcie na Wyświetlaczu. Lcd "Akus " ; Wart_nap Polecam Helpa.
getadc atmega8 bascom atmega8 getadc woltomierz getadc
toyota avensis podłączyć wtrysk renault megane przełącznik wycieraczek
alpha radio technologia chemiczna
Pobór prądu przy zostawionym kluczyku w Skoda Octavia 2 1.6 MPI 2004 Jak wyjąć stacyjkę z Skoda Octavia 2 1.6 MPI 2004 z immobilizerem