Перейти к содержанию

Инженер!Туленков

Members
  • Постов

    243
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные Инженер!Туленков

  1. Всем привет! Вопрос по esp32, довольно каверзный. У esp32 есть несколько SPI. Два из них VSPI  и HSPI. В документациях указано что они независимые.

    Если есть 2 разных устройства подключенные к своим пинам VSPI и HSPI соотвественно, то по логике если 2 разные библиотеки использую каждая свой набор ног то все будет работать хорошо?

    Физически устройства подключенны вот так:

    HSPI
    cs-15
    mosi-13
    dc-12
    clk-14
    bysy - 27
    --------
    VSPI
    ss - 5
    sck - 18
    mosi - 23
    miso - 19
    busy - 17

    Подскажите пожалуйста, есть ли какие то подводные камни при обновременном использовании VSPI HSPI?

  2. Всем привет! Много лет не был на форуме, и вот в одной задумке зашел в тупик. В гугле был, в поиске по форуму тоже был - не помогло.

    Попал в руки драйвер шагового двигателя TMC2130  V3.0 SPI. Данный модуль известен тем что он по SPI может вернуть данные о текущей нагрузке двигателя и другую интересную информацию.

    По данному шилду очень мало информации. Получилось его запустить, но в режиме DIR/STEP. 

    Проблема: мало русскоязычной информации, много видео по запуску модуля на шилдах, но необходимо использовать сам модуль. В примерах только Dir/step управление.

    Мой вопрос: работает ли этот драйвер чисто по SPI   (+ - MISO, MOSI , SCK). И как это делается? Кто сталкивался? Есть ли примеры?

    Прошу помощи) Благодарю за любые полезные ответы

    Цитата

    Описание шилда: https://github.com/bigtreetech/BIGTREETECH-TMC2130-V3.0
    Библиотека: https://github.com/bigtreetech/TMC2130Stepper

     

  3. 1 минуту назад, Aleх сказал:

    Ключ напрашивается. Или нет ? :)

    Естественно, но есть еще одна проблема. Надо использовать только шилды. Шилда с оптопарами или ключами (кроме мосфетов) я не встречал. Вернее всё что встречал в коробочку в количестве из за проводов и объема не влезут...

  4. Напряжение включения >2.5В. Номинальное управляющее от 3В. Ток срабатывания 20-25мА.
    Да, не верно на цифровые пины данные реле соединять. Но, у людей, исходя из практического опыта 2 реле работает годами уже. В моем случае 5 не сработало.

    Как посоветуете решить вопрос? 

  5. Все решилось все таки использованием rs485  (дополнительной платой на max485). Обращение реализовали по ID. Usb провода отпали за ненадобностью.

    П.С Использование системы openhab 1.8.3 на raspberry pi  совместно с usb - очень, очень, очень гиблое дело. Библитеки Modbus serial очень глючнутые.

  6. 2 минуты назад, Aleх сказал:

    Вопрос совершенно непонятен. Что значит "надо было резистор ~1кОм последовательно включать?" ?
    Ограничительное сопротивление расчитывается по необходимому току в цепи и напряжению этой цепи.

    Напряжение питания 5В, для реле достаточно 4В, 20ма отсюда следует 50-56 ом, если рассчитать.

    Вопрос в том что могло случиться с ардуиной? Почему перестала шиться?

  7. Всем добрый вечер! Прошу помощи в странном деле. 

    Присутствует бутерброд - Arduino Nano + Ethernet шилд в который вставляется нано.

    К пинам подключены твердотельные реле ssr-25DA - 5 штук.
    Их характеристики:
    Input voltage: 3-32VDC
    Output voltage: 24-380VAC
    Output current: 25A
    Working voltage: 250V
    On voltage: ≤1V
    One-off Time: ≤10ms
    Off leakage Current: ≤2mA

    Реле соединено по схеме:

    rel.jpg

    В интернете у всех работает. Питание ардуины при этом было 500 мА. Ethernet шилд не был подключен к сети.

    Был написан код который выставляет HIGH на 2,3,4,5,6 пине и через 5 секунд в LOW.

    Все работало минут 10, потом смотрю одно реле работает, а остальные нет. Вынял ардуину, а она не шьется.

    Я нагрузил каждый из пинов и вывел из строя ардуину?

    59248a5692bd0_viberimage.thumb.jpg.36c379ad8f1649133ce7d9232074180e.jpg

  8. Всем добрый вечер! Прошу помощи в странном деле. 

    Присутствует бутерброд - Arduino Nano + Ethernet шилд в который вставляется нано.

    К пинам подключены твердотельные реле ssr-25DA - 5 штук.
    Их характеристики:
    Input voltage: 3-32VDC
    Output voltage: 24-380VAC
    Output current: 25A
    Working voltage: 250V
    On voltage: ≤1V
    One-off Time: ≤10ms
    Off leakage Current: ≤2mA

    Реле соединено по схеме:

    rel.jpg

    В интернете у всех работает. Питание ардуины при этом было 500 мА. Ethernet шилд не был подключен к сети.

    Был написан код который выставляет HIGH на 2,3,4,5,6 пине и через 5 секунд в LOW.

    Все работало минут 10, потом смотрю одно реле работает, а остальные нет. Вынял ардуину, а она не шьется.

    Я нагрузил по ~25 мА на каждый из пинов и вывел из строя ардуину, и надо было резистор ~1кОм последовательно включать?

    59248a5692bd0_viberimage.thumb.jpg.36c379ad8f1649133ce7d9232074180e.jpg

  9. 3 минуты назад, Yurkin2015 сказал:

    Чтобы различать подключенные платы, оставьте родные номера для VIP/PID и просто измените текст в строчке Device Description на  "Vasya1", "Vasya2" и т.д. Тогда при втыкании Windows будет бодро рапортовать "Vasya1" подключён, и в списке подключённых USB устройств этот "Вася1" тоже будет виден.

    О и правда, но опять же сh340. Я не нашел софта который меняет Device Description на  сh340

  10. 3 минуты назад, Yurkin2015 сказал:

    Если на плате стоит FT232RL, то для изменения VID/PID скачиваете фирменную программу FT_Prog и меняете на здоровье! Никаких перезаливок бутлоадеров не нужно, эти параметры записаны в самой FT232RL, а не в процессоре.

    Только будьте готовы, что после изменения Windows начнёт ругаться "обнаружено неизвестное устройство" и перестанет узнавать Ардуино платы.

    А если ch340 ?

  11. Всем Привет! С Праздниками!

    Прошу помощи с Arduino Nano. Возникла острая необходимость изменить VIP и PID. Подскажите, натолкните на верный путь пожалуйста.

    Были закуплены 10 nano из китая, спаяны, а оказалось они все с одинаковыми VID и PID, но присутствует необходимость их различать именно по данным номерам.

    На сколько я понял необходимо бутлоадер перезаливать, с помошью cp2102 c DTR сигналом - судя по информации из гугл не удастся. Необходим FTDI. Так ли это? 

    Или это возможно сделать прямо из Arduino IDE изменив какие то файлы?

  12. Добрый вечер форумчане! Создавая некий проект на Arduino и Raspberry возникла интересная ситуация.

    Были закуплены 10 Arduino Nano v3 и подключены к raspberry. По незнанию и не сталкиванию ранее с данной темой увидел что Vendor ID Product ID одинаковые на всех ардуинах и Serial (код) вовсе отсутствует у всех ардуин.

    В проекте необходимо что бы каждая ардуина была уникальная хоть в чем то.

    Далее каждая уникальная ардуина будет привязана естественно к своему COM порту символьными ссылками для использования.

    Каким образом можно придать уникальности каждой ардуине? Как изменить информацию? Возможно ли это осуществить через ch430?

    Общий процесс я представляю. Интересует конкретное ПО или примеры из опыта.

  13. Добрый вечер! Подскажите пожалуйста как в протеусе создать компонент. К примеру - микросхему аналоговую. Что бы не просто визуально, а что бы в симуляции она работала по нормальному.

    Логично что изначально надо собрать схему из разных одиночных элементов, но как сохранить в компонент?

    Ту же солнечную панель - визуально что бы был квадрат, а внутри были Battery Cell и выводы.

    Уроки на ютубе рассказывают только про то как сделать визуально, правда зачем там задаются входы и\или выходы если никакого описания внутренней работы нового компонента не делается. Чего я не понимаю?

    Благодарю.

  14. Это управление шаговыми биполярными двигателями. Одинаковыми.

    Изначально было вот так:

    int speed=6;
    int i=0;
    for(i=0; i<100; i++)
    {
    PORTB=0b00000001;					    VDelay_ms(speed);
    PORTB=0b00000100;					   VDelay_ms(speed);
    PORTB=0b00000010;						 VDelay_ms(speed);
    PORTB=0b00001000;					    VDelay_ms(speed);
    }
    for(i=0; i<100; i++)
    {
    PORTD=0b10000000;					    VDelay_ms(speed);
    PORTD=0b00100000;					    VDelay_ms(speed);
    PORTD=0b01000000;					    VDelay_ms(speed);
    PORTD=0b00010000;					    VDelay_ms(speed);
    }
    

    Сначала один мотор движется потом другой. Была необходимость сделать одновременное движение двигателей.

    И было написано как выше, VDelay_ms(speed/2) = 3 и получилось так что по 3мс на каждой обмотке, и получилось 3мс на одну обмотку, 3мс на другую обмотку (второго двигателя) и получалось что между обмотками одного мотора было 6.Чередуя обмотки разных моторов.

    Пример ниже:

    PORTB=0b00000001;					    VDelay_ms(speed/2);  //3мс 1обмотка 1двиг
    PORTD=0b10000000;					    VDelay_ms(speed/2);  //3мс 1обмотка 2двиг
    PORTB=0b00000100;					   VDelay_ms(speed/2);   //6мс между обмотками 1двиг.
    PORTD=0b00100000;					    VDelay_ms(speed/2);
    PORTB=0b00000010;						 VDelay_ms(speed/2);
    PORTD=0b01000000;					    VDelay_ms(speed/2);
    PORTB=0b00001000;					    VDelay_ms(speed/2);
    PORTD=0b00010000;					    VDelay_ms(speed/2);
    

    Прошу прощения за много букв и кода.

    В итоге получилось что 2 двигателя движутся одновременно.

    Был заменен один двигатель, и первому на переключение надо speed=6, а второму необходимо speed=4 (Для одинаковой скорости) , надо сделать так что бы они работали одновременно. Если я их буду чередовать как выше то получится каша.

    PORTB=0b00000001;  VDelay_ms(speed);  //3мс
    PORTD=0b10000000;  VDelay_ms(speed2);  //2мс
    PORTB=0b00000100;   VDelay_ms(speed);   //3мс получится 5мс между одним место 6ти.
    PORTD=0b01000000;  VDelay_ms(speed);  //2мс
    

    И получится общее 5 мс. а надо одному 6 другому 4. Как тут быть?

  15. Извиняюсь. В той теме опубликовал не по теме. И ответ был от человека который даже пост не прочитал. Советом было ввести вторую переменную. Но это не допусимо, так как не будет одновременного выполнения. И время между переключениями порта B и D будет совсем разное.

    Код віше предназначен для управления 2-мя биполярными двигателями одновременно.

  16. //Проблему выше решил))) Типичные синтаксические ошибки были))

    Добрый вечер! Возник ступор в коде.

    Изначально было int speed=6 и одновременно все переключалось с необходимой скоростью. На схеме поменялась деталь и теперь необходимо что быPORTB переключался с speed=6, а PORTD с speed=4. Что бы они одновременно переключались.

    PORTB=0b00000001;             VDelay_ms(speed/2);
    PORTD=0b10000000;			 VDelay_ms(speed/2);
    PORTB=0b00000100;            VDelay_ms(speed/2);
    PORTD=0b00100000;			 VDelay_ms(speed/2);
    PORTB=0b00000010;              VDelay_ms(speed/2);
    PORTD=0b01000000;			 VDelay_ms(speed/2);
    PORTB=0b00001000;             VDelay_ms(speed/2);
    PORTD=0b00010000;			 VDelay_ms(speed/2);
    

    Как тут быть? Подскажите пожалуйста

  17. Добрый вечер! Возник ступор в коде.

    Изначально было int speed=6 и одновременно все переключалось с необходимой скоростью. На схеме поменялась деталь и теперь необходимо что бы PORTB переключался с speed=6, а PORTD с speed=4. Что бы они одновременно переключались.

    Как тут быть? Подскажите пожалуйста

    PORTB=0b00000001;								  VDelay_ms(speed/2);
    					  PORTD=0b10000000;	    VDelay_ms(speed/2);
    PORTB=0b00000100;								  VDelay_ms(speed/2);
    					 PORTD=0b00100000;	    VDelay_ms(speed/2);
    PORTB=0b00000010;								 VDelay_ms(speed/2);
    					 PORTD=0b01000000;	    VDelay_ms(speed/2);
    PORTB=0b00001000;								  VDelay_ms(speed/2);
    					  PORTD=0b00010000;	    VDelay_ms(speed/2);
    

  18. Товарищи, не получается.

    int count_step, q[2];
    char data_mes[7];
    if(data_mes[0]=='1')
      {
    					    UART1_Write_Text("Proverka");
    						 UART1_Write(10);
    						 UART1_Write(13);
    			   //   q[0]=data_mes[1]-'0';
    			   //   q[1]=data_mes[2]-'0';
    			   //   q[2]=data_mes[3]-'0';
    
    count_step=((data_mes[1]-'0')*100)+((data_mes[2]-'0'*10))+(data_mes[3]-'0');
    
    				  UART1_Write(count_step);
    										    for(x=0; x<=count_step; x++)
    										    {
    										    UART1_Write(x);
    										    }
        }
    

    data_mess[] - заполняется следующим образом.

    i=0;
    	  while(1)
    		    {
    			 if(i==7) {  break;  }
    		    if (UART1_Data_Ready()) {
    									 uart_rd = UART1_Read();
    									 data_mes[i]=uart_rd;
    									 i++;
    									 }
    		    }
    

    data_mess[7] в таком виде 12341234

    По первому data_mess[0] срабатывает условие. По первому, второму , третьему элементу - надо сделать трехзначное число, и запустить цикл такое количество раз как это число. Они символьные надо составить число.

    Код:

    count_step=((data_mes[1]-'0')*100)+((data_mes[2]-'0'*10))+(data_mes[3]-'0');
    

    Не работает. В протеусе возвращается при выводе count_step неизвестный символ.

  19. Добрый вечер уважаемые!

    На досуге возник легкий вопрос, но не могу найти на него ответ.

    Каким образом конвертировать char в int в microC for Pic?

    Имеется массив char data[7];

    И элементы data[2] и data[3] содержат символы (цифры 4 и 7) .

    Необходимо вызвать цикл for от 0 до 47.

    Как конвертировать в int? И как составить число из двух элементов? (Плюс или точка? - нелепо пробовал.) функция atoi() не дала результатов

    Функций не нашел. Прошу помощи. Благодарю

×
×
  • Создать...