Например TDA7294

Форум РадиоКот • Просмотр темы - Часы из амперметров и М4761
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 16, 2024 12:05:21

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Часы из амперметров и М4761
СообщениеДобавлено: Сб авг 17, 2013 18:27:55 
Родился

Зарегистрирован: Вт июл 09, 2013 14:40:43
Сообщений: 1
Рейтинг сообщения: 0
Мур-мяу товарищи!
Увидел http://radiokot.ru/circuit/digital/home/93/, решил сделать:) сделал, почти работает) После калибровки стрелки как были в максимальном положении так и остаются. Позже оказалось что прибор имеет логарифмическую характеристику... вот тут я и задумался, а что же мне делать дальше? При настройке часов видно что стрелки дергаются, т.е. время выставляется. Собирать схемку для обратной логарифмической хар-ки, что бы они в месте прямую давали? Можно поменять на другие, условно нормальные, но эти тогда валяться будут:)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Часы из амперметров и М4761
СообщениеДобавлено: Пт янв 03, 2014 21:51:16 
Родился

Зарегистрирован: Чт апр 04, 2013 14:44:31
Сообщений: 1
Рейтинг сообщения: 0
Сделал сии часы. Не работают....Начал разглядывать схему и возник вопрос: А чем задается секундная частота? Кварца на 32 кГц не видно.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: кто знает си?
СообщениеДобавлено: Пт мар 21, 2014 11:26:47 
Нашел транзистор. Понюхал.

Зарегистрирован: Сб фев 02, 2013 10:34:39
Сообщений: 192
Рейтинг сообщения: 0
делаю часы
http://radiokot.ru/circuit/digital/home/93/
при срабатывании будильника на 19 вывод подаются пачки импульсов:
около 2 секунд идёт куча импульсов, 2 секунды ноль

а мне нужно не пачки импульсов, а 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

// макрос проверки включения режима индикации будильника
#define is_alarm_mode()    ((PIND & ALARM_MODE) == 0)
// макрос проверки режима КОРРЕКЦИИ
#define is_set_mode()      (((PIND & (SET_HOUR | SET_MIN)) ^ (SET_HOUR | SET_MIN)) != 0)
// макрос проверки режима КОРРЕКЦИИ ЧАСОВ
#define is_set_hour_mode()   ((PIND & (SET_HOUR | SET_MIN)) == SET_MIN)
// макрос, контролирующий "плавную" индикацию времени
#define soft_time()         (SOFT_TIME && !is_alarm_mode() && !is_set_mode())

// флажок "прошла 1 секунда"
volatile uint8_t    one_sec_flag;
// текущее время
volatile uint8_t   hour = 10;
volatile uint8_t    min = 36;
volatile uint8_t    sec = 0;
// вспомогательный флажок, инвертирующися каждую секунду
volatile uint8_t    toggle = 0;

// ячеки в EEPROM для хранения уставки будильника
EEMEM uint8_t      dummy = 0;         // это индикатор "первого" запуска программы
EEMEM uint8_t      e_hour, e_min;

// вывод времени на индикаторы
static void show_time(uint8_t h, uint8_t m, uint8_t s){
   static uint8_t sec_ocr = 0;
   uint16_t ocr;

   // индикация на вспомогательном индикаторе
   if(toggle){
      sec_ocr = DIVIDER_CENTER;
   } else {
      sec_ocr = h < HOURS_SCALE ? DIVIDER_AM : DIVIDER_PM;
   }
   OCR0B = sec_ocr;
   toggle = !toggle;

   // вычисление значения коэффициента ШИМ для индикатора часов
   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;
}

MAIN(){
   // уставка будильника
   uint8_t   alarm_hour, alarm_min;

   if(eeprom_read_byte(&dummy) != 0){
      // первый запуск - EEPROM чистая
correct_alarm:
      eeprom_update_byte(&e_hour, 7);
      eeprom_update_byte(&e_min, 0);
      eeprom_update_byte(&dummy, 0);
   }

   // считывание уставки будильника
   alarm_hour = eeprom_read_byte(&e_hour);
   alarm_min = eeprom_read_byte(&e_min);
   // корректировка уставки для страховки
   if(alarm_hour >= 24){
      alarm_hour = 7;
      goto correct_alarm;
   }
   if(alarm_min >= 60){
      alarm_min = 0;
      goto correct_alarm;
   }

   // таймер 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);

   // порты переключателей
   DDRD = 0;
   PORTD = 255;

   sei();

   while(1){
      if(ACSR & _BV(ACO)){
         // если компаратор сработал - питание от батарейки - выключить индикацию
         DDRB &= ~(_BV(PB4) | _BV(PB3) | DIV_PIN);
      } else {
         // иначе обычная индикация
         DDRB |= (_BV(PB4) | _BV(PB3) | DIV_PIN);
      }

      while((PIND & (_BV(PD4) | _BV(PD3) | _BV(PD2))) ^ (_BV(PD4) | _BV(PD3) | _BV(PD2))){
         // режим калибровки индикаторов
         OCR1A = PWM_MAX_H;
         OCR1B = PWM_MAX_M;
      }

      if(is_alarm_mode()){
         // режим будильника
         if(is_set_mode()){
            // режим корректировки
            if(is_set_hour_mode()){
               // корректировка часов
               if(++alarm_hour >= (HOURS_SCALE * 2)) alarm_hour = 0;
            } else {
               // корректировка минут
               if(++alarm_min >= 60) alarm_min = 0;
            }
         }
         // вывод уставки будильника
         show_time(alarm_hour, alarm_min, 0);
         // обновление памяти
         eeprom_update_byte(&e_hour, alarm_hour);
         eeprom_update_byte(&e_min, alarm_min);
      } else {
         // режим индикации времени
         if(is_set_mode()){
            // режим корректировки
            if(is_set_hour_mode()){
               // коррекция часов
               if(++hour >= (HOURS_SCALE * 2)) hour = 0;
            } else {
               // корреция минут
               if(++min >= 60) min = 0;
            }
         }
         // индикация времени
         show_time(hour, min, sec);
      }
      // срабатывание будильника
      if((hour == alarm_hour) && (min == alarm_min) && toggle){
         PORTB |= ALARM_OUT;
      } else {
         PORTB &= ~ALARM_OUT;
      }
      // ожидание флага обновления
      while(!one_sec_flag && );
      one_sec_flag = 0;
   }
}



я так понял порту назначна переменная ALARM_OUT, но на неё выхода ШИМ нету :shock:


Последний раз редактировалось Gudd-Head Пт мар 21, 2014 14:35:09, всего редактировалось 1 раз.
Сюда перенёс. Нарушение п.2.6 Правил Форума


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Часы из амперметров и М4761
СообщениеДобавлено: Пт мар 21, 2014 15:56:46 
Нашел транзистор. Понюхал.

Зарегистрирован: Сб фев 02, 2013 10:34:39
Сообщений: 192
Рейтинг сообщения: 0
здесь же никто не ответит :kill: :kill: :kill:


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Часы из амперметров и М4761
СообщениеДобавлено: Пт дек 11, 2015 22:15:40 
Потрогал лапой паяльник
Аватар пользователя

Карма: 1
Рейтинг сообщений: 51
Зарегистрирован: Вт ноя 05, 2013 18:12:13
Сообщений: 316
Откуда: Полтава
Рейтинг сообщения: 1
Собрал на весу схемку, вроде работает. Сейчас проверю точность хода. Будильник не проверял пока. Перерисовал схему в более удобоваримом виде. Печатку делать не буду, хватит и монтажки. Пойду завтра на рынок искать винтажные микроамперметры. Во вложении схема, фьюзы, прошивка, исходники. Потребляет 38-40 мА по 5В. Жаль автора на форуме не видно с 2012 года.
Изображение


Вложения:
Ampermetr_clock.rar [907.7 KiB]
Скачиваний: 504
Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Часы из амперметров и М4761
СообщениеДобавлено: Сб дек 26, 2015 00:49:53 
Потрогал лапой паяльник
Аватар пользователя

Карма: 1
Рейтинг сообщений: 51
Зарегистрирован: Вт ноя 05, 2013 18:12:13
Сообщений: 316
Откуда: Полтава
Рейтинг сообщения: 1
Собрал таки на печатке, но будильник не работает. Может кто посмотрит исходники что там не так. Часики прикольные получаются. Нужно есче подсветку зеленую сделать. Во вложении печатка.
Изображение


Вложения:
clock-amp-lay.rar [15.31 KiB]
Скачиваний: 465
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Часы из амперметров и М4761
СообщениеДобавлено: Ср июл 13, 2016 08:05:17 
Родился

Зарегистрирован: Чт апр 02, 2015 09:19:06
Сообщений: 18
Рейтинг сообщения: 1
Собрал часы. Будильник не работает. Пробовал подправить прошивку но при компилировании выдает ошибку. Тогда решил скомпилировать авторский исходник на си без моих исправлений все равно ошибка. Обращаюсь ко всем , кто силен в программировании, помогите советом как это исправить, а с будильником сам попробую разобраться.

Изображение

Изображение


Вложения:
IMG_4313_1_1.jpg [73.85 KiB]
Скачиваний: 1536
Без имени-2.jpg [67.59 KiB]
Скачиваний: 1644
авторская прошивка.rar [5.39 KiB]
Скачиваний: 303
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Часы из амперметров и М4761
СообщениеДобавлено: Ср июл 13, 2016 15:20:45 
Потрогал лапой паяльник
Аватар пользователя

Карма: 1
Рейтинг сообщений: 51
Зарегистрирован: Вт ноя 05, 2013 18:12:13
Сообщений: 316
Откуда: Полтава
Рейтинг сообщения: 0
Надо будет достать свои и потыкать осцилом, что там появляется на ножках МК при срабатывании будильника. Может там нужен бузер со встроенным генератором.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Часы из амперметров и М4761
СообщениеДобавлено: Вт июл 26, 2016 08:49:05 
Родился

Зарегистрирован: Чт апр 02, 2015 09:19:06
Сообщений: 18
Рейтинг сообщения: 0
Разобрался с будильником. Подключил BUZ через составной транзистор.Все работает.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: cfp1964, nick956, wallawr и гости: 28


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y