Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Декатроны
#61
Очень много написано, сейчас буду вникать потихоньку, спасибо!
Ответ
#62
Наконец всё внимательно прочитал, ну в меру своих способностей )) Вами огромный труд проделан по написанию всего этого, надеюсь заинтересует не только меня одного, огромная вам благодарность за это, мало у нас людей осталось, готовых учить кого то. 

Немного торможу с исполнением, много дел в обычной жизни, надеюсь за эти выходные получится потренироваться на живом железе. Ощущение, что мне действительно проще сделать еще один преобразователь питания, чем возиться с тем, хватит ли тока или не хватит для работы еще и ламп, но это уже дело десятое, хватило бы места не плате, а то сейчас там под завязку.
Ответ
#63
Наконец то проверил, проверяю на ОГ-4, в данный момент точка делает оборот и застревает на нулевом подкатоде ) В момент срабатывания нулевого подкатода ее отбрасывает на 3 позиции назад, потом три шага вперед и снова назад и т.д.
-----------------

Если программно досчитать до 30 и в этот момент включить транзистор нулевого, то вращение продолжается дальше как обычно. Что я делаю не так или понимаю не так?
Ответ
#64
Проверяйте временные диаграммы. Если сброс не делается программно, то точка должна бегать по кругу вы обе стороны. Обратите внимание, что на приведенной мной временной диаграмме импульсы следуют с небольшим перекрытием по кругу. К-ПК1-ПК2-К-ПК1-ПК2-К... То есть, просто цикл. Нарушить его может сброс, но это Вы же сами должны устроить автоматически его не будет. В обратную сторону просто будет К-ПК2-ПК1-К-ПК2-ПК1-К-...

У Вас проблема с формированием импульсной последовательности. И посмотрите внимательно, К и К0 соединены, так как соединены базы транзисторов. Сбросовый транзистор пока просто не ставьте. И точка должна бегать без проблем.

Для сброса надо запереть все транзисторы, кроме сбросового. На достаточное время. Выход из сброса в режим счета начинается с открывания транзисторов катодов (К и К0). После этого закрывается сбросовый транзистор. Ну а дальше опять цикл. Сброс нужен для установки декатрона в нулевое состояние. При включении питания например. Или для получения эффекта "качания маятника" с плавной раскачкой, причем только в начале "раскачивания". Отключите пока сброс вообще.
Ответ
#65
К сожалению не понимаю почему так

https://youtu.be/b11XrrPSaqs

Она же движется на всем протяжении пути, движется до достижения нулевого подкатода. Задержки уже самые разные пробовал, от минимальных до по больше

На осциллографе вот это, относительно катода на подкатодах.

На видео я пару раз сбрасываю контроллер. При сбросе как раз и происходит выставление в ноль по указанному вами алгоритму и точка вполне себе успешно проходит круг.


Файлы вложений Эскизы(ов)
   
Ответ
#66
Сигналы неверные. Во первых, по обоим лучам картинки должны быть одинаковые, только со сдвигом. Во вторых, по зеленому лучу длительность "минуса" слишком мала. Давайте по порядку разбираться...

1. Сбросовый транзистор отключайте. Временно конечно. И из программы убирайте сброс.
2. Подключите первый луч к базе транзистора в катоде (именно К, а не К0) засинхронизируйтесь от него.
3. Снимаете три осциллограммы, при этом первый луч остается подключенным так, как в пункте 2 написано. Первая осциллограмма это сигнал на базе транзирстора в цепи ПК1. Вторая на базе ПК2. Третья на базе К0.

И эти три картинки покажите здесь. Должен войти полный цикл. То есть, на каждой осциллограмме должно быть два полных импульса по первому лучу.
Ответ
#67
Ну, я сделалЪ  Angel

_26.jpg - ПК1 относительно К
_9.jpg ПК2 относительно К
_47.jpg ПК0 относительно К - его вы сказали отключить и убрать из программы, я это и сделал, сигнала на нем нет.

К сожалению понимания происходящего тоже нет (( В прошлой схеме у меня было не так как на странице 4, у меня на каждый катод и подкатод был свой стабилитрон и резистор, причем на разные напряжения, чтобы указанные вами смещения создавать. В целом работало идеально, я аж удивился )) Осциллограммы были прямейшие и красивые, а тут фигня какая то, может тока не хватает (в порядке догадок), хотя просадок на конденсаторе нет вообще. Изначально были просадки из за плохого дросселя.


Файлы вложений Эскизы(ов)
           
Ответ
#68
А теперь посмотрите на свои осциллограммы и то, что рисовал я. Разницу видите? Возьмем ПК1... Желтый это катод, я так понимаю. Зеленый должен начинаться ДО окончания желтого. А у Вас пауза между ними...  С ПК2 все правильно. К начинается до окончания ПК2. К0 в принципе неправильно! Я ведь говорил убрать СБРОСОВЫЙ ключ! У него на базу сигнал "сброс" приходит. Но ключ для К0, его база соединена с базой для К, должен ведь остаться. А Вы и его прибили....

Поймите, К0 это тот же самый К! Он ни чем не отличается. Только что выведен отдельно. И если не нужен ни сброс, ни формирование сигнала переноса на следующий декатрон, то К0 тождественно равен К.

У меня показано 4 ключа, сбросовый пока не считаем. При этом ПК1, ПК2, К самостоятельные. А К0 включен параллельно (с точки зрения сигнала управления, но не управляемой цепи) К. Вы же сделали совершенно не так, как я нарисовал. Потому и не работает. Соберите мою схему, только не ставьте самый правый транзистор (ключ сброса). И в программе фрагмент, отвечающий за сброс, уберите. Временная диаграмма должна быть такой, как я рисовал. Это для бега точки по часовой стрелке. Сигналы на базах всех транзисторов должны быть одинаковы, но смещены по времени. Это три фазы, с небольшим перекрытием (я именно так рисовал) и никак иначе.

Потому и точка у Вас глючит...
Ответ
#69
блин, вчера к сожалению испортил ардуинку, на которой проверял, сегодня уже взял новую, а то поздно вчера было

Алгоритм работы у меня такой: 
1) Инициализация, все подкатоды и катод притянуты к +50 В от стабилитрона и резисторов. 
2) Все базы транзисторов на нуле в начальный момент времени, подтяжки к земле через транзисторы нету.
3) Прижать нулевой катод к земле для его начального положения. // это можно и не делать если нет необходимости

бесконечный цикл -> while (1) {
  digitalWrite (pk_1, 1); // прижали подкатод 1 к земле
  delay (1000); // пауза в секунду
 
  digitalWrite (pk_2, 1); // прижали второй подкатод к земле
  delay (1); // спустя 1 миллисекунду 
  digitalWrite (pk_1, 0); // выключили притягивание к земле подкатода 1
  delay (1000); // снова подержали секунду

  digitalWrite (k, 1); // спустя секунду включили катод
  delay (1); // подождали миллисекунду
  digitalWrite (pk_2, 0); // после чего выключили притягивание к земле подкатода 2
  delay (1000); // подождали секунду

  digitalWrite (k, 0); // выключили подтягивание катода к земле катода
  delay (1); // подождали миллисекунду

} // и вернулись в начало цикла, чтобы все повторить заново

Есть ли тут какие то логические ошибки? Временные интервалы я могу задавать любые от микросекунды.
---------------

Сбросовый ключ я оставил на плате, но полностью отцепил его от декатрона, оставил только подтяжку к +50... Так допустимо или надо было все оставить как было и убрать только ключ? Сигнал не приходит, я же убрал управление ключом из программы...
Ответ
#70
Код:
void Decatron_Reset() {
   digitalWrite(k,LOW);                         // Ключ катодов закрыт
   digitalWrite(pk_1,LOW);                      // Ключ первого подкатода закрыт
   digitalWrite(pk_2,LOW);                      // Ключ второго подкатода закрыт
   digitalWrite(k0,HIGH);                       // Ключ сброса (нулевой катод) открыт
   delay(10);
   digitalWrite(k,HIGH);                        // Ключ катодов открыт
   digitalWrite(k0,LOW);                        // Ключ сброса (нулевой катод) закрыт
}

void setup() {

// Инициализируете все в микроконтроллере как хотите, здесь я это никак не затрагиваю.
// Показываю только часть связанную с декатроном. Где и как определяются
// k, k0, pk1, pk2 дело Ваше

   pinMode(k,OUTPUT);
   pinMode(k0,OUTPUT);
   pinMode(pk1,OUTPUT);
   pinMode(pk2,OUTPUT);
   Decatron_Reset();
}

void loop() {

// Гоняем точку по часовой стрелке. В данный момент у нас состояние декатрона полностью определено

   digitalWrite(pk1,HIGH);                     // Точка перейдет на ПК1
   delay(1);
   digitalWrite(k,LOW);                        // Переносим
   delay(1000);
   digitalWrite(pk2,HIGH);                     // Точка перейдет на ПК2
   delay(1);
   digitalWrite(pk1,LOW);                      // Переносим
   delay(1000);
   digitalWrite(k,HIGH);                       // Точка перейдет на катод
   delay(1);
   digitalWrite(pk2,LOW);                      // Переносим
   delay(1000);
}

Собственно говоря, вот и вся хитрость. Аналогично и в другую сторону. k0 это вывод порта, который соответствует сигналу "сброс" на моей схеме. Процедура сброса вызывается при необходимости. Я показал, что она вызывается при инициализации. В цикле "гоняния" точки сброс не нужен. Точно так же можно сделать и все анимации, например, "плавная раскачка  маятника с увеличением амплитуды". Ну и затухание тоже. И переключение направления бега. Важно понимать, что останавливать точку можно только на катоде (любом!). Это дает нам определенность состояния  когда должно меняться направление бега.

Это не готовый скетч, а лишь пример. Кусок кода работающий с декатроном. Для последнего варианта моей схемы.

P.S. Задержку на 1 мс может придется убрать и заменить на несколько команд NOP или даже просто убрать. Если декатрон будет вести себя не очень устойчиво. Но пока код именно такой
Ответ


Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)