Подписываемся на VK

Ежедневные новости, видео и приколы...

YouTube канал

Подбор моторов

TOP статьи

Вход




RC Магазины





Для удобства пользования форумом и поиска информации прошу придерживаться правила: 1 тема = 1 вопрос.

К примеру, если обсуждается настройка передатчика, а у вас вопрос про подключение такого же передатчика к симулятору или вопрос про другую модель передатчика - создавайте новую тему. Если вы новичок в авиамоделизме, рекомендуется прочитать статью Новичку и ссылки с нее.

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

Как выложить фото, Как опубликовать видео

С уважением,

Константин.

БАНО своими руками

Re: БАНО своими руками

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

Про Протеус узнал пару лет назад, когда кто-то пытался одну из моих конструкций на AVR запустить в Протеусе и сетовал на то, что у меня в программе ошибка. А конструкция была уже многократно повторена и ошибок в прогамме железно не было. Так я узнал, что Протеус при эмуляции AVR ошибается. Потом в интернете нашел описание этой ошибки.
Так же сам один раз попробовал слепить маленький проект и отладить его в Протеусе. Все сделал, все работало без проблем. А когда пришлось делать в железе, обнаружил, что конструкция не работает, стал искать и нашел ошибки в программе. Неявные, сразу в глаза не бросались, и Протеус их проглотил, не смог правильно отработать.
После этого я отношусь к нему как к игрушке.

alldn
Александр (г.Тамбов)
useravatar
Offline
2863 Сообщений
Мужчина  Дата рождения 
Администратор отключил публичную отправку сообщений

Re: БАНО своими руками

По поводу полевиков. В оригинальной версии установлены эти: IRF9956

R2D2_RnD
Ростов-на-Дону
Пилот
ranks
useravatar
Offline
216 Сообщений
Мужчина  Дата рождения 
Администратор отключил публичную отправку сообщений

Re: БАНО своими руками

Немного доработал прошивку - добавил управление с пульта.
Имеющиеся в распоряжении 4 канала для диодов условно названы "строб", "маяк", "габаритные", "посадочные".
Теперь в прошивке есть 3 режима работы:
- выключено все;
- включены строб (оставил только один - как на настоящих гражданских - белый на левом крыле), красный маяк, навигационные немигающие (красный и зеленый на законцовках крыльев);
- включено все предыдущее + посадочные огни (белые на 1/3 размаха крыла).
Управлять можно будет "крутилкой" либо 3-х позиционным тумблером.

Место еще есть - если железа (IRF9956) на выходных не достану, то займусь дальнейшими "улучшалками" - маяк, управляемый через ШИМ будет смотреться эффектнее smile

R2D2_RnD
Ростов-на-Дону
Пилот
ranks
useravatar
Offline
216 Сообщений
Мужчина  Дата рождения 
Администратор отключил публичную отправку сообщений

Re: БАНО своими руками

Да мне тут и контроллер найти- целая порблема... Но все равно- буду ждать схему.

Dragony
Александр (г.Байконур)
Пилот
ranks
useravatar
Offline
3113 Сообщений
Мужчина  Дата рождения 
Администратор отключил публичную отправку сообщений

Re: БАНО своими руками

R2D2_RnD,
Я вот тоже написал программку, правда примитивную для работы с пультом, но в железе, он подглючивает и проц. зависает...sad(

Vladimir88
Владимир
Пилот
ranks
useravatar
Offline
914 Сообщений
Мужчина  Дата рождения 
Администратор отключил публичную отправку сообщений

Re: БАНО своими руками

В деле отладки Proteus + AVR Studio - это сила.
Это и виртуальный осциллограф, и отладчик прошивки, и симулятор самой железяки.

R2D2_RnD
Ростов-на-Дону
Пилот
ranks
useravatar
Offline
216 Сообщений
Мужчина  Дата рождения 
Администратор отключил публичную отправку сообщений

Re: БАНО своими руками

Прикупил сегодня 4 полевика IRF7313 (на случай изготовления второго экземпляра контроллера).
Теперь можно приступать к изготовлению печатной платы.

Заодно успел реализовать программный ШИМ (100Hz) для маяка (аппаратный получается слишком уж высокочастотным, т.к. таймер тиньки у меня работает на 9,6 MHz чтобы замерять длительность импульсов от приемника). Как выяснилось вполне можно было и без ШИМа обойтись:

Вращающийся маяк
На верхней точке киля - красный. Режим работы: строб, ~300мс не горит, ~50-70мс горит.

плавность нарастания яркости просто не заметно невооруженным глазом.

R2D2_RnD
Ростов-на-Дону
Пилот
ranks
useravatar
Offline
216 Сообщений
Мужчина  Дата рождения 
Администратор отключил публичную отправку сообщений

Re: БАНО своими руками

Жду вариант схемы с процессором и прошивку...

Dragony
Александр (г.Байконур)
Пилот
ranks
useravatar
Offline
3113 Сообщений
Мужчина  Дата рождения 
Администратор отключил публичную отправку сообщений

Re: БАНО своими руками

R2D2_RnD написал(а):

таймер тиньки у меня работает на 9,6 MHz чтобы замерять длительность импульсов от приемника

А при 4MHz он считать не будет, или как может сказаться на работу, если использовать микроконтроллер на частоте меньше вашей?

Vladimir88
Владимир
Пилот
ranks
useravatar
Offline
914 Сообщений
Мужчина  Дата рождения 
Администратор отключил публичную отправку сообщений

Re: БАНО своими руками

Исходники прошивки:

Код:


#include <stdlib.h>
#include <avr/io.h>
#include <avr/interrupt.h>

#define LANDING_LED PB4
#define BEACON_LED PB0
#define STROBE_LED PB3
#define NAVIGATION_LED PB2

#define DIM1 96
#define DIM2 128
#define DIM3 256
#define DIM4 375

volatile int strobe_off_count = 0;
volatile int strobe_on_count = 0;

volatile int beacon_off_count = 0;
volatile int beacon_on_count = 0;
volatile char beacon_is_on = 0;
volatile int beacon_duty_cycle = 0;

volatile int pwm_cycle_counter = 0;

volatile int rc_pulse_width = 0;
volatile char blink_mode = 0;


void led_on(char LED) {
    PORTB |= _BV(LED);
}

void led_off(char LED) {
    PORTB &= ~(_BV(LED));
}

ISR(TIM0_OVF_vect) {

   if (++pwm_cycle_counter > 374) { //100 Hz
        pwm_cycle_counter = 0;
   
       if (1 <= blink_mode) {
           led_on(NAVIGATION_LED);

        if ( PORTB & _BV(STROBE_LED)) {
         if (++strobe_on_count > 7) {
            led_off(STROBE_LED);
            strobe_off_count = 0;
          }
       } else {
         if (++strobe_off_count > 49) {
            led_on(STROBE_LED);
            strobe_on_count = 0;
          }
       }
       
       if (beacon_is_on) {
         if (++beacon_on_count > 6) {
            beacon_is_on = 0;
            beacon_off_count = 0;
          }
          switch (beacon_on_count) {
            case 1:
            case 7: beacon_duty_cycle = DIM1;
                break;
            case 2:
            case 6: beacon_duty_cycle = DIM2;
                break;
            case 3:
            case 5: beacon_duty_cycle = DIM3;
                break;
              case 4: beacon_duty_cycle = DIM4;
                break;
          }

       } else {
         beacon_duty_cycle = 0;
         if (++beacon_off_count > 29) {
             beacon_is_on = 1;
            beacon_on_count = 0;
          }
       }


       } else {
            led_off(NAVIGATION_LED);
            beacon_duty_cycle = 0;
            led_off(STROBE_LED);
       }

        if (2 == blink_mode) {
                   led_on(LANDING_LED);
        } else {
                led_off(LANDING_LED);
        }
    }

    //PWM BEACON:
    if (pwm_cycle_counter < beacon_duty_cycle) {
           led_on(BEACON_LED);
    } else {
        led_off(BEACON_LED);
    }

   if (PINB & _BV(PB1)) {
           rc_pulse_width++;
   }
}

ISR (INT0_vect) // Interrupt on Int0 vector
{
   if ((PINB & _BV(PB1))) { //raise edge
           rc_pulse_width = 0;
   } else { //falling edge
        //29 = 0.8ms
        //56 = 1.5ms
        //82 = 2.2ms
        if (rc_pulse_width <= 46) {
            blink_mode = 0;
           }
        if ((rc_pulse_width > 46) & (rc_pulse_width <= 63)) {
            blink_mode = 1;
        }
        if (rc_pulse_width > 63) {
            blink_mode = 2;
           }
   }
}

int main(void)
{
     
    // Set up Port B pin 0,2-4 mode to output
    DDRB = _BV(DDB0) | _BV(DDB2) | _BV(DDB3) | _BV(DDB4);

    // Set up Port B data to be all low
    PORTB = 0;

    GIMSK = _BV (INT0); // int - Enable external interrupts int0
    MCUCR = _BV (ISC00); // int - INT0 is any change

    // prescale timer to 1/1 the clock rate
    TCCR0B |= _BV(CS00); //| _BV(CS00);

    // enable timer overflow interrupt
    TIMSK0 |=_BV(TOIE0);
    sei();

    blink_mode = 2;

    for (;;)
     {
         asm("NOP");
     }

    return 0;
}

R2D2_RnD
Ростов-на-Дону
Пилот
ranks
useravatar
Offline
216 Сообщений
Мужчина  Дата рождения 
Администратор отключил публичную отправку сообщений

Re: БАНО своими руками

Фьюзы:
http://habreffect.ru/files/9ab/ef051465b/fuses.png
Или в avrdude:
-U lfuse:w:0x7a:m -U hfuse:w:0xff:m

R2D2_RnD
Ростов-на-Дону
Пилот
ranks
useravatar
Offline
216 Сообщений
Мужчина  Дата рождения 
Администратор отключил публичную отправку сообщений

Re: БАНО своими руками

Vladimir88 написал(а):

А при 4MHz он считать не будет, или как может сказаться на работу, если использовать микроконтроллер на частоте меньше вашей?

По идее работать будет и на 4,8MHz, запас по разрешению есть - для этого надо будет в 2 раза уменьшить соответствующие значения при проверке длительностей в обработчиках прерываний.

Схема подключения выводов:
http://habreffect.ru/files/a2d/a7a7b1aed/bano.png

Печатку сейчас ваяю в SprintLayout.

R2D2_RnD
Ростов-на-Дону
Пилот
ranks
useravatar
Offline
216 Сообщений
Мужчина  Дата рождения 
Администратор отключил публичную отправку сообщений

Информация

Статистика форума:
 
Всего тем:
9974
Всего опросов:
79
Всего сообщений:
183086
Бездействующий:
Пользователи форума:
 
Всего пользователей:
10096
Последним зарегистрировался:
IL2Sturm
Пользователи онлайн:
0
Гостей онлайн:
510

Самые активные пользователи: 
konst, carpenter, kompmen, cnyx, Dragony, maks_dg, Goby, Student, alldn, nikolaypet
Онлайн: 
Нет пользователей онлайн
Последние сообщения форумаПоследние созданные темы
1) Модель с ДВС. Проектируем и строим
2) МИГ 3 с размазом 1300мм
3) Питание борта за 15 минут на кренке 7805
4) Расчет фюзеляжа
5) Аппа "Wensheng WS 6" нужна помощь
6) Расчет эффективного пропеллера вертолета, самолета
7) Зажигание на датчике холла
8) Аккумуляторная батарея LiPo HRB 14,8 4S 2200mA/h
9) На что заменить полетник на Iflight Protek25
10) Юлиус Пердана и SHURIK-1960
1) МИГ 3 с размазом 1300мм - У Юлиуса Перданы больше интересных для меня моделей пока нет
2) Аппа "Wensheng WS 6" нужна помощь - Нужна помощь по аппаратуре управления
3) Расчет эффективного пропеллера вертолета, самолета - Как сделать пропеллер эффективным
4) Аккумуляторная батарея LiPo HRB 14,8 4S 2200mA/h
5) На что заменить полетник на Iflight Protek25 - сгорел полетник. ищу замену
6) Зажигание на датчике холла
7) Сервомотор ведет себя не адекватно - элероны
8) Помогите пожалуйста с вертолетом (управление) - Помогите пожалуйста с вертолетом (управление)
9) Вопрос по ПК - ПК фоксер ф722 v4, рагуль 1202 от fpv. Из этого сделать ЛК?
10) Продажа комплекта деталей для авиамоделирования - Здрaвcтвуйтe! Пpодaю кoмплект деталей для aвиамoделиpoвания