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?? :?:
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...
No dobra działa. Mam teraz Przebieg PPM - o to mi chodziło! Moge mieć aż 6 kanałów na ATmega8
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>...
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?
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...
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...
Jeśli uruchomiłeś przetwornik A/C to musisz odczytać wynik za pomocą W = Getadc(channel) LCD "wartość";W wait 1 ........ ........
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...
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
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...
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...
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.
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...
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ł...
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 <...
Konwersja jest startowana w funkcji getADC : ADCSR |= 0x40; więc to raczej nie to.
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...
Stosowanie GETADC jest możliwe w trybie SINGLE przetwornika, a nie FREE.
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
$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...
tak jak napisałem Zero = Getadc(2) If Zero < 780 Then Call Pomiar Call Diody End If
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,...
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 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)).
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....
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...
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]
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...
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...
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"...
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...
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...
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...
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 , "###.#")...
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
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ą...
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 , 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, 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.
atmega8 getadc bascom atmega8 getadc woltomierz getadc
odkurzacz zelmer wirnik sprawdzenie numeru kolumny toyota avensis
alpha radio technologia chemiczna
UL1200, LM393N – które piny do sygnału STOP dla MCU i syntezera FM? Honeywell CS0262D5101141008 – kod E00, błąd czujnika NTC, De Dietrich Vivadens