КАпай куда хочешь......... ( Зачем задавать дурацкие вопросы (ни схемы, ни измерений) ? ) Вероятно, где-то плохая пайка, значит, проверил не всё....собери второй раз... Вытащи контроллер, прозвони весь монтаж, проверь работу ключей....
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Доброе утро! Вчера тоже собрал "доктора", всю ночь пытался понять почему не работает. Проверял плату, менял прошивки но всё равно не хочет работать. Проверял на attiny2313, attiny13, attiny85, atmega16 (все мк 100% рабочие) с ними не работает, но с atmea8 (smd) (3 штуки проверил и на обоих прошивках ) всё прекрасно работает. Плату делал под себя с usb и преобразователем в diptrace (версия схемы v2e).
С прошивкой 2.11 доходит до "Init programming..." и всё. С прошивкой 2.09:
AUTOMATIC HVPP MODE Init programming... DONE Read signature... 00 94 00 - FAIL! Trying T2313 pinout..00 94 00 - FAIL! No chip in socket or chip does not responding
И загорается красный светодиод.
В ключах стоят (BC807-40, BC817-40) думаю на них. Кто нибудь собирал на этих транзисторах? Что где искать? Мозгов уже не хватает. Подскажите кто с таким сталкивался.
(Если нужно то схему и печатку, а также фото могу выложить).
Зарегистрирован: Чт сен 09, 2010 19:59:01 Сообщений: 123
Рейтинг сообщения:0
При реализации фус доктора столкнулся с таким результатом: при включении без пациента все соответствует нормальной работе в совокупности с Терминальной программой. при попытке реанимировать ATtiny2313 выдает: Init programming... DONE Read signature... 97 97 97 - FAIL! Trying T2313 pinout..06 91 02 - FAIL! При этом кратковременно на пациента подается 12 вольт и постоянно подано 5 вольт, причем после транзисторного ключа напряжение падает до 4,5-х вольт. Запитывал пациента и от отдельного БП 5V. Подскажите, кто знает, почему падает напряжение после 5 вольтового ключа? Контроллер зашит последней версией atmega_fusebit_doctor_2.11_m8 для Атмега 8 Извините за некоторе копирование со 9 стр. У меня точно же такая ситуация. Кто может и знает прошу откликнуться. С уважением, Виталий.
Вложения:
Комментарий к файлу: Последняя версия Доктора Atmega8.zip [11.7 KiB]
Скачиваний: 522
У меня была проблема в печатке. "МикроСопля" была. Т.к. терминал писал, что нет чипа, то я искал обрыв на плате. Когда звонил между собой дороги, то же всё ОК: кз нигде не было. Но в последствии оказалось что "сопля" была ПОСЛЕ резисторов и когда я звонил от начала, то всё было нормально(сопротивление то было, мало ли через что оно там есть). Потом посмотрел плату на просвет и увидел... Убрал - всё заработало.
Теперь осталось выложить файл печатки для общественности, да лучше со схемой А то получается похвастался, а мы теперь логти кусать должны Получилось шикарно! Я так понимаю, там вместо UART сразу USB? А COM тогда зачем? И адаптеры там вообще не нужны, или всё таки для каких-то чипов надо (гребёнка-то осталась)? С наскоку не пойму, тем более по фото.
Дело было вечером, делать было есть чего. Попросили меня помочь ATmega32 прошить. Ну, думаю, чего не помочь? Помогу. С утра смотался на рынок. И как в приказке, пошли дурака за бутылкой он одну и принесет. Вот и я одну купил. Дело то привычное. Меги шил то не раз. Вот вечером, окруженный вниманием домочадцев, и в объятиях пристального внимания я усаживаюсь творить добро. И вот не задача. Отвечая младшенькому на его очередной вопрос, по невнимательности, нажимаю на прошить Фьюзы и прошиваю их "0". Конечно танцы с бубном далеко за полночь не увенчались успехом, и следующий день - день сурка ... правда новый чип удачно был прошит и отправлен. Все то ничего, но раньше чип стоил 1 бакс, а нонче за него с меня содрали почти 4$. Не то, чтоб жаба душить начала, но справедливости ради вот я вспомнил, что у меня, по ранней неопытности еще штук несколько подобных валяется. Было решено повозится ради интереса. Конечно везде и все рекламируют Фьюз Доктор. Также и на эту статью я попал через поиск http://radiokot.ru/lab/controller/48/ Но нет возможности сейчас совсем травить платы и паять. А Ардуино мирно стоит на полочке. Вот и решил переписать выложенный здесь http://www.radiokot.ru/forum/viewtopic.php?f=25&t=19601 исходник в полезность.
Проанализировав это
Сначала собрал схемку
Но резисторы и транзисторы оказались в гараже, а хотелось быстрее все сделать. Получилось вот так
Это подключение к программатору для проверки успешности процесса и программирования.
int RDY_BSY = A5; //#define RDY_BSY - Вход "состояние программируемого МК". 0-занят (выполняется предыдущая команда), 1-готов к приёму следующей команды int OE = 12; //#define OE - Выход "управление режимом работы шины данных PORT_DATA" 0-выход, 1-вход int WR = 11; //#define WR - Выход "сигнал записи" 0-активный уровень int BS1 = 10; //#define BS1 - Выход "выбор байта" 0-младший байт, 1-старший байт int XA0 = 9; //#define XA0 - Выход "определение действия по положительному импульсу на выводе XTAL1 int XA1 = 8; //#define XA1 - Выход "определение действия по положительному импульсу на выводе XTAL1 /*ХА1=0, ХА0=0 - загрузка адреса ячейки памяти (младшего или старшего байта, в зависимости от уровня сигнала BS1)*/ /*ХА1=0, ХА0=1 - загрузка данных (младшего или старшего байта, в зависимости от уровня сигнала BS1)*/ /*ХА1=1, ХА0=0 - загрузка команды*/ /*ХА1=1, ХА0=1 - нет действия, режим ожидания*/ int PAGEL = A0; //#define PAGEL - Выход "сигнал загрузки страницы памяти" int Vpp_12V = A1; //#define Vpp_12V- Выход "напряжение 12 В" int BS2 = A2; //#define BS2 - Выход "выбор байта" 0-младший байт, 1-старший байт int XTAL1 = A3; //#define XTAL1 - Выход "тактовый сигнал" int Vcc_5V = A4; //#define Vcc_5V - Выход "напряжение 5В // RDY_BSY OE WR BS1 XA0 XA1 PAGEL Vpp_12V BS2 XTAL1 Vcc_5V - сигналы // 13 12 11 10 09 08 A0 A1 A2 A3 A4 - разряды int ledPin = 13; // номер выхода, подключенного к светодиоду
void setup() { DDRD = B11111111; // установить ноги порта D с 0 по 7 как цифровые выходы /*Двунаправленная шина данных подключаем к PB7-PB0*/ pinMode(RDY_BSY, INPUT); // устанавливает режим работы - выход для RDY_BSY входа pinMode(OE, OUTPUT); // устанавливает режим работы - выход для OE вЫхода pinMode(WR, OUTPUT); // устанавливает режим работы - выход для WR вЫхода pinMode(BS1, OUTPUT); // устанавливает режим работы - выход для BS1 вЫхода pinMode(XA0, OUTPUT); // устанавливает режим работы - выход для XA0 вЫхода pinMode(XA1, OUTPUT); // устанавливает режим работы - выход для XA1 вЫхода pinMode(PAGEL, OUTPUT); // устанавливает режим работы - выход для PAGEL вЫхода pinMode(Vpp_12V, OUTPUT); // устанавливает режим работы - выход для Vpp_12V вЫхода pinMode(BS2, OUTPUT); // устанавливает режим работы - выход для BS2 вЫхода pinMode(XTAL1, OUTPUT); // устанавливает режим работы - выход для XTAL1 вЫхода pinMode(Vcc_5V, OUTPUT); // устанавливает режим работы - выход для Vcc_5V вЫхода pinMode(ledPin, OUTPUT); // устанавливает режим работы - выход для ledPin вЫхода ИЛИ КНОПКА INPUT }
//---Перевод МК семейства MEGA (кроме ATmega161, ATmega163, ATmega323) в режим параллельного программирования--- void set_prog() //void set_prog (void) { //---Перевод МК ATmega8 в режим параллельного программирования (если запрограммирована ячейка RSTDISBL)--- // DDRC = 0b01111111;//RDY_BSY - вход, остальные выходы // PORTC = 0b11100000;//Подать на выходы PAGEL, XA1, XA0, BS1 лог. 0 // RDY_BSY OE WR BS1 XA0 XA1 PAGEL BS2 - сигналы // PORTC 7 6 5 4 3 2 1 0 - разряды порта
digitalWrite(PAGEL, LOW); //Подать на выходы PAGEL лог. 0 digitalWrite(XA1, LOW); //Подать на выходы XA1 лог. 0 digitalWrite(XA0, LOW); //Подать на выходы XA0 лог. 0 digitalWrite(BS1, LOW); //Подать на выходы BS1 лог. 0 digitalWrite(BS2, LOW); //Подать на выходы BS2 лог. 0 digitalWrite(RDY_BSY, HIGH); //Подать на выходы RDY_BSY лог. 1 digitalWrite(OE, HIGH); //Подать на выходы OE лог. 1 digitalWrite(WR, HIGH); //Подать на выходы OE лог. 1 delay(100); //Выждать не менее 100 nс // DDRD = 0b00000111; //Выходы XTAL1, 12V, 5V // Vcc_5V Vpp_12V XTAL1 - сигналы // PORTD 7 6 5 4 3 2 1 0 - разряды порта // PORTD |= 0b00000110;//Подать на МК ОДНОВРЕМЕННО Uпит, а на вывод RESET U = 12В digitalWrite(Vcc_5V, HIGH); //Подать на выходы Vcc_5V лог. 1 digitalWrite(Vpp_12V, HIGH); //Подать на выходы Vpp_12V лог. 1 delay(10000); // _delay_us(100); //Выждать не менее 100 nс digitalWrite(Vcc_5V, LOW); //Подать на выходы Vcc_5V лог. 0 digitalWrite(Vpp_12V, LOW); //Подать на выходы Vpp_12V лог. 0 digitalWrite(XTAL1, HIGH); delay(10); digitalWrite(XTAL1, LOW); //Подать на выходы XTAL1 лог. 0 delay(100); //DDRA = 0b11111111;//Выход шины данных }
//---Загрузка команды--- void loadcommand(byte command) //void loadcommand (unsigned char command) { digitalWrite(XA1, HIGH); // PORTC |= _BV(XA1); digitalWrite(XA0, LOW); /* // PORTC &= ~_BV(XA0); Установить выводы ХА1, ХА0 в состояние 10 загрузка команды */ digitalWrite(BS1, LOW); // PORTC &= ~_BV(BS1); Подать на вывод BS1 лог.0 PORTD = command; // PORT_DATA = command; Выставить на шину DATA код команды digitalWrite(XTAL1, HIGH); delay(10); digitalWrite(XTAL1, LOW); //PORTD |= _BV(XTAL1);_delay_us(10);PORTD &= ~_BV(XTAL1);//Подать на вывод XTAL1 положительный импульс }
//---Загрузка данных--- void load_data(byte data) { //void load_data (unsigned char data) digitalWrite(XA1, LOW); //PORTC &= ~_BV(XA1); digitalWrite(XA0, HIGH); //PORTC |= _BV(XA0);//Установить выводы ХА1, ХА0 в состояние "01" загрузка данных digitalWrite(BS1, LOW); //PORTC &= ~_BV(BS1);//Подать на вывод BS1 лог.0 PORTD = data; //PORT_DATA = data;//Выставить на шину DATA код команды digitalWrite(XTAL1, HIGH); delay(10); digitalWrite(XTAL1, LOW); //PORTD |= _BV(XTAL1);_delay_us(10);PORTD &= ~_BV(XTAL1);//Подать на вывод XTAL1 положительный импульс }
//Запись старшего конфигурационного байта loadcommand(0b01000000); //Загрузить команду "Запись конфигурационных ячеек" load_data(0b11011001); //Загрузить старший конфигурационный байт digitalWrite(BS1, HIGH);//PORTC |= _BV(BS1);//Установить BS1 в лог.1 digitalWrite(BS2, LOW); //PORTC &= ~_BV(BS2);//Сбросить BS2 в лог.0 digitalWrite(WR, LOW); //PORTC &= ~_BV(WR);//Подать на вывод WR лог.0 (передний фронт) delay(20); //_delay_us(20);//Длительность импульса digitalWrite(WR, HIGH); //PORTC |= _BV(WR);//Подать на вывод WR лог.1 (задний фронт) //while(bit_is_clear(PINC, RDY_BSY));//и ждать появления на выводе RDY/BSY сигнала лог.1 CIPState = digitalRead(RDY_BSY); while(CIPState == LOW) { CIPState = digitalRead(RDY_BSY); } digitalWrite(BS1, LOW); // PORTC &= ~_BV(BS1);//Сбросить BS1 в лог.0 delay(100); // _delay_us(100);
//Чтение младшего конфигурационного байта loadcommand(0b00000100); // DDRA = 0x00;//Порт А перевести на вход DDRD = B00000000; // установить ноги порта D с 0 по 7 как цифровые входы /*Двунаправленная шина данных подключаем к PB7-PB0*/ PORTD = 0xFF; //с подтягивающими резисторами digitalWrite(OE, LOW); //PORTC &= ~_BV(OE);//Сбросить ОЕ digitalWrite(BS2, LOW); //PORTC &= ~_BV(BS2);// BS2 digitalWrite(BS1, LOW); //PORTC &= ~_BV(BS1);// BS1 в лог.0 delay(250); //_delay_us(250); low_fuse = PIND; //Считать значение младшего конфигурационного байта
//Чтение старшего конфигурационного байта digitalWrite(OE, LOW); //PORTC &= ~_BV(OE);//Сбросить OE в лог.0 digitalWrite(BS2, HIGH); //PORTC |= _BV(BS2);//Установить BS2 digitalWrite(BS1, HIGH); //PORTC |= _BV(BS1);// BS1 в лог.1 delay(250); //_delay_us(250); high_fuse = PIND; //Считать значение старшего конфигурационного байта digitalWrite(OE, HIGH); //PORTC |= _BV(OE);//Установить OE в лог.1
DDRD = 0xFF; //Порт А - выход PORTD = 0; PORTB = 0; PORTC = 0; //Обнулить порты для предотвращения паразитного питания (через порты) //PORTD &= 0b11111000;//Снять питание } while((low_fuse != 0b11100001) || (high_fuse != 0b11011001));//Закончить цикл программирования если запись произведена успешно digitalWrite(ledPin, HIGH); //PORTB |= _BV(PB3); //и подсветить светодиод } } }
В итоге: заливаем прошивку в Ардуино. Видим горящий светодиод на самой плате Ардуино. Жмем кнопку "PROG". Он тухнет. (В моем случае я ставил задержку в программе на несколько сек. перед тем как я руками нажму кнопки подачи +12В и +5В. Я жму и держу кнопки питания пока не загорится опять светодиод на плате - говоря, что все прошито) В случае родной схемы то через секунду загорается опять светодиод на плате - говоря, что все прошито. Там, как и писал автор, стирается блокировка и память. И шьются фьзы как у заводской установки.
Огромное спасибо автору Черняков С.С. chernyako-sergej@yandex.ru Евпатория за Проект "РЕАНИМАТОР AVR" и за исходники.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 86
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения