Показать сообщение отдельно
Старый 07.02.2014, 20:39   #76
983
Ёж (технобомж)
 
Аватар для 983
 
Регистрация: 15.04.2012
Адрес: Zakarpatija , Mukačevo
Сообщений: 1,148
Вес репутации: 14
983 на пути к лучшему
Отправить сообщение для 983 с помощью Skype™
По умолчанию

Это здОрово !
Только наверно есть смысл не пересылать сам, прошитый контроллер, а, по возможности совместно,
написать код прошивки, и прошивать уже на местах -- всё равно программатор будет нужен полюбому.

А алгоритм должен получиться -- проще некуда :
  1. инициализируем микроконтроллер, прописываем регистры и прочие подготовительные дела, объявляем переменные.
    var OldCurrent = 7FH; // значение тока от предыдущего замера
    var NewCurrent = 7FH; // значение тока от свежего замера
    var SignStep = 1; // знак действия по изменению скважности ( 0 / 1 )
    var SignCurrent = 1; // знак изменения тока после действия ( 0 / 1 )
    // вроде для начала и хватит ))
  2. Устанавливаем ШИМ , например, 7F, (если он восьмибитный) или так же , половинку при другой битности.
  3. SignStep = SignStep ⊕ SignCurrent ; // (если такая запись позволительна)

    if (SignStep == 0) {ШИМ = ШИМ - 1;}
    else {ШИМ = ШИМ + 1}

    или наверно изящнее так:
    ШИМ = ШИМ + (SignStep * 2 - 1)

    и наверно есть смысл сделать проверку, чтоб значение ШИМ не выскакивало за пределы 0 -- FF и не стало носиться по кругу в случае аппаратного сбоя.
  4. OldCurrent = NewCurrent //
    выдерживаем паузу, чтоб успокоились переходные процессы
    делаем замер тока, значение записываем в переменную NewCurrent
  5. if (NewCurrent > OldCurrent) { SignCurrent = 1; }
    else { SignCurrent = 0; }
  6. goto метка 3; // если безусловный переход на метку допустим в языке программирования, в противном случае организовать рекурсивный вызов функции

Вот и всё.
Ток, истинное его значение, собственно и не нужно : достаточно просто получать значения из АЦП
и тупо сравнивать его с замеряным в предыдущем цикле и получить знак результата сравнения.

Могу попытаться написать более конкретно на javascript -- он по синтаксису и прочим заморочкам очень похож на C,
портировать с него на С не должно составить особого труда ( а то и вообще никакого ))).

Дальше можно развить тему, добавить индикацию, сбор статистики, слежение за режимом заряда аккумулятора,
связь с компом и т. д.
__________________
73 !
983 вне форума   Ответить с цитированием