Сделал часы

alexhote
23:57, 06.11.2015
На ОАКе пра кричать БАЯЯЯяяН
но на нашем радиоформе, кторый регулярно мониторю, на удивление еще темы не было.
Вобщем время от времени читаю интернет, все подряд от изобретения навигатора за 15 лет до GPS до особенностей навигации в первых полетх в космос.
Наткнулся на темы про часы на газоразрядных навигаторах, вспоснил в первую очередь весы на которые в детсве смотрел и разглядывал как на разных уровнях светятся цифры...

По случаю на уралмашевской борохолке приобрел индикаиоры ИН12 по 50 р за штуку.
Стал подробнее изучать схемы, но все как то не мое, то питанеи отдельно, то деталей не все ест. В большинстве схем используют микрссхему к155ИД1
единственная высоковольттная микросхема, но в екате ее не нашел.
Потом на одном из формумов прочитал что она дает паразитное синее свечение за счет наличи внутри 60 вольтовых стабилитронов на выходах.
Еще был у меня опыт сборки по чужой схеме с долгой отладкой и решил собирать свою.
За основу взятл несколько схем (мх море в инете) и сразу стал рисовать печатку в лэйауте:

Фотография из Фотогалереи на E1.ru

рисовал недели две через ден-три в режиме хобби.
Лазерно-утюжная технология плюс промэлектроник и
В итоге после протравки и пайки получилось вот эта.

Фотография из Фотогалереи на E1.ru


Схемы так и не нарисовал, но целью ставил по максимум очсвоить микроконтроллер атмега 8 которых на али купил 5 штук за 100 рублей.

Один из первых трудных моментов - высоковольтное питание. На плате у меня трансформатор 220 на 6 ворльт после конденсатороа без нагрузки около 8 вольт. Мотал и перематывал дроссели, осваивая ШИМ в мкроконроллере, затем АЦП и в итоге получил таки 180 вольт, которые сам контроллер изменяя скважность шима и поддерживает.
Синим напряжение на дросселе, желтым на полевике.

Фотография из Фотогалереи на E1.ru


здесь синим на нрге атмеги, желтым на затворе полевика

Фотография из Фотогалереи на E1.ru


[Сообщение изменено пользователем 07.11.2015 00:03]

Но зато освоил сразу две вещи ШИМ и АЦП. Менял частоту от 200 до 10 килогерц и скважность от 50 до 90% в иоге остановилмя на 35 килогерцах и 90% а потом контроллер сам себя подстраивал.

Контроллер запускал от внутреннего генератора на 8 мегагерц, а врой таймер асинхронно от часового кварца. В итоге и программа нормально работает и Часы. Единственное не предусмотрел батарейку.
Третий таймеер использовал для пищалки и динамической индикации.
В итоге пашут все три таймера, АЦП, прерывания, проц, внешний кварц.
Я доволен до этого делал только управление насосом на атини24 в режме реле.


[Сообщение изменено пользователем 07.11.2015 00:14]

[Сообщение изменено пользователем 07.11.2015 00:19]
5 / 1
Мoзгoпрaв и мoзгoвeд©
00:01, 07.11.2015
правый нижний угол ужасно разведён :-(
2 / 3
alexhote
00:25, 07.11.2015
Поверхностного монтажа пока боюсь, поэтому все на выводных деталях. Дорожки рисовал шириной 1 мм. Некоторые правда и полмилиметра, но и те неплохо протравились.
Под индикатры отдельная печатка. Правда она неправильная пришлось проводками кидать. Анод перепутал с единицею и по центру отверстия для наплывов индикатороов не предусмотрел.

Фотография из Фотогалереи на E1.ru


[Сообщение изменено пользователем 07.11.2015 00:28]
7 / 1
alexhote
00:32, 07.11.2015
Для любителей исходники, в принципе пишите в личку скину фалы по проекту если кому интересно.
#define F_CPU 8000000UL

#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>

//Программа инициализации ШИМ

void init_pwm (void)
{
//Инициализация порта
DDRB=0xFF; //OC1A,OC1B,OC2 - выхода
TCCR1A=(1<<COM1B1)|(1<<WGM10)|(1<<WGM11); //Конфигурация счетчика OC1A
TCCR1B=(1<<CS10)|(1<<WGM12)|(1<<WGM13); //Конфигурация счетчика OC1B

//Установка начальных значений счетчиков
OCR1A=250;
OCR1B=215; //Выключен 0 от 200/170 до 250/215
}

volatile unsigned char second, minute, hour, h, m;
int voltage_ADC, dimm;
// Прерывание по переполнению Т2
ISR (TIMER2_OVF_vect)
{
if(second++ >= 59)
{
second = 0;
minute++;
}
if(minute > 59)
{
minute = 0;
hour++;
}
if(hour > 23)
hour = 0;

//set_time(hour,minute,second); // Выводим данные на дисплей
}

ISR (TIMER0_OVF_vect)
{

PORTC |= (1 << PC2);

}

ISR (ADC_vect)//прерывание по завершению преобразования АЦП
{
voltage_ADC = ADCW;//считываем значение АЦ преобразования

if(voltage_ADC<260 && OCR1A<300){OCR1A++;OCR1B=OCR1A-dimm;}
if(voltage_ADC>260 && OCR1A>170){OCR1A--;OCR1B=OCR1A-dimm;}

ADCSR |= (1<<ADSC);//запускаем очередное преобразование
}


//Основная программа

int main(void)
{
unsigned char r ;
unsigned char mode;
init_pwm(); //Инициализация ШИМ каналов
PORTD=0x00; //Выставляем все выходы порта D на 0, то есть выключаем весь порт D
DDRD=0xFF; //Делаем порт D как выход, чтобы на выходах порта было напряжение 5В
PORTC = 0b00000000; DDRC = 0b11101111;

TIMSK &= ~(1 << OCIE2)|(1 << TOIE2); // Запрещаем прерывания по T2
ASSR |= (1 << AS2); // Включаем асинхронный режим T2
TCNT2 = 0; // Сбрасываем регистр счета
TCCR2 |= (1 << CS22)|(0 << CS21)|(1 << CS20); // Предделитель на 128(32768/128 = 256 тиков/c)
TIMSK |= (1 << TOIE2); // Разрешаем прерывание по переполнению Т2

TCCR0|=(0<<CS02)|(1<<CS00);
//TIMSK |= (1 << TOIE0); // Разрешаем прерывание по переполнению Т2


//ads
ADMUX|= (1<<REFS0)|(1<<REFS1)|(1<<MUX2); //ВНУТРЕННЕЕ ОПОРНОЕ
//ADCSRA|=(1<<ADEN)|(1<<ADFR)|(1<<ADIE)|(1<<ADPS1)|(1<<ADPS0);
ADCSRA |= (1<<ADEN) | (1<<ADSC) | (1<<ADIE) | (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0);
sei(); // Глобально разрешаем прерывания

hour = 23; // Начальная установка времени
minute = 13;
second = 23;





mode=1;

while (1) //Вечный цикл
{
/*
PORTD |= (1 << PD1); // установка бита 1
PORTD &= ~ (1 << PD1); // сброс бита 1
*/
dimm=35;
PORTC &= ~ (1 << PC2);
if(mode==1){m=minute; h=hour;}
if(mode==2){m=second; h=minute;}
if(mode==3){m=voltage_ADC%100; h=voltage_ADC/100;};

for (r=0;r<4;r++)
{
if(r==1)
{
PORTC |= (1 << PC3);//минуты десятки
if (m/10==0) PORTD |= (1 << PD3);//0
if (m/10==1) PORTD |= (1 << PD2);//1
if (m/10==2) PORTB |= (1 << PB1);//2
if (m/10==3) PORTB |= (1 << PB3);//3
if (m/10==4) PORTB |= (1 << PB4);//4
if (m/10==5) PORTD |= (1 << PD5);//5
if (m/10==6) PORTD |= (1 << PD6);//6
if (m/10==7) PORTD |= (1 << PD7);//7
if (m/10==8) PORTB |= (1 << PB0);//8
if (m/10==9) PORTD |= (1 << PD4);//9

}

if(r==0)
{
PORTC |= (1 << PC5);//минуты единицы
if (m%10==0) PORTD |= (1 << PD3);//0
if (m%10==1) PORTD |= (1 << PD2);//1
if (m%10==2) PORTB |= (1 << PB1);//2
if (m%10==3) PORTB |= (1 << PB3);//3
if (m%10==4) PORTB |= (1 << PB4);//4
if (m%10==5) PORTD |= (1 << PD5);//5
if (m%10==6) PORTD |= (1 << PD6);//6
if (m%10==7) PORTD |= (1 << PD7);//7
if (m%10==8) PORTB |= (1 << PB0);//8
if (m%10==9) PORTD |= (1 << PD4);//9
}

if(r==2)
{
PORTD |= (1 << PD1);//часы десятки
if (h/10==0) PORTD |= (1 << PD3);//0
if (h/10==1) PORTD |= (1 << PD2);//1
if (h/10==2) PORTB |= (1 << PB1);//2
if (h/10==3) PORTB |= (1 << PB3);//3
if (h/10==4) PORTB |= (1 << PB4);//4
if (h/10==5) PORTD |= (1 << PD5);//5
if (h/10==6) PORTD |= (1 << PD6);//6
if (h/10==7) PORTD |= (1 << PD7);//7
if (h/10==8) PORTB |= (1 << PB0);//8
if (h/10==9) PORTD |= (1 << PD4);//9

}

if(r==3)

{
PORTD |= (1 << PD0);//часы единицы
if (h%10==0) PORTD |= (1 << PD3);//0
if (h%10==1) PORTD |= (1 << PD2);//1
if (h%10==2) PORTB |= (1 << PB1);//2
if (h%10==3) PORTB |= (1 << PB3);//3
if (h%10==4) PORTB |= (1 << PB4);//4
if (h%10==5) PORTD |= (1 << PD5);//5
if (h%10==6) PORTD |= (1 << PD6);//6
if (h%10==7) PORTD |= (1 << PD7);//7
if (h%10==8) PORTB |= (1 << PB0);//8
if (h%10==9) PORTD |= (1 << PD4);//9
}

_delay_ms(3);
PORTC &= ~ (1 << PC3);
PORTC &= ~ (1 << PC1);
PORTC &= ~ (1 << PC5);
PORTD &= ~ (1 << PD1);
PORTB=0x00;PORTC=0x00;PORTD=0x00;
_delay_ms(1);
}

}
}
5 / 1
alexhote
00:35, 07.11.2015
Позже еще пришлось занулть кварц чего на печатке не предусмотрено и перемотать дроссель с отводом - тоже нет на печатке.
Хотя можно было дроссель не мотать а поднять питание до 12 вольт.
В остальном схема почти сразу заработала.

Минус совмещения высоковольтной части на плате с МК - мертвые МК. Мерил напряжени и щупом задел соседнюю дорожку - щелчок и МК в помойку.
1 / 1
alexhote
00:38, 07.11.2015
Разем 10 на 2 делал для программатора внутрисхемного. Заказывал на али за 300 р . Работает нормально - своим кабелем в данный разьем как раз. В дальнейшем хочу вэтот разьем кнопки подключить.
0 / 1
alexhote
00:42, 07.11.2015
От пользователя Мoзгoпрaв и мoзгoвeд©
правый нижний угол ужасно разведён


Разведите лучше, с удовольствием повторю.

зы
Кстати на печатку с котроллером ушло около 400 рублей, а не 3000 как вы с меня просили за подобное устройство.
4 / 1
Мoзгoпрaв и мoзгoвeд©
01:23, 07.11.2015
От пользователя alexhote
Разведите лучше, с удовольствием повторю.

В нормальный КАД перекинь схему, поиграюсь. Сприн лайаутами и прочими колхозами оставим школьникам в качестве ДЗ :-D

От пользователя alexhote
Кстати на печатку с котроллером ушло около 400 рублей, а не 3000

Ва 1х не помню такова
Ва 2х свое время себе - бесплатно, для других оно стоит каких то денег
Ва 3х сделай за стоимость деталей кому нибудь ещё :ultra:
От пользователя alexhote
//Основная программа

От пользователя alexhote
но начинал с ардуньки и всем советую

Оно и видно. Весь код можно в четыре раза ужать, не напрягаясь.

От пользователя alexhote
Для любителей исходники, в принципе пишите в личку скину фалы по проекту если кому интересно.

Собрал проект да кинул на файлопомойку каку нить. Хотя таких поделок в инетах полно.
2 / 7
alexhote
13:16, 07.11.2015
От пользователя Мoзгoпрaв и мoзгoвeд©
В нормальный КАД перекинь схему, поиграюсь


Какой на ваш взгляд нормальный?
4 / 1
Nefоrmаtus©
17:00, 07.11.2015
От пользователя alexhote
Какой на ваш взгляд нормальный?

Присоединюсь :popcorn:
1 / 1
Сунь свой Цзы
17:45, 07.11.2015
Что бы ни делали на AVR - в результате все равно получаются часы (ц)
:-)

Тепло, лампово.
6 / 0
clawermaсhine
18:07, 07.11.2015
От пользователя alexhote


вам с этой темой на радиокот. там скорее найдёте единомышленников, чем тут.

уже и не помню,разбирался,но синяя засветка с К155ИД1-косяк в схемах, и его можно исправить. но не помню как. и продаются они в МЭКе, по крайней мере раньше были.

ну а теперь осталось сделать корпус.. иначе часы не часы, часостроители поймут ;-)
0
L'еаu
19:34, 07.11.2015
От пользователя alexhote
Какой на ваш взгляд нормальный?

с рутрекера канешна
2 / 2
alexhote
22:32, 09.11.2015
От пользователя L'еаu
с рутрекера канешна


лэйаут тоже оттуда значит нормальный?
0 / 1
El.Master ПриватизировалКОСМОС
22:34, 09.11.2015
Немного не в тему вопросец ну или в тему наоборот: Роторные часы собирал кто нибудь?
1 / 0
Nefоrmаtus©
22:38, 09.11.2015
От пользователя clawermaсhine
часостроители поймут

есть клан часостроителей :write:
0
L'еаu
00:13, 10.11.2015
От пользователя alexhote
лэйаут тоже оттуда значит нормальный?

канешна
1 / 1
Мoзгoпрaв и мoзгoвeд©
06:34, 10.11.2015
От пользователя alexhote
Какой на ваш взгляд нормальный?

Любой, который понимает связь схемы и печатной платы


От пользователя alexhote
лэйаут тоже оттуда значит нормальный?


От пользователя L'еаu
канешна

:-D

От пользователя El.Master™
Немного не в тему вопросец ну или в тему наоборот: Роторные часы собирал кто нибудь?

Делал, лед пядь нозад..
0 / 1
alexhote
22:43, 10.11.2015
От пользователя El.Master™
Роторные часы собирал кто нибудь?


мысль была, но подумал их ведь только вклчил, показал всем и выключил
на постоянку не поставишь

ну или придавать им некий дизайн и в офис-магазин
0
Мoзгoпрaв и мoзгoвeд©
20:00, 11.11.2015
От пользователя alexhote
ну или придавать им некий дизайн и в офис-магазин

они хороши в темноте, ф офесе темно, когда усе уходют. :-D
От пользователя alexhote

ну так чо, где схема в норм каде? :ultra:
0
alexhote
21:35, 11.11.2015
От пользователя Мoзгoпрaв и мoзгoвeд©
ну
так чо, где схема в норм каде?


дык схемы то изначально нет только печатка.
а нормальный кад только из схемы печатку может а обратно отказывается.
0
Espresso
02:07, 12.11.2015
То ли лыжы не едут... 10 часов 69 минут? :-D

А по теме - молодец!
0
Мoзгoпрaв и мoзгoвeд©
06:59, 12.11.2015
От пользователя alexhote
а нормальный кад только из схемы печатку может а обратно отказывается.

:-D чото у нас совсем разные понятия норм када.


От пользователя Espresso
10 часов 69

нет 96 часов 01 минута.
0
alexhote
07:38, 12.11.2015
От пользователя Espresso
То ли лыжы не едут... 10 часов 69 минут?


Ага заметили. 69 часов 01 минута индикатор перевернут

Это я АЦП отлаживал и пытался вывести на эти же индикаторы то чего он там намерил. Как видим пока не очень успешно. Позже все как надо получилось.


[Сообщение изменено пользователем 12.11.2015 07:42]
0
Авторизуйтесь, чтобы принять участие в дискуссии.