Мур-мяу товарищи! Увидел http://radiokot.ru/circuit/digital/home/93/, решил сделать:) сделал, почти работает) После калибровки стрелки как были в максимальном положении так и остаются. Позже оказалось что прибор имеет логарифмическую характеристику... вот тут я и задумался, а что же мне делать дальше? При настройке часов видно что стрелки дергаются, т.е. время выставляется. Собирать схемку для обратной логарифмической хар-ки, что бы они в месте прямую давали? Можно поменять на другие, условно нормальные, но эти тогда валяться будут:)
а мне нужно не пачки импульсов, а 2 секунды лог1, 2 секунды лог 0
Спойлер
Код:
/* * METER-CLOCK AND WATCH * Часы с будильником и индикацией при помощи стрелочных миллиамперметров * */ #include <avr/io.h> #include <avr/interrupt.h> #include <avr/eeprom.h> #include "avr_helper.h"
// число "тиков" 0-го таймера за 1 секунду #define TICKS_PER_SEC 125 // шкала времени - 12-часовая, т.к. 24 деления на индикаторе - слишком много #define HOURS_SCALE 12 // значение максимума для 10-битного ШИМА часов #define PWM_MAX_H 1023UL // значение максимума для 10-битного ШИМА минут #define PWM_MAX_M 1023UL
// шаг ШИМа в 1 часе #define PWM_HOUR_STEP (PWM_MAX_H / HOURS_SCALE) // шаг ШИМа в 1 минуте #define PWM_MIN_STEP (PWM_MAX_M / 60) // вывод, к которому подключени вспомогательный индикатор #define DIV_PIN _BV(PB2) // вывод, к которому подключен сигнал будильника #define ALARM_OUT _BV(PB7) // вывод, к которому подключен переключатель КОРРЕКЦИИ ЧАСОВ #define SET_HOUR _BV(PD6) // вывод, к которому подключен переключатель КОРРЕКЦИИ МИНУТ #define SET_MIN _BV(PD5) // вывод, к которому подключен переключатель режима индикации ЧАСЫ-БУДИЛЬНИК #define ALARM_MODE _BV(PD0) // коэффициент ШИМа вспомогательного индикатора ДО ПОЛУДНЯ #define DIVIDER_AM 20 // коэффициент ШИМа вспомогательного индикатора ПОСЛЕ ПОЛУДНЯ #define DIVIDER_PM 100 // коэффициент ШИМа вспомогательного индикатора ЦЕНТР #define DIVIDER_CENTER 62 // для "плавной" индикации надо задать следующий макрос равным НЕ НУЛЮ #define SOFT_TIME 0
// проверка правильности коэффициентов ШИМа вспомогательного индикатора #if (DIVIDER_AM > TICKS_PER_SEC) | (DIVIDER_PM > TICKS_PER_SEC) | (DIVIDER_CENTER > TICKS_PER_SEC) #error DIVIDER_xxx must equal or lower than TICKS_PER_SEC #endif
// вычисление значения коэффициента ШИМ для индикатора часов if(h > HOURS_SCALE) h -= HOURS_SCALE; ocr = PWM_HOUR_STEP * h; if(soft_time() && !(h == HOURS_SCALE)) ocr += PWM_HOUR_STEP * m / 60; OCR1A = ocr;
// вычисление значения коэффициента ШИМ для индикатора минут ocr = PWM_MIN_STEP * m; if(soft_time()) ocr += PWM_MIN_STEP * s / 60; OCR1B = ocr; }
// обработчик прерывания по совпадению канала B 0-го таймера ISR(TIMER0_COMPB_vect){ // выключение сигнала на вспомогательном индикаторе PORTB &= ~DIV_PIN; }
// Обработчик прерывания по совпадению 0-го таймера // Вызывается TICKS_PER_SEC раз в секунду ISR(TIMER0_COMPA_vect){ static uint8_t counter = TICKS_PER_SEC; // считаем время if(!--counter){ counter = TICKS_PER_SEC; if(++sec >= 60){ sec = 0; if(++min >= 60){ min = 0; sec = 28; // корректировка - каждый час +28.8 секунд if(++hour >= (HOURS_SCALE*2)){ hour = 0; } } } // устанавливаем флажок каждую секунду one_sec_flag = 1; } // включаем сигнал на вспомогательном индикаторе PORTB |= DIV_PIN; }
// таймер 0 - счет времени: делитель 256 и режим CTC с коэффициентом 125 - итого деление 32000 // а так же управление индикатором-разделителем в режиме программного ШИМ OCR0A = TICKS_PER_SEC; TCCR0A = _BV(WGM01); // CTC TCCR0B = TIMER_CLK_DIV_256;
// таймер 1 обеспечивает просто 10-битный FastPWM для управления стрелками часов и минут TCCR1A = _BV(WGM10) | _BV(WGM11) | TIMER_OC_CLEAR(1A) | TIMER_OC_CLEAR(1B); TCCR1B = TIMER_CLK_DIV_1; // прерывания разрешены от 0-го таймера по совпадению каналов А и B TIMSK = _BV(OCIE0A) | _BV(OCIE0B);
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Собрал на весу схемку, вроде работает. Сейчас проверю точность хода. Будильник не проверял пока. Перерисовал схему в более удобоваримом виде. Печатку делать не буду, хватит и монтажки. Пойду завтра на рынок искать винтажные микроамперметры. Во вложении схема, фьюзы, прошивка, исходники. Потребляет 38-40 мА по 5В. Жаль автора на форуме не видно с 2012 года.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Собрал таки на печатке, но будильник не работает. Может кто посмотрит исходники что там не так. Часики прикольные получаются. Нужно есче подсветку зеленую сделать. Во вложении печатка.
Собрал часы. Будильник не работает. Пробовал подправить прошивку но при компилировании выдает ошибку. Тогда решил скомпилировать авторский исходник на си без моих исправлений все равно ошибка. Обращаюсь ко всем , кто силен в программировании, помогите советом как это исправить, а с будильником сам попробую разобраться.
Надо будет достать свои и потыкать осцилом, что там появляется на ножках МК при срабатывании будильника. Может там нужен бузер со встроенным генератором.
Сейчас этот форум просматривают: gbfy2, Stinger и гости: 49
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения