• 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
Wskaźnik spadku i wzrostu napięcia na arduino
#11
A jakie masz napięcie na pinie który je odczytuje ? Skoro ma 1,2 lub 0 to jest spadek czyli jak najbardziej ok
Ważne aby robić co się lubi albo lubić co się robi .
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji Wink
 
Odpowiedź
#12
Wskaźnik nie działa nie reaguje na zmianę napięcia cały czas się świeci "spadek" napis "kolor" brak..dodatkowo w jednym miejscu pojawaiaja sie cyfry od 0-5 zmieniaja sie jak sekundy taki sekundnik od 0-5 i tak wkoło.

Urządzenie do którego potrzebny jest ten wskaźnik to wykrywacz metali, zamiast "spadek" podstawiłem "zelazo" a zamist wzrost "kolor". Na wyjściu wykrywacza teraz jest zwykła dioda led, którą się ustawia potencjometrem w pozycji tzw. rzazenia, wtedy na tej diodzie jest napiecie 2,5 v i troszkę sobie skacze miedzy 2,45v a 2,55v i w momencie wykrycia przedmiotu w ziemi przez sondę np. zelaznego gwoździa dioda gaśnie napięcie na niej spada do 2,3 V, tym sygnalizuje że to przedmiot żelazny i odwrotnie jest na metale kolorowe np. mosiądz  dioda led sie zaczyna świecic jaśniej i tym sygnalizuje obecność metalu kolorowego, napęcie wzrasta do 2.7 v. I teraz pytanie bo może się tego nie da zgrać żeby wszystkie te informacje były wyświetlane na tym wyświetlaczu. Chciałbym wykonać taki wskaźnik dlatego że dioda led w dzień jest słabo widoczna, no i wykrywacz fajnie by wyglądał Smile , dodatkowo na wyświetlaczu chciał bym zrobić wskażnik naładowania akumulatora żelowego w procentach. Przesyłam fotkę jak by to miało wyglądać bo już troszkę próbowałem się bawić w programiste  Smile  te strzalki maja sie zapalać pod odpowiednik napisem w mmencie wykrycia zelaza to pod zelazem a jak nie ma nic to ma nie byc zadnej strzalki.


Tu jest ten Twoj kod z moim kodem który ustawia na wyświetlaczu ten napisy i wskazniki {strzalki} oraz graficzny akumulator z procentamai, ale tym narazie się nie zajmujmy dobrze bedzie jak na poczatek bedzie działał sam wskazniki metalu. Doszedłem w dwa dni jak się co rozmieszcza na wyświetlaczu Smile ale jak ten wskaźnik ma działać to już dla mnie czarna magia, może jak bym dłużej w tym posiedział to bym doszedł. Mam nadzieję że pomożesz Smile  

Kod:
// include the library code:
#include <LiquidCrystal.h>

float y = 0; // deklaracja zmiennej x ( zadeklarowana w tym miejscu jest widoczna dla całego programu )


// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);


byte znak[8] =
{
0x04, 0x1F, 0x01, 0x01, 0x0F, 0x01, 0x01, 0x1F,
       
};

byte znak1[8] =
{        
 
  0x04, 0x1F, 0x10, 0x14, 0x1E, 0x14, 0x10, 0x1F,


};


byte znak2[8] =
{        
 
  0x04, 0x0E, 0x15, 0x04, 0x04, 0x04, 0x04, 0x04,


};



void setup()
{
lcd.createChar(1, znak);
lcd.createChar(2, znak1);
lcd.createChar(3, znak2);
lcd.begin(16, 2);
y = map(analogRead(A0) , 0, 1023 , 0, 5 ); // przypisanie zmiennej y wartości odczytanej z portu analogowego A0

}



void loop()
{
 
lcd.setCursor(6, 2);
lcd.print("");
lcd.write(1);

lcd.setCursor(4, 2);
lcd.print(" ");
lcd.write(2);

lcd.setCursor(7, 2);
lcd.print("100%");

lcd.setCursor(0, 0);
lcd.print("Zelazo");
if ( y > 2.5 ){
lcd.setCursor(2, 1);
lcd.print("");
lcd.write(3);}


lcd.setCursor(11, 0);
lcd.print("Kolor");
if( y < 2.5 ){
lcd.setCursor(13, 1);
lcd.print("");
lcd.write(3);}
 
 
else if( y == 2.5 ){
lcd.setCursor(11,0);
lcd.print("      ");
lcd.setCursor(0,0);
lcd.print("      ");}

y = map(analogRead(A0) , 0, 1023 , 0, 5 );
int z = map(analogRead(A0) , 0, 1023 , 0, 5 );



}


Załączone pliki Miniatury
   
 
Odpowiedź
#13
Kod:
#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

byte znak[8] =
{
0x04, 0x1F, 0x01, 0x01, 0x0F, 0x01, 0x01, 0x1F,
};

byte znak1[8] =
{        
    0x04, 0x1F, 0x10, 0x14, 0x1E, 0x14, 0x10, 0x1F,
};


byte znak2[8] =
{        
  0x04, 0x0E, 0x15, 0x04, 0x04, 0x04, 0x04, 0x04,
};

void setup()
{
lcd.createChar(1, znak);
lcd.createChar(2, znak1);
lcd.createChar(3, znak2);
lcd.begin(16, 2);
}

void loop(){

int x = analogRead(A0);
float y = x * (5.0/1023.0);
  
lcd.setCursor(6, 0);lcd.print(y);// jak nie będziesz chciał wskaźnika napięcia usuń tą linijkę

lcd.setCursor(5, 1);lcd.write(2);
lcd.setCursor(6, 1);lcd.write(1);
lcd.setCursor(7, 1);lcd.print("100%");

lcd.setCursor(0, 0);lcd.print("Zelazo");
lcd.setCursor(11, 0);lcd.print("Kolor");

if ( y > 2.50 ){lcd.setCursor(2, 1);lcd.write(3);
lcd.setCursor(13, 1);lcd.write(' ');}

if( y < 2.50 ){lcd.setCursor(13, 1);lcd.write(3);
lcd.setCursor(2, 1);lcd.write(' ');}
  
}
Ważne aby robić co się lubi albo lubić co się robi .
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji Wink
 
Odpowiedź
#14
No pięknie to teraz działa Smile Ten wskaźnik napięcia jak najbardziej potrzebny bo potencjometrem ustawiam na równe 2,5 v (taka kalibracja) i wtedy śmiga wszystko ładnie się z wykrywaczem zgrało aż miło popatrzeć na wykrywkę teraz. Dzięki wileklie za to. Zamawiam atmegę i upycham do obudowy Smile  Teraz został ten wskaźnik rozładowania akumulatora żelowego, nie może się rozładować po niżej 10 V i i wiadomo że na arduino nie można podać na A1 12 v, więc zrobię dzielnik napiecia z rezystorów, a w kodzie trzeba zapisać 13v = 5v  i jak napęcie spadnie z 13v do 12v to arduino odczyta  4v i tak do 10 V. Wskaźnik działał by tak że 5v=100%, 4.5v=75% 4v= 50% 3.5v=25%  3v=0%
 
Odpowiedź
#15
tu masz przelicznik 0-100% gotowy pod A1 , musisz tylko po dzielniku odczytać wartość minimalną napięcia która będzie wskazywała 0% i wartość dla napięcia max która będzie wskazywała 100% i podstawić do tych 2 linijek

Kod:
int minimum = 0; // odczytane po dzielniku np. 9V
int maximum = 1023; // odczytane po dzielniku np. 14V

W monitorze szeregowym odczytasz wartość aktualną A1

Kod:
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

byte znak[8] =
{
0x04, 0x1F, 0x01, 0x01, 0x0F, 0x01, 0x01, 0x1F,
};

byte znak1[8] =
{        
    0x04, 0x1F, 0x10, 0x14, 0x1E, 0x14, 0x10, 0x1F,
};


byte znak2[8] =
{        
  0x04, 0x0E, 0x15, 0x04, 0x04, 0x04, 0x04, 0x04,
};

void setup()
{
lcd.createChar(1, znak);
lcd.createChar(2, znak1);
lcd.createChar(3, znak2);
lcd.begin(16, 2);
Serial.begin(9600);
}

void loop(){

int x = analogRead(A0);
float y = x * (5.0/1023.0);

int r = analogRead(A1);
int minimum = 0; // odczytane po dzielniku np 9V
int maximum = 1023; // odczytane po dzielniku 14V
int z = map(r, minimum, maximum , 0, 100);// dla 9V będzie 0% dla 14V będzie 100%
  
lcd.setCursor(6, 0);lcd.print(y);// jak nie będziesz chciał wskaźnika napięcia usuń tą linijkę

lcd.setCursor(5, 1);lcd.write(2);
lcd.setCursor(6, 1);lcd.write(1);
lcd.setCursor(7, 1);lcd.print(z);
lcd.print("% ");

lcd.setCursor(0, 0);lcd.print("Zelazo");
lcd.setCursor(11, 0);lcd.print("Kolor");

if ( y > 2.50 ){lcd.setCursor(2, 1);lcd.write(3);
lcd.setCursor(13, 1);lcd.write(' ');}

if( y < 2.50 ){lcd.setCursor(13, 1);lcd.write(3);
lcd.setCursor(2, 1);lcd.write(' ');}

Serial.println(analogRead(A1));
  
}
Ważne aby robić co się lubi albo lubić co się robi .
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji Wink
 
Odpowiedź
#16
Dzała Smile rozumiem żę te procenty bedą stopniowo spadać wraz ze spadkiem napiecia?
 
Odpowiedź
#17
Tak w przedziale jaki ustawisz
Ważne aby robić co się lubi albo lubić co się robi .
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji Wink
 
Odpowiedź
#18
Dzięki wielkie za pomoc.
 
Odpowiedź
#19
Mam jeszcze jedno pytanko co do dzielnika napięcia, akumulator żelowy ma 13 v na pełnym naładowaniu a do arduino wiadomo że do wejścia analogowego A1 muszę podać to 13 v zamienione na 5v więc jak to najlepiej zrobić żeby nie upalić atmegi?? na rezystorach? czy wystarczy stabilizator 7805?
 
Odpowiedź
#20
Nie może być stsbilizator na rezystorach . 2 kilo między a1 i masę a 10 kilo między a1 i 13v wynikowa na pinie a1 dla 10v będzie 2v . Dlatego max i min musisz podstawić do wartości jak ci podałem.
Ważne aby robić co się lubi albo lubić co się robi .
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji Wink
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości