Jump to content

    

maximka

Свой
  • Content Count

    106
  • Joined

  • Last visited

Everything posted by maximka


  1. Необходимо реализовать генератор синусойды. Параметры сигнала: Амплитуда 40 В. Частота 1 кГц. Возможность изменения амплитуды +-5В Возможность изменения частоты +-20 Гц. Хотелось бы использовать какую-нибудь микросхему генератора синусойды с изменяемой частотой. Амплитуду потом можно увеличить. В общем интересует Ваше мнение на пути реализации данной задачи?
  2. Цитата(el34 @ Dec 28 2006, 20:59) а может так- перестраиваемый генератор квадрата(меандра) нагружен на настроенный в резонанс (1kHz) повышающий трансформатор... и Все... у Вас ведь очень узкий диапазон перестройки а про кни Вы не упоминали питание хоть 3 хоть 5В проще некуда.... Трансформатор совсем не хочется использовать.
  3. Цитата(rezident @ Dec 28 2006, 19:55) Недостаточно начальных условий. Не указан способ регулировки амплитуды и частоты. Не указаны временные и температурные допуски на стабильность сигнала. Не указан допустимый коэффициент гармоник. Ну и т.д. Самое простое это сгенерить ШИМ-ом любого МК, пропустить через фильтр 2-3-4 порядка и усилить до нужной амплитуды. Основной критерий - простота реализации. Способ регулировки частоты - устроили бы всего 3 значения частоты 980, 1000, 1020 Гц. Способ регулировки амплитуды - устроили бы всего 3 значения амплитуды 35, 40, 45 В. Регулировать хотелось бы или записью какого-нибудь управляющего кода в микросхему или переключением различных резисторов или конденсаторов. Временные и температурные допуски 1%. То что Вы предлагаете - сгенерировать ШИМом прямоугольные импульсы заданной частоты - пропустить через фильтр n-го порядка - получить sin, затем его усилить до нужной амплитуды. Я правильно понял? Если да - то тут требуется достаточно сложная реализация фильтра. Может быть проще с МК подать на ЦАП, а потом усилить сигнал? И если можно приведите пример какойнибудь микросхемы, какая генерирует sin.
  4. AT89S8252 + Keil + PonyProg

    Необходимо освоить сабж. 1. Взял программатор STk200, которым программировал ATmega. 2. Спаял схему. Подключил питание + , -, частоту 8 Мгц. Подключил serial download. 3. В ponyprog, проинвертировал Reset. 4. С какого-то раза все начало программироваться. Пример программы: #include <REG8252.H> unsigned char x; void main(void) { while(1) { P1=0; for(x=1;x<99;x++); P1=0xff; for(x=1;x<99;x++); } } В результате появились импульсы на P3, с частотой 1 МГц примерно. В общем какая-то фигня - ничего не работает. Внимание вопрос: 1. Может я чего-то не подвязал? Такое ощущение что процессор занимается там чем-то своим. 2. Правильная ли программа? 3. Надо ли подключать файл Startup.a51, как я понял там просто все обнуляется и настраивается. 4. Может не работает программатор, хотя все вроде записывает, верифицирует и читает. Но erase, почему-то не работает. 5. Может где-то какую-то галочку не поставил? Спасибо.
  5. AT89S8252 + Keil + PonyProg

    Еще вопрос. нужно передать в функцию масив. В си я это делал передачей указателя на массив. Могу ди я это сделать в Keile, если нет то как лучше передать массив в функцию.
  6. AT89S8252 + Keil + PonyProg

    Подвязка ЕА помогла. Все работает. Но из Понипрог не работает стирание микросхем. Запись и чтение работают, а вот стирание нет. Что Вы думаете по этому поводу.
  7. AT89S8252 + Keil + PonyProg

    Внимание - наводящий вопрос: А может на ЕА надо подать 1?
  8. Есть две индуктивные обмотки, включенные последовательно со средней точкой. Индуктивность обмоток примерно 5 мГн сопротивление около 5 Ом. В данной полумостовой схеме есть два положения, все сбалансировано (все равно), и разбаланс - индуктивность одной из обмоток становится 7 мГн. Сейчас все это дело запитываем прямоугольниками, частотой 1 кГц 9 В. Соответсвенно в средней точке возникает разбаланс. Вопрос - чем лучше запитывать подобные схемы (синусом или прямоугольником) и почему? Спасибо.
  9. AT89S8252

    Необходимо написать программу для AT89S8252. До этого программировал АTMEGу в CVAVR, но он не поддерживает AT89S8252. Хотелось бы написать программу, откомпилировать ее, может быть отладить, запрограммировать в системе с помощью кабеля STK-200. Причем все это должно быть в одной оболочке. Вопросы: 1) Подходят ли для этих целей IAR, Keil, AVR Studio 4(помоему он не поддерживал кабель STK-200, но не уверен)? 2) Какой из этих продуктов вы бы посоветовали и почему? 3) Существуют ли другие продукты с описанными функциями, о которых я не упоминул. Спасибо.
  10. AT89S8252

    Меня интересует также и программное обеспечение. Например кто нибудь работал с IAR, и дайте пожалуйста ссылку где обсуждался KEIL?
  11. Цитата(TED17 @ Jun 22 2006, 05:18) Цитата(maximka @ Jun 21 2006, 20:30) Это датчик уже готовый, стоит на ракетоносителях ПРОТОН и АНГАРА. Должен выдерживать ускорение 25g. Да уж ракеты у нас... Лучше питать импульсами - энергетика, но фронты рубить до уровня влияния паразитных параметров катушек на баланс моста. Да, действительно, так и поступили.
  12. Хочу сделать приемник последовательного кода. Есть две линии, если по одной приходит фронт (IN-1), то в выходной параллельный код записываем 1, если по IN_0, то записываем 0. Раньше рисовал все в MAX_PLUS !! c использованием примитивов и насколько помню, что для того чтоб дизайндоктор не ругался все должно быть синхронно, тоесть все это должно синхронизироваться CLK. Quartus 2 пишет ошибки multiply clock edge. Тоесть ему не нравиться IN_1'event и IN_0'event, я и сам чувствую что что-то здесь не то, подскажите как решить поставленную задачу и объясните в чем ошибка. Спасибо. library IEEE; use IEEE.std_Logic_1164.all; entity tg is port( CLK,IN_1,IN_0 : in std_logic; PO : out std_logic_vector(7 downto 0)); end tg; architecture archi of tg is signal tmp : std_logic_vector(7 downto 0); begin shift: process(clk) begin if (IN_1'event and IN_1='1') then tmp <=tmp(6 downto 0)&'1'; end if; if (IN_0'event and IN_0='1') then tmp <=tmp(6 downto 0)&'0'; end if; end process; PO <= tmp; end archi;
  13. Цитата(Vovanko @ Jun 13 2006, 20:51) Под PCI находится много. Но заказчик хочет именно PCI-X. Рыскаю по инету найти не могу. Не знаю что есть PCI-X, но сейчас использую плату ЭЛКУС PCI-429-3, там в описании написано что может работать от 3,3 В.
  14. Это датчик уже готовый, стоит на ракетоносителях ПРОТОН и АНГАРА. Должен выдерживать ускорение 25g. Я согласен что есть более простые спосбы измерения уровня, но эти датчики уже стоят. На счет тока. С одной пары транзисторов, запитываются 4 полумоста, рассчетный ток ориентировачно составит порядка 0,6А.
  15. Тему создавал я для того чтобы освоить VHDL, так что вы как хотите, а я буду задавать глупые вопросы. Про переменные - понял как их использовать, но в чем отличие между shared value и просто value. Мне казалось что ка в языке программирования - глобальные и локальные. Дальше про переменные - помоему в EVITE написано про shared value и value и ничего не сказано про их несинтезируемость, и лично мне непонятно почему их нельзя синтезировать? Если я пишу y<=b after 100 ns; то при синитезе устройства у меня автоматически создасться такой код, что y будет принимать значение b только при условии что оно не менялось 100 ns, или это будет только в симуляторе.
  16. Что такое МЭД? Это датчик уровня. В баке много катушек, по две соеденены в полумост, как только к какой-нибудь подойдет поплавок - измениться индуктивность, соответсвенно появится разбаланс. Просто есть у меня теория, ток через обмотки протекает достаточно большой, соответственно если запитывать sin то выходные транзисторы будут работать не в ключевом, а в усилительном режиме, соответсвенно будут сильнее греться биполярные. Как вы думаете так ли это? И еще вопрос какие транзисторы для этих целей лучше использовать полевые или биполярные?
  17. Цитата(ishergin @ Jun 7 2006, 10:58) А зачем Вам пауза, если и так известно скоко бит передается? Задержку легко можно реализовать на конечном автомате. У Вас несинтезируемый код: не надо использовать shared variable. Используйте сигналы, причем не надо присваивать ему одновременно значения в разных процесах, иначе получите сообщение об ошибке (Вы сейчас так делаете для переменной a ). Что касается отличия переменной от сигнала - то посмотрите в любой литературе по VHDL Что значит несинтезируемый код и почему не надо использовать Shared value? Мне кажется что это очень удобно использовать для какого-нибудь служебного счетчика например.
  18. Ну эту задачу я решил. Теперь пытаюсь ее усложнить. Данный код самосинхронезирующийся. По протоколу передаются 32 бита и как бы признаком конца слова является пауза после 32 бита длительностью 4 такта (пусть 0,5 мкс). Вопрос, как мне сделать анализатор паузы в 4 такта. Пример: library IEEE; use IEEE.std_Logic_1164.all; entity tg is port( RST,CLK,IN_1,IN_0 : in std_logic; PAUSE: out std_logic; PO : out std_logic_vector(7 downto 0)); end tg; architecture archi of tg is shared variable a,b:integer; signal tmp,time : std_logic_vector(7 downto 0); signal pr,IN_1_prev,IN_0_prev :std_logic; begin prev: process(CLK) -- в данном процессе сохраняем предыдущие значения begin if(rising_edge(CLK)) then IN_1_prev<=IN_1; IN_0_prev<=IN_0; a:=a+1; --тут я пытаюсь сделать счетчик клоков end if; end process prev; shift:process(CLK,RST) begin if (RST='1') then --обнулятор tmp<="00000000";--&"00000000"&"00000000"&"00000000"; elsif(rising_edge(CLK)) then if(IN_1='1' and IN_1_prev='0') --если есть перепад по IN_1, то then tmp <=tmp(6 downto 0)&'1'; --в результирующем слове сдвигаем 1. b:=a; --длительность b= одному такту a:=0; --сбрасываем счетчик клоков end if; if(IN_0='1' and IN_0_prev='0')then tmp <=tmp(6 downto 0)&'0'; --аналогично, только сдвигаем не 1, а 0 b:=a; a:=0; end if; end if; --if(a>2)then pr<='1';end if; end process shift; PO <= tmp;-- after 40 ns;--(std_logic_vector)a; PAUSE<=pr; end archi; В принципе так все вроде работает. Теперь надо сделать счетчик паузы по идее надо условие IF(4*b>a)then pr<='1';end if; но куда его не поставлю все время ошибки. подскажите как сделать анализатор паузы и в чем ошибки? И еще вопрос: чем переменная отличается от сигнала? Спасибо.
  19. Цитата(Oldring @ Jun 4 2006, 12:40) Чтобы получить предыдущее состояние сигнала в дискретном времни в процессе в VHDL есть только один путь - по фронту clk запоминать предыдущее значение сигнала и в условиях явно сравнивать текущее значение с предыдущим, заменив члены IN_x'event на IN_x_prev = '0'. И обеспечить синхронность сигналов IN_x по отношению к clk поставив на входы синхронизаторы, если их еще нет где-нибудь в другом месте. А как мне взять предыдущее значение сигнала? Насколько я понимаю в процессе все операции выполняются одновременно.
  20. Цитата(CaPpuCcino @ Jun 4 2006, 18:21) а это вам зачем так подходить к вопросам последовательной передачи - по фронту. что за ТЗ такое и в соответствии с каким стандартом? если уж таким макаром организовывать передачу - то рассматривайте проблему лучше не с точки зрения фронтов а изменения уровней (некоторые скажут что это одно и то же - но это не так) и ещё одна подсказка подумайте в сторону увеличения опорного синхросигнала относительно скорости передачи в несколько раз Задачка для самообучения. Цель - данные из кода Arinc перевести в любой параллельный код. Можно работать и по уровню, но по фронту кажется проще. Из вышепрочитанного пришел к выводу что оптимальный вариант - засинхронизироваться от CLK и ловить перепады сигналов. А кстати, можно ли так писать process( rising_edge(CLK)) ?
  21. Существуют емкостные дискретные датчики. В точке контакта в завизимости от диэлектрической проницаемости среды изменяется емкость датчика. Также есть дискретные оптические датчики позволяющие определить границу раздела двух сред.
  22. Цитата(syurish @ Mar 24 2006, 13:25) Существует микросхема универсального преобразователя частота-код UFDC-1 (www.sensorsportal.com/HTML/E-SHOP/PRODUCTS_4/UFDC_1.htm) от SWP, Inc. Есть-ли что-нибудь подобное еще (отечественного или зарубежного производства) ? Нужна также информация про платы сбора и обработки данных (DAQ) для частотно-временных сигналов. Платы от National Instruments не подходят, поскольку не обеспечивают относительную погрешность частоты 0,001 % и ниже во всем диапазоне измерительных частот (от долей Гц до нескольких МГц). Зараннее благодарю за информацию. Есть преобразователи Частота-напряжение. Отечественные. Делает завод Альфа. Если нужно подробнее посмотрю название напишу.
  23. У нас была проблема, появляется погрешность измерения всего тракта (усилитель, коммутатор, АЦП) от температуры. Диапазон от -60 до +85 град. С. Как вы думаете, если на вход такого же тракта подать высокостабильное напряжение. Измерить его АЦП (например вместо 2,5 В помереем 2,52 В). И в результате все измеренные напряжения поделить на соответствующий коэффициент. Как Вы думаете улучшит ли это температурную стабильность устройства.
  24. Цитата(gte @ Apr 30 2006, 18:10) Подошел бы датчик типа D1870 (Coilcraft), L-11002 (Rhombus). 100 витков, 20 mH, порядка 20А. И доступность в десятках штук в России. Пользовализь датчиками тока фирмы LEM. Из 100 датчиков, наверное штук 5 не соответствовали DataSheet. Официальный диллер, по телефону, достаточно не вежливо со мной пообщался, ни в чем разбираться не захотел, сказал скорее всего серая партия.