Питание - 3 вольта (две батарейки АА).Тут такое дело. Тинька в рабочем режиме потребляет около 3 мА. Надолго ли хватит батареек?
Но тогда не будет мгновенного срабатывания на включение света.Так в этом и вся прелесть!!! Если после того, как включался свет хоть через пол-часа пшикнет - нормально. :co_ol:
Что будем применять в качестве датчика освещения?Проблемка... В разных местах живем...
Я тут нашел фоторезисторы - в темноте 1 Мгом, на свету - 10 Ком. Обозначаются как "GL5528".Да нормально. Прицепить к АЦП - думаю будет работать. Пробовать надо.
А какой ресурс Вы имеете ввиду? Батарейки?Нет, не батарейки, а памяти. Вот тут кое-что про это пишут http://electronix.ru/forum/lofiversion/ ... 65606.html (http://electronix.ru/forum/lofiversion/index.php/t65606.html" target="_blank)
#define LED_pl PB2
#define LED_mn PB1
//============================================================
int __attribute__((naked)) main(void)
{
WDTCR = (1<<WDE)| //выпускаем сторожевую собаку
(0<<WDP3)|(1<<WDP2)|(1<<WDP1)|(0<<WDP0); //1c
// (0<<WDP3)|(1<<WDP2)|(1<<WDP1)|(1<<WDP0); //2c
// (1<<WDP3)|(0<<WDP2)|(0<<WDP1)|(0<<WDP0); //4c
// (1<<WDP3)|(0<<WDP2)|(0<<WDP1)|(1<<WDP0); //8c
PORTB |= (1<<LED_pl);
_delay_us(2);
if(bit_is_clear(PINB,LED_mn))goto slp;
DDRB |= (1<<LED_pl)|(1<<LED_mn); //зажигаем светодиод
u32 ctr_unary = eeprom_read_dword(30); // читаем унарный счетчик
ctr_unary <<= 1; //инкремент унарный счетчик
// if(ctr_unary == 0)
if(ctr_unary == 0Xffffff00)
{
ctr_unary = 0xffffffff;
/**/
u8 ct_binary = eeprom_read_byte(30+4); // читаем бинарный счетчик
ct_binary++;
//здесь можем сравнить бинарный счетчик с чем-либо
eeprom_update_byte(30+4, ct_binary);
_delay_ms(300);
}
eeprom_update_dword(30, ctr_unary);
DDRB &=~((1<<LED_pl)|(1<<LED_mn)); //тушим светодиод
slp:
PORTB &=~((1<<LED_pl)|(1<<LED_mn));
MCUCR |= (1<<SE)|(1<<SM1)|(0<<SM0); //power down
asm("sleep");
}
А для чего переключатель в последнем варианте?переключатель времени.
Еще один прикол - если вход замкнуть на корпус, начинает жрать 25 мкА.Непонял??? Вы уже на макетке пробуете???
на макетке пробуете???Да, сохранилась примерно такая удобная вещь.
что делать?!Может к черту этот проект? Похоже это просто нереально.
часы, собранные на Attiny работают веками???а у нас будет работать тысячелетиями
Может к черту этот проект? Похоже это просто нереально.Лично мне этот проект интересен тем, что можно добиться мизера потребления в паузе - 6 мкА.
Ну, вот собственно тестовая прошивка.Вот это класс!!! Завтра займусь! :co_ol:
Завтра займусь!Ну, чё, завтра уже наступило?
пришлось немного напрячься на работеработа не волк...
Даже видео для наглядности сделал:
Зажимаем кнопку, через несколько секунд начинает мигать светодиод.
Так я её зажимаю как девушку (в смысле настойчиво)в кино не видно это
в кино не видно втетоОК! Зделаю часика через 2 еще одно кино, надо семье должок отдать на свежем воздухе :pri_vet:-:
В принципе можем и через Skype в прямом эфире.мои микрофоны и камеры все пропали на пожаре
такие дела...Да... Дела неважные, сочувствую.
надо попробовать электролит на питание повеситьПопробовал - результата нет.
То есть получается 3, 1.5 или 1 раз в сутки.я соображал немного не так. Пауза привязана не к суткам, а к часам.
1 импульс = 1 час паузы.То есть получается 24, 12 и 8 срабатываний в сутки (раз в час, в два или в три)? Если учесть что китайченок пырскал каждых пол-часа, то есть 40 раз в сутки - то это полная победа! :co_ol:
ну вот собственно кекс.Фига се! Пока писАл - все изменилось! :du_ma_et: Тааак! Ща прошью, прикрутю полевик и насоплях подключу к пырскалке. :dr_ink:
То есть получается 24, 12 и 8 срабатываний в суткиТы не понял. Количество миганий в тестовой прошивке при отпущенной кнопке никак не связано с часами.
Ты не понял. Количество миганий в тестовой прошивке при отпущенной кнопке никак не связано с часами.Так я понимаю что это просто индикация шо это чудо работает.
А можно кнопку к Тиньке прикрутить для принудительного пшика?можно.
для стабильной работы полевика затвор через 1 ком посадил на минус.Иначе полевик открывался (???) и удерживал моторВ паузе затвор практически болтается в воздухе. Возможно емкость затвора, зарядившись, удерживает канал мосфета в открытом состоянии.
/****************************************************
timer pshik
made slav0n
Chip type : ATtiny13
9.6 MHz / 8 = 1.2
фузы заводские
;Hfuse FF
;Lfuse 6A
****************************************************/
#include <avr/io.h>
#include <avr/eeprom.h>
#include <avr/wdt.h>
#include <util/delay.h>
#include "m8_128.h"
#define LED_pl PB1
#define LED_mn PB0
#define GATE PB2
#define BUTTON_PSHIK PB4
#define adr_set_hrs 1
#define adr_binary adr_set_hrs + 1
#define adr_unary adr_binary + 1
//============================================================
int __attribute__((naked)) main(void)
{
WDTCR = (1<<WDE)| //выпускаем сторожевую собаку
// (0<<WDP3)|(0<<WDP2)|(0<<WDP1)|(1<<WDP0); //32mc
// (0<<WDP3)|(0<<WDP2)|(1<<WDP1)|(0<<WDP0); //64mc
// (0<<WDP3)|(0<<WDP2)|(1<<WDP1)|(1<<WDP0); //0.125c
// (0<<WDP3)|(1<<WDP2)|(0<<WDP1)|(1<<WDP0); //0.5c
// (0<<WDP3)|(1<<WDP2)|(1<<WDP1)|(0<<WDP0); //1c
// (0<<WDP3)|(1<<WDP2)|(1<<WDP1)|(1<<WDP0); //2c
(1<<WDP3)|(0<<WDP2)|(0<<WDP1)|(0<<WDP0); //4c
// (1<<WDP3)|(0<<WDP2)|(0<<WDP1)|(1<<WDP0); //8c
PORTB |= (1<<LED_pl)|(1<<BUTTON_PSHIK);
_delay_us(100);
while(bit_is_clear(PINB,LED_mn))
{
wdt_reset();
u8 set_hrs = eeprom_read_byte(adr_set_hrs) +1;
if(set_hrs >= 5)set_hrs =0;
u8 i = set_hrs;
do{
DDRB |= (1<<LED_pl); //зажигаем светодиод от кнопки
_delay_ms(200);
wdt_reset();
DDRB &=~(1<<LED_pl); //тушим светодиод
_delay_ms(200);
wdt_reset();
}while(i--);
_delay_ms(400);
wdt_reset();
_delay_ms(400);
wdt_reset();
// eeprom_update_byte(adr_set_hrs, set_hrs);
eeprom_write_byte(adr_set_hrs, set_hrs);
eeprom_write_byte(adr_binary, 0); // сбрасываем бинарный счетчик
}
if(bit_is_clear(PINB, BUTTON_PSHIK))goto M_PSHIK; //пшикаем и сбрасываем таймер
DDRB |= (1<<LED_pl)|(1<<LED_mn); //зажигаем светодиод
_delay_ms(10);
u8 p_ctr[4];
u8 p_old[4];
eeprom_read_block(p_ctr, adr_unary, 4); // читаем унарный счетчик
memcpy(p_old, p_ctr, 4);
// u8 *ctr_unary = p_ctr;
u32 *ctr_unary = p_ctr;
*ctr_unary <<= 1; //инкремент унарный счетчик
if(*ctr_unary == 0)
{
*ctr_unary = 0xffffffff;
// *ctr_unary = 0xff;
/**/
u8 ct_binary = eeprom_read_byte(adr_binary); // читаем бинарный счетчик
ct_binary++;
//здесь можем сравнить бинарный счетчик с чем-либо
u8 set_hrs = eeprom_read_byte(adr_set_hrs);
if(set_hrs >= 5)set_hrs =0;
if(ct_binary == (set_hrs+1) * 24)
// if(ct_binary == (set_hrs+1))
{
M_PSHIK:
ct_binary =0; // сбрасываем бинарный счетчик
DDRB |= (1<<GATE);
PORTB |= (1<<GATE);
wdt_reset();
_delay_ms(500);
wdt_reset();
_delay_ms(500);
wdt_reset();
PORTB &=~(1<<GATE);
DDRB &=~(1<<GATE);
}
eeprom_write_byte(adr_binary, ct_binary);
}
/* */
//------- пишем 4 байта унарного счетчика в EEPROM ----------------------
for(u8 i=0;i<4;i++)
{
if(p_old[i] != p_ctr[i])//пишем только если байт измнился
{
while(EECR & (1<<EEPE));// Wait for completion of previous write
// Set Programming mode
// EECR = (0<<EEPM1)|(0>>EEPM0); //Erase-Write
if(p_ctr[i] == 0xff)EECR = (0<<EEPM1)|(1>>EEPM0); //Erase Only
else EECR = (1<<EEPM1)|(0>>EEPM0); //Write Only
EEARL = adr_unary + i; //ucAddress;
EEDR = p_ctr[i]; //ucData;
EECR |= (1<<EEMPE);// Write logical one to EEMWE
EECR |= (1<<EEPE); // Start eeprom write by setting EEWE
}
}
//-------------------------------------------------------------------------
DDRB &=~((1<<LED_pl)|(1<<LED_mn)); //тушим светодиод
PORTB &=~((1<<LED_pl)|(1<<LED_mn));
MCUCR |= (1<<SE)|(1<<SM1)|(0<<SM0); //power down
asm("sleep");
}
Для хранения числа лаев (период которых, кстати, можно регулировать, думаю оптимально будет 4 сек) применяем EEPROM.Добрый день!
то после сброса от MCLR, WDT эти переменные не сбрасываются, и EEPROM можно использовать только для хранения настройки на случай если сядет батарейка,что-бы не мудрить с постоянной записью в EEPROM, можно сделать и так.
ну или весь проект целиком.вот проект целиком
Поскольку уважаемый slav0n, решил проблему с таймером,На самом деле моё решение попахивает некоторым оверинжинирингом...
то после сброса от MCLR, WDT эти переменные не сбрасываются, и EEPROM можно использовать только для хранения настройки на случай если сядет батарейкаПо-идее ОЗУ не сбрасывается в режиме "power down". Поэтому тут нет особого смысла хранить счетчик в EEPROM.
Полевик взял из-за запасников 2N7002На схеме и на печатке обнаружилась ошибка. Надо поменять местами сток-исток.
Цитата: "alexanderik"Полевик взял из-за запасников 2N7002На схеме и на печатке обнаружилась ошибка. Надо поменять местами сток-исток.
Ну вот, сидя на досуге, решил малость модернизировать пшикалкуКакие фузы надо отметить в Понипрог, по умолчанию оставить? Подойдет IRF3205? Светодиод должен моргать? Просто собрал, прошил, вроде питание на 7 ноге появляется, а IRF3205 открываться не хочет, даже если на "G" питание на прямую подать.
Выставить только частоту 4.8Mhz, все остальное по умолчанию. IRF3205 ? это вроде как пушкой по воробьям 110A 55V, очевидно не хватает тока для открытия затвора, используй родной из платки там и обвес весь есть, разьемы, резисторы, и полевик.Цитата: "alexanderik"Ну вот, сидя на досуге, решил малость модернизировать пшикалкуКакие фузы надо отметить в Понипрог, по умолчанию оставить? Подойдет IRF3205? Светодиод должен моргать? Просто собрал, прошил, вроде питание на 7 ноге появляется, а IRF3205 открываться не хочет, даже если на "G" питание на прямую подать.
вот платану неужели нельзя было сделать более качественную фотку?!
это вроде как пушкой по воробьям 110A 55V, очевидно не хватает тока для открытия затвора, используй родной из платки там и обвес весь есть, разьемы, резисторы, и полевик.У меня малость другая модель Air Wick и там стоит такая плата (http://img703.imageshack.us/img703/9798/dsc3097m1.jpg) (http://imageshack.us/photo/my-images/703/dsc3097m1.jpg/)
так проверь, он от нуля открывается, сними осциллограму или тестером прозвони. А что за модель вонючки ? какие плюсы ? возможности ?Цитата: "alexanderik"это вроде как пушкой по воробьям 110A 55V, очевидно не хватает тока для открытия затвора, используй родной из платки там и обвес весь есть, разьемы, резисторы, и полевик.У меня малость другая модель Air Wick и там стоит такая плата (http://img703.imageshack.us/img703/9798/dsc3097m1.jpg) (http://imageshack.us/photo/my-images/703/dsc3097m1.jpg/)
Если Y2 и полевик, то он Р канальный вроде, т.к. плюс на мотор пускает, но в интернете пишут, что это транзистор Y2 SOT-23 SS8550 Galaxy PNP транзистор.
Светодиод какой и тип линзы? в прозрачном корпусе или молочный?Прозрачный, яркий, белый, 10мм, с линзой сферической, как обычный.
Поставил КТ972А, все заработало.Нажми на кнопку и дождись пока проморгает 5 раз, линза желательно должна смотреть на свет(лампу), после этого загорится LED на секунду, (в это время лучше не загораживать линзу и отойти), потом происходит калибровка, и снова горит LED - секунду, подтверждая, что калибровка выполнена.
Как правильно настраивать на освещенность? Просто не хватает чувствительности, включается только когда поднести близко к лампе или направить на окно. Каким способом можно добавить чувствительности?
Вонючка такая http://klimat72.ru/katalog/osvezhitel/air-wick (http://klimat72.ru/katalog/osvezhitel/air-wick" target="_blank)
Плата glade В хорошем разрешении.Фото перезалил, рекомендую прочитать - Редактирование картинок для форума (http://primuss3.com/forum/index.php?topic=78.0)
Перед размещение картинок на форуме настоятельно рекомендую их предварительно подготовить. Основной параметр - объем.
Внес небольшие изменения в алгоритме + оптимизация памяти.ничего себе - "небольшие изменения"
Цитата: "alexanderik"Внес небольшие изменения в алгоритме + оптимизация памяти.ничего себе - "небольшие изменения"
Глянул твой исходник (http://pastebin.com/4gkG1gdU)...
Цитата: "alexanderik"Если Y2 и полевик, то он Р канальный вроде, т.к. плюс на мотор пускает, но в интернете пишут, что это транзистор Y2 SOT-23 SS8550 Galaxy PNP транзистор.
фьюзы как учили LOW 0X69 HIHG 0XFFкто учил ставить такие фузы? С такими фузами тинька тактируется 600 кГц
посмотрел в калькуляторе- да при таких установках в 16 ричном формате как написано -частота 4.8 все верно почему 600 кгц?Включенный фуз CKDIV8 соответствует делению тактовой частоты на 8.
ФАЙЛ ПРОЕКТА С РАСШИРЕНИЕМ CPROJможет шестой студией писал?
Жена даже с ним разговаривать пытается.Отвечают?
как обнулить счетчик пшиковА тут у нас вроде количество пшиков никто и не считает.
Там, же датчик стоит, а на баллоне две черные метки. Они наверное передают номер баллона в память.круто, это мне неизвестно...
вот проект целикомздравствуйте.
ВЛОЖЕНИЯ
timer_pshik_tiny13.zip
(156.88 Кб) Скачиваний: 48
while(1||!1);
прошивку взял из архива airwick-sensor-led папка debug. Есть проблема, цикличность срабатывания слишком частая, .т.е. не час, а 15 секунд, не 2 часа, а 30 секунд.Посмотрел я в этот исходник.
#ifdef DEBUG
#define Per_Watch 3
#define Per_Minute 1
#else
#define Per_Watch 700
#define Per_Minute 12
#endif
Собрал в WinAvr.
Пшикайте.
действительно, 4 байта лишних получилось.
Щас посмотрю что можно сделать.
Оптимизировал цикл мигания диода. Похудело на 6 байт.
Теперь должно влезть.
но 5-й режим (срабатывание на изменение освещенности) не работаетисходник не мой. Я лишь его пересобрал в другой среде программирования.
slav0nу уже сниться походу эта муть ?всё нормально, просто ща безделье.
Куда катится этот мир?возможно это просто особенности недокументированных возможностей.
Нужна работа только от кнопки.в таком случае зачем вообще тинька и вся эта канитель, повесь кнопку на мотор
повесь кнопку на моторНу, во-первых, плата уже стоит, а во-вторых, так будет надежнее.
обновленокто нибудь можете выложить эту прошиву? , а то удалили враги
1.при выключении света, пшикает только если до этого свет горел более 3 минут.
2.при включении света - встречает подмигиванием.
https://www.sendspace.com/file/sm3613
« Последнее редактирование: 28 Май 2015, 13:25:31 от alexanderik
https://pastebin.com/JLT2Gf7aобновленокто нибудь можете выложить эту прошиву? , а то удалили враги
1.при выключении света, пшикает только если до этого свет горел более 3 минут.
2.при включении света - встречает подмигиванием.
https://www.sendspace.com/file/sm3613
« Последнее редактирование: 28 Май 2015, 13:25:31 от alexanderik
можешь сам скомпилироватья к сожалению далек от программирования, все что могу это bin файл запрограммировать на программаторе ,у меня прогер Тритон 5.7Т
https://pastebin.com/JLT2Gf7aПривет, скомпилировал твой код в программе Microchip Studio, при создании проекта выбрал GCC C Executable Project -> микропроцессор ATtiny13 (64 bytes memory). Из твоего кода было создано 2 файла с кодом: main.c и airwick.h.
Остался код, можешь сам скомпилировать