SpriteMods.com топик-ссылка

Тут коллега Sprite выкладывает свои наработки. Некоторые весьма интересны и даже полезны. Ну и видео в конце каждой статейки.

Оболочка для прошивки серийных устройств

По итогам двух лет работы с предыдущей версией программы сделал я новую версию ПО, переписанную, практически, с нуля (внутренние механизмы заметно изменились).



Читать дальше

Кухонный таймер



Вступление

(можно не читать).
Достаточно часто на кухне надо следить за длительностью какой-нибудь операции или процесса. Например, чайничек поставили наливаться или макарошки вариться, или мясо в духовку ваша ненаглядная поставила. И вроде бы все хорошо, но стоит зазеваться(или засидеться в интернете), как чайник перельется, макароны переварятся или что еще хуже – мясо в духовке подгорит!
Для решения данного вопроса был приобретен механический таймер в виде яйца. И, в общем, он был неплох — места не занимает, звенит громко. Но спустя полгода таймер начал куда-то спешить. Да прилично так. Заводишь его на час, а он уже минут через 40 звенит. В общем не порядок! Немного подумав и посмотрев на готовые варианты, все-таки решил сделать свой кухонный таймер.

Требования

Требования были к нему достаточно простые:
  • Электронное управление
  • ЖК-индикация
  • Звуковая сигнализация
  • Компактность
  • Низкое энергопотребление
  • Измерение температуры (ну, как же без нее :-))



Читать дальше

Альтернативная библиотека для символьных ЖКИ под mikroPascal AVR Pro

Выложил на Libstock альтернативную библиотеку для символьных LCD, заменяющую оригинальную Lcd. Исправлено быстродействие и тайминги, устранена ошибка с затиранием ОЗУ при использовании Lcd_Out, добавлена совместимость с OLED Winstar.

Брать здесь. Состав пакета: библиотека и описание интерфейса модуля, без исходного кода.

AVRISPmkII на STM32F4Discovery

Изучал USB-библиотеку на STM32F4 и как побочный результат этой деятельности получился клон AVR ISP mkII.
В архиве hex прошивки и исходник.

Распиновка ISP (AVR):
PD7 — RESET
PB3 — SCK
PB4 — MISO
PB5 — MOSI

Распиновка PDI (XMega):
PB13 — CLK
PB15 — DATA

PE5 — 4 МГц меандр на всякий случай

Красная лампочка просто моргает, зелёная — при активности.
stm32f4discovery as avrispmkII

Вдруг просто надо будет что-то авровское прошить, а под рукой программатора нет. А так можно быстро сколхозить из весьма распространённой отладки. Номер версии ПО: 0x18.

Подключаем проветриватель Aeropac SN к датчику CO2 AZ-7798 (UART)

AZ-7798
Появились новые версии проветривателей Aeropac с кнопочным управлением и дисплейчиком — Aeropac SN.
Старая доработка работать уже не будет.
Поэтому пришлось разрабатывать новую…
Управлять проветривателем будет веб-сервер на базе esp8266 + nRF24L01 для передачи данных. Он подключен к AZ-7798 через UART.
В проветриватель встраивается Atmel AVR Attiny44A + nRF24L01 для задание оборотов вентилятора.



Читать дальше

Modbus RTU для AVR на Assembler. часть2

AVR
Ну так сказать «дембельский аккорд по АВРам» часть2. Если что то начало можно глянуть здесь



Читать дальше
  • +2
  • 16 августа 2016, 15:25
  • deses
  • 2

Modbus RTU для AVR на Assembler. часть1

AVR
Понадобилось мне недавно разобраться с Модбасом. А точнее освоить подключение панели оператора к Меге.
Приглашаю всех желающих посмотреть мою реализацию такого решения


Читать дальше
  • +3
  • 02 августа 2016, 22:27
  • deses

Что я по пивоварне за последнее время делал.

Всем привет и доброго здравия!
Небольшая преамбула – зимой мы собирали пивоварню в свободном помещении, поставили большой – 125-и литровый бак, сварили каркас, ёмкости, всё собрали и даже подключили, однако затем ситуация вильнула таким образом, что помещение мы решили оборудовать под сварочный цех – собрали вентиляцию, сделали стеллажи, приобрели немного дополнительного оборудования, переделали окно в дополнительную дверь, прокинули капитальную проводку на оборудование, которое потребляет много – в общем цех сейчас работает и это хорошо, однако пивоварню нужно было куда то девать, так как сварочный цех это полный ПЭ в виде металлической пыли, грязи и прочих вещей, с пивоварением малосовместимых.
Тогда было решено переделать основной бак на 50 литров, сделать его максимально узким и прикрепить к каркасу. В бак был вварен датчик температуры, в просверленные отверстия монтированы поплавковые датчики уровня (геркон) и ТЭН на 4кВт, в котёл пока поставили 2 тэна по 2 кВт, подключённые последовательно, для увеличения нагревающей поверхности, дабы исключить пресловутое подгорание солода. Ёмкости были соединены PPR трубами(чтобы в случае переделки не было мучительно больно переваривать нержавеющие трубы) через латунные электромагнитные клапаны. Затем всё это дело мы утеплили экструдированным пенополистиролом, толщиной 20 мм, а сверху к краям ёмкости мы подошли фасонными изделиями, для того, чтобы организовать притвор крышки и закрыть «кишки».

Если сказать одним предложением – то мы собрали опытный образец, который теперь необходимо активно тестировать, искать косяки, думать, как их устранять. В офисе мы вывели на внешнюю стенку воду и канализацию, подключились. Кинули напрямую медный кабель 3х4 прямо от ввода линии. Более подробно конструкцию я опишу позже, сейчас же я хочу перейти к электрической составляющей проекта, так как она озадачила меня на пару ночей…
Пивоварня Вениамина Кейвера


Читать дальше

Перипетии нуба с ШИМом на Attiny13

Возникла давеча простенькая задачка. Нужен был регулируемый вручную ШИМ для теста одной идейки. Под рукой тинька 13 — т.е. цепляем переменник на АЦП и выводим что нам нужно. Казалось бы — проще только светодиодом помигать. Однако. Смеркалось.
Всё быстро воткнуто в макетку, с помощью мастера в CodeVision несколькими щелчками собран проект. Для теста на выход — светодиод. Включаю: горит на полную, кручу резистор — реакции нет. Шустро проверяю все соединения, питание, схему, прошивку — эффект остается. После трехкратного повторения тех же действий возникло недоумение. Беру другую тиньку, прошиваю, включаю — болт. Похоже проблема не в чипе. Некоторое время созерцаю код сгенерированный CodeVision — придраться не к чему. Открываю datasheet, вникаю. Изучил ADC, проверил — всё по канонам. Перешёл к ШИМ.
Краткое описание устройства аппаратного ШИМ на Attiny13 для начинающих:
ШИМ сделан на базе таймера. Т.е. у таймера есть несколько режимов работы, два из них относятся к ШИМу (FastPWM и Phase Correct PWM). Таймер настраивается с помощью двух регистров: TCCR0A,TCCR0B. В них задается режим, частота (делитель), какие каналы используются (есть два — 0A и 0B), режим работы выхода(прямой, инвертированный). Значение ШИМа задаются в регистрах OCR0A и OCR0B — соответственно для каждого канала. Есть ещё у ШИМа такая настройка — чем определяется максимальное значение таймера(TOP), при достижении которого он сбрасывается и бежит с начала — это может быть либо 0xFF, либо значение в регистре OCR0A. У меня был установлен второй режим и значение ШИМа я задавал в регистре же OCR0A.
Немало времени ушло у меня пока я нашёл свою ошибку и ещё больше пока догнал её смысл. Хотя сейчас всё кажется очевидным. Для тех кто, как и я, в танке — TOP должен быть 0xFF. Надо заметить, что настройка режимов через регистры не радует интуитивно понятным интерфейсом. Так вышеозначенный режим определяется битами WGM02:0, два из которых находятся в регистре TCCR0A(00,01), а третий(02) в TCCR0B. Правда мастер CodeVision при начальной настройке здесь наше всё, но когда нужно что-то подправить уже в процессе вот тут-то и приходится поднапрячься.
Короче, следующие грабли. Яркость регулируется, но вот беда: когда довожу ручку до минимума всё равно подсвечивает. Т.е. на АЦП у нас 0, а на выходе не 0. Обидно, понимаешь. Причина такого поведения в том, что в тот момент, когда таймер сбрасывается в 0, на выходе чип выставляет 1, и хотя значение ШИМа у нас задано 0, и уже в следующем такте он это видит и обнуляет выход, но вот этого несчастного скачка достаточно что бы светодиодик светил. Дискомфорт — ты ждешь на выходе чистый 0, а тут тебе гребеночка такая. Вообще говоря проблема известная. Решение приходит в голову практически сразу: когда меняем значение ШИМа, добавляем проверочку на 0 — при оном отключаем ШИМ совсем. Воникает вопрос: как отключать? Можно останавливать таймер. Не лучший вариант: а вдруг на этот таймер что-нибудь ещё посажено? Второй ШИМ, например, или прерывания, или отсчет времени до взрыва? Можно отключать выход таймера — это уже получше, и просто и понятно, получается примерно так:
if(OCR0A==0)TCCR0A&=0x3F;
else TCCR0A=0x83;

Как вариант можно менять режима работы самого пина выход/вход.
P.S.
Из комментариев к статье были получены ещё такие решения:
1. Если не принципиально получать 100% заполнения ШИМ, то можно использовать инверсный режим работы выхода;
2. При работе ШИМ в режиме Phase Correct PWM проблема отсутствует.