Arduino Polska Forum

Pełna wersja: Analog Input - wartośc od 1.1V do 3.3V
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.

bullseye

Chciałem zrobić sobie prosty czujnik ciśnienia, niestety nie jest cyfrowy a analogowy:
0bar - 3Ohm
10Bar - 130Ohm

Chciałem dać go jako element dzielnika rezystorowego - z napieciem odniesienia 5V i tutaj rodzi się problem:

co zrobić by napięcie wejściowe 1.1V - 3.3V zmienić na skalę barów ? 1.1V to 0 Bar, 3.3V to 10Bar ?
Witaj,
Poczytaj sobie o funkcji MAP. Smile

bullseye

Super dzięki Smile
Tylko dla pewności czy dobrze zrozumiałem:

y = map(x, 1, 50, 50, -100);

1, 50 to cyfrowy odnośnik napiecia, czyli obliczam sobie ile to będzie 1.1V w zakresie 0-1023, a ile 3.3V (na szybko 1.1V = 300, 3.3V = 700)

a w 50 i -100 daję swoje wartości przetworzone, czyli 0B i 10B ?
Witam,
Powinno być (w przeliczeniu na Bar-y, o ile Twoje wartości przeliczeniowe są poprawne) y = map(x, 300, 7000, 0, 10);
Pozdrawiam,
Tomek
(14-12-2017, 09:55)Smaczek napisał(a): [ -> ]y = map(x, 300, 7000, 0, 10);
7000? Smile

(13-12-2017, 22:44)bullseye napisał(a): [ -> ]1, 50 to cyfrowy odnośnik napiecia, czyli obliczam sobie ile to będzie 1.1V w zakresie 0-1023, a ile 3.3V (na szybko 1.1V = 300, 3.3V = 700)
Jeśli masz możliwość, zanim zaczniesz mapować, skieruj odczyt z czujnika na monitor:
Kod:
Serial.println(analogRead(A0));
delay(200);
i spróbuj zaobserwować minimalne i maksymalne wartości.
Możesz też, przy okazji, spróbować uruchomić coś takiego:
Kod:
int min=1023;
int max=0;
int temp;

void setup(){
Serial.begin(9600);
}

void loop(){
temp=analogRead(A0);
if(min>temp){
min=temp;
}
if(max<temp){
max=temp;
}
Serial.print("min: ");
Serial.print(min);
Serial.print(", max: ");
Serial.println(max);
delay(200);
}
...i wtedy, na podstawie odczytów z podłączonego układu, możesz mapować sobie już dokładne wartości.
Witam,
@krn78- oczywiście 700 :-)
Starość i już w oczach się ...
Pozdrawiam,
Tomek.

bullseye

(14-12-2017, 09:55)Smaczek napisał(a): [ -> ]Witam,
Powinno być (w przeliczeniu na Bar-y, o ile  Twoje wartości przeliczeniowe są poprawne) y = map(x, 300, 7000, 0, 10);
Pozdrawiam,
Tomek

Własnie o to mi chodziło, choć zgodnie z sugestią kolegi pod Twoim postem, najpierw pomiary porobię Smile
A raczej zrobię dzielnik rezystorowy i wtedy pomierzę jakie napiecie będę miał przy MAX i MIN ciśnieniu - myślę że względem termistora w czujniku uzyskam 90% dokładność.
(14-12-2017, 23:14)bullseye napisał(a): [ -> ]A raczej zrobię dzielnik rezystorowy
Po co dzielnik rezystorowy? Arduino odczyta napięcie do 5V. Jeśli nie przekraczasz 3,3V, możesz to zrobić swobodnie bez rezystorów.