Прошивка atmega32l стиральной машины с помощью tl866
Итак, в предыдущем уроке мы наконец то доделали простенький автомат освещения. В принципе осталось всего ничего- заливаете скетч в любую Ардуину, собираете схему и… все! Все работает! Но! Давайте теперь попробуем посчитать денежный эквивалент самого устройства. Будем исходить из самой низкой стоимости деталей.
- Собственно сам контроллер Ардуино. Естественно для такого небольшого устройства нужно брать что то небольшое, тоже Nano или Pro-Mini. По сравнению с Ардуино Уно они стоят почти в 3 раза дешевле. Нано кроме того имеет контроллер интерфейса и является полной копией Ардуино Уно только небольшого размера. Очень удобно заливать прошивку без всяких сторонних программаторов и переходников (об этом чуть ниже). Итого стоимость Ардуино Нано около 120 руб вместо 300 руб Ардуино Уно.
- Модуль реле KY-019. Цена всего около 50-60 рублей за блок с одним реле.
- Блок питания (БП) на 5В. На Али есть БП мощностью несколько Ватт и стоимостью около 40 руб. Стоит посчитать мощность БП для устройства. Реле потребляет около 200 мА, Ардуино- берите еще 50 мА, ну и светодиоды, допустим 3 штуки по 20 мА=3х20=60 мА. Т.е. потребляемый ток будет равен 200+50+60=310 мА. Значит БП нужен мощностью не менее 5В х 0,31 А=1,55 Вт. Стоит учесть еще потери самого БП, т.е по идее БП на 3 Вт должно хватить. Итого еще 50 руб. Можно конечно поставить старый зарядник от сотового телефона с током не менее 0,3 А. Это будет более правильно и, кроме того, бесплатно.
Кнопки считать не будем т.к. их можно где нибудь выковырять. Вместо кнопок можно поставить различные датчики но это будет в следующем уроке, когда мне придут датчики из Китая. Вобщем посчитаем стоимость только одной Ардуины. 130 рублей. Немного. Но давайте также прикинем другие варианты. Скетч занимает 1,63 кБ. В Ардуино на 328 контроллере находится 32 кБ памяти. Это больше требуемого в 32/1,63=19,6 раз. Почти в 20 раз. Мне лично жаль тратить такой контроллер на такой небольшой скетч. Какой же выход можно найти из сложившейся ситуации? Взять контроллер с меньшим объемом памяти и прошить его так же как и Ардуино! Давайте посмотрим какие еще контроллеры есть в семействе Атмега.
Микроконтроллеры семейства TinyAVR
Классические AVR-микроконтроллеры
Микроконтроллеры семейства MegaAVR
- Объем памяти. Действительно, если представить что нам нужно 4 кБ памяти и взять, например, ATtiny25 то памяти просто не хватит т.к. этот МК имеет всего 2 кБ памяти. Поэтому лучше брать все таки побольше. Я бы выбрал ATtiny85. Там уже 8 кБ памяти и, если будет доработка функционала, есть некоторый буфер для программы.
- Количество выводов. Это наверное даже поважнее чем п.1. Все упирается в количество портов ввода-вывода. На выводы конечно можно подключать устройства I2C и поадресно их опрашивать и выводить информацию. Но с I2C такие МК работают достаточно медленно. В нашем случает с ATtiny85 есть 8 выводов (корпус PDIP8 SOIC8, т.е. 8 выводов), из которых 2 питание а остальные 6 мы смело можем использовать! Нам при изготовлении нужно: 1 вывод на кнопки, 1 вывод на светодиоды, 1 вывод на реле. Свободными остаются еще 3 вывода! Т.е. нам хватит и памяти и выводов. Тем более её размер. В корпусе PDIP8 их уместится несколько штук на ногте! Цена вопроса. Тиньки (ATtiny контроллеры так называют радиолюбители) вместе с контроллером для программирования через USB порт стоят около 80 руб. Уже дешевле. Но что странно. В Китае просто МК стоят дороже чем готовое устройство! Нонсенс!
- Напряжение питания. Дальше мы рассмотрим работу с фьюзами. Так вот именно эти внутренние переключатели указывают как будет работать МК. С чем это можно сравнить. Например вы написали программу на компьютере. Включаете компьютер и.. компьютер не включился. Почему спросите вы? Ну причин может быть много: неисправный БП (1 причина), процессор (2), память (3) и т.д… а может быть просто слетел БИОС. Так вот именно фьюзы и работают как БИОС на компьютере- они указывают как будет работать собственно ядро МК. Можно выставить частоту работы ядра, от какого генератора синхронизируется МК, внешнего или внутреннего, пределы допустимого напряжения питания при которых МК будет работать. Ту же 85 тиньку можно питать напряжением от 2,7 до 5,5 В. Достаточно просто правильно выставить фьюзы.
Вобщем будем выбирать контроллер с Flash- памятью (туда именно и записывается наш код программы) не менее 8 кБ и как можно дешевле (здесь не говорится о минимизации, если нужно миниатюрное устройство то стоит поискать МК для поверхностного монтажа в корпусах TQFP и SO). Возьмем мой любимый МК ATmega8. Его достоинства: 8 кБ памяти, 28 выводов (из них около 20- наши), имеется 512 байт энергонезависимой памяти в которую мы можем сохранять и считывать необходимые данные. Цена- около 50-60 руб за штуку в Китае. Итого мы удешевили наш проект только по МК уже не менее чем в 2 раза. Осталось научиться запрограммировать МК.
Мы рассмотрим 3 программы для программирования МК. Это будет собственно сама оболочка Arduino IDE, AVRDUDESHELL и Sinaprog. Самая простая- Sinaprog но ей необходимо подготовить hex- файл в Arduino IDE. Самая навороченная- AVRDUDESHELL. Но начнем мы все таки с Arduino IDE т.к. без нее никуда и ей просто надо уметь пользоваться. Приступаем к программированию.
Как запрограммировать Atmega с помощью Arduino и Arduino IDE
Итак открываем Arduino IDE и прежде всего нужно загрузить библиотеки нужных контроллеров в саму Arduino IDE. Это делается следующим образом: Нажимаем Скетч- Подключить библиотеку- Управлять библиотеками. В открывшемся окне в верхнем правом поле наберите MiniCore (можете прямо отсюда скопировать). Кликаете на данный пакет и жмете кнопку Установка. Пакет установится и теперь при выборе платы в меню Инструменты в самом низу появится еще целых 5 типов контроллеров (возможно в новых обновлениях будет больше выбор)! Выбираете какой вам нужен и можете переходить к более точной настройке. Т.е. в меню инструменты вам становятся доступны менюшки по настройкам фьюзов. Значение Bootloader предлагает вам записать ардуиновский загрузчик. Можете выбрать Да или Нет. Загрузчик тоже занимает место. Учтите это. BOD- это минимальное напряжение питания при котором контроллер отключится. Можете выбрать 2,7v и тогда МК будет работать от, например, элемента 18650. Особое внимание обратите на значение Clock. В данном меню указывается частота ядра МК и тип задающего генератора. Например запись 20MHz external предписывает МК работать от ВНЕШНЕГО кварцевого резонатора с частотой 20 МГц. Т.е. для запуска МК вам придется подключить такую схему,
Подключение кварцевого резонатора к Атмега
Теперь делаем следующее. Находим картинку с названием выводов нашего МК. Например для Атмега 8 есть вот такая картинка- даташит (напомню что 328 и 8 атмеги различаются объемом памяти).
Распиновка 328 атмеги
По ней находим выводы MISO, SCK, MOSI, GND, 5V, RESET. Теперь подключаемся таким образом:
Назначение | ARDUINO | Atmega 8 |
RESET | 10 | 1 |
MOSI | 11 | 17 |
MISO | 12 | 18 |
SCK | 13 | 19 |
5V | +5V | 7 |
GND | GND | 8, 22 |
Как вы поключитесь абсолютно не имеет никакого значения, можете сделать переходник и включаться напрямую в Ардуино, можете все соединить на макетной плате- не важно. Главное- правильно все подсоединить. Другие МК программируются абсолютно так же. Качаете даташит, находите указанные выше выводы и подсоединяете вывод RESET Ардуино (10 вывод) к выводу RESET МК, вывод MOSI Arduino (11 вывод) к выводу MOSI МК и т.д. Единственное что нужно- указать тип МК и прописать нужные значения в MiniCore.
Теперь подключаем Ардуино к компьютеру (Arduino ISP уже должна быть залита в Ардуино, если нет то выбираете плату Ардуино, указываете порт, заливаете Arduino ISP, переключаетесь на нужный МК, прописываете фьюзы), выбираем нужный скетч и заливаем его в МК. Разные версии программы Ардуино по разному позволяют записывать скетч в МК. В одних версиях нужно открыть меню Файл- Записать с помощью программатора. В моей версии 1.6.8 для записи через программатор достаточно нажать Shift и нажать стрелку как для заливки скетча в Ардуино. После непродолжительного перемигивания светодиодов на Ардуино скетч будет записан в МК. На этом запись закончена и можно переходить к сборке готового устройства. Хочу так же обратить ваше внимание что при указывании портов ввода- вывода на Ардуино следует учитывать что значение цифрового порта D1 не является первым выводом Атмеги. Для этого вам опять же необходимо ознакомится с картинкой расположения выводов на Атмеге. По распиновке смотрим что порт D1 находится на 3 выводе Атмеги 328 (или 8 Атмеги). Вообще выводы IDE отмечены розовым цветом. Поэтому при разводке платы следует учитывать расположение выводов микросхемы.
Кратко расскажу про программу PonyProg2000.
Программа позволяет - считать, записать, установить биты защиты в МК AVR
Сразу отпишу про грабли. на которые сам наступил. биты защиты или кнопка в виде замочка, если нажать на эту красивую кнопочку то установятся биты защиты и больше никто не сможет прошить, считать МК по ICSP протоколу, необходимо делать параллельный программатор! Поэтому относитесь с уважением к битам защиты!
Далее привожу ряд принтскринов по работе с программой:
При первом запуске программы издастся "писк" лошади :) его можно отключить установив галочку. Далее жмем ок.
Далее необходимо пройти калибровку - Setup - Calibration
Далее необходимо выбрать порт через который подключен программатор, тут два варианта com или lpt
Считываем заводские биты с МК
Жмем кнопку Read, в следствии чего появятся галочки, для того чтоб установить свои настройки битов надо поставить галочки и нажать на кнопку Write, после чего можно еще раз считать Read и убедится в том что биты записались.
Теперь самый ключевой момент, выбираем нашу прошивку (1) в формате hex жмем открыть, если надо и Eeprom зашить то выбираем (2) и открываем , обычно расширение eep.
Прежде чем прошивать МК рекомендую считать биты конфигурации и сохранить их, вот биты заводские Atmega 8
В тех.описании даются два файла "hex и eep" видно их надо вместе загрузить в PonyProg и прошить атмегу, по отдельности они не работают.
Подскажите как соединить эти два файла и прошить атмегу8 Програматор , отдельный БП
шейте по очереди
на картинках показано как шить флеш, для еепром делаете также только выбираете в меню строку ниже
если дальше планируете использовать контроллеры, то рекомендую прикупить на алике простые usb программаторы за 3-5 убитых енотов и использовать соответствующий софт.
или за 50-60 убитых енотов что то типа TL866 который шьет практически все что может понадобиться шить.
первый загружу все нормально, второй файл загружаю, первый пропадает.
Наверно не те кнопочки нажимаю.
первый загружу все нормально, второй файл загружаю, первый пропадает.
Наверно не те кнопочки нажимаю.
Кнопки верхнего ряда:
1. New Window - открыть новое окно
2. Open Device File. - открыть файл прошивки
3. Open Program Memory (FLASH) File - открыть файл прошивки FLASH
4. Open Data Memory (EEPROM) File - открыть файл прошивки EEPROM
5. Save Device File – сохранить файл
6. Save Program Memory (FLASH) File - сохранить файл прошивки FLASH
7. Save Data Memory (EEPROM) File - сохранить файл прошивки EEPROM
Кнопки нижнего ряда:
8. Read Device - прочитать все микросхему
9. Read Program Memory (FLASH) - прочитать FLASH
10. Read Data Memory (EEPROM) - прочитать EEPROM
11. Write Device - записать все микросхему
12. Write Program Memory (FLASH) - записать FLASH
13. Write Data Memory (EEPROM) - записать EEPROM
14. Erase all the Device to FF - стереть микросхему
15. Security and Configuration Bits. - вызов меню FUSE и биты конфигурации
Вложение 323817
при прошивке первого, второй удаляется из атмеги
Вы делаете так и в такой последовательности?
3. Open Program Memory (FLASH) File
12. Write Program Memory (FLASH)
4. Open Data Memory (EEPROM) File
13. Write Data Memory (EEPROM)
записываем фьюзы
15. Security and Configuration Bits
В окне выбираем нужное, "7 РАЗ" ПРОВЕРЯЕМ ПРАВИЛЬНОСТЬ ВЫБОРА и записываем нажатием кнопки Write
и для проверки записанного по очереди
9. Read Program Memory (FLASH)
смотрим что считалось
10. Read Data Memory (EEPROM)
смотрим что считалось
RA1OGS -Большое спасибо, всё получилось.
У меня был готовый рабочий файл русской версии, но захотелось узнать как можно соединить два файла и прошить атмегу.
Информации много как прошивать на "пони" но как соединить, видно пропустил.
Ещё раз спасибо .
Сначала качаем весь репозиторий cheali-charger. Разбираем iMax-B6 и пытаемся найти свой среди картинок в папке ../docs. Мой оказался ПОЧТИ как на картинке "../docs/imaxB6/imaxB6-original-front.jpg". Теперь идем в папку ../hex и находим hex файл для "imaxB6-original" - cheali-charger-imaxB6-original_2.00-e10.3.1 2-20160613_atmega32.hex.
Запаиваем колодку ISP и подключаем к программатору. Я пробовал шить с помощью USBasp и TL866A с оболочкой MiniPro. Первый стоит порядка $2 второй около $55. Оба работают отлично, но важно перед прошивкой подключить iMax-B6 к сети, так как силы тока USBasp и TL866A не хватит для питания зарядки. Сначала надо забекапить существующую прошивку с ATmega32/ ATmega32L, а то вдруг cheali-charger вам не понравится. Для USBasp качаем Avrdudess выбираем тип программатора, жмем radio button "Read" под "Flash" и кликаем на "Go" и сохраняем прошивку.
Окно Avrdudess
Фьюзы для ATmega32L
Так выглядят фьюзы в MiniPro
Теперь можно загружать прошивку. Для MiniPro выставить формат файла "INTEL HEX". После загрузки и пред калибровкой надо зайти в "settings" -> "adc noise: yes". Подробнее о шуме тут. Подключаем 6S или хотя бы 3S Li-Po к iMax-B6 и переходим в меню "options" -> "calibrate" -> "voltage" и выставляем: напряжение блока питания "Vin", и напряжение на банках "Vb1, Vb2, . Vb6" (достаточно измерить только "Vb1" и оно будет скопировано на остальные банки). После этого калибруем зарядные/разрядные токи "options" -> "calibrate" -> "current".
Теперь вы можете ловить Δv у Ni-Ca/Ni-Mh при зарядных токах >= 0.5C.
Многие жалуются на большое падение напряжения в соединительных проводах. Проблема решается пропайкой бананов.
UDP: Для калибровки напряжения и тока советую приобрести ANENG AN8001/ANENG AN8002 или его клон. Помещается в карман, TrueRMS, быстрый Auto range, очень точный. Мне удалось взять на распродаже клон AN8002 за $10.
UPD: Про удачную попытку десульфации автомобильного аккумуляторов с помощью iMax-B6 можно почитать тут. Счастливое продолжение истории здесь. Физика и химия процесса десульфации простыми словами.
UDP: На дворе 2021 год. Шайтан коробка служила мне верой правдой 9 лет. Из них последние 3 года тупо лежала на полке, тк в доме появились LitoKala Li-100 и Li-420. Наверное виной всему убогое меню прошивки cheali-charger. Пока вспомнишь где там что, LitoKala уже зарядила. Держал iMax-B6 только из-за поддержки свинца. Но пришло время прощатся. Продал за $15 и купил ISDT Q6 Nano с отличным меню за $30. Теперь обе LitoKala на полке пылятся.
Читайте также:
- На сколько можно сократить время стирки при помощи функции быстрая стирка в стиральных машинах beko
- Как снять верхнюю крышку стиральной машины электролюкс с горизонтальной загрузкой
- Подключение стиральной машины в рыбацком
- Как постирать одеяло в стиральной машине холлофайбер
- Стиральная машина f1073nd ремонт