• 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
eBike - Początek - tester LI-Ion
#1
Witam, na początek dodam że jestem "Bardziej" początkujący w temacie programowania, niż powinienem jako elektronik. 
Mój problem.. a raczej niewiedza, spowodowała iż muszę zaczerpnąć wiedzy na forum, a zwykle lubię dużo poczytać, wyciągnąć jakieś wnioski i coś samodzielnie działać. 
Próbuję jakoś "wymyślić" prosty układ arduino Uno + wyświetlacz 20x4 + tranzystor jako prosta rozładowarka / tester pojemności dla ogniw Li-Ion 18650 (i żadnych innych nie mam zamiaru testować Wink ) o stałym prądzie rozładowania.
o ile wyzwolenie tranzystora do przepływu prądu przezeń i rezystor w szeregu (jako pomoc w wytracaniu mocy) nie mam problemu, o tyle mam problem z stabilizacją płynącego prądu w stosunku do napięcia ogniwa, by prąd nie spadał wraz z spadkiem napięcia (z prawa Ohma).

Nie wiem czym to ugryźć, by Arduino kontrolowało prąd jaki płynie, i podciągało prąd w górę, w chwili kiedy napięcie spada (interesuje mnie prąd 1A ciągły w zakresie napięć 4,2 ~ 3.0V). 
informacje na wyświetlaczu, jakie do tej pory "sobie ustaliłem" to przykładowo:
Ub: 4.00V  Ib:1.00A
C: 2600mAh
Tt: 3h20m
jeśli ktoś ma pomysł, jak rozwiązać stały prąd przy zmiennym (opadającym) napięciu ogniwa, proszę o pomoc, najlepiej jakieś przykłady. 

PS. pomiar prądu odbywa się poprzez pomiar napięcia rezystora obciążającego 1Ohm włączonego między masę, a tranzystor, 1V spadku napięcia odpowiada prądowi 1A.
 
Odpowiedź
#2
Dlaczego nie zastosujesz czujnika prądu ? np. takiego.

https://www.maritex.com.pl/media/uploads...ACS712.pdf

jest zasilany z zewnętrznego źródła wiec napięcie nie ma wpływu na pomiar prądu .
Ważne aby robić co się lubi albo lubić co się robi .
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji Wink
 
Odpowiedź
#3
ale Arduino będzie zasilane z zewnątrz (zasilacz laboratoryjny) i tylko ma odczytywać spadek napięcia na rezystorze.
Druga sprawa, maksymalnie możliwe chciałbym uprościć układ pod kątem elektronicznym - Dla przyszłych majsterkowiczów, na zasadzie "kopiuj wklej" i kup części elektroniczne za 3zł Wink
No i ten czujnik przepływu prądu, nie rozwiązuje problemu "podążania" arduino, by zwiększało sygnał analogowy na Bazie tranzystora, jak prąd będzie spadał (aktywnie będzie zwiększał obciążenie baterii). Bo działanie ma bardzo podobne do tego, co robi rezystor - czyli daje sygnał analogiczny napięciowy, liniowo względem prądu płynącego. Rezystor zaś wywołuje spadek napięcia (Oraz wspomaga tranzystor, oddając 20-30% ciepła całkowitej straty w radiator).
jedyna różnica między pomiarem tych 2 metod, to taka, że moja jest pomiarem bezpośrednim, a na czujniku pośrednim. Smile

W nocy wpadłem na pomysł wrzucenie w pętle polecenia "if", bo napięcie na ogniwie 18650 będzie tylko maleć, więc można by było zrobić to w taki sposób,
if (A1) < 1V //Spadek napięcia na R obciążającym)
jesli prawda baza =baza + 1 (nie wiem czy X nie jest przypisany do jakies konkretnej funkcji)
jeśli fałsz (delay 10)
i tak w kółko razem z pomiarem napięcia baterii. Przy czym baza to wyjście analogowe np. A5 przez rezystor do tranzystora.
 
Odpowiedź
#4
Jak bym nie próbował, niestety nie udaje mi się wykonać podnoszenia napięcia na złączu analogowym (bo programowo udało mi się to ogarnąć własnie poprzez funkcję "if" na zasadzie licznika).
Nawet jeśli w osobnym zeszycie uruchomię sam licznik
A = A + 1
analogWrite(A, A5)
delay (100)
to napięcie na złączu analogowym A5 nie podnosi się, a raczej swobodnie sobie pływa i multimetrem ciężko jest je zmierzyć, dioda led przez opornik świeci światłem ciągłym, bez zwiększania jasności świecenia (nawet po 20 minutach).
Pytanie brzmi, czy mój klon jest wadliwy, czy ogółem Arduino nie ma takiej możliwości by piny "Analog" zrobić jako piny wyjścia analogowego?
 
Odpowiedź
#5
Jako, że jest to forum, a dział to piaskownica - podzielę się swoim BŁĘDEM.
otóż Arduino Uno R3 (klon, nie wiem jak z oryginałami) - NIE posiada WYJŚĆ ANALOGOWYCH.
ale swój zamysł oparłem na wyjściu PWM i funkcji If. Kod wygląda tak:

if (wartość odczytana < Wartość zadana)
{
licznikA++;
float licznikB = map(licznikA, 0, 255, 0, 255);
pinMode(PWM_PIN, OUTPUT);
analogWrite(PWM_PIN, licznikB);
}

licznikA++ będzie nam dodawał w każdym cyklu +1 jeśli warunek będzie spełniony, czyli jeśli wartość odczytana będzie mniejsza od wartości zadanej.
W chwili kiedy wartość zadana i odczytana są sobie równe, licznik zatrzymuje się, a sygnał na wyjściu PWM (licznikB) utrzymuje się na zadanym poziomie.
jeśli licznikA zliczy wartość większa niż 255, to sygnał PWM zawraca do 0 co każde 256 kroków licznikA.
pozdrawiam serdecznie ; )
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości