Академический Документы
Профессиональный Документы
Культура Документы
домашних условиях
Идея
Идея пришла ко мне во время просмотра статей на Википедии, а именно статьи про
сульфат меди (медный купорос), в которой есть картинка кристалла, выращенного в
домашних условиях.
Итак, после 4-5 часов у нас появился небольшой кристалл-затравка. Его нужно аккуратно
обвязать ниткой (не наматывайте на него кокон, достаточно одной петли, иначе нитки
будут препятствовать росту кристалла). Второй конец нитки наматываем на карандаш и
удаляемся на кухню, готовить насыщенный раствор второй раз. На этот раз нам надо
приготовить его достаточно, чтобы залить в подходящую банку, в которой наш кристалл-
затравка сможет висеть, не касаясь стенок и дна даже после 4х дней роста. В остальном
технология та же – подогреваем воду и сыпем в нее купорос до тех пор, пока он не
перестает растворяться. Далее немного остужаем раствор и выливаем в подготовленную
банку (которую желательно перед этим тоже слегка прогреть теплой водой, чтобы не
допустить быстрой кристаллизации раствора на стенках) и опускаем в нее затравку, кладя
карандаш поперек горлышка банки и следя за тем, чтобы кристалл не касался стенок и
дна. Банку ставим в какое-нибудь не очень теплое и не очень холодное место, например,
на полку, и первый шаг практически закончен!
Нам остается только подождать несколько дней, пока кристалл не вырастет до нужных
нам размеров. Вынимать надолго кристалл из раствора не рекомендуется, но достать и
проверить как идет процесс роста вполне можно. Также не помешает очищать нитку от
оседающих на нее мелких кристаллов, чтобы они не испортили форму затравки.
Кстати один интересный нюанс… Если после того как купорос перестал
размешиваться дать воде самую капельку выкипеть — то кристаллизация
пойдёт в разы быстрее. У меня например уже на следующее утро был
большущий кристалл
Долгая и муторная часть закончилась, теперь все пойдет быстрее. После того как я
получил свой кристалл, я задался вопросом «где же взять подходящий стеклянный
цилиндр, в который кристалл можно заключить?» Ответ нашелся в магазине «все для
дома», в виде отличной цилиндрической стопки для водки стоимостью в 20 рублей за
штуку.
Она привлекла меня по двум причинам: во-первых, она была без узоров, гравировок и
правильной формы – ровный стеклянный цилиндр. Во-вторых, она была достаточно
толстостенной, что хорошо сказывается на прочности конструкции.
Предположим, что изначально Vin = 0 и конденсатор разряжен. Vc, таким образом, также
равно нулю. При приложении напряжения Vin, не равного нулю, напряжение на
конденсаторе растет по следующему закону:
Где T=RC.
Предположим теперь, что вместо конденсатора у нас имеется обычная металлическая
пластинка, или полоска фольги. Согласно законам физики, она также обладает некоторой,
пусть и очень малой, емкостью, порядка единиц пикофарад. Нетрудно подсчитать, что
время, за которое такая пластинка зарядится, при резисторе в 1 МОМ составляет
10^6*10^(-12) = 10^(-6) c. Очень маленькая величина, однако, для микроконтроллера,
работающего на частоте 10 МГц, успеют пройти целых 10 тактов.
Теперь представим, что пластинки коснулся человек. Его емкость на два порядка выше
емкости пластинки и составляет около 100-200 пикофарад. Следовательно, время, за
которое пластинка зарядится, существенно возрастет.
Что касается регуляции яркости светодиода – это легко достигается при помощи ШИМ
(широтно-импульсной модуляции), при которой вместо постоянного уровня напряжения
на нагрузку подаются прямоугольные импульсы с регулируемой скважностью. В итоге
среднее значение напряжения равняется значению логического уровня, помноженному на
значение скважности. Эта техника широко известна, поэтому я не буду останавливаться
на подробном ее описании.
Светодиод я выбрал синий, под цвет кристалла, с размером линзы 5 мм, но все в ваших
руках, можно экспериментировать с разными цветами и оттенками. Главное условие для
светодиода – напряжения батарейки должно быть достаточно для его открытия.
Падение напряжения на моем синем светодиоде составляет около 2.7 вольта, что значит,
что при «просадке» батарейки всего на 0.3 вольта диод уже не загорится. Существуют
светодиоды с еще большим падением напряжения, для таких выбранная литиевая
батарейка уже не подойдет.
Однако, нет худа без добра – высокое падение напряжения на моем светодиоде сделало
возможным его подключение без дополнительного резистора. В итоге полная
электрическая схема выглядит так:
Предельно просто – маленький 8-пиновый микроконтроллер ATTiny13, один мегаомный
резистор, один светодиод и полоска фольги в качестве сенсора, которую я наклеил на
внешний бортик пластиковой подставки и соединил со схемой тонкой проволочкой. Пины
питания и земли контроллера на схеме не указаны.
Мы почти у цели, осталось написать прошивку, чему посвящен следующий шаг (в
следующей статье).
Вот со вторым пунктом возникла некоторая заминка. Возможно я сейчас скажу уже
известную вам вещь, но вполне может быть что это убережет вас от долгих поисков глюка
в прошивке. После перевода микроконтроллера в режим пониженного энергопотребления
Power Down его может разбудить только внешнее прерывание (которому у нас в схеме
неоткуда взяться) либо сторожевой таймер.
Но дело в том, что сторожевой таймер может работать в двух режимах: перезагрузки по
переполнению и прерывания по переполнению (да, еще есть третий режим, комбинация
двух предыдущих). И, как оказалось, в режиме перезагрузки по переполнению он не
выводит контроллер из спящего режима, по крайней мере у меня схема наотрез отказалась
так работать. Поэтому мы будем пользоваться именно режимом прерывания по
переполнению.
И еще одно примечание: если будете собирать такой девайс и тестить «навесу» запомните
следующее:
сенсор покажет намного бОльшую емкость, если вы при тестировании второй рукой
касаетесь, допустим, минуса батарейки. Я с этим накололся, так как при тестировании
прижимал провода к батарейке руками, поэтому выставил чересчур большой порог.
Ниже я изложу код с комментариями. Т.к. с кодом пришлось поторопиться, чтобы успеть
к новому году, там вполне могут быть совершенно неоптимальные моменты, прошу за
них особо не пинать)
Тем не менее, это полностью рабочий и отлаженный код. Занимает примерно процентов
70-80 флеш-памяти тиньки.
*****************************************************************************
************************
//Состояния девайса
enum DEV_MODE{M_WAITING_SENSOR, //Ждем отклика от сенсора и спим
M_SENSOR_RECHECK, //После первого отклика перепроверяем
M_GLOW, //Разгораемся
M_GLOW_AND_CHECK, //Светим и проверяем сенсор
M_GLOW_AND_RECKECK, //Перепроверяем, если отпустили
M_FADE}; //Гаснем
unsigned char SensorHi=0; //Переменная, которая будет хранить значение для активного
сенсора
unsigned short Delay=0; //Внутренняя переменная для организации долгих задержек
unsigned short PWM=0; //Скважность ШИМа
unsigned char Mode=0; //Режим работы
int main()
{
ACSR = 0b1000000; //Настройка режима энергосбережения
DDRB = 0b00011001;
SetTimer(1); //Переключили таймер в режим проверки сенсора
Mode= M_WAITING_SENSOR;
sei();
PORTB=0b00000001; //Зажигаем диод и ждем 4 секунды
for(char i=0;i0x0010)
{
if(!CheckSensor())
{
Mode= M_WAITING_SENSOR;
Delay=0x0000;
}
else
{
Delay=0x0000;
Mode= M_GLOW;
SetTimer(0);
PWM=0x00;
OCR0A=PWM;
TCCR0B|=0x01;
}
}
break;
case M_GLOW:
Delay++;
if((PWM0x0200) //Полностью разгорелись
{
SetTimer(1);
PORTB =0b00000001; //Вместо ШИМа напрямую подаем лог. 1
Mode= M_GLOW_AND_CKECK;
Delay=0x0000;
}
break;
case M_GLOW_AND_CKECK:
if(!CheckSensor())
{
Mode=M_GLOW_AND_RECKECK;
PWM=0xFF;
}
break;
case M_GLOW_AND_RECKECK:
Delay++;
if(Delay>0x0500) //Долгая пауза, чтобы не погаснуть сразу же как отпустят
{ //а посветить еще секунд 20
if(CheckSensor())
{
Mode= M_GLOW_AND_CKECK;
Delay=0x0000;
}
else
{
Delay=0x0000;
Mode=M_FADE;
PWM=0xFF;
OCR0A=PWM;
SetTimer(0);
TCCR0B=0x01;
}
}
break;
case M_FADE:
Delay++;
if(Delay%5==0) //Раз в пять Delay перепроверяем сенсор
{
TCCR0B=0x00;
PORTB = 0b00000000;
if(CheckSensor())
{
Mode=0x02; //Если что - начинаем снова разгораться
Delay=0x0000;
}
SetTimer(0);
TCCR0B=0x01;
}
if((PWM>0)&&(Delay%2==0)) //Медленно гаснем
PWM--;
if(Delay>0x0200) //Совсем погасли
{
SetTimer(1);
PORTB=0b00000000;
Mode= M_WAITING_SENSOR;
Delay=0x0000;
}
break;
}
OCR0A=PWM;
_delay_ms(20);
}
*****************************************************************************
************************
Заключение
Вот, собственно и все – дальше осталось дело техники: зашить прошивку в SMD
ATTiny13, припаять SMD же резистор к двум ее пинам (возможно, у вас в подставке
хватит места для не-SMD компонентов, но у меня место было критично), отведя от него
провод в качестве сенсора к фольгированному бортику подставки, подпаять выводы
светодиода к микроконтроллеру и общему проводу, плюс от батарейки присоединить к
питанию микроконтроллера, а минус к общему проводу и закрыть подставку крышечкой.
В своем девайсе я разделил подставку на две части, в верхней расположил схему, от
которой вывел провода питания и сенсора, заклеил ее пластиковой перегородкой. На нее
поставил широкую пружинку под минус батарейки и изогнутую пластинку сверху под
плюс. Таким образом, после того как подставка закрывается крышечкой, пластины
оказываются прижаты к батарейке, и схема включается, давая мне 4 секунды на то чтобы
убрать руки до калибровки. Если этого не сделать, девайс сочтет что у неактивного
сенсора емкость равна емкости активного, и зажечь его не перекалибровав будет
невозможно.
Судя по моим измерениям, схема потребляет 0.02 мА в режиме простоя и около 12 мА при
полной яркости диода. Даже если мультиметр показал неточный результат и ошибся на
порядок, энергии в батарейке должно хватить где-то на полгода простоя, что является
вполне неплохим результатом.