четверг, 28 февраля 2013 г.

Транзисторные книги(Логические операции книга хорошо описаны схемы логики на транзисторах)

http://www.oldradioclub.ru/radio_book/mrb_0700.html
0694. Стопский С.Б. Логические схемы на полупроводниках. (1969)
В книге рассмотрены принципы построения и схемы логических переключающих цепей на полупроводниках. В ней изложены основные понятия алгебры логики и показано, как на ее основе могут быть реализованы без детального вычерчивания желательные переключательные цепи. В книге описаны логические схемы, применяемые при решении различных задач. Для понимания ее содержания необходимо знание математики и физики в объеме средней школы.
Книга предназначена для подготовленных радиолюбителей и может быть полезна лицам, работающим в области автоматики, телемеханики и измерения неэлектрических величин электрическими методами.

четверг, 21 февраля 2013 г.

Мартин Брау Источники питания

Пер. с англ. - К.: "МК-Пресс", 2007г. 288стр.В книге поэтапно показано проектирование широкого набора источников питания. С ее помощью каждый, кто обладает базовыми познаниями в области электроники, сможет проектировать и создавать сложные источники питания.
http://nashaucheba.ru/?q=%D0%BC%D0%B0%D1%80%D1%82%D0%B8%D0%BD+%D0%B1%D1%80%D0%B0%D1%83%D0%BD+%D0%B8%D1%81%D1%82%D0%BE%D1%87%D0%BD%D0%B8%D0%BA%D0%B8+%D0%BF%D0%B8%D1%82%D0%B0%D0%BD%D0%B8%D1%8F+

суббота, 16 февраля 2013 г.

Фоторезист.



Добрый вечер, на ziblog увидел твои работы сделанные с помощью плёночного фоторезиста) не мог бы ты поделиться технологией?) и рассказать как ты такие платы делаешь?Какой текстолит используешь, есть ли разница между плёночными фоторезистами,как накатываешь его, как засвечиваешь, как проявляешь, что платы такого высокого качества получаются. Вчера пришла посылка с фоторезистом плёночным с ЧП Ворон, хотелось бы сделать платку под STM32 самому в домашних условиях. заранее благодарю)
Привет! Секретов нет, берешь любую статью из интернета и пробуешь пару раз сделать тестовую плату. Сразу не получится по любому. А вот когда поймешь технологию, будешь вносить коррективы процессов под себя(время засветки, способ накатки и т.д.) Сейчас я резистом уже не пользуюсь. Выбрал более лучший метод для себя. Лазерно-ламинаторная технология(ЛЛТ).  Нужен ламинатор и принтер лазерный и фотобумага глянцевая, все. Результаты не хуже а проще и быстрее получается.
Когда последний раз работал с резистом, делал по такой примерно схеме:
  Отрезаешь заготовку текстолита по размеру чуть больше платы(по 1-2 см по краям).
  Вырезаешь кусок резиста чуть больше платы.
  Зачищаешь текстолит мелкой наждачкой, под водой отмываешь CIF-ом с губкой и потом пальцами больше не трогаешь.
  Снимаешь защитную пленку, смачиваешь резист и плату, аккуратно с одного края начиная, накатываешь, сильно придавливая, резиновым шпателем(продается в строит.маг., мне больше всего им понравилось, нет пузырей)
  Обрезаешь лишний фоторезист по краям платы, протираешь и сушишь плату феном пару минут. Оставляешь на пол часа для естественной сушки.
  Потом ложишь кусок стекла(вырезал на заказ),затем плату с ФР, сверху фотошаблон, прижимаешь вторым стеклом. Скрепляешь этот бутерброд большими скрепками или грузом по бокам.
  Засвечиваешь по времени определенным практически(зависит от твой лампы и т.д.)
  Разбираешь бутерброд, снимаешь защитную пленку, кидаешь в проявочный раствор(кальцинированная сода), аккуратно полоскаешь и протираешь губкой резист.
  Вытаскиваешь промываешь и кидаешь травится, все :)

Отвечаю по порядку:
Бумага такая http://tomsk.dns-shop.ru/catalog/i501112/bumaga-bd-gloss-a4-150g-m-glyanec-50-listov.html , Фоторезист снимаю сильным раствором нашатырного спирта(в аптеке спрашивай) только чтоб плату немного скрыло, а после просто лежит, пока резист не съежится. Кто-то оборачивает в слегка смоченную ацетоном ткань и оставляет, тоже слазит. Бумагу отмачиваю, затем аккуратно губкой и зубной щеткой смываю, тру по направлению дорожек.
Если дорожки отваливаются сильно, то значит не догревает ламинатор, либо подкручивать регулятор внутри, либо пробовать больше раз прокатывать(я обычно10-15 раз прокатываю).
На счет воды. Все зависит от того, какого у тебя она качества в кране )) Если дофига в ней примесей, лучше конечно дисст. или просто чистой. Но я не заморачивался и просто окунал фоторезист в мокрую воду.
Пробовал накатывать ламинатором. Не удобно и к тому же валы все в воде оказываются. В итоге просто прокатываю в ламинаторе, после накатки резиновым шпателем, только для подсушки на чуть теплых валах(если перегреть, резист потрескается).
Для засветки использовал обычную УФ сберегайку, Засвечивал в коробке из под обуви. Лампу клеил на крышку коробки. Как потом подумывал, надо бы подальше лампу отнести от платы...Ну это ты попробуешь сам.
Фотошаблон лучше на струйном получается если чернила нормальные попадутся. У меня и тот и тот принтер имеется. Но почему-то на струйнике чернила как вода, не прилипают. А вот у знакомого струйник идеально печатал на пленке. Лучше моего лазерника в разы, не просвечивал лампу даже. В итоге мне пришлось печатать на лазерном и добиваться точного времени засветки, чтобы и не досветить и не пересветить . Но лучше да струйник. В общем пробуй :)




Суббота, 16 февраля 2013, 21:55 +04:00 от Денис Акшинцев <den_zar_1991@mail.ru>:
Извини) у меня будет пару вопросов ещё. Какую фотобумагу ты используешь? Нашёл ламинатор сегодня на работе в закромах. Фоторезист и плату в воде смачивать? в инете пишут что дисцилированной водой из распылителя поливают или можно просто в обыкновенную воду опустить смочить?.  и накатывают. а кто то видел ламинатором накатывает. И для засветки тех плат под проц xilinx ты используешь специально отточенную установку для проявки или можно просто в цоколь вставить лампу и засвечивать(лампа экономка )? И такой вопрос если я буду делать на глянцевой бумаге ЛЛТ или лутом как мне глянец между тонких дорожек отмывать, у меня краска начинает отдираться? И ещё вопрос по поводу принтера ты струйный или лазерный используешь для печати фотошаблонов, о лазерниках плохо пишут якобы проходит сквозь тонер ультрафиолет.
Ссылки: 
1. Начало
http://dmmedia.livejournal.com/42146.html - Определение времени засветки. Шкала.



http://we.easyelectronics.ru/HomeTech/stavim-process-na-plenochnom-fotoreziste-glava-teoriya.html  - Ставим процесс на плёночном фоторезисте.

http://we.easyelectronics.ru/evsi/neuzheli-v-samom-dele-ili-vlazhnyy-sposob-nakatki-fotorezista.html - Влажная накатка фоторезиста. 

http://overkron.dyndns-at-home.com/archives/10 -  Как мыть плату и т.д и т.п 

Использую Фоторезист МПФ-ВЩ (0,3мх70м рулон) купленный в "База-Электроники". Купил его в начале декабря прошлого года. Принес домой - поэксперементировал, вышел - полный шлак. Ну и забросил его подальше в кладовку. Месяц назад наткнулся на статейку в нете про него. Попробовал сделатькак написано в статье - все получилось с первого раза. Теперь только его и использую.
Маска тот же фоторезист. печатаю шаблон только с контактными площадками. Затем беру протравленную плату и наношу (с помощью ламинатора) фоторезист с двух сторон. проявляю это все с шаблоном, далее в каустическую соду и в духовку 100-150 грудусов на 2 часа. После дубения в духовке фоторезист намертво лежит, даже крот (сильный раствор едкого натра) его не берет. Получается глянцевая несмачиваемая поверхность. На самом деле в производстве также делают (метод - "сухая маска") только он там потоньше и разных цветов. 







От начала и до конца(от накатки до травления):
http://www.avislab.com/blog/fotorezist/
http://radiokot.ru/lab/hardwork/06/ 


http://ziblog.ru/2010/10/21/otladochnaya-plata-dlya-mk-lpc1768.html - Пример XiLinx мелкий шаг.
EVSI:
http://we.easyelectronics.ru/evsi/kuda-zh-on-denetsya-s-podvodnoy-lodki-to.html 

http://we.easyelectronics.ru/evsi/yet-another-development-board-ili-mini64.html - Пром плата в дом условиях.
http://we.easyelectronics.ru/HomeTech/izgotovlenie-dvuhstoronney-pechatnoy-platy-pri-pomoschi-plenochnogo-fotorezista-pnf-vsch.html - Маска из фоторезиста.


http://we.easyelectronics.ru/HomeTech/odnokomponentnaya-payalnaya-maska-s-uf-otverzhdeniem.html - Паяльная маска

Лампы:
ДРЛ: http://we.easyelectronics.ru/khomin/fotorezist-sposoby-eksponirovaniya-moi-razmyshleniya.html

ставим процесс на плёночном фоторезисте: I II III IV
http://we.easyelectronics.ru/HomeTech/stavim-process-na-plenochnom-fotoreziste-glava-teoriya.html 

Одна кнопка.

http://we.easyelectronics.ru/HomeTech/odnokomponentnaya-payalnaya-maska-s-uf-otverzhdeniem.html
Иногда приходится делать очень маленькое устройство, например, велокомпьютер. Или конструктив не позволяет разместить много кнопок. В общем есть у нас одна кнопка на ввод и ничего более.

Спартанские условия, но и тут можно развернуть мощный функционал, многоуровневые меню и прочие прелести жизни. сейчас я покажу одну из реализаций такого управления.

Итак, что у умеет наша кнопка?

  • Ее можно нажимать кратко
  • Можно жать длинно
  • Можно делать разные комбинации нажатий
  • Ее можно отпускать в нужный момент


Не густо, но вполне ничего. Для одной кнопки то. Главный затык при написании этого не просрать массу системных ресурсов (время процессора, таймеры и тыды) на обработку этой несчастной кнопки. Ведь нам придется отслеживать факт нажатия, факт отжатия, время нажатия, число нажатий с разным временем. Я видел такие адовые реализации этого интерфейса, что просто диву давался как можно нагородить столько тупняков и тормозов в этой одной сосне, да еще потратить все таймеры :)

Так что ТЗ выставим следующее:

  • Никаких аппаратных таймеров, кроме таймера диспетчера.
  • Никаких временных задержек, только вызов себя же по таймеру.
  • Никаких ожиданий нажатия-отжатия в цикле. Зашли, проверили — отдали управление.
  • Введем временной интервал mode_time, в течении которого будем отслеживать комбинацию нажатий. Скажем 2с
  • На выходе будем иметь число коротких и длинных нажатий за данный интервал

Алгоритм
Сделаем все на конечном автомате. У него будут три состояния:

  • Up — кнопка не нажата
  • Dn — кнопка нажата
  • Al — кнопка отпущена после длительного нажатия

А также будет одна служебная процедура, которая спустя mode_time (2c) после первого экшна с кнопкой сгребет все результаты и что-нибудь с ними сделает. Что — это уже не важно. От программы зависит.
И вся эта дребедень будет крутиться в цикле, вызывая сама себя через диспетчер (или каким еще образом) раз в 20мс.
 


Up
Входим.
Смотрим не нажата ли кнопка? Если нет — выходим. Если нажата, то переводим автомат в положение Dn
Проверяем первый ли раз за интервал мы тут? Если первый, то поставим нашу служебную процедуру на отложенный запуск (через 2с), взведем флаг, что процесс пошел.
Выходим.

Dn
Входим.
Еще нажата? Если нет, значит кнопка уже отпущена, скидываемся в состояние в Up и засчитываем одно короткое нажатие, увеличивая счетчик коротких нажатий cnt_s. Если еще нажата, то щелкаем счетчиком времени замера длительности нажатия Timе. Замер длительности у нас идет в итерациях автомата. Одна итерация 20мс. В лимит длинного нажатия я заложил 20 итераций, что дает около 400мс. Все что больше 0.4с считаем длинным нажатием. Как натикает больше 20 итераций, то засчитываем одно длинное нажатие и перекидываем автомат в состояние Al. Выходим.

Al
Входим.
Еще не отпустили? Если нет, то выходим. Если кнопка отпущена, то перебрасываемся в Up, скинув переменную Time.
 


За время mode_time, за те две секунды, сколько успеем натыкать — все наше. Запустится процедура анализа собранных данных и разгребет натыканное. Там уже все просто. Банальным case’ом делаем нужный нам экшн. Я вот, например, флажки выставляю которые перехватывает другая задача. Главное не блокировать эту задачу ничем тяжелым, чтобы не прозевать следующую комбинацию.

Код



Код написан так, что на AVR там завязана буквально пара строчек. По крайней мере в коде обработчика нажатий кнопки. Все привязки на железо идут в хидере, да и их там всего ничего:

1
2
3
4
5
6
7
8
9
10
11
#include <avrlibtypes.h>
#include <avrlibdefs.h>
 
#define Open (BTN_PIN & 1<<BTN)
#define Close (!Open)
 
extern void bt_scan(void);
void bt_ok(void);
 
extern u08 bt1,bt2,bt3,bt4,bt5,bt_l,bt_l2,bt_al;
extern u16 bt_mode_time;

Так что портировать это на другую архитектуру дело смены двух строчек. Ну и, возможно, вам потребуется изменить механизм автозапуска и запуска функции обработчика. Если вы будете использовать какой то свой диспетчер, ОС или еще какую систему организации прошивки. Но это две строчки в коде поправить.

Все описанное в статье мясо лежит в двух файлах button.c и button.h

Видео работы


Дребезг
Боротся с дребезгом тут уже не обязательно. Т.к. частота сканирования небольшая, так что даже голимая и наглухо окисленная кнопка модели ТМ2 не давала дребезга — он кончался раньше, чем наступал следующий скан. А вот что тут можно докурить, так это защиту от ложных сработок в результате наводок. Ведь стоит помехе продавить линию в момент считывания и засчитается сработка однократного нажатия. Это можно избежать сделав проверочные состояния автомата. Скажем добавив в Up счетчик итераций, чтобы в течении, скажем, двух-трех итераций подтвердить, что кнопка таки нажата и только тогда переходить в Dn.

Варианты
Правда в своем проекте я несколько изменил обработку. Т.к. мне не нужны были множественные длинные нажатия, то я сделал выставление флага «Длинное нажатие» сразу же в обработчике AL и, заодно, убрал подсчет числа длинных нажатий. Что позволило повысить отзывчивость работы интерфейса прибора, где длительным нажатием осуществлялся вход в пункт меню, а комбинаций с двумя длинными нажатиями не использовались вообще.

Ну и, разумеется, этот же конечный автомат можно поставить на разбор чего угодно. Например на отслеживание какого-либо другого флажка, от матричной клавиатуры или какого сигнального устройства.

среда, 6 февраля 2013 г.

Операнды сдвига (умножение всегда влево, деление вправо)

http://rfe.by/media/kafedry/kaf4/publication/strikeleva/lekcija-04.pdf
1 2 3 4 5 6 7 8 9 10 11 12 соотв. 2 4 8 16 32 64 128 256 512 1024 2048 4096

Легкий способ бросить писать идеальный код


Если у вас есть идея, или работа, следует приступить к ней немедленно, если у вас нет других занятий. Не нужно вынашивать идею, не нужно ждать, пока она созреет. Это все — глупости. Переходите от теории к практике не больше, чем за одни сутки.

http://ruseller.com/lessons.php?rub=28&id=1111

http://habrahabr.ru/post/129171/