MAL4X Научно-технический форум разработчиков симуляторов и автоматики


Симуляторы перегрузок. DIY электроника. ЭВМ. Компьютерные сети.
Up

Новейшая прошивка для Arduino.

Строим реалистичный симулятор перегрузок своими руками. Рекомендации. Советы.

Модераторы: Death_Morozz, null, Ale

Re: Новейшая прошивка для Arduino.

Сообщение Spirit » 03 июл 2015, 00:21

Spirit писал(а):P3.1 (+ от контроллера на аноды светодиодов) - подключу ШИМ.
P3.2 (- на катод) - предположил, что DIRы всегда находяться в противофазе, поэтому подключу тот выход DIR у которого "лог.0" при прямом вращении;
P3.3 (- на катод) - подключу тот выход DIR у которого "лог.0" при обратном вращении.


Будь внимательней - не схеме ножки разъема иначе подсоединены. P3.3 идет на аноды.

Точно :roll: , поторопился.
Скачал datasheet других производителей, в некоторых схемах действительно стоят инверторы :(

Я попрошу: - посмотрите PDF по ссылке https://www.fairchildsemi.com/datasheets/6N/6N137.pdf или http://www.ti.com/lit/ds/symlink/hcpl2630.pdf
Что означает параметр: VF Input Forward Voltage, почему его номинал всего1.6V? При этом VR Reverse Input Voltage 5V.
Значит ли это, что прикладываемое напряжение при обратной полярности (светодиод не светит), должно быть не больше 1,8В?
Аватара пользователя
Spirit
SIMER
 
Сообщения: 300
Зарегистрирован: 18 ноя 2014, 14:40
Откуда: Киев
Благодарил (а): 85 раз.
Поблагодарили: 95 раз.
Баллы репутации: 58
Технарь

Re: Новейшая прошивка для Arduino.

Сообщение Spirit » 03 июл 2015, 00:35

Правильно ли я понимаю, что для инвертирования сигналов на выходах, в прошивке достаточно установить знак "-" в строках, отвечающих за вывод pinDIR и pinPWM?
Аватара пользователя
Spirit
SIMER
 
Сообщения: 300
Зарегистрирован: 18 ноя 2014, 14:40
Откуда: Киев
Благодарил (а): 85 раз.
Поблагодарили: 95 раз.
Баллы репутации: 58
Технарь

Re: Новейшая прошивка для Arduino.

Сообщение Ale » 03 июл 2015, 07:27

Spirit писал(а):
Я попрошу: - посмотрите PDF по ссылке https://www.fairchildsemi.com/datasheets/6N/6N137.pdf или http://www.ti.com/lit/ds/symlink/hcpl2630.pdf
Что означает параметр: VF Input Forward Voltage, почему его номинал всего1.6V? При этом VR Reverse Input Voltage 5V.
Значит ли это, что прикладываемое напряжение при обратной полярности (светодиод не светит), должно быть не больше 1,8В?

Нет, не значит.

Во первых не понятно, почему ты говоришь про " обратную" полярность если в даташите речь идет о "прямом" падении напяжения 1.8в?

А во вторых - это означает, что когда через диод течет ток в прямом направлении (диод светит), то на диоде будет падать макс 1.8 вольта. Соответсвенно остаток (5 - 1.8 = 3.2 В) будет падать на токозадающем резисторе, который ОБЯЗАТЕЛЬНО должен быть включен последователтно с диодом. На твоей схеме (естественно) есть эти резисторы.
А поскольку обратное напрядение по даташиту 5В ,можешь подавать на вход схемы логические уровни совершенно спокойно.
Аватара пользователя
Ale
Разработчик
 
Сообщения: 1477
Зарегистрирован: 01 фев 2011, 20:48
Откуда: Дубна
Благодарил (а): 570 раз.
Поблагодарили: 595 раз.
Баллы репутации: 277
ТехнарьТехнарьТехнарь

Re: Новейшая прошивка для Arduino.

Сообщение Ale » 03 июл 2015, 07:34

Spirit писал(а):Правильно ли я понимаю, что для инвертирования сигналов на выходах, в прошивке достаточно установить знак "-" в строках, отвечающих за вывод pinDIR и pinPWM?

Нет. Установка уровней на ножках контроллера Arduino осуществляется процедурой
digitalWrite(pin, HIGHT) для установки лог 1 и
digitalWrite(pin,LOW) для установки лог 0.
Никаких знаков плюс/минус не предусмотрено.
Аватара пользователя
Ale
Разработчик
 
Сообщения: 1477
Зарегистрирован: 01 фев 2011, 20:48
Откуда: Дубна
Благодарил (а): 570 раз.
Поблагодарили: 595 раз.
Баллы репутации: 277
ТехнарьТехнарьТехнарь

Re: Новейшая прошивка для Arduino.

Сообщение Spirit » 03 июл 2015, 16:42

Нет, не значит.

Во первых не понятно, почему ты говоришь про " обратную" полярность если в даташите речь идет о "прямом" падении напяжения 1.8в?

А во вторых - это означает, что когда через диод течет ток в прямом направлении (диод светит), то на диоде будет падать макс 1.8 вольта. Соответсвенно остаток (5 - 1.8 = 3.2 В) будет падать на токозадающем резисторе, который ОБЯЗАТЕЛЬНО должен быть включен последователтно с диодом. На твоей схеме (естественно) есть эти резисторы.
А поскольку обратное напрядение по даташиту 5В ,можешь подавать на вход схемы логические уровни совершенно спокойно.

Спасибо за подробные объяснения.
Ale писал(а):
Spirit писал(а):Правильно ли я понимаю, что для инвертирования сигналов на выходах, в прошивке достаточно установить знак "-" в строках, отвечающих за вывод pinDIR и pinPWM?

Нет. Установка уровней на ножках контроллера Arduino осуществляется процедурой
digitalWrite(pin, HIGHT) для установки лог 1 и
digitalWrite(pin,LOW) для установки лог 0.
Никаких знаков плюс/минус не предусмотрено.


А как организован вывод уровней на pinPWM? Как на нем програмно инвертировать сигнал?
Аватара пользователя
Spirit
SIMER
 
Сообщения: 300
Зарегистрирован: 18 ноя 2014, 14:40
Откуда: Киев
Благодарил (а): 85 раз.
Поблагодарили: 95 раз.
Баллы репутации: 58
Технарь

Re: Новейшая прошивка для Arduino.

Сообщение Ale » 07 июл 2015, 21:50

Так, вот подправленная прошивка 2DOF для ардуино.
Теперь появилась возможность выбирать частоту ШИМ из трех = 100, 200 (по умолчанию) и 400 Гц
Режим работы - 2 пина направления + 1 пин ШИМ на каждый мотор. Стандарт подключения - как для MotorMonster Shield

Код: Выделить всё
#define potL        A5
#define potR        A4

#define motorL_PWM   5
#define motorL_DIRA  7
#define motorL_DIRB  8

#define motorR_PWM   6
#define motorR_DIRA  4
#define motorR_DIRB  9


Ale_2DOF_Arduino_code_PD.rar
(5.21 КБ) Скачиваний: 113


ardSimCTRL.rar
(331.28 КБ) Скачиваний: 113


Напоминаю, что реализовано ПД-регулирование.

В общем... Пока стенд все таки не получается собрать. Так что жду тестеров.
Аватара пользователя
Ale
Разработчик
 
Сообщения: 1477
Зарегистрирован: 01 фев 2011, 20:48
Откуда: Дубна
Благодарил (а): 570 раз.
Поблагодарили: 595 раз.
Баллы репутации: 277
ТехнарьТехнарьТехнарь

Re: Новейшая прошивка для Arduino.

Сообщение Fox-48 » 07 июл 2015, 23:40

Ale писал(а):Так что жду тестеров.

Завтра попробую попробовать :)
Правда с моим левым мотором не знаю получится ли объективный тест, но за одно и мотор проверю.
Fox-48
Комсорг
 
Сообщения: 128
Зарегистрирован: 28 июн 2011, 09:33
Благодарил (а): 27 раз.
Поблагодарили: 12 раз.
Баллы репутации: 15
Новичок

Re: Новейшая прошивка для Arduino.

Сообщение Spirit » 08 июл 2015, 01:11

Ale, подскажи пожалуйста как в прошивке инвертировать сигнал ШИМа, если это возможно и не сложно. Не хочеться курочить мост, если можно программно решить вопрос. Я тоже смогу потестировать прошивку, правда пока на макете, с моторами я так и не определился пока.
Аватара пользователя
Spirit
SIMER
 
Сообщения: 300
Зарегистрирован: 18 ноя 2014, 14:40
Откуда: Киев
Благодарил (а): 85 раз.
Поблагодарили: 95 раз.
Баллы репутации: 58
Технарь

Re: Новейшая прошивка для Arduino.

Сообщение Ale » 08 июл 2015, 07:50

Spirit писал(а):Ale, подскажи пожалуйста как в прошивке инвертировать сигнал ШИМа, если это возможно и не сложно. Не хочеться курочить мост, если можно программно решить вопрос. Я тоже смогу потестировать прошивку, правда пока на макете, с моторами я так и не определился пока.


Spirit, я думаю, что сбил тебя с толку. Да, оптоизоляторы инвертируют сигнал. Но давай посмотрим, как это влияет на работу моста и стоит ли искусственно инвертировать входные сигналы.

Давай нарисуем "таблицу истинности" для твоего моста. Оценим сигналы на входных и выходных (на моторе) контактах моста.

Только одно предварительное замечание - в твоем мосте пины INH драйверов BTN7970 заведены на шину питания VIN. Это означает, что мы не можем перевести драйверы в "sleep" режим, когда все силовые ключи отключены и выходные контакты драйверов "висят в воздухе". При подаче питания на твой мост контакты OUT обоих драйверов ОБЯЗАТЕЛЬНО будут через внутренние ключи подключены либо к земле, либо к питанию.

Теперь рисуем таблицу для того, что бы увидеть, какое напряжение будет на контактах, к которым подключается мотор (Motor-H - выход верхнего по схеме драйвера, Motor-L - выход нижнего драйвера). VO1 и VO2 - это выходные пины опторазвязки с учетом инверсии.




PWM(P3.3) .. DIRA(P3.2) .. DIRB(P3.1) ..... VO1 ......... VO2 ......... Motor-H ........ Motor-L
.... L ............. L ............. L ............. H ............. H ............. VIN ............. VIN ----- тормоз на VIN
.... H ............. L ............. L ............. L ............. L ............. GND ............ GND ---- тормоз на GND
.... L ............. H ............. L ............. H ............. H ............. VIN ............. VIN ----- тормоз на VIN
.... L ............. L ............. H ............. H ............. H ............. VIN ............. VIN ----- тормоз на VIN
.... H ............. H ............. L ............. H ............. L ............. VIN ............. GND ---- вращение ВВЕРХ
.... H ............. L ............. H ............. L ............. H ............. GND ............. VIN ---- вращение ВНИЗ

как видно из таблицы мост будет выполнять свои функции без инвертирования входных сигналов.
Если на пине PWM будет высокий уровень а на одном из пинов направления - низкий, то мотор будет вращаться. Скорость вращения будет определяться скважностью ШИМ на пине PWM.

Ну а в прошивке, тем не менее, имеется возможность инвертировать управляющие сигналы, остаточно подправить вот эти строчки

Код: Выделить всё
//====================================================================================
//======= определяем УРОВНИ для сигналов (тут можно инвертировать при необходимости ==

#define   PWM_LOW    LOW
#define   PWM_HIGH   HIGH
#define   DIR_LOW    LOW
#define   DIR_HIGH   HIGH


Вообще в тексте прошивке все написано. Читайте и изучайте.

PS: Возможно не совсем понятны строки таблицы 4 и 5. Вроде как на пинах отдельных DIR есть высокий уровень, а мотор все равно не будет крутиться. Тут как раз стоит вспомнить о том, что входные пины - это фактически выводы светодиода опторазвязки. И комбинация уровней, когда на катоде (-) светодиода напряжение выше, чем на аноде (+) приводит к тому, что ток через светодиод все равно не течет, и он остается "погашенным"...

PSS: Еще раз обращаю внимание - прошивка сырая, а мосты с моторами - вещь хрупкая.
Я один раз уже насоветовал человеку, он мост сходу и сжег. Да и у меня вот выгорел, так и не понял - почему.

Процесс включения системы должен идти ОЧЕНЬ постепенно. Желательно с осциллографом. Сначала прошиваем ардуину, подключаем потенциометры и убеждаемся, что есть связь с программой на компьютере, и данные с АЦП передаются. Потом включаем мост без мотора, и на светодиодах с резисторами, подключенных к выходу вместо мотора убеждаемся в адекватности работы моста и прошивки. Потом подключаем мотор (без закрепленного на оси резистора) и просто крутим его в разные стороны поворачивая ручку резистора. Тут, кстати, и нужно убедиться, что мотор и резистор (после его закрепления) будут "в фазе" . Потому что есть вероятность 50 на 50, что надо перебросить либо концы мотора либо концы резистора, что бы система слежения прошивки не пускалась в разнос...
Аватара пользователя
Ale
Разработчик
 
Сообщения: 1477
Зарегистрирован: 01 фев 2011, 20:48
Откуда: Дубна
Благодарил (а): 570 раз.
Поблагодарили: 595 раз.
Баллы репутации: 277
ТехнарьТехнарьТехнарь

Re: Новейшая прошивка для Arduino.

Сообщение Spirit » 08 июл 2015, 13:57

Я ранее смотрел тестером выходы а2630, они инвертируют сигнал как ты и говорил. На входы драйверов при подаче питания подается лог 1. Может я не правильно понимаю работу ШИМ... я думал, что ксли на выходе ардуины скважность 10% то после инверсии на опторазвязке я получу скважность 90%. (при условии, что катод на земле, а шим подается на анод).
Я пытался сам разобраться в прошивке, но моих знаний пока не хватило. Теперь же все ясно. Спасибо.
У меня есть маленькие моторчики на 12В, попробую с нимим потестировать. Поэтапно, как ты расписал.
А с осциллографом пока сложно, пытался сделать программный, который включается на вх. Звуковой карты, но он не показывает уровень напряжения, только всплески.
Я отпишусь по результатам.
Аватара пользователя
Spirit
SIMER
 
Сообщения: 300
Зарегистрирован: 18 ноя 2014, 14:40
Откуда: Киев
Благодарил (а): 85 раз.
Поблагодарили: 95 раз.
Баллы репутации: 58
Технарь

Re: Новейшая прошивка для Arduino.

Сообщение Ale » 08 июл 2015, 14:57

Spirit писал(а):Я ранее смотрел тестером выходы а2630, они инвертируют сигнал как ты и говорил. На входы драйверов при подаче питания подается лог 1. Может я не правильно понимаю работу ШИМ... я думал, что ксли на выходе ардуины скважность 10% то после инверсии на опторазвязке я получу скважность 90%. (при условии, что катод на земле, а шим подается на анод).


Насколько я понимаю, для твоего моста не страшен 100% ШИМ. Поэтому он может работать как бы "зеркально" - то есть что на драйверах низкий уровень на входах IN, что высокий - логика работы от этого не меняется. Если на входах IN обоих драйверов высокий уровень - мотор обоими концами подключен к +Питания ( режим динамического торможения). Если на обоих входах IN драйверов низкий уровень - мотор обоими концами подключен к Земле питания - тот же режим динамического торможения.

Вообще требования не превышать 95% ШИМ относится к схемам мостов, где есть специальная цепь подзарядки импульсным напряжением для надежного запирания верхнего ключа моста (bootstrap конденсатор). Но в твоей схеме его нет (да он вроде для этих драйверов и не нужен).

Как-то так.
Аватара пользователя
Ale
Разработчик
 
Сообщения: 1477
Зарегистрирован: 01 фев 2011, 20:48
Откуда: Дубна
Благодарил (а): 570 раз.
Поблагодарили: 595 раз.
Баллы репутации: 277
ТехнарьТехнарьТехнарь

Re: Новейшая прошивка для Arduino.

Сообщение Spirit » 10 июл 2015, 18:02

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

1. Потенциометр на валу не крепил, наблюдал как ведет себя двигатель в зависимости от положения ручки потенциометра.
При положении потенциометра в значениях от 0 до 7, ШИМ плавно снижается в значениях с 212 до 142, в положении 8 - ШИМ достигает 127 (0%), а уже в положении 9 резкий скачек ШИМ на значении 227 (95%)... далее 95% держиться вплоть до условной середины.
Пройдя середину до положения 135, ШИМ плавно увеличиваятся до 27 (теже 95% ШИМа) и держиться на 95% до положения ручки потенциометра в значении 246, далее следует снова бросок на 0% ШИМа и дальнейшее увеличение до 95% ШИМ в положении ручки 255.
Вопрос - это так задумано?

2. С программной сменой инверсии PIN PWM получается совсем не то, что я думал... напряжение в рабочем диапазоне (значения положения от 9 до 245) колеблются в пределах от -1,53 до 1,53В, но в зоне 0..8 и 246..255 получаем регулирование вплоть до 12В.
Но наверно, это не существенно, так как в стандартном режиме все работает (правда логика подсказывает, что в моем случае сигнал ШИМа надо инвертировать :D, так как он искажается пройдя опторазвязку.)

Прочитал написанное- понять сложно, присоединю табличку и видео.
Изображение
phpBB [video]

phpBB [video]
Аватара пользователя
Spirit
SIMER
 
Сообщения: 300
Зарегистрирован: 18 ноя 2014, 14:40
Откуда: Киев
Благодарил (а): 85 раз.
Поблагодарили: 95 раз.
Баллы репутации: 58
Технарь

Re: Новейшая прошивка для Arduino.

Сообщение Ale » 11 июл 2015, 12:15

Spirit писал(а):Прочитал написанное- понять сложно, присоединю табличку и видео.


Странно...
попробуй вот с этой прошивкой ... Не должен появляться ноль шима при близких к краю положениях потенциометра..

Ale_2DOF_Arduino_code_PD_11_07_15.rar
(5.21 КБ) Скачиваний: 107


Кстати - из программы ardSimCtrl можно устанавливать коэффициенты Kp и Kd - пропорционального и дифференциального регулирования.

Вот тут (на картинке) есть поле ввода в котором можно написать строку, которая по нажатию на кнопку "SEND" будет передана на ардуину.
Для установки Kp нужно передать строку типа
PXX ( где XX - 16-ричное значение коэффициента)

Соответственно для установки Kd -
DXX

Строку можно формировать сразу для двух коэффициентов, что и показано на картинке
Установка коэффициентов.jpg
Установка коэффициентов.jpg (27.95 КБ) Просмотров: 15712


Коэффициенты запоминаются в EEPROM (энергонезависимой памяти) ардуины.
Аватара пользователя
Ale
Разработчик
 
Сообщения: 1477
Зарегистрирован: 01 фев 2011, 20:48
Откуда: Дубна
Благодарил (а): 570 раз.
Поблагодарили: 595 раз.
Баллы репутации: 277
ТехнарьТехнарьТехнарь

Re: Новейшая прошивка для Arduino.

Сообщение Spirit » 12 июл 2015, 00:30

Ale писал(а):
Spirit писал(а):Прочитал написанное- понять сложно, присоединю табличку и видео.


Странно...
попробуй вот с этой прошивкой ... Не должен появляться ноль шима при близких к краю положениях потенциометра..

Ale_2DOF_Arduino_code_PD_11_07_15.rar




Ну по моему мнению получилось именно то, чего ты добивался. Поздравляю. Прошивка работает в моем понимании отлично. Коэффициенты не настраивал - пока не разбирался, что на что влияет. Тестировал в стандартной конфигурации.

Стенд:
В качестве нагрузки был двигатель 12В 90Вт. Если получиться достать в ближайшее время двигатель 300 Вт 24В , тест повторю. Питание бралось от замученного аккумулятора - тобиш 12в на нем было первые 5 минут, далее напряжение опустилось до 10-9В.
В основном гонял на холостом ходу, пару раз придерживал вал, чтоб увеличить потребляемый ток.

Напомню, что у меня на выходе опторазвязки при отсутствии упр. сигнала на обоих драйверах "лог.1", что приводит к динамическому торможению (замыкание обмотки через +).
Так вот драйвер при таком подключении даже и не думал нагреваться в таких режимах, мотор собственно тоже.

На вход подавал как синусоиду так и меандр.
На маленьких значениях мотор плавно раскручивается и плавно тормозит. На больших включается полный ШИМ.
ШИМ следует за амплитудой, не перелетая.

В данной версии провалов по потенциометру не замечено во всем диапазоне.

phpBB [video]


Вопрос на будущее: прошивка 4/6DoF планируется на базе этой версии или отдается на самостоятельную доработку 8-) ?
Аватара пользователя
Spirit
SIMER
 
Сообщения: 300
Зарегистрирован: 18 ноя 2014, 14:40
Откуда: Киев
Благодарил (а): 85 раз.
Поблагодарили: 95 раз.
Баллы репутации: 58
Технарь

Re: Новейшая прошивка для Arduino.

Сообщение Ale » 12 июл 2015, 00:51

Spirit писал(а):Вопрос на будущее: прошивка 4/6DoF планируется на базе этой версии или отдается на самостоятельную доработку ?

Для 6-dof наверное Arduino Mega понадобится - ножек у Arduino Uno не хватит. Но попробую сделать со временем. 4-dof сделаю. Но не возбраняется и самому поэкспериментировать. Там все довольно просто.
Аватара пользователя
Ale
Разработчик
 
Сообщения: 1477
Зарегистрирован: 01 фев 2011, 20:48
Откуда: Дубна
Благодарил (а): 570 раз.
Поблагодарили: 595 раз.
Баллы репутации: 277
ТехнарьТехнарьТехнарь

Пред.След.

Вернуться в X-SIMULATOR и RU-SIMULATOR & SimTools

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 238

cron
x

#{title}

#{text}