piotrek_nn napisał: Witam ,
wklejam kod jaki udało mi się wypocić. Miało być tak pięknie a wyszło jak zawsze
Zaloguj się, aby zobaczyć kod
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 masz spełniony, to sposób obliczenia tego napięcia masz błędny - winno byc:
W = V * 0.0025
(2.56/1024 = 0.0025) a nie 0.025
Jest to jednak dośc duża różnica w pomiarze.
Powiedzmy, zechcesz mierzyc napięcia wyższe niż referencyjne, wtedy wymagane jest stosowanie dzielnika napięcia (voltage divider), tak jak poniżej
I znów, rezystory R1 i R2 winny byc tak obliczone/'dobrane' aby napięcie U2 (do ADC) nie przekraczało napięcia referencyjnego przy założonym maxymalnym mierzonym napięciu U1. Dla poprawnego interpretowania wyniku pomiaru będzie koniecznośc określenia współczynnika: X = U1/U2 (dla wybranego dzielnika napięcia) i wtedy mierzone napięcie (U1) reprezentowane w twoim wzorze jako 'W' wyniesie:
W = V * 0.0025 * X
Cytat:
Nie mam pojęcia jak zrobić cos takiego aby wykonał warunek :
If 13< nap < 14 then
portb.1=1
If Nap > 13 and Nap < 14 then
set PORTB.1
end if
Powyższy twój zapis reprezentuje więcej niż jedno działanie arytmetyczne w jednej linii. Bascom ma zasadę:jedno działanie /1 linię
Tu możesz pominąc process obliczania napięcia, w zamian możesz w instrukcjach warunkowych wstawic tylko wartości ADC odpowiadające tym przedziałom napięc.
e marcus
0