Radiohobby Forum

Интернет конференция журнала "Радиохобби"

Вы не вошли.

Объявление

Подписка на новые материалы от Николая Сухова - ролики, схемы, модели, онлайн конференции, консультации, чат.

Внимание! Почта в доменах Яндекс и Mail.ru не будет работать в профилях форумчан, из-за введённых правительством Украины санкций против этих компаний. Всем, кто ранее использовал подобную почту, для сохранения прежней функциональности форума, рекомендуется её поменять.

Огромная просьба, заливать тематические картинки и файлы в личные файловые каталоги на форуме, чтобы они не потерялись, со временем!

Ссылка "Загрузки" находится справа внизу формы набора сообщения.

Подписка на журнал "Радиохобби" прекращена. Подробности. Форум же - продолжает свою работу.

#31 04.08.2004 11:52:44

Jaxon
радиолюбовник
Откуда: Николаев
Здесь с 22.01.2004
Сообщений: 3,047

Re: Шаговые двигатели

гы...
сварочные инверторы говориш...... ну-ну
ссылок могу  накидать. только толку то... без опыта- все сдохнет, 100%, и не раз, и не два.
у меня пока не дохло, тк еще не делал, поняв, что мат часть учить надо...
вот и учу, "тренируясь на кошках", ватт по 500....1000
----------
я использовал оптопару в качестве валкодера, но не сильно оно работало.
причина- разная чуствительносттть датчиков... как то с этим в мышиной микрухе боряться. но как.... протокол я нашел, еще бы раз найти. smile
найду- напишу

Вне форума

#32 04.08.2004 12:07:22

Jaxon
радиолюбовник
Откуда: Николаев
Здесь с 22.01.2004
Сообщений: 3,047

Re: Шаговые двигатели

там чето есть
faqs.org.ru/hardw/periph/shpp.htm

Вне форума

#33 05.08.2004 10:05:37

Sugar
Участник
Откуда: Луганская, Донецкая обл.
Здесь с 19.05.2004
Сообщений: 190
Сайт

Re: Шаговые двигатели

Я тут страничку увидел
kravitnik.narod.ru/automatic.files/Weld0.html
Сварочные осцилляторы, хотелось бы мнение узнать.

Вне форума

#34 05.08.2004 11:06:55

Sugar
Участник
Откуда: Луганская, Донецкая обл.
Здесь с 19.05.2004
Сообщений: 190
Сайт

Re: Шаговые двигатели

faqs.org.ru/hardw/periph/shpp.htm
ссылка хорошая нам много всего, но самое интересное, я выкину это сюда может комуто когда - нибудь надо будет люди ловите
Q:
  > Кто знает протокол мыши и клавиатуры?

A:
       freq mousefaq.lzh
       Описание протокола посылок мыши.

  Для активизации мыши необходимо повесить обработчик на соответствующее
аппаратное прерывание, размаскировать это прерывание и установить в порту
биты питания мыши. Обработчик аппаратного прерывания обязан, помимо
обработки приходящих от мыши данных, также восстанавливать в порту биты
питания. Эти биты устанавливаются в порту базовый_адрес+4, который
называется Modem Control Register. Мне известны мыши, для питания которых
нужно выдавать в этот порт число 8, число 0Bh, а также мышь, которая в
зависимости от этого числа меняет свой режим работы (0B-MS, 08-PC). Драйвер
TRUEDOX обеспечивает это переключение по функциям A0 (PC mouse) и A1 (MS
mouse).

  Есть два распространенных протокола обмена.

  1. Microsoft Mouse.
  Протокол обмена следующий: 1200,N71.
  Обеспечивает информацию о 2 клавишах.
  По каждому событию выдается пачка из 3 байт:
      =+=======================
      1| -  1 LB RB Y7 Y6 X7 X6
      2| -  0 X5 X4 X3 X2 X1 X0
      3| -  0 Y5 Y4 Y3 Y2 Y1 Y0

  LB, RB - состояние клавиш, нажатая клавиша = 1. Остальные значащие биты-
относительное пеpемещение в дополнительном коде со времени последней
посылки.
  Определить наличие мыши можно следующим образом: в порт xFC записать
число 8, подождать, а потом опять 0Bh. На запись числа 0Bh мышь реагирует
посылкой одного или нескольких байтов, среди которых обязательно должен
быть байт 4Dh (буква 'M' в таблице ASCII).

  2. PC Mouse System
  Протокол обмена следующий: 1200,N81
  Обеспечивает информацию о 3 клавишах.
  По каждому событию выдается пачка из 5 байт:
      =+=======================
      1| 1  0  0  0  0 LB MB RB
      2|X7 X6 X5 X4 X3 X2 X1 X0
      3|Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0
      4|X7 X6 X5 X4 X3 X2 X1 X0
      5|Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0

  LB, MB, RB - состояние клавиш, нажатая клавиша = 0. Остальные значащие
биты- относительное пеpемещение со времени последней посылки в
дополнительном коде в двух частях, которые надо суммировать. Видимо,
это связано с тем, чтобы не использовать X7 и Y7, чтобы не пересекаться
с первым ключевым байтом.  Способ определения наличия мыши в этом
режиме мне неизвестен.
   ....
  Приложение A. Пpогpамма тестиpования мыши.
- - - - - - - - - - - - - - - - moutest.c - - - - - - - - - - - - - - - -
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <dos.h>
#include <bios.h>

#ifndef MY_TYPE
#define MY_TYPE 1
typedef unsigned char  byte;
typedef unsigned int   word;

typedef unsigned long dword;
#endif

#define F1  0x3B00
#define F2  0x3C00
#define F3  0x3D00
#define F4  0x3E00
#define F5  0x3F00
#define F6  0x4000
#define Escape   0x011B

#define VERSION "1.2"

word baseport;  /* Базовый адрес COM-порта */
word intnum;   /* Номер его прерывания */
byte mmode=3;  /* Режим MS/PC */
word port3FC=0xB;

#define MBSIZE 32
byte mbuffer[MBSIZE+1];
byte *mbhead=mbuffer,*mbtail=mbuffer;

void FIbyte(byte b)
{ byte *tmp=mbtail+1;
if(tmp>=mbuffer+MBSIZE) tmp=mbuffer;
if(tmp!=mbhead)
{ *mbtail=b;mbtail=tmp;
}
}
byte FObyte(void)
{ byte *tmp;
if((tmp=mbhead)==mbtail) return 0xFF;
if(++mbhead>=mbuffer+MBSIZE) mbhead=mbuffer;
return *tmp;
}

/* Обработчик аппаратного прерывания */
void interrupt newhrd(void)
{ FIbyte(inportb(baseport));
outportb(baseport+4,port3FC); /* Set power */
/* Конец прерывания */
outport(0x20,0x20);
}

main(int argc,char **argv)
{ int  pnum,i;
void interrupt (*oldint)(void);
byte  intmask,b;

puts("Mouse tester V"VERSION" (c) Kulentsov A.V.");
if(argc<2)
{ puts( "Syntax: moutest <port_number>\n"
   "Keys:  F1 - Clear screen,\n"
   "  F2 - Microsoft mode,\n"
   "  F3 - PC Mouse System mode,\n"
   "  F4 - Set value to port xFC\n"
   "  F5 - Send byte to mouse"
   );
  _exit(1);
}
_AX=0;__int__(0x33);
if(_AX==0xFFFF)
{ puts("Mouse driver present.");
  _exit(3);
}
pnum=(*argv[1])-'0';
if(pnum<1 || pnum>2)
{ puts("Incorrect port number (only 1 or 2 need).");
  _exit(2);
}

if(pnum==1)
{ baseport=0x3F8;
  intnum=0xC;
  intmask=0x10;
}else
{ baseport=0x2F8;
  intnum=0xB;
  intmask=0x8;
}

/* Set handler to hardware interrupt */
oldint=getvect(intnum);
setvect(intnum,newhrd);

/* Init */
b=inportb(0x21)&~intmask;
delay(1);
outportb(0x21,b); /* 8259 enable */
delay(1);
if(inportb(baseport+1)&0xF8)
{ puts("Error?");
  _exit(4);
}
outportb(baseport+3,0x80);

outport(baseport,0x60); /* 1200 */

delay(1);
outportb(baseport+3,2); /* N71  ( L..ppsbb)  */
delay(1);
outportb(baseport+1,0);
delay(1);
outportb(baseport+4,1); /* Set DTR, /RTS for power */
/* На всякий случай */
delay(100);
outportb(baseport+4,port3FC); /* Set DTR, RTS, OUT for power */
outportb(baseport+1,1); /* Ints. on receive only */

clrscr();
redr:
while(mbhead!=mbtail)
  cprintf("%02X  ",FObyte());
in:
if(!bioskey(1)) goto redr;
switch(bioskey(0))
{ case Escape: goto quit;
   case F1: clrscr();
   cprintf("F2 - MS mode, F3 - PC mode, F4 - new mode, F5 - Send byte\r\n");
   break;
   case F2: port3FC=0xB;outportb(baseport+4,port3FC);mmode=3;
   outportb(baseport+3,2); /* ( L..ppsbb)  */
   break;
   case F3: port3FC=8;outportb(baseport+4,port3FC);mmode=5;
   outportb(baseport+3,3); /* ( L..ppsbb)  */
   break;
   case F4: cprintf("\r\nEnter new xFC value, xFB value:");
   cscanf("%x %x",&port3FC,&i);outportb(baseport+4,port3FC);
   outportb(baseport+3,i); /* ( L..ppsbb)  */break;
   case F5: cprintf("Send byte: ");
   cscanf("%x",&i);outportb(baseport,i);cprintf("\r\n");
   break;
}
goto redr;

quit:
outportb(baseport+1,0); /* No Interrupts */
outportb(0x21,inportb(0x21)|intmask); /* 8259 disable */
setvect(intnum,oldint);
return 0;
}

Вне форума

#35 06.08.2004 09:51:42

Sugar
Участник
Откуда: Луганская, Донецкая обл.
Здесь с 19.05.2004
Сообщений: 190
Сайт

Re: Шаговые двигатели

Плохо что программа не комментирована, ну нечего разберемся.
Я вот, что думаю. Первоначально я программу управления шаговыми двигателями я писал под самую старую машину(которая есть у нас - тройка) т.е. под DOS (писал в Borland Turbo C++ 3.0). Теперь пренесу ее на платформу Windows. Напишу ее на С++Builder 5.0
К чему я это???
К тому что Builder позволяет обрабатівать целій ряд событий мыши (да и нетолько Builder, а и Delphi, VB) такие как OnClick - щелчок мыши, OnDblClick - двойной щелчок, ну самое интересное событие это OnMouseMove - перемещение курсора мыши над компонентом, возможно распознование нажатой кнопки.
Так вот, делаем проект на весь экран, в обработчике события форму OnMouseMove отсеживаем приращение перемещения курсора, программно довольно просто. Тем более мы будем работать с программным драйвером мыши Windows, нам все равно что за мышь, 2 кнопочная, 3 - кнопочная, RS232 или PC/2, согласитесь єто здорово. Темболее приоритет от прирівания міши в системе Windows достаточно высокий.Программная часть закончена.
Теперь аппаратная. Раскрываем мышь к валу диска (с прорезями который) крепил (посредством того же пасика ) вал нашего шаговика, делам оборот расикаем приращение, еще пару оборотов
если все нормально, но на один оборот должно быть равное приращение. Допустим сделали один оборот шаговиком ШДА - 6 приращение курсора 50. Ага шагов у этого движка на оборот 360/22.5=18, а на один шаг приращение 50/18=3.125 но мы сможем отследить только целое число, значит нужно подобрать соответствующее передаточное число пасика.
Да проблемка может быть в том , что перемещение курсора мы можем отслеживать только когда он движится если упрется в "потолок" или "в бок" монитора то все. Значит передаточное число нужно выбирать и смотря на этот факт

Вне форума

#36 06.08.2004 10:12:14

Jaxon
радиолюбовник
Откуда: Николаев
Здесь с 22.01.2004
Сообщений: 3,047

Re: Шаговые двигатели

чето я нифига не пойму, что вы сделать хотите...
подеключить все ресурсы вашего станка через порты компа?
имхо, низзя так делать, кроме этого ниче на компе не запустиш,проходили(система управления беспилотным самолетом)
думаю- нужен отдельный проц, который управляет всем этим, и соединяеться с компом достаточно медленным интерфейсом(тем же СОМ), не будет никаких проблем с временными интервалами и тд

Вне форума

#37 06.08.2004 10:42:47

Sugar
Участник
Откуда: Луганская, Донецкая обл.
Здесь с 19.05.2004
Сообщений: 190
Сайт

Re: Шаговые двигатели

подеключить все ресурсы вашего станка через порты компа?
А почемубы и нет.
Проблем с микроконтроллерами или там еще с чем нибудь таким нет.
А старых машин сейчас валом, бери клей и порядок, ставя микроконтроллер как посредника между ПК и станком, это хорошо.
Но по цене дешевле поставить обычную плату в lpt порт и делов то, я даттчик положения в тот же COM.
Насчет ничего на компе не запустишь, так комп для управления, а не для еще чего-то.
Я знаком с серьезными вещами такими как ADAM 5510 или PCI 1711.
Так что я неплохо представляю как распределяются ресурсы, и все такое.
Если на то пошло я вообще к Windows боюсь подключать станки.
QNX вот єто нормал.
А насчет
система управления беспилотным самолетом
это вы о чем

Вне форума

#38 06.08.2004 11:36:26

Jaxon
радиолюбовник
Откуда: Николаев
Здесь с 22.01.2004
Сообщений: 3,047

Re: Шаговые двигатели

1) про посредника я и говорил.
2) в смысле о чем??
чтож тут не ясного - самолет без пилота. управляеться с земли по радиоканалу , на землю передает видео, на поворотной мачте с антеннами стоит модуль ВЧ, и МК который всем этим управляет, а на комп передает по 232 интерфейсу  всю инфу, которая красиво рисуеться на мониторе smile

Вне форума

#39 06.08.2004 14:03:49

Sugar
Участник
Откуда: Луганская, Донецкая обл.
Здесь с 19.05.2004
Сообщений: 190
Сайт

Re: Шаговые двигатели

Это Вы по дискавери смотрели, или такое сами делали.

Вне форума

#40 06.08.2004 16:42:39

Jaxon
радиолюбовник
Откуда: Николаев
Здесь с 22.01.2004
Сообщений: 3,047

Re: Шаговые двигатели

причем сдесь Дискавери?
делало 2е группы людей.
одна- самолет, другая- систему управления.
летало даже.
лично я делал антенное хозяйство и все ВЧ, а там 1.2 гига, и 450 мег, кстати

Вне форума

Сейчас в этой теме пользователей: 0, гостей: 1
[Bot] ClaudeBot

Подвал форума

Под управлением FluxBB
Модифицировал Visman

[ Сгенерировано за 0.038 сек, 7 запросов выполнено - Использовано памяти: 633.05 Кбайт (Пик: 683.41 Кбайт) ]