• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Analog Input - wartośc od 1.1V do 3.3V
#1
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 ?
 
Odpowiedź
#2
Witaj,
Poczytaj sobie o funkcji MAP. Smile
[Obrazek: Sygnatura1-w60.jpg]
 
Odpowiedź
#3
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 ?
 
Odpowiedź
#4
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
 
Odpowiedź
#5
(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.
 
Odpowiedź
#6
Witam,
@krn78- oczywiście 700 :-)
Starość i już w oczach się ...
Pozdrawiam,
Tomek.
 
Odpowiedź
#7
(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ść.
 
Odpowiedź
#8
(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.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości