Jump to content

Alex Ferrum

Members
  • Posts

    375
  • Joined

  • Last visited

Everything posted by Alex Ferrum

  1. Уважаемый Барсик. Спасибо за совет. А вы конкретные программы не помните?
  2. Есть ситуация когда пишу код для AVR на ассемблере, на компьютере, где у меня нет админских прав, то есть устанавливать программы на этом компьютере я не могу. Использую протеус восьмой, portable версию, она позволяет писать программы на ассемблере. Но хотелось бы что-нибудь подобное AVR Studio 4.19 в portable версии. Прошивать контроллер на этом компьютере мне не нужно, нужен .hex файл для симуляции в протеус. Что можете посоветовать товарищи.
  3. Интересовался такой темой, только для измерения более низких величин токов (микроамперы, наноамперы). Есть операционные усилители со сверхнизким входным током, наиболее доступные: LMC662 или LMP7721. Соответственно при измерении очень малых величин токов они не вносят погрешность своим входным током, вернее вносят, но эта погрешность невелика. Из древних можно вспомнить AD549, но он слишком дорогой. По сути автора интересует схема преобразования тока в напряжение, классическая топология - усилитель тока для фотодиода.
  4. Я бы заменил при наличии достаточно свободного места на батарею керамических конденсаторов. Было дело, паял батареи 10x10 1206 10мкФx25В, итого получается батарея 1000мкФx25В (на самом деле с учётом допусков ёмкость может отличается, измерения показывали 860-920мкФ), размером 2x2см, соответственно в данном случае батарея будет примерно 2x6см. Зато у данной батареи фантастически низкий ESR. Мы как-то тут на форуме дисскутировали, даже даташит на конденсатор нашли. Суммарное теоретическое ESR получилось в районе десятков или сотен микроом!!! Что меньше, чем сопротивление выводов и пайки, плюс такая батарея не высыхает, не теряет ёмкость, не боится мощных импульсный помех и выбросов.
  5. @Starichok совершенно с вами согласен, лучше всего использовать контроллер с двумя входами захвата, хотя бы ATTINY2313 (хотя там один вход захвата относится к 8-ми разрядному таймеру-счётчику, другой к 16-ти разрядному), но автор темы хочет реализовать на ATMEGA8, поэтому приходится давать рекомендации для этого контроллера. Если период измеряемого нами сигнала большой, то можно просто перенастраивать входы. Если у нас импульс несколько тактов и нам его длительность нужно измерить, тогда настраиваем вход внешнего прерывания на фронт, а вход захвата на спад. Если нам нужно измерить паузу между импульсами и она длится несколько тактов, тогда настраиваем вход внешнего прерывания на спад, а вход захвата на фронт. Причём эти перенастройки можно задать в программе, чтобы они менялись автоматически в зависимости от измеряемого сигнала. Тогда и ошибок никаких не будет. А можно задать чтобы все измерения проводились двумя разными методами и сравнивать результаты, а ошибка может быть только в сторону больших показаний, соответственно меньшее показания - верное, большее - неверное.
  6. @Starichok я полагаю лучше комбинировать вход внешних прерываний и вход захвата ICP1, дело в том что если промежуток времени, который нужно измерить будет небольшой (несколько циклов), тогда во время исполнения подпрограммы прерывания по входу INTX, возникнет прерывание по входу захвата ICP1, то выполнение подпрограммы этого прерывания будет отложено, НО состояние таймера-счётчика 1 будет скопировано в регистры ICR1L и ICR1H, откуда оно благополучно будет извлечено, когда начнёт выполняться подпрограмма прерывания по входу захвата. Если же мы используем только прерывания по входам INT0 и INT1, то во время выполнения подпрограммы прерывания по одному входу, если случится прерывание по другому входу, то выполнение другой подпрограммы прерывания будет отложено, пока не завершится выполнение данной подпрограммы прерывания, значение счётных регистров (TCNT1L, TCNT1H) в это время будет менятся. И когда наступит время выполнения второй подпрограммы прерывания как мы определим на какую величину нужно корректировать показания, которые с каждым циклом меняются. С входом захвата проще, подпрограмма прерывания также будет отложена, но текущее состояние таймера-счётчика 1 будет скопировано в регистры захвата и нам уже не важно насколько тактов задержится выполнение подпрограммы прерывания по входу захвата - на один такт, на 2, на 5, на 10, на 15. Кстати, по поводу контроллеров. Если брать контроллеры с максимальным количеством входов захвата, то это например: ATMEGA1280 и ATMEGA2560, там 4 входа захвата ICP. Если брать контроллеры с максимальным количеством индивидуальных, настраиваемых входов внешних прерываний, то это AT90USB162, там 8 входов INT0-INT7 и 8 соответствующих им прерываний. Также в контроллерах бывают входы PCINT, в некоторых моделях до 32 штук! Но для этих целей они не удобны, так как их нельзя настроить на конкретное изменение: фронт или спад (передний фронт, задний фронт) и прерывание там как правило одно на 8 входов.
  7. Да, ну и понятно, при входе в подпрограмму прерывания желательно сохранить регистр операций: intx: in temp3, SREG; А при выходе из подпрограммы прерывания вернуть значение обратно: out SREG, temp3; reti;
  8. @Starichok при прерывании по входу INTX, считывать нужно именно регистры TCNT1L и TCNT1H, а регистры ICR1L и ICR1H считываются при прерывании по входу ICP1. При чтении TCNT1L и TCNT1H, мы читаем TCNT1L и одновременно, автоматически происходит копирование регистра TCNT1H во временный регистр, через который и осуществляется доступ к регистру TCNT1H. Это нужно чтобы считать оба регистра одновременно. То есть да, это 2 цикла на считывание: in temp1, TCNT1L; in temp2, TCNT1H; Но оба значения считываются из счётных регистров одновременно при операции: in temp1, TCNT1L; Соответственно содержимое нижнего регистра считывается в регистр temp1, а содержимое верхнего регистра во временный регистр, из которого оно копируется в регистр temp2 во время операции: in temp2, TCNT1H; Соответственно при считывании верхнего регистра, это значение уже считано и не инкрементируется, можно подпрограмму прерывания сделать следующим образом: intx: in XL, TCNT1L; считываем нижний регистр in XH, TCNT1H; считываем верхний регистр sbiw XH, 0x05; корректируем показания, 2 (0x03) или 4 (0x05) цикла на вход в прерывание, при этом значение счётчика тоже увеличится на 2 или 4 и один цикл на считывание регистра TCNT1L одновременно с которым считывается регистр TCNT1H ........... reti; Ну а считать регистры ICR1L и ICR1H мы можем в любое время до наступления следующего события, так как при возникновении прерывания по входу ICP1, в эти регистры автоматически копируется значение из счётных регистров и больше не меняется до наступления следующего прерывания по входу ICP1.
  9. Допустим нам нужно сделать чтобы ток базы был 1 мА, округленно (падение база-эмиттер примерно 0,5-0,7 В, в данном случае можно пренебречь): 50В/0,001А=50 кОм. Мощность на резисторе 50 мВт. Берём ближайший 47 кОм. Между базой и эмиттером можно поставить резистор раз в 10 побольше, то есть 470 кОм.
  10. Можно решить вопрос несколькими методами: 1. Использовать микроконтроллер как минимум с 2 входами захвата (ICPX), например, ATTINY2313. А в ATMEGA2560 их аж целых 4. 2. Совместно со входом ICP1 использовать вход INT0 или INT1. Соответственно если вам нужно измерить длину паузы, настраиваем вход INTX на задний фронт (спад), а ICP1 на передний фронт (фронт), соответственно при прерывании на входе INTX программа переходит в подпрограмму прерывания и считывается значение таймера-счётчика 1 в регистровую пару X, Y или Z. Оператором sbiw, корректируем показания, вроде 2 цикла входа в прерывание и 1 цикл считывания, вначале считывает регистр TCNT1L, одновременно во временный регистр копируется значение TCNT1H. Если есть другие прерывания, то даже внутри подпрограммы прерывания можно активировать прерывания оператором sei, чтобы вовремя сработало прерывание по входу INTX.
  11. У вас при переполюсовки должен сгорать мосфет vt2, по крайней мере в нём должен быть внутренний антипараллельный диод, через который при переполюсовки потечёт ток.
  12. Первое что приходит на ум, уменьшить сопротивление датчика тока - резистор на 5 мОм, что справа. Если есть схема, можно попробовать организовать интегрирующую цепочку, на входе измерения тока, соответственно резкий бросок тока при включении электродвигателя будет сглаживаться и контроллер не будет уходить в защиту.
  13. А что за куллер, оборотами которого вы собрались управлять? Сколько проводов к нему идёт? Не 4 случайно?
  14. Расскажите по подробнее про таймер, при истечении 15 минут что он делает? При отключении и повторном включении питания он сбрасывается? Также уточните какими реле будет управлять схема и при включении реле вентилятора отопителя, на схему подаётся напряжение питания, или схема должна фиксировать этот момент и включать себя сама???
  15. Не совсем понятно назначение диода vd2, я бы его выкинул из схемы, vd1 я бы заменил на более быстродействующие, например UF4005. Полевые транзисторы в данной схеме применять можно, но правильно, а именно с использованием драйверов затворов. Чтобы избежать пробоя при самоиндукции, можно использовать топологию "косой мост" двухтранзисторный однотактный прямоходовый преобразователь. В этом случае будет происходить рекуперация энергии в конденсатор питания. Чтобы предотвратить выгорание транзисторов при замыкании электродов, нужно ограничить ток, включив последовательно с первичной обмоткой токоограничивающий резистор. У вас напряжение питания 12 вольт. Чтобы не заморачиваться с трансформатором управления транзистора верхнего плеча, можно использовать P-канальный транзистор. Нижнее плечо 2-4 в параллель FDD6635, верхнее плечо - столько же в параллель FDD6637. Драйвер для обоих транзисторов TC4425. Для защиты от просадки напряжения на драйвере поставить диод 1N5822 по плюсу питания, аналогично vd1 или vd2, и конденсатор по питанию драйвера. Рекуперационный диоды можно взять HER801. Токоограничивающий резистор - батарея резисторов С2-23, суммарный сопротивлением примерно 0.1 Ом.
  16. Не знаю как там с эхолотом, а когда мне нужно было сделать радиоуправление на 1 км, я использовал передатчик: https://www.quartz1.com/price/model.php?group=7052&mark=CYTD2-ASK-433,92
  17. Ставите R1 равным 150 кОм, получаете 1,5 вольта на выходе. Ставите R1 равным 400 кОм (2 по 200 кОм последовательно), получаете 3 вольта на выходе.
  18. @Delfin можете более подробно расписать задачу, что вы вообще имеете и что хотите получить на выходе, в смысле какой результат?
  19. В принципе можно использовать любой микроконтроллер с интерфейсом UART, тот же самый ATTINY2313, С1-И придётся прописывать в программе самому, а UART только активировать и работать с ним через прерывания.
  20. Можно использовать инструментальный усилитель INA333 с программируемым (при помощи резистора) коэффициентом усиления, для подавления синфазных помех можно использовать кабель ПВАМДЭ 2x0.35. В качестве фильтра от переменки, если нам нужно избавиться от сетевых наводок, можно использовать режекторные фильтры на гираторах на 50 и 100 герц соответственно.
  21. Теоретически можно. Дело в том, что водные растворы солей (а любая лужа это некоторое количество воды, в которой с большой долей вероятности будут соли) имеет ионную проводимость в отличие от металлов, в которых проводимость обусловлена наличием "электронного газа". Так вот, при протекании тока, происходит разложение соли на металл и кислотный остаток. Из этого следует, что лужа начнёт проводить ток при определённом напряжении, не помню точно, примерно 1.5-3 вольта. Был вроде даже электрический подводный аппарат, где проводники не были изолированными и там использовалось напряжение 1-1.5 вольта, то есть ниже того значения, когда солёная морская вода начинала проводить электрический ток. Так вот лужу можно представить в электрическом смысле как идеальный стабилитрон и последовательно подключённый резистор. Другой вопрос как сильно влияет этот "резистор" на схему. Если сопротивление этого "резистора" принебрежимо мало, тогда определить место замыкания можно. Измеряем падение напряжения на всей цепи при 1 мА и при 101 мА, вычитаем из второго измерения первое и получаем падение напряжения на проводах умножаем на 10 и получаем сопротивление участка цепи до замыкания. Ну а дальше зная сопротивление провода на метр длины вычисляем какое расстояние до замыкания.
  22. Я так понимаю для высокочастотного сигнала, токи высокой частоты вытесняются к поверхности проводника, поэтому для высокочастотного сигнала используют медные трубки, литцендрат, шины, полосковые выводы, как в высокочастотных транзисторах (например КТ920, КТ922, КТ925), короче проводники с максимальным отношением периметра поперечного сечения к его площади.
  23. Лично я бы если бы делал, использовал бы TMP100 и ATMEGA8. У меня этих датчиков температуры с прошлой работы штук 50 осталось. Конечно у Texas Instrument есть готовые термостаты, настраиваешь по I2C и ждёшь сигнала о событии с выхода alert.
  24. Могу и дома, но до дома пока доберёшься, а так глядишь если у человека тема срочная, может ещё успеет сегодня до магазина доехать.
  25. Уважаемый Барсик, это рабочий комп, с него крайне нежелательно отправлять что либо не касающееся работы. А вот со своего телефона я могу отправлять.
×
×
  • Create New...