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...
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?? :?:
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
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...
No dobra działa. Mam teraz Przebieg PPM - o to mi chodziło! Moge mieć aż 6 kanałów na ATmega8
Stosowanie GETADC jest możliwe w trybie SINGLE przetwornika, a nie FREE.
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. 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...
Witam, Potrzebuję wycisnąć a ATmegi32 maksymalną prędkość ADC. znalazłem wiele artykułów, i w większości z nich zrobione są wstawki w języku Assembler, dzięki którym Atmega korzysta tylko z 8 bitów przetwornika. Wiem że ustawia się to bitem w rejestrze "ADLAR", ale niestety całość musi być napisana w ASM, bo Bascomowa komenda "getadc()" i tak konwertuje...
Witam. Mam taki problem. Zbudowałem robota LF napisałem do niego całkiem sprawny kod w BASCOMIE. Teraz zacząłem uczyć się C (pisze w WinAVR) i chciałbym napisać program do niego. Mam jednak problem jak zrobić odczyt poszczególnych kanałów. W BAS robie to tak: [syntax=basic4gl] Wczytaj_adc: Prog = Getadc(4) L1 = Prog If L1 > Back Then Pozycja.4 =...
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
Domyślam sie że to jest BASCOM. GetAdc(x) - funkcja wykonuje pomiar na nodze ADCx. Czyli dobrze myślisz. Pozdrawiam Yakuza Edit: Tylko pamiętaj że przetwornik musi pracować w trybie SINGLE.
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.
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:...
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...
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ść...
tak jak napisałem Zero = Getadc(2) If Zero < 780 Then Call Pomiar Call Diody End If
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....
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...
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]
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...
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.
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
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"...
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...
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...
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 , "###.#")...
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ć.
Zdaje sie że wszystko robisz zupełnie nie tak. Jak masz ten fotorezystor to po prostu jedną nóżke do pinu przez rezystor ,drugą do zasilania. A do temperatury potrzebujesz raczej LM335z (ja taki mam) też jedna nóżka do zasilania ,druga do pinu uP ,następna do masy. Obydwa odczytujesz przez GetADC. szukaj tego w Helpie do bascoma ,ale zmień go na AVR...
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...
Cursor Off ' ' Po co tu pracowicie uśredniasz wyniki z 10 kolejnych pomiarów .... ' For Z = 1 To 10 P = P + Getadc(3) Next T '----pobieranie P = P / 10 ' Tu liczysz średnią ' ' ... by tu pobrać dane bez uśredniania ??????????????????????? ' P = Getadc(3) ' ^^^^^^^^^^^^^^^^^ V = P / 204.5 A = Frac(v) V = Int(v) A = A...
Witam Wie ktoś jak za pomocą Atmega8 zbudować prosty woltomierz do pomiaru napięcia od 0 do ok. 5V i wyświetlić to na wyświetlaczu ?? w postaci np. Config Adc = Single , Prescaler = Auto, Reference = Internal Start Adc Dim W As Word , kanal As Byte kanal = 0 W = Getadc(kanal) W = Getadc(kanal) cls lcd W ; " volt " ; End Oto...
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.
1. OCR1A = Getadc(3) 2. OCR1A = 255 - Getadc(3) Jest aż tak źle? Tutaj nie chodzi o zmianę trybu PWMa bo po zmianie trybu zostanie wygenerowany jeden impuls. Nie wiem skąd*. Ale tak napisał Tomekddd. Chodzi o odwracanie fazy na driverze. Jeżeli można by to odwrócić zmieniając tryb PWMa to oczywiście lepiej by było to tak zrobić niż pisać "255 - xxx"....
dobrze by było troszkę wzmocnić to napięcie (tak żeby można je było mierzyć) minimalne napięcie odniesienia dla 8535 to chyba 2V, ale możesz dać więcej. Procedura w bascomie jest banalna deklarujesz np: Config Adc = Single , Prescaler = Auto , Reference = Internal Pomiar: Zmienna_y = 0 Zmienna_v = 0 Do Incr Zmienna_y Start Adc Zmienna_x = Getadc(0)...
Witam. Napisałem prosty programik. Działa on tak że po włączeniu układ generuje impulsy o częstotliwości regulowanej przez ADC2. Teraz nie mam pojęcia jak zrobić aby przycisk podpięty na PD.0 włączał i wyłączał mi ten generator na wyjściu atmegi. [syntax=Basic4GL]$regfile = "m8def.dat" $crystal = 8000000 Config Portd = &B00000000 Config Portb = &B11111111...
Dzięki za dotychczasowe odpowiedzi :) Mam kolejny problem, tym razem z ADC, kod programu mam chyba dobrze napisany(tak mi sie wydaje) lecz nie wiem jak podłączyć np. potencjometr lub fotorezystor? Mój program wygląda tak: [syntax=basic4gl]'ustawienia procesora $regfile = "m8def.dat" $crystal = 1000000 Config Adc = Single , Prescaler = Auto , Reference...
Oto nowy kod: [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 8000000 Config Lcdpin = Pin , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , Db7 = Portb.6 , E = Portd.1 , Rs = Portd.0 Config Lcd = 16 * 2 Cls Cursor Off '****CONFIG**** Config Adc = Free , Prescaler = Auto , Reference = Avcc '****KONIEC CONFIG**** '****CONFIG ZMIENNYCH**** Dim Wynik...
Witam Z góry zaznaczam, że nie znam Bascoma ale może taki przelicznik: Ture11 , ale może się do czegoś przydać. :D
Czy ten program ma prawo działać? $regfile = "m8def.dat" ' $crystal = 8000000 Config Adc = Single , Prescaler = Auto , Reference = Avcc Config Portb.1 = Output Dim Wart_ac As Word Dim V As Single Dim Wart_nap As String * 3 Start Adc Do Wart_ac = Getadc(1) Cls Lcd "wartosc napiecia" Lowerline V = Wart_ac * 0.0049 Wart_nap...
Cytat z noty: 0.2 to 4.7 V OUTPUT Przyjmijmy ze max napiecie na wyjsciu przetwornika to 5V(4.8V). A wiec: Dim Wart_nap As String * 5 ..... Wartosc = Getadc(0) A=Wartosc * 0.0048 Wart_nap = Fusing(A , "##.&&") Teraz to co podasz na ADC0 czyli napiecie w zakresie 0-5V bedziesz mial w zmiennej Wart_nap.
Przy kompilacji kodu na atmega8 wychodzą mi błędy;ADC_MUX entry not found in dat file. Ten sam kod działa na atmega16 oczywiście po zmianie wyprowadzeń. $regfile = "m8def.dat" $crystal = 8000000 Config Lcdpin = Pin , Rs = Portd.2 , E = Portd.3 , Db4 = Portd.5 , Db5 = Portd.6 , Db6 = Portd.7 , Db7 = Portd.0 Config Lcd = 16 * 2 Cls Cursor Off...
Witam. Szukałem na forum i niestety nie znalazłem jednoznacznej odpowiedzi na mój problem (tak czasami bywa). Tak więc atmega8 to tego wykorzystany wewnętrzny ADC, kanał 0, wpięty lm335+4k7 do VCC, kwarc 11059200, zasilanie przez dławik 10uH do AVCC, 10uF pomiędzy AREF i GND zgodnie z opisem z helpa, configuracja ADC: Config Adc = Single , Prescaler...
Więc popraw. Przedstawiając własną propozycje. Drgania maja mały wpływ w tym przypadku. "Ale Timer1= counter zlicza impulsy z zewnątrz. " zgadza się i na dodatek ma przydatną funkcje reakcji na zbocze która się tu przydaje Na pin.x będzie niedokładnie to jedno. Stan na pinie jak będzie 1 cały czas to cały czas będzie sie zmieniał stan wyjść a nie tylko...
Program skończony:) Pozmieniałem co nieco w twoim pomyśle mpietras i układ ładnie pokazuje temp z dokładnością do jednego stopnia bo tyle ino potrzebuje. Zrobiłem to tak: Do Odczyt = Getadc(0) Wynik = 0.1 * Odczyt Temp = 98 - Wynik Wynik3 = Temp / 10 L2 = Int(wynik3) Wynik1 = Wynik3 - L2 L1 = Wynik1 * 10 Loop Temat można zamknąć i dzięki...
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 1. Mierzone napięcie podłączasz, pod któryś z pinów portu C np. Portc.5 2. Zakładam, że przetwornik A/C zasiliłeś prawidłowo. 3. Napięcie pobierasz instrukcją Getadc(5) (w kwantach a nie w woltach) 4. To co Ci wyjdzie w kwantach mnożysz przez napięcie przypadające na 1 kwant (dla napięcia referencyjnego 5V jest to 4.88mV) i jeszcze przez wartość...
Przede wszystkim zrób tak: Volt = Getadc(1) Cols = Volt / 64 Potem wyświetl sobie maksymalne napięcie jakie dostajesz z LM na ADC, czyli: Locate 1 , 1 Lcd Volt Max ADC to 1024. Jeśli chcesz by wskaźnik był w pozycji max przy wartości ADC 1024 to musisz podzielić Volt przez 64. To proste: MAX ADC = 1024 MAX pozycja na wyświetlaczu = 16 Czyli...
Może i to wina programu bo długo nad nim kombinowałem i jest dość rozbudowany. Oto fragment odpowiedzialny za sam pomiar napięcia [syntax=basic4gl]For Krok = 1 To 100 'pomiar napięcia Pomiar = Getadc(4) Napiecie = Napiecie + Pomiar Next Krok Napiecie = Napiecie / 100 Napiecie = Napiecie * 0.01452 Napiecie = Napiecie + 0.8[/syntax] Mierzy poprawnie więc...
Witam, proszę o pomoc: Stworzyłem taki kod: $regfile = "m8def.dat" $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Pb.2 , Db5 = Pb.3 , Db6 = Pb.4 , Db7 = Pb.5 , E = Pb.0 , Rs = Pc.0 Cls Config Adc = Single , Prescaler = Auto , Reference = Internal Start Adc Dim W As Word Cursor Blink Do W = Getadc(0) W = Getadc(0)...
Chcę użyć przetwornika AD w Atmega8. Programuje w bascomie AVR. Jest tam funkcja GetADC i nie mam żadnego problemu z jej uzyciem, ale ma ona taka zasadncizą wadę, że dziala tylko w trybie single i po jej wywołaniu czeka aż konwersja zostanie zakończona. (Jest to dość naturalne, bo przecież musi zwrócić wynik konwersji). Zależało by mi, aby uniknąć tego...
getadc atmega8 atmega8 getadc bascom getadc
miernik napięcia icl7107 wfl1200 szczotki bosch katalog
indukcja amica odbiornik dcf77
Wymiana zbiorniczka płynu chłodzącego Volvo S40 1996 Kod usterki 1611 w Nissan, Hyundai, Kia - diagnostyka