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
Jeśli uruchomiłeś przetwornik A/C to musisz odczytać wynik za pomocą W = Getadc(channel) LCD "wartość";W wait 1 ........ ........
Znam standardowa obsluge ADC w bascomie czyli getadc.. Problem z nia jest taki ze procesor zatrzymuje swoje dzialanie na dosc dlugi czas konwersji. W moim programie nie moge sobie na to pozwolic. Dlatego potrzebuje procedure inicjalizacji ADC na rejestrach i odczytanie wyniku konwersji po czasie po jakim na pewno zostala zakonczona (u mnie 1ms) ew po...
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...
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.
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
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ł...
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:...
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...
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...
Konwersja jest startowana w funkcji getADC : ADCSR |= 0x40; więc to raczej nie to.
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
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.
tak jak napisałem Zero = Getadc(2) If Zero < 780 Then Call Pomiar Call Diody End If
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...
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 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 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ść...
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?
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 <...
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...
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...
$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...
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...
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...
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,...
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 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ć...
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.
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....
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...
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
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...
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...
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...
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...
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...
No możesz albo zrobić z utoa z wartością 0x20, albo ze ' ', żeby dostać spację na LCD... [syntax=c] #define TOTAL_LENGTH 20 //max ilosc znakow na ekranie while(1) { pot = getADC(0); LCD_GoTo(0,0); LCD_WriteText(utoa(pot,tmp,10)); space_length = TOTAL_LENGTH - strlen(tmp); while(space_length--) { LCD_WriteText(' '); } } [/syntax]
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"
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ą...
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ć.
Zakładam, że funkcja Getadc(0) zwraca wartość z przetwornika ADC. Dlaczego mnożysz wartość przez 0.0048? O ile się nie mylę, w ATMega8 jest przetwornik 10-bitowy, więc nawet największe wskazanie 1023 da Ci wynik 4. Dlatego masz zera. Skąd wartość 0.0048? Podaj jakie napięcie mierzysz i jak zasilasz układ ADC. Raczej unikaj działań na liczbach zmiennoprzecinkowych...
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...
Najpierw musisz skonfigurować przetwornik: Config Adc = Single|Free, Prescaler = dzielnik|Auto, Reference = Off|Avcc|Internal A odczytujesz to tak zmienna = Getadc(nr_kanału) Czym sie różnią single i free i ustawienia Uref poczytaj w dokumentacji
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...
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.
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 , "###.#")...
A jam mam pytanie co do trubu pracy przetwornika ADC (Config ADC = Single). Jest jakis inny tryb niż Single? Tak, jest jeszcze tryb Free. W trybie Single odczyt jest dokonywany "na zawołanie", a to wywołanie to dzieje się przez instrukcję: Getadc([i]nr_kanału[/i... W trybie Free natomiast odczyt jest dokonywany cały czas, z tego...
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 , 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...
No to też tak liczyłem, ale dupa....wychodzi mi że przełączenie musiałoby być przy wartości getadc() koło 300, a tu dalej nic, przełącza się w okolicach 1022.... Nie dodałem kondensatora bo akurat nie mam takiego (mniejszy 10n i większy 10u...), ale i tak różnica powinna być zauważalna...(między rezystorem 1k a 100k).
Dim ___rseed As Word ___rseed = Getadc(9) Lcd ___rseed Dlaczego na LCD cały czas jest 00? Atmega8, w obudowie DIP posiada 6 kanałów ADC... W obudowie TQFP i QFN jest ich 8. Ty próbujesz pobrać wartość z 10 kanału (liczymy od 0). Zamień 9 na wartość od 0 do 5 (podejrzewam, że Twoja Atmega jest w obudowie DIP): __rseed = Getadc(0) Oraz...
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...
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...
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 Mam pytanie związane z przetwornikiem analogowo-cyfrowym wbudowanym w mikroprocesorze Atmega8. W symulacji Bascom-AVR działał poprawnie jednakże w przypadku prawdziwego układu program nie działa. Na kanale ADC0 mam napięcie 1,6V. Pomimo tego napięcia wartość przetworzenia wynosi 0. Wykorzystuję wewnętrzne źródło odniesienia. Dzękuję za wszystkie...
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...
Fajny ten kalkulator...tylko skomplikowany. sie przyda. Teraz może dalej te timer'y ,Czy tak uzyskam PWM na Pinb.0 o częstotliwości zależnej od wyniku ADC? Jak już męczyć tajmery to tak żeby je troche znać... Config Portb = &B11111111 'Portb.0 ma być wyjściem Config Timer1 = Timer , Prescale = 1 Enable Interrupts : Enable Timer1 On Timer1 Gen Dim...
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.
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"....
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...
Niby łatwo a się zaplątałem... Prosta sprawa : Porównanie tego samego napiecia ( napięć dla 4 portów ) w cyklu 30 minut. Jesli napięcie "stanie" na ADC jakimkolwiek to pin X = 0/1 Czas mam wyprowadzony i zastosowanie instrukcji WAIT rozwala system ( czyli wszystko stoi-- tj inne ADC ) Kod wyglada /bedzie wygladał tak ( sam pomiar ) W1 = GetADC(1)...
Witam, Od dwóch dni siedzę, czytam łączę... i nic nie wychodzi. Próbuję zrobić cokolwiek na przetworniku ADC. Układ podłączyłem tak jak na załączonym zdjęciu. Program to najprostszy z możliwych. Dioda ma migać w zależności od odczytu. Problem w tym ze podczas zmiany położenia potencjometru nic się nie dzieje. Dioda miga cały czas tak samo. Źle coś podłączyłem...
Ze schematem trudno będzie, komp po formacie, zero podobnych programów, układ na płytce stykowej, ale się postaram. A może na wynik wpływa zmienna Va zamiast liczb 0-5? http://img838.imageshack.us/img838/1482/... Nie mogłem go wrzucić na elke, bo .png.
co do pierwszej odpowiedzi to: mógłbyś mi powiedzieć gdzie dokładniej bo jakoś znaleźć nie mogłem, ktoś też mi mówił że widział na jakiejś stronie coś podobnego, ale jak dotąd ja tego nie znalazłem będe wdzięczny a co do drugiej odpowiedzi to: po co wogóle robić sobie woltomierz można kupić gotowy??? ja poprostu eksperymentuje z uC i właśnie robie sobie...
Witam Z góry zaznaczam, że nie znam Bascoma ale może taki przelicznik: Ture11 , ale może się do czegoś przydać. :D
Witam . Mam zamiar zrobić miernik Voltów i Amperów na ATmega8 i właśnie wpadłem na to że właściwie nie wiem jak zabezpieczyć układ przed odwrotnym podłączeniem badanego napięcia... Będzie dzielnik napięcia jakieś 1:100 aby móc wyliczyć do ponad 250V oraz ok 4-5Amper (za pomocą voltmiarki na boczniku). Matematycznie wykalibrowany zostanie w programie....
Dzieki za odpowiedź - no z dzielnikiem fakt masz rację nie ten zakres ale pomijając dzielnik (zakładając że go nie ma) zwarcie nóżki do masy na której jest dokonywany pomiar powinno spowodować pojawienie się wartości "0" a nie 10 ?? Zauważyłem, że jak odpalę procka to jest ok ale jeśli tylko chciałbym zmierzyć napięcie na wyprowadzeniu AREF , to samo...
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. Mierzę nateżenie oświetlenia małej kompaktowej świetlóki przy użyciu fotodiody i mam pewien problem przy długim pomiarze wartość otrzymana z fotodiody systematycznie spada. Przebieg otrzymany w wyniku pomiaru jest w pliku wykres. Wartość pomiędzy 2000 a 5500 sek maleje im dłużej się mierzy, chociaż układ pozostawiony jest w bezruchu i odizolowany...
Witajcie. jestem nowy i nie bardzo wiem jak to zrobic, na wejsciu PINC.0 pojawia sie stan HI wysoki zaczyna sie odliczanie czasu ktore jest ustawiane za pomaca ADC na ktorym jest potenciometr 10 Kohm miedzy Vcc a masa. po uplywie ustawionego czasu na wyjsciu PORT D.6 pojawia sie stan wysoki oto moje wypoziny ktore i tak nie dzialaja. $regfile "m8def.dat"...
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...
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ść...
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)...
schemat w załączniku [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 1000000 Config Adc = Single , Prescaler = Auto , Reference = Avcc Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down Config Portd = Output Config Portb = Output Const Granica = 900 Silnik_lewy_a Alias Portd.3 Silnik_lewy_b Alias...
Mam 2 atmegi. Jedna to atmega8 a druga atmega16. Używam Uart programowy i nie wiem dlaczego nie działa. Poniżej kod programu w bascomie dla nadajnika Config Adc = Single , Prescaler = Auto , Reference = Internal Config Pinb.0 = Output Config Pind.6 = Output Config Pind.7 = Output Config Pind.3 = Input Config Pind.4 = Output Portd.3 = 1 Open "Comd.3:1200,8,n,1"...
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...
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!!! Używam BASCOMA 1.11.7.4 i mam problem z kompilacją programu do obsługi ADC dla ATmega8535 z wykorzystaniem wewnętrznego źródła odniesienia. Jest on prawie identyczny jak ten dołączony w folderze BASCOMA – SAMPLES. $regfile = "m8535.dat Config Adc = Single , Prescaler = Auto , Reference = Internal Start Adc Dim W As Word , Channel As Byte...
Wielkie dzięki za wszystkie rady i uwagi. Dzisiaj napisałem od nowa kod. 'KONFIGURACJA czujników dla czarnej lini $regfile = "m8def.dat" $crystal = 1000000 Config Portd = Input Config Adc = Single , Prescaler = Auto , Reference = Avcc 'konfiguracja adc Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down...
Witam, przerobiłem nieco program kol. Teedd, pod swój mikrokontroler i kwarc, niby działa, ale nie mam regulacji częstotliwości, reguluje mi tylko wypełnienie, kończą mi się pomysły.. $regfile = "m8def.dat" $crystal = 8000000 $hwstack = 32 ' default use 32 for the hardware stack $swstack = 10 'default use 10 for the SW stack $framesize = 40 'default...
Witajcie. Robię malutkie projekty korzystając z Bascoma. Do tej pory wyłącznie na 2313 i jakoś sobie radziłem. W nowym projekcie postanowiłem zastosować Atmega8535 i od razu natrafiłem na problem. Mianowicie po włączeniu przerwań od Timer0 nic nie działa jak powinno. Pomimo tego że procedura obsługi wyświetlacza jest wołana z obsługi przerwania na wyświetlaczu...
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)...
Witam Chcę odczytać stan baterii przy pomocy ATmegi8L. Niestety wartość którą pokazuje uC jest ciągle taka sama bez względu na poziom naładowania baterii. Wartość napięcia baterii po naładowaniu to 4,18 V. Nie wiem czy dobrze połączyłem: Avcc -------> Vcc PinC.0 -------> + bateria Config Adc = Free , Prescaler = Auto , Reference = Avcc Dim Wart_adc...
Proszę o wyjaśnienie przyczyny przekłamań odczytu temperatury z czujnika DS18B20, program poniżej. Najczęściej układ "kłamie" że jest 55 lub 127,5 °C Dodam że wykorzystuję odbiornik RC5 i PWM do sterowania podświetleniem LCD. Czy przekłamania mogą się brać z tego że kilka komend korzysta z tych samych timerów lub przerwań timerów? jak to obejść z góry...
po co korzystasz jako wyjścia z portu C , przecież do testów masz wolne pozostałe porty w ten sposób za każdym razem będziesz poprawiał program do sprawdzenia innego wejścia przetwornika $regfile = "M8def.dat" $crystal = 8000000 Config Lcdpin = Pin , Db4 = Portd.3 , Db5 = Portd.2 , Db6 = Portd.1 , Db7 = Portd.0 , E = Portd.6 , Rs = Portd.7...
kod: Config Adc = Single , Prescaler = Auto , Reference = Off dalej w kodzie: U = Getadc(0) dla deklaracji Reference = AVcc i podpięciu do napięcia wyj. ukł. 7805 nogi Vref układ pracuje prawidłowo ale potrzebuję zmniejszyć Vref i nie wykorzystywać Internal Reference (ok. 2,56V) Przy Reference= Off i TL431 pomiary wskazują wartość ok. 3 krotnie zawyżoną....
Witam. Chcę zrobić zasilacz (2,5V) sterowany mikrokontrolerem. Chcę do tego użyć ATmegi8, wewnętrznego ADC i PWM. I tu moje pytania: 1.Jeśli przetwornik ADC jest w trybie free, to jak odczytać wynik? Bo gdyby był w single byłoby prosto- getADC() 2.W jaki sposób można regulować napięcie wyjściowe oprócz PWM(najlepiej jakieś szybsze rozwiązanie) Docelowo...
Sprawdziłem przed chwilą na mojej ATMEGA32 kod: [syntax=basic4gl]$regfile = "m32def.dat" ' specify the used micro $crystal = 11059200 ' used crystal frequency $baud = 115200 ' use baud rate Dim W As Integer Config Adc = Single , Prescaler = Auto , Reference = Avcc Config Porta = Input Porta = 0 Start Adc Do W = Getadc(0) Waitms 200 Print W Loop End[/syntax]...
To już jest banalne - czysta matematyka :) Ja robię to w swoich projektach w ten sposób: Dim A As Single ' WAŻNE! Dim Pwm As Word Dim Odczyt As Word '-- ' tu konfiguracja adc i pwm ' ' '-- Do Odczyt = Getadc(1) A = 1023 / 716 '716 bo 30% z 1023 to 307 czyli 1023-307=716 A = Odczyt / A Pwm = A + 307 'dodajemy te 30% czyli 307 . . . Loop Co w...
Mam problem z podłączeniem tego (prawdopodobnie)LTR5576D do atmegi. Chce podłączyć to pod ADC i sprawdzać natężenie światła w podczerwieni. Chciałem zastosować 3 takie układy do budowy line follower'a. Niestety po podłączenie tego do ADC atmegi na wyświetlaczu zawsze pokazuje mi wartość 1023(świeciłem na to pilotem od tv, zasłaniałem palcem). Podłączam...
Witam serdecznie Jak można do tego kodu niżej dodać programowy PWM? [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 8000000 Ddrb = &B00111111 : Portb = &B11000000 Ddrc = &B11001111 : Portc = &B00XX0000 Ddrd = &B11111110 : Portd = &B00000001 Dim Licznik As Byte Dim X As Byte Dim Y As Byte Dim W As Word Dim E As Word Config Adc = Single , Prescaler...
Witam, Jakiś czas temu wpadłem na pomysł, by stworzyć prosty rejestrator napięcia komunikujący się z PC za pomocą przejściówki RS232. Pierwsza wersja (płytka stykowa) jest oparta o uC Attiny13, z programowym uartem. Działa bardzo dobrze, aczkolwiek problem pojawił się z zasilaniem. Niestety prąd który można wyciągnąć z typowej przejściówki USB-RS232...
Nareszcie twórcza odpowieć. Dięki wielkie myślę że coś z tym zrobię chociarz nie ukrywam że wolałbym ręczny ruch potencjometru jako priorytet lecz ten program a właściwie atmega musi zmieścić jeszcze więcej funkcji. A jak zrobić żeby flaga była ustawiana dopiero po odebraniu komunikatu? Dodano po 2 Przepraszam za odgrzewanie tematu, napisałem program...
bascom atmega8 getadc woltomierz getadc bascom getadc
pralka grzałka samsung 55pfs8109 matryca lodówka naprawa rozmrażanie parownika
pasta lutownicza pasta lutownicza
Junkers ZW-14 – demontaż spinki zaworu napełniającego wodę, klips U, wymiana O-ring Instalacja nowego logo startowego w radiu samochodowym Android – formaty, metody, bezpieczeństwo