Jump to content

    

Krik99

Участник
  • Content Count

    55
  • Joined

  • Last visited

Everything posted by Krik99


  1. Добрый день. Есть такая проблема с PN532 в режиме i2c. I2c подключен 30-40см от МК. Линии i2c подтянуты 2,7К к +3.3В. На стороне PN532 линии подключены через 150ом после чего стоят конденсаторы в 100пФ (пробовал и без них). Использую SDA, SCL, INT для управления, линия reset не разведена. При попытке включать эл. клапан на питание 24в некоторые пакеты не доходят, но при определенных обстоятельствах зависает шина в состоянии SCL в лог.0 и держит ее именно PN532. Касание пальцем линий SDA приводит к тому же эффекту. Оживить устройство естественно не получается кроме как дернуть ресет на стороне PN532 и все запускается. Что интересно при создании тех же помех и удержании МК в паузе в отладчике PN532 не реагирует вовсе и после отпускания паузы в отладчике все заводится с первого раза. Код крутится в стейт машине и первым шагом идет отправка команды вывода PN532 из спящего режима. Подскажите может есть какие-то особенности в реализации I2C интерфейса для PN532? Блок схема стейт машины:
  2. Добрый день. Есть утройство у которого на шине i2c висит 3 слейва, все в приделах одной платы. Часы, ээпром и дисплей. Так вот, основная часть логики завязана с роботой еепром. Программа довольно много обращается к еепром и иногда бывают сбои. Пишу код под Coide и готового решения AN2824 для него я не нашел. Собственно проблема в том, что если читаю 1 или 2 байта читается какой-то мусор, а если больше 3 то и вовсе виснет еепром и шина всегда занята, даже если перезагружаю i2c на контроллере. С записью проблем нет. DMA не использую так как приходится много читать для поиска пустого блока, проверку делаю "на лету" без выгрузки всего муссора с eeprom в озу. Второй день уже не могу понять в чем проблема, может чего уже не замечаю, вот код. unsigned char I2C_Read_git(I2C_TypeDef* I2Cx, unsigned char SlaveAddress, unsigned char *buf, unsigned int nbyte){ //I2C2->CR2 |= I2C_IT_ERR; //interrupts for errors // Wait for idle I2C interface if(wait_for(FLAG, I2C_FLAG_BUSY) == 0) return I2CERR; //go out with timeout error // Enable Acknowledgement, clear POS flag I2C_AcknowledgeConfig(I2Cx, ENABLE); I2C_NACKPositionConfig(I2Cx, I2C_NACKPosition_Current); // Intiate Start Sequence (wait for EV5 I2C_GenerateSTART(I2Cx, ENABLE); if(wait_for(EVENT, I2C_EVENT_MASTER_MODE_SELECT) == 0) return I2CERR; //go out with timeout error // Send Address I2C_Send7bitAddress(I2Cx, SlaveAddress, I2C_Direction_Receiver); // EV6 if(wait_for(FLAG, I2C_FLAG_ADDR) == 0) return I2CERR; //go out with timeout error if(nbyte == 1){ // Clear Ack bit I2C_AcknowledgeConfig(I2Cx, DISABLE); // EV6_1 -- must be atomic -- Clear ADDR, generate STOP __disable_irq(); (void) I2Cx->SR2; I2C_GenerateSTOP(I2Cx,ENABLE); __enable_irq(); // Receive data EV7 if(wait_for(FLAG, I2C_FLAG_RXNE) == 0) return I2CERR; //go out with timeout error *buf++ = I2C_ReceiveData(I2Cx); }else if(nbyte == 2){ // Set POS flag I2C_NACKPositionConfig(I2Cx, I2C_NACKPosition_Next); // EV6_1 -- must be atomic and in this order __disable_irq(); (void) I2Cx->SR2; // Clear ADDR flag I2C_AcknowledgeConfig(I2Cx, DISABLE); // Clear Ack bit __enable_irq(); // EV7_3 -- Wait for BTF, program stop, read data twice if(wait_for(FLAG, I2C_FLAG_BTF) == 0) return I2CERR; //go out with timeout error __disable_irq(); I2C_GenerateSTOP(I2Cx,ENABLE); *buf++ = I2C_ReceiveData(I2Cx); __enable_irq(); *buf++ = I2C_ReceiveData(I2Cx); I2C_NACKPositionConfig(I2Cx, I2C_NACKPosition_Current); }else{ (void) I2Cx->SR2; // Clear ADDR flag while (nbyte-- != 3){ // EV7 -- cannot guarantee 1 transfer completion time, wait for BTF // instead of RXNE if(wait_for(FLAG, I2C_FLAG_BTF) == 0) return I2CERR; //go out with timeout error *buf++ = I2C_ReceiveData(I2Cx); } if(wait_for(FLAG, I2C_FLAG_BTF) == 0) return I2CERR; //go out with timeout error // EV7_2 -- Figure 1 has an error, doesn't read N-2 ! I2C_AcknowledgeConfig(I2Cx, DISABLE); // clear ack bit __disable_irq(); I2C_GenerateSTOP(I2Cx,ENABLE); // program stop *buf++ = I2C_ReceiveData(I2Cx); // receive byte N-2 __enable_irq(); // wait for byte N if(wait_for(EVENT, I2C_EVENT_MASTER_BYTE_RECEIVED) == 0) return I2CERR; //go out with timeout error *buf++ = I2C_ReceiveData(I2Cx); // receive byte N-1 nbyte = 0; } // Wait for stop if(wait_for(FLAG, I2C_FLAG_STOPF) == 0) return I2CERR; //go out with timeout error I2C_AcknowledgeConfig(I2Cx, ENABLE); return I2COK; } unsigned char EEPROM_Read(unsigned int addr, unsigned char *data, unsigned char len){ unsigned char y=0; // While the bus is busy if(wait_for(FLAG, I2C_FLAG_BUSY) == 0) return I2CERR; //go out with timeout error I2C_AcknowledgeConfig(I2C2, ENABLE); // Generate the Start Condition I2C_GenerateSTART(I2C2, ENABLE); if(wait_for(EVENT, I2C_EVENT_MASTER_MODE_SELECT) == 0) return I2CERR; //go out with timeout error I2C_Send7bitAddress(I2C2, 0xA0, I2C_Direction_Transmitter); //send adress chip if(wait_for(EVENT, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED) == 0) return I2CERR; //go out with timeout error I2C_SendData(I2C2, addr>>8); //send upper bit if(wait_for(EVENT, I2C_EVENT_MASTER_BYTE_TRANSMITTED) == 0) return I2CERR; //go out with timeout error I2C_SendData(I2C2, addr & 0xFF); //send lower bit if(wait_for(EVENT, I2C_EVENT_MASTER_BYTE_TRANSMITTED) == 0) return I2CERR; //go out with timeout error I2C_GenerateSTOP(I2C2, ENABLE); if(wait_for(FLAG, I2C_FLAG_BUSY) == 0) return I2CERR; //go out with timeout error y=I2C_Read_git(I2C2, 0xA0, data, len); return y; } А вот код который работает, но здесь нет всех замечаний которые были написаны в AN2824 о глючном i2c в stm32f1: unsigned char EEPROM_Read(unsigned int addr, unsigned char *data, unsigned char len){ unsigned int i; // While the bus is busy if(wait_for(FLAG, I2C_FLAG_BUSY) == 0) return I2CERR; //go out with timeout error I2C_AcknowledgeConfig(I2C2, ENABLE); // Generate the Start Condition I2C_GenerateSTART(I2C2, ENABLE); if(wait_for(EVENT, I2C_EVENT_MASTER_MODE_SELECT) == 0) return I2CERR; //go out with timeout error I2C_Send7bitAddress(I2C2, 0xA0, I2C_Direction_Transmitter); //send adress chip if(wait_for(EVENT, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED) == 0) return I2CERR; //go out with timeout error I2C_SendData(I2C2, addr>>8); //send upper bit if(wait_for(EVENT, I2C_EVENT_MASTER_BYTE_TRANSMITTED) == 0) return I2CERR; //go out with timeout error I2C_SendData(I2C2, addr & 0xFF); //send lower bit if(wait_for(EVENT, I2C_EVENT_MASTER_BYTE_TRANSMITTED) == 0) return I2CERR; //go out with timeout error I2C_GenerateSTOP(I2C2, ENABLE); if(wait_for(FLAG, I2C_FLAG_BUSY) == 0) return I2CERR; //go out with timeout error I2C_GenerateSTART(I2C2, ENABLE); // Generate the Start Condition if(wait_for(EVENT, I2C_EVENT_MASTER_MODE_SELECT) == 0) return I2CERR; //go out with timeout error I2C_Send7bitAddress(I2C2, 0xA0, I2C_Direction_Receiver); //send adress chip if(wait_for(EVENT, I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED) == 0) return I2CERR; //go out with timeout error for(i = 0; i<len; i++){ if(i<len-1){ if(wait_for(EVENT, I2C_EVENT_MASTER_BYTE_RECEIVED) == 0) return I2CERR; //go out with timeout error }else{ I2C_AcknowledgeConfig(I2C2, DISABLE); // Prepare an NACK for the next data received if(wait_for(EVENT, I2C_EVENT_MASTER_BYTE_RECEIVED) == 0) return I2CERR; //go out with timeout error I2C_GenerateSTOP(I2C2, ENABLE); } *data = I2C_ReceiveData(I2C2); data++; } if(wait_for(FLAG,I2C_FLAG_STOPF)==0) return I2CERR; I2C_AcknowledgeConfig(I2C2, ENABLE); //Delay_ms(5); return I2COK; } За ранние спасибо.
  3. Графика для Linux.

    Так я же и писал "андроид подобных", я про интерфейсы которые заточены под сенсорные дисплеи типа Kivy (видом как стандартный интерфейс андроида) но для Linux и желательно Си+.
  4. Графика для Linux.

    Графическими интерфейсами не занимаюсь, и интересно как здесь обстоят дела в 2019г с Qt и его лицензиями. Куда стоит смотреть для андроид подобных интерфейсов заточеных под тачскрин и лицензией MIT или подобной?
  5. Размышления на тему TCP/IP.

    Полистал sdk и не осталось какого-то впечатления черного ящика, как от опыта с esp8266. Только вот если включить OTA, то сразу отрубается одно ядро. Черный ящик пока только с BT. Правильно ли я понимаю, что на сегодня нужен wifi или нет, но чип очень заманчив в плане цена/мощность даже по сравнению с stm32f107, с его кучей переферии, подержкой апаратного шифрования. А проблему с числом выводов можно решить i2c расширителями. Или это только мне так кажеться? Немного пугают возможные дыры в загрузчике.
  6. STM32F1 и i2c зависает шина

    Конкретный контроллер Stm32f103rbt6. Но на сколько я понял с AN2824 i2c у них у всех глючный. Ок, как будет доступ к осциллографу сделаю скрины
  7. Размышления на тему TCP/IP.

    А какие самые бюджетные и популярные arm с Mac на борту? И как быть с реализацией ssl без крипто модуля? Я вот тоже присматривался к ST и выходит дороже с внешней физикой чем wiznet. П. С. Тут вспоминали о esp32 и что о ней думаете в серьёзных проектах? Тоже нужна физика, но из плюсов есть криптография на аппаратном уровне, BLE4.0 и два ядра которые пока криво работают. У меня был негативный опыт с кривой sdk у esp8266, но у esp32 все вроде иначе собирается.
  8. Добрый день. Allwinner A13 это мой первый SoC. Сразу говорю что в linux сильно новичок. Откопал плату от старого планшета и решил чем не отладочная пата. Начал с малого, после долгих ковыряний получилось собрать uBoot и успешно загрузится с карты. Но вот вопрос. Не могу собрать sunxi 3.4 Все мануалы были написаны давно, а уже много чего изменилось. Работаю под Linux Mint 19 Tara и здесь установлен gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0 Вот при попытке скомпилировать ядро ругается что нет библиотек. Установить gcc 3.2 у меня не вышло :( Вот уже не знаю куда двигаться. Подскажите как скомпилировать ядро под моей системой?
  9. Allwinner A13 помогите собрать sunxi

    Скачал gcc-linaro-4.9-2016.02-x86_64_arm-linux-gnueabihf.tar.xz Сделал все как написано здесь http://linux-sunxi.org/Toolchain#Linaro_toolchain Но что-то не установилось. При выполнении выдает ошибку Нет ли более подробной инструкции как правильно установить Linaro ?
  10. Добрый день. Начал я тут разробатыать устройство, которое вроде как должно подходить под стандарт промышленной электроники (3-ч фазные двигатели, эл. магнитные клапана и т.д.). Сердцем всего этого должен быть МК. Программу написать не проблема, но вот погуглив увидел что у многих разработчиков возникает проблемма с зависанием МК. Сам такое наблюдал в устройстве, где через делитель снималось с силовой цепи 220в сигнал контроля. Так вот на 5-20 раз особенно когда быстро переключал можно было перезагрузить МК. Решил все это конденсатором паралельно контактам кнопки, но так и не понял почему в стеральной машине ведётся контроль подобным образом после контактов реле и все нормально. Мое устройство питается от 24В (от этих 24В включаются клапана и пускатели). На входе платы стоит TVS диод (или варистор) и дросель с двумя обмотками. Скоростных линий не предвидится, максимум i2c. Имеется rs485. Так вот погуглив наткнулся на книгу Г. Отта И вот сообственно хочу спросить вас, правильно ли я все понял. И так начнем: 1. Норамльной помехоустойчивости нереально добится на односторонней плате 2. Блокировочный конденсатор нужно ставить как можно ближе к выводам микросхем 3. Кварц нужно разводить согласно рекомендациям производителя 4. На двухсторонних платах одна их сторон должна быть землей (либо в виде сетки с мелкими ячейками) 5. На длинных и шумных линиях (типо катушка клапана на 24в) нужно ставить феритовое кольцо(мелкое такое) или это только на входные линии? 6. Под линиями питания на обратной стороне обязательно должна быть земля 7. От наносекундных помех не спасают даже оптотроны, но помагают резисторы в разрыв порта ввода-вывода в гашении помех 8. Необходимо использовать большое количество переходных отверстий между землеными полигонами 9. Пустые места должны быть заполнены земляными полигонами 10. Не создовать земляные петли вокруг платы 11. Индуктивность проводников питания должна быть минимальна(широкие проводники с большим количеством переходных отверстий) Ещё возникли вопросы: 1. Как я понял земляной слой разрывать можно, но над разрывами нельзя пропускать линии питания? 2. Разводить питание можно цепочкой(DC-DC -> микроконтроллер -> часы -> логика и т.д.) или нужны отдльные линии от каждой микросхемы? 3. С точки зрения помех, если мне необходимо включать катушки клапанов на растоянии до 1.5м ,нужно ли использовать реле, или всёже нужно перейти на MOSFET? 4. Немного не понял с чистой и грязной землей, тоесть что куда подключать? 5. Что если земленой полигон получился с обеих сторон? 6. Нужно ли соединять минус питания 24в с заземлением щита, так как в книге пишут что часто земля является источником помех? 7. Есть ли смысл использования изолированого острова земли (для микроконтроллера), которая соединена с остальной землей через фиритовое кольцо либо тонкую дорожку? 8. Если входные\выходные кабеля являются источниками помех (common-mode noise), то зачем их фильтры подключать к "чистой" земле, но не к цифровой? При чем именно эта чистая земля должна быть подключена к корпусу устройства. Это подключение в любом случае или если корпус заземлен? И нужна ли такая чистая земля при использовании оптопар? 9. И как быть с rs485? По входным линиям там стоят TVS диоды. Но у 485 есть 3 провода и еще экран. Куда и как подключать экран, если сами драйвера и их питания планируется подключить через изолированый dc-dc и оптопары? При чем как я понял из книги, TVS диоды сигнальных линий должны быть соеденены именно на корпус устройства.
  11. Защита МК от помех

    ЦитатаЯ-то думал, клавиатура в виде одного блока, а тут самый худший вариант: каждая кнопка имеет сильную емкостную связь с щитом, который заземлен вообще хрен знает где. Вдобавок к этому матрица, очевидно, напрямую соединена с пинами микроконтроллера - похоже что ни развязки, ни барьеров нет. Ну тогда вот это и есть корень зла. Развязывйте это безобразие оптронами или просто буферами на рассыпной логике, ставьте резисторные барьеры на пины микроконтроллера, и т.п. Именно так все и собрано, напрямую к МК. Тоесть обычные буферы помогают в этом случае? Тогда после оптопар желательно тоже ставить что-то типа тригеров Шмидта или это лишнее? PS Если все это собрать на стандартной схеме, один конец кнопки к земле, второй через RC цепь к МК это будет работать, или всеже нужно ставить буфер? Есть вариант с подключением на общий провод +24в и снимать через стабилитрон сигнал?
  12. Защита МК от помех

    ЦитатаНе меньше 10 пФ думаю будет. Но я бы рассматривал эти провода уже как антенны. Если взять обычные монтажные провода в PVC изоляции, то четверть волны стандатных FTB импульсов будет от 1..3 м. Т.е. в пределах ящика получаем отличную резонансную систему. Когда впервые увидел эту конструкцию, тоже засомнивался. Суть в чем, клавиатуры в стандартном понимании нет, есть 8 врезаных в щитовую кнопок, которые уже подключены между собой по схеме матричной клавиатуры. При этом все собрано обычным монтажным проводом, а из защиты входов подключены резисторы в 5к и на землю.
  13. Защита МК от помех

    ЦитатаЕсть 7-ми сегментный индикатор и матричная клавиатура. А они как далеко расположены и от чего питаются? Дисплей установлен на плате, а матричная клавиатура вынесена на панель щитовой ~30см. ЦитатаГлавный вопрос - как их земли подключены к плате? В одной точке? В той самой точке, где на плату приходит питание? Нет на сколько я помню там сделана отдельная колодка на плате и спецально для его питания 7812. Датчик имеет у себя на борту МК и не зависает.
  14. Защита МК от помех

    Цитатамертворождённый I2C соответственно прихватит в иной мир и любую промавтоматику А как тогда с внешними eeprom и rtc быть? ЦитатаСогласен. Скорее всего датчики, а именно их земля и есть основная проблема. Они, кстати, не изображены почему-то. Датчик питается от наплатного 7812 и выдает колисчетво импульсов по одному сигнальному проводу (длина импульса ~50мс). Всё это в 15 см от платы. Есть 7-ми сегментный индикатор и матричная клавиатура. Из входов\выходов, это все. Цитата5) нет, на любую внешнюю линию нужен обязательно ограничитель, либо два, либо три и т.д., а ещё дополнительно варистор, либо два, либо три, и т.д., а ещё дополнительно газовый разрядник, либо такой же с замыкателем — всё зависит от энергии помехи, которую должна поглотить вся эта цепь защиты Тоесть если у меня выход это нормально открытая група контактов реле, то мне нужно ставить кроме предохранителя еще и варистор на этот выход?
  15. Защита МК от помех

    ОК. Я сейчас всех уже подзапутал и сам тоже. Но надо было начать с этого. Есть щитовая в котоой установлен PLC и вся силовая часть (реле, пускатели) и тут же стоит ИБП который питает те самые МК. К щитовой подходит стандартный силовой кабель на 3 фазы. Земля ПЛК (у него внутри БП) и ИБП соеденены на землю щита. Передача данных и питания осуществляется разными проводами. При чем от этого же питания запитаны промышленные датчики на стороне МК, которые из защиты имеют только TVS и дросель. И в итоге МК зависает намертво, а датчикам норм. В чем вопрос. На сколько будет эфективна гальваническая развязка 485 при общем питании устройств? Может идея с питанием и не очень, но B&R в своих ПЛК используют схему с общим БП без проблем. (синий и оранжевый это типа "А" и "В" линии) При этом проблемма именно не с потерей данных, а именно с зависанием МК. Если с матричной клавиатурой норм (смущает что линии МК обвязаны только резисторами на 4к7 к земле), то необходима разработка нового устройства, так как изменить нужно все.
  16. Защита МК от помех

    1. Блок питания один для 3-х плат и он импульсный. 2. Клавиатура работает без прерываний по внешнему сигналу, хотя обработка присходит в прерывании таймера развертки 7-ми сегметного дисплея. Клавиатура скрещена с дисплеем. 3. Плата в металическом щите, типа мелкого электрошкафа. 4. Ситуация повторяется но спровацировать зависание очень сложно. 5. Пишу на Си. Это мне нужно во все регистры разрешения прерываний загнать состояние "прерывания запрещены"? Я правельно понял, что TVS диод очень эфективен против наносекундных помех с большой амплитудой? На той плате использована схема драйвера rs485 порта со смещением и без TVS диодов
  17. Защита МК от помех

    ЦитатаИМХО надо так А вообще очень полезно прочитать апноты, много ценной информации можно найти Я правельно понимаю что TVS диоды должны быть отдельно от платы? Такая схема с TVS есть на стороне PLC. И гальваническая развязка нужна на каждом устройстве подключенном к линии 485? Тогда что делать с тем что несколько устройств питаются от одного БП и фактически развязав линию RS485 сохраняем общую землю через питание. На сколько помню там использовали кабель специально предназначеный для rs485. Что делать с экраном кабеля?
  18. Защита МК от помех

    ЦитатаТо что Вы фундаментально подходите к этому вопросу - респект. Но рискуете "запутаться в нулях". Цитата . . . . Программу написать не проблема, но вот погуглив увидел что у многих разработчиков возникает проблемма с зависанием МК. . . . . Для того, чтобы "сбить" контроллер с правильной программой в завес надо очень-очень постараться. (естественно, при условии гарантированного и "чистого" от помех-наводок питания и отсутствия грубых ошибок в схемотехнике и разводке платы, номиналах RC. Тотже узел ресета и выводов JTAG). А вот "плюхи" в софте этому (глюк-завесам) очень даже способствуют. И большая часть из нагугленного - возможно проблемы софта. А пока ищем настоящую причину - виноват сбойный процессор sm.gif Так в этом и проблема. Я вот сам столкнулся с устройством на пик18, которое просто соеденено по rs485 с PLC. Так в PLC RS485 вообще гальванически развязан. Соеденено все это витой парой в экране, на плату приходит только 2 провода сигнала, экран подключен к заземлению на стороне PLC. И вот когда запускаются 3-х фазные двигатели и мощные потребители мк зависает, а со сторожевым таймером все ребутится. Сам мк не включает нагрузок вообще. Смущает только включение управляюших кнопок матрицой на растоянии в 30см от платы. Читал я рекомендации от производителя по снижению тактовой частоты, меньше использовать прерывания, но там без прерываний никак, включены все таймеры и uart. Значит у STM32 выводы отладки необходимо подтягивать к +3.3В ? И какие грубые ошибки можно допустить в программе, может я чего не знаю?
  19. Защита МК от помех

    ЦитатаНепонятно. Если вы снимаете сигнал с 220В через делитель, то причем тут кнопка? Что вы переключали? Если коротко, то есть лампочка кторую включает выключатель, вся эта цепь на 220в, и вот мне нужно следить включена лампочка или нет. ЦитатаВопросы правильные и их много, но отвечать здесь скорее всего не будут. И тут есть причины. Во первых много, во вторых ответы объемные, а в третьих и это самое главное, привильный ответ на один и тот же вопрос может быть прямо противоположный. Все зависит от условий. А вот если учитывать все условия, то ответ займет книжку страниц на 20, поэтому предлагаю почитать соответствующую литературу и обязательно прогонять теорию через средства моделирования. Когда число вопросов снизится до двух трех, приходите. Вопроссы возникли после прочтения книги, может конечно это мой английский, или отсутствие опыта. Но хотябы грубо на пальцах можете сказать? И насколько мои выводы с 1-11 правельны или же я что-то неправельно понял?
  20. Добрый день. Хочу сделать устройство на микроконтроллере STM32 расположеное на растоянии 10-20м от другого, связаны они по рс485. RS485 гальванически развязан. Одна из плат запитана от ибп на 24в и от этого бп питается плата на растоянии 10-20м. На стороне отдаленой платы 24в планируется сразу понижать до 12в(есть потребители) чем-то типа MP1584, а дальше уже 3.3в через 1117. Вопрос можно ли питать МК устройство на растоянии 10-20м от БП? Про потери в напряжении я понимаю, но меня больше волнуют помехи. Или нужен гальваничеки развязаный DC-DC преобразователь? И какие вообще рекомендации в моем случае?
  21. ЦитатаНЕТ никакой проблемы. АБСОЛЮТНО. Т.е. проблема высосана из пальца, "надуманная" Даже при длине проводов 200 метров (а не 20) У нас ДЕСЯТИЛЕТИЯМИ все работает без проблем. С питанием разобрался, спасибо. Проблемы и небыло, просто хочу поправить все недостатки конструкции до того как вытравлю платы и соберу устройство. Понял что для 24в неплохо подходит старый LM2596 с его 40в на входе. Вопрос с комутацией мощной нагрузки. Часто пишут что у разработчиков возникает проблемма что МК виснет при включении нагрузки мощным пускателем, и связано это именно с нагрузкой, а не с катушкой (наличие диода паралельно обмотке). Сам видел такое устройство. И тут в ход идут конденсаторы для искрогашения и т.п., хотя как я понял это лишь костыль, так как в том-же Siemens Logo все намного проще(по входам даже оптопар нет), и все стабильно работает. Спрашиваю кто работал с промышленной электроникой, на что нужно обратить особое внимания, учитывая что у меня на одной плате стоит МК с релейными выходами? БП с одним питанием, максимум что могу пустить напряжение с изолированого DC-DC на засветку оптопар.
  22. В такой схеме можно увеличить ток резистором R2 или поставить R2 перед R1. В схеме с подтяжкой к 3.3в тоже можно увеличить ток, но это будет нагрузка на стабилизатор 3.3в. я правильно понимаю? Еще есть вопрос с землей. В щитовой есть заземление, я так понимаю моя земля 24в и цифровая земля не должны соединятся с заземлением? ЦитатаТут пишут что с dc/dc сложности возникают, так может смотреть в сторону линейных преобразователей типа кренки? Так стоит или нет?
  23. Цитата2. Оптронная развязка (или реле), ток замыкания кнопки 50-100-... мА. Понял решение, но не понял для чего используется именно "большой" ток. Можете объяснить на пальцах? Аналоговый датчик это датчик уровня с набором резисторов, так что точность там не сильно влияет, так как значения фиксированы. Тут пишут что с dc/dc сложности возникают, так может смотреть в сторону линейных преобразователей типа кренки?
  24. Цитата- цепи питания электроники и силовой части должны питатся от разных источиников или (зависит от силовых нагрузок) отделены фильтрами. фильтр подразумевает LC цепь расчитаную в программе? Цитатавходы удАленных датчиков, кнопок - также д.б. развязаны или использовать схемы фильтра-ограничителя напряжения-тока по входм. Напряжение - 24-12-220В. Если кнопки находятся на плате контроллера или на его корпусе - они должны быть достаточно "токовые" - защита от помех, (подтяжка 50КОм к 3В не проходит. ) Про ложные срабатывания это я знаю, а вот так и не понял какой оптимальный вариант для кнопок управления, которые вынесены за приделы платы. Типы включений кнопок к МК я знаю, а вот в "моем" случае интересно услышать совет. Либо кнопку на землю и подтяжка 10к к 3.3в или на кнопку 24 или 12в и через стабилитрон + резистор + конденсатор на землю? Видел промышленные PLC и знаю про опторазвязку от датчиков на дальних растояниях. При этом можно ли на датчики пускать 24в от основного БП? И вот вопрос, если датчик удален и нужно снимать аналоговый сигнал(грубо говоря потенциометр) как быть здесь?