Здравствуйте! Собрал велоспидометр по этой схеме. Работает только если к дисплею подключить отдельное питание. После трёх дней тыканья мультиметром и моделирования в протеусе, заподозрил что в схеме допущена ошибка: перепутаны 8 и 12 ноги МК. А плата уже спаяна... Нельзя ли в прошивке поменять работу этих ног? И как это сделать? На обеих должна меняться полярность при нажатии кнопки, которая сидит на 7-ой ноге МК. Сейчас полярности меняются несвоевременно, поэтому устройство не работает. Переделывать плату не хотелось бы...
И второй вопрос не в тему, но по этой же схеме. На преобразователе MAX1674 у меня почему-то ноги LX и OUT находятся в КЗ. Это без подачи напруги на неё. Может при подаче напряжения они разъединяются или микросхему можно выбросить?
Если есть исходник, и он написан грамотно (все определения в одном месте), то можно просто переопределить ноги и перекомпилировать. Если исходника нет, то надо просто порезать дорожки и пересоединить их проволочками - работы пару минут, из них 1.5 мин - это разогрев паяльника.
Алгоритм смены полярности какой? По логике должно быть как: первое нажатие - включается преобразователь (8 нога) (следовательно и сам дисплей), второе - включается подсветка (12 нога), 3-е - все выключается. Если так, то после первого включения должна каждый раз проходить инициализация дисплея, без этого он ничего не покажет.
КЗ между LX и OUT может быть и не КЗ, а диод, встроенный в ключ, померяйте падение напряжения в обе стороны. Преобразователь-то работает? При открытии T2 есть что на выходе?
Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)
Перерезать дорожки и перепаять я сумею, но делать это нежелательно по той причине, что хочу хоть немного разобраться в написании программ. Спаять по схеме не сложно - все на глазах.. А вообще, в таких делах я новичок. Это первая моя работа (если не считать программатор от порта LPT на пяти проводках). С T2 выходит напряжение 0,42в. Этого мало для того чтобы преобразователь заработал, но, кроме этого, открывается он не тогда, когда должен! И подсветка дисплея тоже не вовремя срабатывает (при подключенном дополнмтельном питании на дисплей все работает когда Т2 закрыт!!!). Думал что ошибка в прошивке, а вот поменяв местами в протеусе 8 и 12 ноги вроде все на свои места встало
Преобразователь должен стаботать при пробуждении МК, т.е. при первом же срабатывании геркона после спячки. Исходники есть. Как написан - не знаю потому что в этих делах я ноль. Чуть позже выложу
Преобразователь у меня сейчас выпаян, т.к. было обнаружено КЗ в нем. Вне схемы тоже КЗ. Если там диод, то он же не будет КЗ показывать, прозванивая его мультиметром меняя при этом щупы местами? Ведь у них полярность есть...
Господа товарищи, помогите, пожалуйста с прошивкой чтобы исходная схема заработала! Автор этой схемы внёс изменения в ней, а саму схему не перерисовал! По схеме 11 нога никуда не подключена, а на деле он её подключает!!!! Переделывать как у него - не вариант! Лишние ноги я откусил чтобы освободить пространство для дорожек, и 11 ногу в том числе! Связаться с автором не получается...
Engineer_Keen писал(а):Если есть исходник, и он написан грамотно (все определения в одном месте), то можно просто переопределить ноги и перекомпилировать.
Ну, судя по набору файлов, выложенных ТС, исходники есть...
Теперь осталось только найти того, кто "перекомпилирует"..
С 12 ногой все в порядке. Нужно переписать только 8 ногу для любого недорогого транзистора Т2. Тот, который я поставил, придётся выпаивать из-за низкого напряжения на стоке.
Мда, код написан в плохом варианте... Везде управление ногами прописано напрямую, безо всяких определений
Собственно интересующий кусок это обработчик внешнего прерывания на INT1, к которому подключена кнопка, там инкрементируется переменная display, после чего вызывается вот это процедура:
Спойлер
displayon();
while (1)
{
// Place your code here
if (wakeup==1)
{
wake_up();
wakeup=0;
}
if (display==1) PORTB.0=1;
else PORTB.0=0;
if (display==2)
{
PORTD.4=0;
PORTB=0x00;
DDRB=0x00;
}
animation();
printspeed();
printdistanse();
if (sleeping>timesleep)
{
savedistansetoeeprom();
sleep();
}
perecur();
}
}
Я не поклонник Си, да и времени особо нет, так что пусть кто-нибудь другой дальше разбирается, но по логике получается в принципе верно. display меняется (в INT1) по циклу 0-1-2, при 0 и 2 на 12 выводе получается "0", при 2, на 8-м получается "1" (закрывает ключ) т.о. при 0 работает экран, при 1 включается подсветка , при 2 выключается и экран и подсветка.
Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)
Engineer_Keen, спасибо за проверку! То есть, если я собрал все точно по схеме, то должно все нормально работать? Тогда остаётся лишь подобрать транзистор и разобраться с преобразователем?
После заливки прошивки обычно идет верификация, если что не так, должно быть сообщение об ошибке. И еще, там тактирование идет от 4МГц кварца, новый контроллер по умолчанию тактируется от внутреннего RC-генератора на 8МГц с делителем на 8. Делитель насколько я видел в коде - убран программно, а вот источник надо переключать фьюзами. Вы фьюзы перешивали? Если нет, то надо перешить: прочитать (!), изменить CKSEL3-CKSEL0 (по умолчанию 0100, надо что-то вроде 1101) и записать.
Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)
Программа сама фьюзы расставила, вылезло сообщение о том, что они стоят для кварца 4МГц. Сообщений об ошибках не было. Вообще, работает все, но при подключенном к дисплею отдельном источнике питания. И вот в то время, когда МК считал километры, на 8 ноге была 1, т.е. ключ закрыт. А вот 0 на ней появляется когда не работает ничего...
Ну значит проблема либо в ключе, либо в DC-DC преобразователе. Можно попробовать выкинуть преобразователь и запитать всю схему от одного источника 4.5-5В.
Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)
Без преобразователя подал питание 5в на всю схему, подобрал транзистор Т2, теперь он выдаёт 5в при открытии, но на дисплее ничего не происходит. Ставлю перемычку на исток-сток чтобы питание дисплея не зависело от 8 ноги и все заработало как надо. Выходит, с восьмой ногой что-то не то все-таки. И чтобы включить подсветку, кнопку надо нажать раз 7. И ещё ключ не совсем закрывается - выдаёт 3в. Дисплей батарейку будет садить, если эти 3в будут идти на него постоянно?
В общем, есть один режим, при котором данные на дисплей не идут. И только в этом режиме 8 нога открывает ключ. Увеличил контрастность, увидел квадратики. Ставлю перемычку в этом режиме - все мертвое. Нажимаю кнопку один раз - все заработало. Убираю перемычку - дисплей гаснет, т.к. ключ закрыт в друрежимахимах. Может этот мёртвый режим надо убрать из прошивки? В спящем режиме ключ закрыт, значит, батарейка не сядет. Ключ закрывается полностью. Видимо, через дисплей ток шёл на сток транзистора, поэтому там было напряжение при закрытом ключе.
Engineer_Keen, огромное спасибо за то, что ткнул меня носом в нужное место! Хоть немного, но разобрался в этих непонятных буквах и цифрах. Нашёл в исходнике все portd4, что соответствует восьмой ноге и поменял там значения нулей и единиц. И заработало!!!