Jump to content
Виталий315

Програмка Для Кордового Самолёта

Recommended Posts

Нужна помощь в составлении маленькой программы для кордового самолёта. Зимой на двс не полетаешь и надо перейти на бесколлекторный мотор с регулятором тока. Суть в следующем: пилот включает питание самолёта, идёт в середину площадки и через 20 секунд запускается мотор, отработав 5 минут отключается. Алгоритм такой:

1) Включение питания

2) Пауза в 20 секунд

3) Запуск мотора

4) Пауза в 5 минут

5) Отключение

Выбрал микроконтроллер pic16f628a, есть программатор pic k150, готовые проекты работают сразу.

Сам в программировании считай с нуля начинаю и уже голова трещит, а надо быстро сделать пока зима не кончилась. Выручайте.

Share this post


Link to post
Share on other sites

Пробуй: camolet.rar

активный порт В.0

ПС. кварц не нужен.

Edited by КЭС

Share this post


Link to post
Share on other sites

Технология Maxim Integrated nanoPower: когда малый IQ имеет преимущества

При разработке устройств с батарейным питанием важно выбирать компоненты не просто с малым потреблением, но и с предельно малым током покоя. При этом следует обратить внимание на линейку nanoPower производства компании Maxim Integrated. В статье рассмотрено их применение на примере системы датчиков беспроводной оконной сигнализации.

Подробнее

Пробуй: camolet.rar

активный порт В.0

ПС. кварц не нужен.

Ты так быстро программу написал? Я смогу её испытать только завтра, всё в клубе находится.

Регулятор работает при начальных установках с ШИМа в 1,5 мс. По другому не запустится.

Share this post


Link to post
Share on other sites

КЭС, не подскажешь какой программой я могу посмотреть твой файл на каком нибудь языке программирования? Компилятор в прошивку переводит программу, а наоборот как сделать?

Edited by Виталий315

Share this post


Link to post
Share on other sites
                     

Платы Nucleo на базе STM32G0: чего можно добиться с помощью связки Nucleo и Arduino

Платы Nucleo и платы расширения X-NUCLEO от STMicroelectronics можно интегрировать в платформу Arduino с помощью библиотеки STM32duino. Связка плат Nucleo и платформы Arduino, и наличие готовых библиотек – представляет удобный инструмент для создания прототипов и конечных приложений в условиях ограниченного времени. Статья содержит пошаговые инструкции по установке библиотек и запуску примеров для Nucleo.

Подробнее...

Пробуй:

КЭС, а вы весельчак... :i-m_so_happy: , у ТС двигатель безколлекторник = три фазы + датчики положения вала...

Motor_BD.gif

Share this post


Link to post
Share on other sites

Тады "Ой!". У автора об этом ни слова, а я ни в зуб ногой в теме. :)

ПС. Я еще слепой и невнимательный! :vava: :vava: :vava:

Edited by КЭС

Share this post


Link to post
Share on other sites

Да понял уже. Не ясно только, при чем здесь ШИМ? Вопрос риторический.

Share this post


Link to post
Share on other sites

В самолёте уже есть мотор с регулятором, надо сигналы на регулятор последовательно организовать через микроконтроллер. Всего задействована одна ножка на выход. Потом немного усложню схемку.

Share this post


Link to post
Share on other sites
Регулятор работает при начальных установках с ШИМа в 1,5 мс. По другому не запустится.

тогда с этого места по подробней...

Share this post


Link to post
Share on other sites
Регулятор работает при начальных установках с ШИМа в 1,5 мс. По другому не запустится.

тогда с этого места по подробней...

У него защита стоит, чтобы двигатель не заработал случайно и не создал опасную ситуацию. Поэтому сначала подаётся 1,5 мс, потом на минимум это 0,8 мс и уже потом запуск мотора до указанного уровня, максимум 2,2 мс. Я хочу привязать скорость мотора к переменному резистору, чтобы можно было подобрать необходимую оптимальную. И потом с этой постоянной скоростью запускать, если что можно будет немного подкрутить резистор.

Share this post


Link to post
Share on other sites

КЕС оказывается все хуже... ему не двигателем, а регулятором двигателя оказывается управлять надо... :) , а там обычная серва ....только не понял накой в самолетный регулятор подавать 1,5мс??? в автомобильных понятно, там это нейтраль и подача 0,8мс это полный газ назад...

Я хочу привязать скорость мотора к переменному резистору, чтобы можно было подобрать необходимую оптимальную. И потом с этой постоянной скоростью запускать, если что можно будет немного подкрутить резистор.

ТС каким каким чудесным образом вы планируете подключить переменник к 628му ПИКу , у оного АЦП нет...

PS сюда бы 16F883 или 12F863, второй лучше у него вес меньше , но кастрат К150 с ними не работает...

PSS пишите в личку,

Share this post


Link to post
Share on other sites

Вот схема в которой управляют сервомашинкой через кнопки. servo_schem.GIF

Есть управление управление через резистор(в клубе ссылки, позже скину). Для простоты можно сначала без этих лишних пока опций сделать и кварц с обвязкой можно убрать, пусть на внутренней частоте работает. Взято от сюда http://alex-exe.ru/radio/robotics/servo-pic/

Share this post


Link to post
Share on other sites

А если поэтапно делать, например взять за основу схему и программу, которая выше и изменить данные в программе. Для начала чтобы мотор запустился, а потом уже добавлять таймеры.

Здесь записаны константы и функцию вычисления длины управляющего импульса:

const unsigned int MAX=837; // максимальная длина импульса

const unsigned int MIN=237; // минимальная длина импульса

const unsigned int DIFFERENCE=600; // разница между минимальным и максимальными импульсами

const unsigned int INTERVAL=5730; // интервал одной посылки

const unsigned int STEPS=200; // шагов

unsigned int calk(unsigned int i)

{

return MIN+DIFFERENCE/STEPS*i;

}

А это сама программа

void main()

{

unsigned int n,m;

unsigned int step=STEPS/2; // установка начального положения

low_init(); // инициализация МК

n=calk(step); // расчёт начального положения

m=INTERVAL-n;

while(1==1)

{

SetBit(PORTB,6); // формирование управляющего импульса

delay(n);

ClrBit(PORTB,6); // формирование остатка посылки

delay(m);

if(BUTTON1==0&&step!=STEPS) // обработка кнопки

{

step++;

n=calk(step); // расчёт положения

m=INTERVAL-n;

delay(1000); // задержка и антидребезг

}

if(BUTTON2==0&&step!=0) // обработка кнопки

{

step--;

n=calk(step); // расчёт положения

m=INTERVAL-n;

delay(1000); // задержка и антидребезг

}

}

}

Теперь надо думать что удалить, а что изменить.

Edited by Виталий315

Share this post


Link to post
Share on other sites

Теперь надо думать что удалить, а что изменить.

удалить? все...

и если вставляете код пользуйтесь тегами [СODE] [/СODE] , кнопка <> панели управления...

Share this post


Link to post
Share on other sites

Чей-то тут понаписывали всего...Это есть проще: есть такая схема "таймер для кордовой", собрал уже не один десяток. Проверено.

"Все уже украдено до нас"

http://forum.rcdesig...read208651.html

То же самое, только отдельной статьей http://nov-rcclub.ru/2010/12/26/%D1%82%D0%B0%D0%B9%D0%BC%D0%B5%D1%80-%D0%B4%D0%BB%D1%8F-%D0%BA%D0%BE%D1%80%D0%B4%D0%BE%D0%B2%D0%BE%D0%B9-%D0%BC%D0%BE%D0%B4%D0%B5%D0%BB%D0%B8-%D0%BD%D0%B0-%D1%8D%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE/

Edited by olegtur77

Share this post


Link to post
Share on other sites

Спасибо, соберу такую вещь. Но свой маленький проект буду продолжать, мне нужна в самом начале задержка в 20 секунд, что бы мотор включился когда пилот подойдёт к своему месту. А можно программу с бейсика переконвертировать на другой язык?

Share this post


Link to post
Share on other sites

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

#include <pic.h>
//__PICC CHIP=pic16f628a ;
//__CONFIG(0x03F78);
__CONFIG(INTIO & WDTDIS & LVPDIS & PWRTDIS & UNPROTECT & MCLREN);  

volatile	   unsigned char    TMR        @ 0x01;
volatile	   unsigned int    TMR1        @ 0x0E;
volatile	   unsigned int    servo[8]=
{1500,1500,1500,1500,1500,1500,1500,1500};
// инициализация МК
void init(void)
{
    INTCON=0x00;
    PIE1=0x00;
    CMCON=0x07;
       PORTB=0;
       TRISB=0;	 //выводы портаВ = выход
       PORTB=0;
       OPTION=0b10000011; //устанавливаем предделительRTCC=f/16
    TMR0=100;



    T1CON=0x00;
    TMR1= 10 - servo[0] ; // сброс таймер1

    TMR1ON=1;	
    TMR1IE=1;
    T0IE=1;
    PEIE=1;
    GIE=1; 
}

/* подпрограмма обработки прерываний */
void interrupt timer0_isr(void)
{ static unsigned char i;
if (T0IF)
  {
  TMR0=100+TMR0; // установка таймера на 20мс
  T0IF=0;	    // {1us*16*8*(256-100)=19968us}

switch (i) {
 case 0:
	 TMR1= 10-servo[0] ;		 
	 RB0=1;
	 i++;
   break;
 case 1:
	 TMR1= 10-servo[1] ;		
	 RB1=1;
	 i++;
   break;
 case 2:
	 TMR1= 10-servo[2] ;		
	 RB2=1;
	 i++;
   break;
 case 3:
	 TMR1= 10-servo[3] ;	   
	 RB3=1;
	 i++;
   break;
 case 4:
	 TMR1= 10-servo[4] ;		 
	 RB4=1;
	 i++;
   break;
 case 5:
	 TMR1= 10-servo[5] ;		 
	 RB5=1;
	 i++;
   break;
 case 6:
	 TMR1= 10-servo[6] ;		 
	 RB6=1;
	 i++;
   break;
 case 7:
	 TMR1= 10-servo[7] ;		 
	 RB7=1;
	 i=0;
   break;
 default: i=0;
}

 T1CON=0x00;
 TMR1ON=1;

  }
if (TMR1IF)
  {
 TMR1IF=0;
    PORTB=0;
  }
NOP();
}


// основная программа
void main(void)
{
  init();

  while(1)
 {
  NOP();
 } 
}

Share this post


Link to post
Share on other sites

Задержка никчему, там есть кнопка старт-стоп, когда надо запустил..20сек перед запуском может не оказаться достаточно, мало ли какая ситуация, нужно всегда вовремя отреагировать и выключить мотор.

Share this post


Link to post
Share on other sites

Задержка никчему, там есть кнопка старт-стоп, когда надо запустил..20сек перед запуском может не оказаться достаточно, мало ли какая ситуация, нужно всегда вовремя отреагировать и выключить мотор.

Получается для запуска нужен помощник, который будет нажимать на кнопку?

Share this post


Link to post
Share on other sites

Задержка никчему, там есть кнопка старт-стоп, когда надо запустил..20сек перед запуском может не оказаться достаточно, мало ли какая ситуация, нужно всегда вовремя отреагировать и выключить мотор.

Получается для запуска нужен помощник, который будет нажимать на кнопку?

Ну на кордовых так, и это правильно. В РУ модели ты сам механик, сам пилот ,сам проводишь предполетную проверку, на кордовых иначе. Может это не так удобно. А кнопку можно вынести на ручку , а подключить к контроллеру через сами корды(провода).

Edited by olegtur77

Share this post


Link to post
Share on other sites

Собрал сегодня схему и немного повключал сей девайс, работает отлично. Но просят с задержкой всё же сделать, будем дальше работать. А эту схему на воздухе через пару дней проверим, обещают потепление.

Share this post


Link to post
Share on other sites

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Similar Content

    • By Пентагрид
      Решил собрать источник питания с управлением через PIC16F628A (парой кнопок переключать нужные напряжения). Взял обычный импульсник на 15 В, из обратной связи выдрал TL431, оставил оптрон, его повесил на выход МК. Написал тестовую прошивку: задаётся Vref через VRCON, компаратор сравнивает и выдаёт на оптрон 1 или 0.
      Сделал два варианта прошивки: в одном проверка на срабатывание выполняется циклически, в другом - вызов прерывания при реакции компаратора. Оба варианта тестировал в Протеусе (потенциометр и светодиод), работают. На бредборде завёлся только первый (с нагрузкой и без). А с прерыванием не работает: при отсутствии нагрузки выдаёт нужное напряжение, но стоит только подключить нагрузку и даже если рукой коснуться - напряжение падает. С нагрузкой вообще не заводится.
      МК питаю отдельно (тлф. зарядка с домотанной вторичкой + 7805). Несколько раз прошёлся по прошивке, не нашёл за что зацепиться. Прошу совета.
      Схема
      В коде присутствуют рудименты для кнопок (пока не вводил).
       
      comp5nop.rar
    • By Пентагрид
      Здравствуйте, товарищи! Я только начал изучать программирование МК с ассемблера для пиков. Прошёл светодиодную мигалку и взялся за вывод текста с PIC16F628A на ЖКИ 1602А. Но не заладилось. Взял готовую  прошивку (сама она успешно запустилась), слегка подредактировал: задал соответствие DB0...DB7=RB0...RB7, вывел отдельные переменные address и symbol для адреса и символа ячейки на экране. Это выглядит следующим образом:
      MOVLW    0x00    ;вывод  единицы в первую ячейку
      MOVWF    address
      MOVLW    0b00110001
      MOVWF    symbol
      CALL    znak
       
      при этом  используются подпрограммы
      znak:
      MOVF    address,0        ;вывод адреса
      MOVWF    PORTB
      BCF    RS
      CALL    strob
      CALL    delay_39us
      MOVF    symbol,0        ;вывод символа
      MOVWF    PORTB
      BSF    RS
      CALL    strob
      CALL    delay_39us
      RETURN
      strob:
      BSF    E
      NOP        ;задержка 2 мкс
      NOP
      BCF    E
      RETURN
       
      Второй день до поздней ночи перепроверяю прошивку, надёжность и правильность на бредборде, RC-цепочку на MCLR. Скачанный проект работает, а моя программа - нет. Прошу помочь в поиске ошибки в коде.
      lcd-test.asm
    • Guest Ваня
      By Guest Ваня
      Помогите переделать программу трехфазного генератора pic16f628A на pic16f84A . есть hex и есть asm 
      pic16енкнек200гц.HEX
      pic16f628 200гц.asm
    • By maksa1986
      Добрый день. Собрал преобразователь по схеме Дмитрия Карелова. На холостом ходу все 3 фазы присутствуют. При подключении моторчика 36 вольт 200 герц 90 ватт, напряжение трех фаз просаживается до 2.5 вольт, транзисторы верхнего плеча трех фаз начинают нагреваться и соответственно моторчик не вращается. Кто что может сказать по этому поводу?

    • By REDs
      Здравствуйте. Написал простенькую программу для pic16f628a на компиляторе microC. Подключаю две кнопки и по их нажатию через UARTотправляется сообщение. Предварительно прогнал в протеосе, там все работает как надо, но на железе не работает. МК не воспринимает кнопки, попробовал прогнать еще три программки чисто на кнопку, все тоже самое, выходы работают, но кнопка игнорируется. Мультиметром все прозвонил и проверил напряжения, все в норме, при нажатии кнопки на ножку подается "0". Пробовал запускать и от внешнего кварца, и от внутреннего генератора, MCLR висит на питании, все как на схеме. Помогите пожалуйста разобраться в чем проблема.
      Все варианты работают в протеосе. Но на железе не хотят. Возможно надо прописать что-то дополнительное чтобы МК воспринимал входящие данные?





  • Сообщения

    • есть источник про звуковые на ферритах? че то гугл....
    • Всем доброго времени суток.  Прошу помочь советом в запуске передатчика . квалифицированных радиоинженеров. В качестве ЗГ и усилителя для раскачки свч модуля Тошиба 35 ватт попытался применить чипы СМТ2119а и SPF5043Z. Предварительно консультировался с профессиональными разработчиками СВЧ техники (по телефону). НО, не повезло. Трансмиттер не заработал, как надо. И не пойму причины. До этого, как-то получалось. Я не инженер, а аматор, особыми знаниями не обладаю, но, наверное, раньше везло.) Размеры  сегмента платы, где расположены ЗГ и СВЧ усилитель  20х5 мм (рисунок платы в прикрепленном файле) Снизу земляной полигон и все земляные цепи «прошиты» большим количеством переходных отверстий, особенно под усилителем. Слева кварц 5х3 мм, затем интегральный передатчик СМТ2119 sot23-6, далее цепи согласования, ну и справа прямо на косом участке земли двумя ножками стоит усилитель SRF5043 sot343 (4 ножки). Слева выше вход этого чипа, справа ниже выход. Цепи питания каскадов разделены. Заменил LC элементы межкаскадного согласования, просто поставил между каскадами ослабляющий аттенюатор – толку нет. Экранировка узла ничего не дала. При вых. мощности ЗГ 7-8 dBm, на антенном  выходе та же мощность 50% от нужной (~18 ватт),  также может заработать и на основной частоте 500+ Мгц и + на двух других более низких частотах, суммарная мощность на выходе возрастает до 20 ватт, но это нестабильная работа. Радиатор горячий, а толку нет.(  При мощности ЗГ +11-12dBм идет возбуд и по всей полосе, шум. Позвонил радиоинженеру в Киев, тот порекомендовал померить выходное ВЧ напряжение с СВЧ усилителя на нагрузке 50 ом. Делаю сейчас ВЧ вольтметр (еще проблема). Но, оно и так видно, что не качественно работает СВЧ усилитель. Раньше получалось раскачать бустерный СВЧ усилитель Toshiba до 35 ватт (для этого на его вход надо подать 75 мВт мщности) более простыми средствами (MRF49XA+BFG67X+2SC3356 и без особых конструкторских требований по СВЧ технике), а сейчас хотел применить более современные радиочипы и – такой облом.(   Я уже подумаю, что ошибся с применением такого широкополосного и мощного (до 180 мВТ на выходе) СВЧ усилителя, но, именно его применить мне порекомендовал спец высокого уровня, инженер-конструктор из НПО « Сатурн, (Киев).   По-этому нуждаюсь в помощи и консультации Гуру в радиоделе. ЗГ+УВЧ.doc трансмиттер.rar Схема ЗГ+ УВЧ. Transmitter.rar
    • Скажите реально ли этот экран подключить к мультиметру .что бы показывал его показания?  
    • Ты не можешь сказать, улучшается ли экранировка, ибо ты не можешь сказать, на ЧТО реагирует твой говно прибор. А он показывает погоду на Марсе, не более.   Т.е. ты рискнешь утверждать обратное?   Представь себе. Ибо ты давишь хрен знает что, а не излучение магнетрона.   Индикатор поля способен. Вот только у тебя его НЕТ.   О нет. Но по твоей тупейшей логике это значит, что телевизор не менее вреден, чем микроволновка.   Ты не поверишь, но экран никогда не ослабляет излучения в ноль. Поэтому, искать излучение в упор к экрану - бред идиота. Я вот что-то не припомню чтобы в инструкции  на микроволновку было сказано, что ее можно обнимать во время работы. Скорее там сказано, что желательно находиться на N-ом расстоянии до окончания работы. и именно на этом расстоянии требуется производить измерения.   Т.е. ты настолько туп, что не можешь понять того, что стрелка твоего говнометра легко может отклоняться при воздействии поля 50Гц или 50КГц и т.п.? Т.е. ты даже не знаешь, ЧТО он показывает! Зато уже поднимаешь панику. Вот как сделаешь чтобы показометр хотя бы реагировал на частоту строго выше 2ГГц, тогда и поговорим.   Для особо тупых поясню, тут нужен СВЧ диод, а не ВЧ. Ты же даже не ВЧ диод пихнул туда. Это обычный Шоттки, причем НИЗКОЧАСТОТНЫЙ.   Мало того, что это паранойя, так еще и бред идиота, ничего не смыслящего в радиоэлектронике.   Для сравнения ЧЕГО? Погоды на Марсе? Солнечной активности? Ведь даже неизвестно, НА ЧТО реагирует его показометр...
    • Заказывал у Broodio Store пару СИД-матриц теплого белого свечения, 220В 20Вт. Бездрайверных. Получил. Выглядят иначе, чем на фото в Алиэкспресс - интегральные ГСТ в других корпусах и сама матрица больше в поперечнике (>60мм). Зачистил УШМ два старых ребристых радиатора 125х90х45мм, разметил отверстия, припаял проводники, установил клеммник, намазал термопасту, прикрутил матрицу. Матрицу закрыл плафоном от негодной 18Вт лампы (пришлось плафон подрезать). Плафон посадил на автогерметик. Будет освещение для дачи/подсобки. Матрица светит ярко, мерцает (как ЛДС с дроссельным балластом) и греется. Установившаяся температура с таким радиатором - 58Ц при 25Ц окружающей среды. Специально замерил температуру пластиковой оболочки корпуса другой, близкой по мощности 18Вт лампы с полноценным драйвером, в закрытом корпусе, с патроном E27 - ровно 100Ц  Сколько на теплоотводе - один х знает . Это я к тому, что, с 60Ц на подошве радиатора, появляется надежда на срок службы побольше, чем год-два. А может и нет. Посмотрим. 18 × 35.5 - по даташиту. По замерам - 16 х 33 мм. Сам продаван указал 16 х 30 мм. Спасибо, Вы правы. Ничего не стоило заглянуть в даташит. 
    • Это был якобы nichicon fw? Откройте даташит и посмотрите какого размера должны быть настоящие 10000uf16V : https://www.nichicon.co.jp/english/products/pdfs/e-fw.pdf  
    • у Д.Селфа такое пояснение:
×
×
  • Create New...