04-20-2014, 11:10 PM
wilkxt napisał(a):Czy taki prosty to nie wiem, podrzuc jakiś opis to spróbujemy zaimplementowac
taki kod wymyśliłem - prosty, ale powinien działać [jezyk C]
Startujemy ze zmiennymi 0.
Ponieważ 0 = 0 więc pierwszy if spełniony więc zwiększamy wypełnienie o 1.
Drugi If nie spełniony więc obrót zegara i drugie sprawdzenie.
Ponieważ Pmax dalej jest zero, a wypełnienie 1 to jeśli płynie prąd to znowu pierwszy warunek jest prawdziwy a drugi nie. Więc tak będzie się wykonywało aż w końcu dojdziemy do Maxa i wtedy będziemy odejmować mocy PWM, ale jeśli odejmiemy za dużo to znowu wrócimy do pierwszego warunku.
Jeśli natomiast wypełnienie dojdzie do 255 to program nic nie zrobi bo zwiększenie i 1 powodowałoby wyzerowane sie OCR1A.
Powinno to zadziałać.
a kod taki:
Kod:
uint8_t OCR1A, P, Pmax; //OCR1A - wypełnienie, P - moc wyliczona INP4*INP5, Pmax - moc max
int main (void) {
while(1){
if (P >= Pmax) {
Pmax=P;
if (OCR1A) {
Pmax=P;
if (OCR1A>0) OCR1A--;
}
}
}
Jeszcze tylko zastanawiam się czy nie dać ograniczenia do MAX Mocy żeby nie uszkodzić solara (nie wiem czy takie coś się może zdarzyć, ale to jest do rozważenia).
Przy Panelu jest napisane = Max moc np 240W - a zapewne związane to jest z MAX natężeniem prądu który może popłynąć przez panel - jak myślicie - moze do tego dojść?
<t></t>