FAQ | Points | Add... | Recent posts | Search | Register | Log in


[ASM][atmega8] Przeliczanie napięcia z ADC


Post new topic  Reply to topic      Main Page -> Forum Index -> Microcontrollers Generally -> AVR Microcontrollers -> [ASM][atmega8] Przeliczanie napięcia z ADC
Author
Message
malina555
Poziom 13
Poziom 13


Joined: 04 Jan 2009
Posts: 125

Post#1 Post from the author of the topic 28 May 2011 17:27   

[ASM][atmega8] Przeliczanie napięcia z ADC


Witam. Mam problem z programem napisanym w asemblerze (którego niestety nie znam). Mianowicie potrzebuje z niego wyciągnąć w jaki sposób przelicza on napięcia z ADC w tym przypadku na wartość temperatury. Dokładnie chodzi mi o pomiar na ADC0. Jest mi to potrzebne ponieważ chciałbym wzór przeliczania z tego programu wstawić do programu który piszę w Bascomie.

Z góry dziękuje za pomoc :)



Program.rar
 Filename:  Program.rar
Download
 Contents:  
 Filesize:  7.02 KB
 Punkty:  0

Back to top
   
Google

Google Adsense


Post# Post from the author of the topic 28 May 2011 17:27   





Back to top
   
sweter_007
Poziom 11
Poziom 11


Joined: 23 Apr 2006
Posts: 66
Location: Warszawa/Sokołów Podlaski

Post#2 28 May 2011 17:45   

Re: [ASM][atmega8] Przeliczanie napięcia z ADC


Z szacunkiem. Porywasz się z widłami na słońce. Naucz się assemblera a wszystko się wyjaśni. Poza tym radziłbym zostawić bascoma i przerzucić się na C.
A propo ADC. Ja to robie tak:
W zmiennej uint16_t odczyt, mam odczyt z ADC. Przyjmując 10bit rozdzielczość i 2.56 Vref.
Liczę: 2^10=1024; 2.56/1024=0,0025=25*10^(-4)
Kolejna zmienna: uint32_t wynik=odczyt*25 / 10 i mamy wynik w mV (w szczególe, to przed dzieleniem przez 10 sprawdzić czy ostatnia cyfra jest >4 i dodać 1 jeśli tak)

Kolejne cyfry do wyświetlenia możemy uzyskać przez rekurencyjne dzielenia modulo i odejmowanie. Pozdr
[error]nie podzielimy szybko przez 10:)
Back to top
   
Google

Google Adsense


Post# 28 May 2011 17:45   





Back to top
   
malina555
Poziom 13
Poziom 13


Joined: 04 Jan 2009
Posts: 125

Post#3 Post from the author of the topic 28 May 2011 17:58   

Re: [ASM][atmega8] Przeliczanie napięcia z ADC


W bascomie mam to zrobione tak:

Code Basic4GL - [expand]
Start Adc
 
Readeeprom Nastawa , 2
 
Do
Home
Wart_ac = Getadc(0)
Waitms 100
V = Wart_ac * 0.0049
Temp = V * 260
Temp = Temp + 25
 
Temp_lcd = Fusing(temp , "#.&")


Ta wartość ma wskazywać wartość temperatury z czujnika w kobie lutowniczej. Tyle że zmieniam właśnie kolbę na inną i wzmacniacz termopary został wykonany inaczej przez co wartość temperatury teraz się nie zgadza :/ Czyli teraz aby wyliczyć samo napięcie muszę zrobić tak?????:

Code Basic4GL - [expand]
Start Adc
 
Readeeprom Nastawa , 2
 
Do
Home
Wart_ac = Getadc(0)
Waitms 100
mV = (Wart_ac * 25) /10
 
Temp_lcd = Fusing(temp , "#.&")


A tutaj dołączam w języku rosyjskim niestety opis pomiaru tej temperatury:

Quote:
При изменении напряжения на среднем выводе (контролируйте высокоомным вольтметром или мультиметром) от 0 В до 2.5 В должны появиться на верхнем ряду, HG1-HG3, показания, точнее при изменении от 50 мВ до 2.4 В показания должны меняться от 10 до 480, т.е. программная характеристика АЦП 5 мВ/°C


Z tego co wywnioskowałem z translatora to wynika że 5mV to jeden stopień celsjusza. Dobrze to odczytałem??? W jaki sposób można to wyliczyć teraz???
Back to top
   
Google

Google Adsense


Post# Post from the author of the topic 28 May 2011 17:58   





Back to top
   
asembler
Poziom 22
Poziom 22


Joined: 16 Sep 2007
Posts: 2132

Post#4 30 May 2011 22:28   

Re: [ASM][atmega8] Przeliczanie napięcia z ADC


sweter_007 wrote:

Dzielenie przez 10 możemy zastąpić przez przesunięcia bitowe w prawo.

Od kiedy?
Jak juz koniecznie dzielic przez 10 stosujac przesuniacia 2 prawo to może tak?
Oczywiscie zakladając wymagana dokładnośc
X=a/8-a/32+a/128-a/512+............
Back to top
   
sweter_007
Poziom 11
Poziom 11


Joined: 23 Apr 2006
Posts: 66
Location: Warszawa/Sokołów Podlaski

Post#5 31 May 2011 12:52   

Re: [ASM][atmega8] Przeliczanie napięcia z ADC


Skorzystanie z rozwinięcia w szereg Taylora jest jednym ze sposobów. Chociaż wydawało mi się, że przybliża się rozwinięciem jakieś bardziej skomplikowane wyrażenia, gdzie stosunek dokładność/czas wykonania będzie korzystny. Assemblera znam z programowania na PC. W AVR używam C, na razie asm nie jest mi potrzebny.
Z ciekawości zajrzałem do datasheeta atmegi8. Mnożenie jest wykonywane w dwa cykle, czyli jeśli dobrze rozumuję, w przypadku zmiennych 8bitowych bardziej opłaca się po prostu pomnożyć(tam gdzie nie mnożymy przez potęgi 2). Jednak nie znalazłem instrukcji dzielenia. Kolega assembler wie może jaki kod jest generowany? Jakaś pętelka z odejmowaniem?
Znalazłem: http://www.atmel.com/dyn/resources/prod_documents/doc0936.pdf
Z różnych postów wynika, że zajmuje to ok. 650 cykli. WOW. Wg. mnie takie rozwinięcie Taylora jednak świetnie by się spisywało przy generowaniu grafiki, szczególnie 3d.
Back to top
   
Google

Google Adsense


Post# 31 May 2011 12:52   





Back to top
   
asembler
Poziom 22
Poziom 22


Joined: 16 Sep 2007
Posts: 2132

Post#6 31 May 2011 13:14   

Re: [ASM][atmega8] Przeliczanie napięcia z ADC


Kolega asembler wie jaki kolega asembler genreuje kod.
W zaleznosci do zastosowania stosuje kilka metod mający swoje wady i zalety czas/wielkosc kodu/ilość wykorzystywanych rejestów

Najprostrza jest oczywiscie metoda cyklicznego odejmowania.
Dokładna metoda która była tu optymalizowana wspólnie na elektrodzie i doszło o ile pamietam do 324 taktów przy dzieleniu 4 bajtowych liczb (mogę sie mylić)
Przybliżona matoda jak wyżej.
Dokładna ale nie taka szybka metoda wyliczeń od razu na liczbach BCD co po uwzględninu że potem wynik bedzie wyświetlany w systemie 10 prawie wychodzi na to samo. Procedury napisane w ten sposób aby można było uzyskiwac dowolną dokładnosć (max 128 cyfr
Gdziekolwiek tylko sie da to staram sie jednak stosowac dzielnie przez 2,4,8 ... a kompilator wylicza resztę i wrzuca jako stałe.
Back to top
   
Post new topic  Reply to topic      Main Page -> Forum Index -> Microcontrollers Generally -> AVR Microcontrollers -> [ASM][atmega8] Przeliczanie napięcia z ADC
Page 1 of 1
Similar topics
atmega8 i wybór napięcia odniesienia dla ADC (7)
[ADC][ATmega8][C] Jak porównać dwa napięcia? (3)
AGND w ATmega8. Pomiar napięcia na wejściu ADC. (1)
Atmega8 + ADC - miernik napięcia (3)
[Atmega8][ASM]ADC nie działa poprawnie (11)
[AVR] [ATMEGA8] [ASM] Przetwornik ADC (43)
[ATMEGA8][ASM] Problen z ADC (7)
Bascom 1.11.9.5 - przeliczanie napięcia z ADC (33)
[Atmega8] Napięcia na nóżkach ADC przy braku VCC (14)
pomiar wartości napięcia ujemnego przez ADC Atmega8, Bascom (36)

Page generation time: 0.176 seconds


FAQ || Administrator || Moderators || Widgets and banners || Contact
elektroda.pl topic RSS feed