Новый регулятор скорости с реверсом

Иван

У меня тут вопрос - просьба опишите как вообще прогармировать контроллер для регулятора. Меня интересует процесс. и желатьльно по подробнее. Можно даже статью на этот счёт на сайт выложить?

3 months later
Mark_Haskov

Кто нибудь повторил рег?
у меня пока тоже не заводиться…

Иван
Mark_Haskov:

Кто нибудь повторил рег?
у меня пока тоже не заводиться…

Я собирал:)
У мен ятоже не запустился, но оказалось битый пик был:(

Sergo
romychs:

Сам шью пики программатором и ПО взятыми здесь: pic16F84.narod.ru пишет абсолютно без проблем. Хороший софт здесь: www.ic-prog.com

Вопрос: а какие параметры Вы выставляли в IC-Prog чтобы определялся программатор с сайта pic16f84.narod.ru

Добавлено

Sergo:

Вопрос: а какие параметры Вы выставляли в IC-Prog чтобы определялся программатор с сайта pic16f84.narod.ru 

Вопрос снимается, там на сайте все написано 😁

Mark_Haskov
Иван:

Я собирал:)
У мен ятоже не запустился, но оказалось битый пик был:(

ну а потом заработал?

bvv

Раз никто не отвечает, поделюсь своим опытом. Скорее всего проблема в неправильном программировании. В PIC12F675 при выпуске заносят поправочную константу, необходимую для правильной работы внутреннего RC-генератора (который и используется в этом регуляторе). Константа заносится в последнюю ячейку памяти программ, т.е. по адресу 3FFh, в виде команды RETLW xx (где xx – сама константа). В программе командами

call 3FFh ;загрузить калибровочную константу
movwf OSCCAL

константа загружается в регистр OSCCAL, что и позволяет правильно работать внутреннему RC-генератору. После загрузки hex-файла регулятора по адресу 3FFh находится значение 3FFh. Поэтому программа просто зависает при обращении по адресу 3FFh.

Теперь перейдем к Вашим действиям. Перед программированием (или стиранием) PIC12F675 нужно считать память программ и записать на листочек значение из ячейки 3FFh. Далее стираем память PIC12F675, проверяем. Загружаем hex-файл регулятора. Изменяем значение в ячейке 3FFh на то, что Вы записали на листочек. Программируем. Проверяем. Всё!

Для тех, кто сначала стер PIC12F675 (так же как и я в первый раз). У меня в PIC12F675 по этому адресу было значение 3490h. Программировал с помощью IC-PROG и JDM-programmer.

Надеюсь помог тем, кто уже наступил или хочет наступить на этот граблик:)))
Успехов!

dynaco

Привет.
Хочу поделиться своей разработкой. Немного сыровата правда, но я работаю над усовершенствованием программы.
Статью я выложил у себя на сайте (пока черновой вариант)
Сорри за рекламму.

www.dynaco.h10.ru/speed.html

вопросы и пожелания приму как здесь на форуме так и в гостевухе на моем сайте (только мыло оставляйте кому отвечать)

Иван
Mark_Haskov:

ну а потом заработал?

пока нет - я ещё новый пик не добыл, даже не знаю чего и делать - вдруг опять битый будет:))

dynaco
Иван:

пока нет - я ещё новый пик не добыл, даже не знаю чего и делать - вдруг опять битый будет:))

Ээээ ребята, а как вы определяте что пик битый?

Ну, симптомы какие?

Mark_Haskov
bvv:

В программе командами

call 3FFh  ;загрузить калибровочную константу
movwf OSCCAL

{}

Спасибо за развернутый ответ!
как попробую - отпишу.

Добавлено

dynaco:

вопросы и пожелания приму как здесь на форуме так и в гостевухе на моем сайте (только мыло оставляйте кому отвечать)

на какой максимально мотор рассчитано?

что за pic 16 f 684? (может pic 16 f 84?) да и нумерация выводов не помешает 😉
кто такие т1 т2 т7 т8, d1-d4 ?
кто такие 2SJ241 - ни в платане ни на chipinfo.ru не нашел.
CEB703AL - даташит на chipinfo.ru есть, а вот где купить?
может вместо 7805 все-таки стабилизатор из серии lm29xx подобрать?
максимальное напряжения акков какое? мне например 12v хоцца. 😉

dynaco
Mark_Haskov:

Спасибо за развернутый ответ!
как попробую - отпишу.

Добавлено
на какой максимально мотор рассчитано?

что  за pic 16 f 684?  (может pic 16 f 84?) да и нумерация выводов не помешает 😉
кто такие т1 т2 т7 т8, d1-d4 ?
кто такие 2SJ241 - ни в платане ни на chipinfo.ru не нашел.
CEB703AL  - даташит на chipinfo.ru есть, а вот где купить?
может вместо 7805 все-таки стабилизатор из серии lm29xx подобрать?
максимальное напряжения акков какое? мне например 12v хоцца. 😉

Пик 16ф684 это из новых ww1.microchip.com/downloads/en/…/41202C.pdf
кстати если я следующую разработку сделаю на dsPIC30Fхххх вы тоже будете искать сходство с 84?
пик который 84 потихоньку выдавливают с рынка как ценой так и более удобными братьями. рекомендую к примеру pic16f628a он и дешевле и намного богаче по периферии встроенной

транзисторы смд - те которые найдете. имхо на частоте 8 кгц проблемм не будет, да и токи там не смертельные. если точно то под рукой оказались
pnp - mmbt2907a ( маркировка 2F> )
npn- mmbt2222a ( маркировка 1P )

Транзисторы полевые можете взять любые (серьезно) но прошу помнить что именно они и ответят на ваш вопрос про максимальный ток и напряжение (заодно и где купить). Я брал то что было под рукой (описано в статье - снял с битых материнских плат от пс.)
Транзисторы должны управляться логическим уровнем ( напряжение на затворе для полного открывания <=4в ) сопротивление открытого канала как можно меньше - от этого зависит нагрев и потери мощности, постоянный прямой ток 20+ ампер, напряжение максимальное 30+ в.

КА7805 использовал потому что были, подобрать lm29xx можно, но в чем ее преимущество? в том что она лоудропаут? это важно при питании от 6 и 7 вольт, если напряжение разряженых аккумуляторов просядет до 7 вольт - уже можно использовать 7805 (у меня на машинке 8 баночек, банками назвать рука не поднимается)

испытывал от 18 вольт, на токе до 1 ампера - более мощного двигателя под рукой не нашлось.

д1-д4 диоды с быстрым восстановлением или шоттки (а точнее я их не поставил даже. )

ЗЫ схему исправил. добавил номерацию и номиналы, обновлю вечером.

Mark_Haskov
dynaco

Пик 16ф684 это из новых ww1.microchip.com/downloads/en/…/41202C.pdf
кстати если я следующую разработку сделаю на dsPIC30Fхххх  вы тоже будете искать сходство с 84?

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

транзисторы смд - те которые найдете. имхо на частоте 8 кгц проблемм не будет, да и токи там не смертельные.  если точно то под рукой оказались
pnp - mmbt2907a  ( маркировка 2F> )
npn-  mmbt2222a  ( маркировка 1P )

вот и ладушки. в схеме то обозначений небыло - отсюда и вопрос.
[quote;121813]ЗЫ схему исправил. добавил номерацию и номиналы, обновлю вечером.
[/quote]
ок.

dynaco
Mark_Haskov:

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

хммм
попробую решить вашу проблемму
у микрочипа в россии есть довольно неплохой информационный сайт и достаточно хороший форум. Там часто обсуждаются как довольно сложные вопросы (по самым новым пикам) так и грабли на которые наступают все (для подобных вопросов есть поиск по форуму)
Там уже обговорены все варианты самодельных программаторов и иже с ними
Но… Серьезные разработчики тоже люди и при правильном подходе вполне войдут в положение человека из деревни и очень даже прошьют кристалл(заодно и купят его в столице) на родном программаторе и вышлют почтой . Имхо по россии это не дорого.

Адрес форума www.microchip.ru/phorum/list.php?f=2

Кстати критика принимается - я действительно довольно небрежен в оформлении документации. У нас на заводе даже перенос оборудования (тяжелых пресов например) производится без чертежей и размеров.

да, для этой разработки я делал генератор ппм на pic12f675 - этакий сервотестер, но с учетом того что у этого пика 4 входа АЦП легким движением руки сервотестер превращается…сервотестер превращается… в 4х канальный цифровой ппм кодер… (где вот только джойстики взять и передатчик)

Mark_Haskov
dynaco:

хммм
{}
Адрес форума www.microchip.ru/phorum/list.php?f=2
{}
да, для этой разработки я делал генератор ппм на pic12f675 - этакий сервотестер, но с учетом того что у этого пика 4 входа АЦП легким движением руки сервотестер превращается…сервотестер превращается… в 4х канальный  цифровой ппм кодер… (где вот только джойстики взять и передатчик)

а случайно легким движением руки сервотестер не превращается в контроллер сервы? 😉 а то есть несколько серв с дохлой электроникой…

romychs

А, захотелось легко заполучить цифровую серво ?

Mark_Haskov
romychs:

А, захотелось легко заполучить цифровую серво ?

цифровая - это прошивка должна быть очень сильно заточена под конкретную модель механики. и вылизана до последнего байтика 😉
имхо конечно.
мне бы поуши хватило бы чтоб это по скорости работало на уровне стандартного серво.

ps: а вот вашего вопроса я в принципе не понял. что вы хотели этим сказать?
кому нужно в принципе ваше высказывание? или это попытка устроить флейм?
если хотели о чем-то предупредить dynaco то надо было написать ему в личку наверное…

romychs

Ну если вопроса не поняли, то и отвечать было не нужно… 😃 Извините, обижать не хотел.

Я просто копал в этом направлении, и схему паял и софт писал, даже работает, но того, чего хотелось, так и не получил, просто дело было летом, времени жалко на это дело было, летать хотелось…

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

Вот, даже софт могу показать, схемы на работе нету, где то дома валяется. Да и что там схема - пик+питание+мост

servo.rar

Mark_Haskov
romychs

Ну если вопроса не поняли, то и отвечать было не нужно… 😃 Извините, обижать не хотел.

все. замнем для ясности. 😉

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

я вот как раз это все понимаю - лично у мя очень мало опыта по програмированию под пики. вот и спросил.

[quote;121957]Вот, даже софт могу показать, схемы на работе нету, где то дома валяется. Да и что там схема - пик+питание+мост
[/quote]

общая концепция схемы ясна. эта прошивка работает хотя бы как стандартное серво? если совсем не влом будет - черкани поподробнее схему на всякий случай… ( в принципе из файла все вроде понятно, но на всякий случай 😉

dynaco

оооох
начнем с плохого
пик есть 8 мибитный контроллер который медленно умножает (очень медленно). Для отработки скорости и положения нужно завести обратные связи по току и положению, можно еще бемф мотора мерять. Но все это дополнительная обвязка. В качестве драйвера двигателя теоретически можно использовать драйвер мощного фет транзистора гдето на сайтах роботеров я видел применение какогото максима. Далее обьем кода. Я как то раз подключал асмовские библиотеки с плавающей запятой для логарифмов и еще пары действий - вылез за 3 килобайта. Если писать на си - компилятор с оптимизацией вталкивает это в килобайт - полтора. ну и плюс механика. Короче - я с удовольтвием поучаствую, но я был плохим студентом и тау проспал, заодно и половину привода.

Да - если нужно - то всЁ какоето можно поискамши заменить на конкретные названия

pdfserv.maxim-ic.com/en/ds/MAX4426-MAX4428.pdf вот эти спаренные 1.5а максимальный ток, дип8
максим высылает пару микросхем разработчикам бесплатно
до 8 типов за раз (16 корпусов) =))

Добавлено

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

офтоп - поставил себе халфлайф2 =) я просто приятно поражен. играл до пол четвертого утра. Теперь вот пью кофе…

romychs

Вот, как и обещал, схемы

Первая, это та, на которой я экспериментировал, вторая - проект. Главный недостаток первой, не излишнее количество “ненужных” элементов (резисторы там лишние, еще кое что), они нужны для защиты, в первой схеме отсутствует тормоз. Из за этого качалка сервы чуть пролетает нейтраль и возвращается на место. Боюсь, что практического применения ни схема ни софт не имеют. Все нуждается в доработке. Меня еще мучают сомнения в необходимости PWM для управления мотором. Думаю, что без арифметики с плавающей точкой в данном случае обойтись можно, а складывает, вычитает, умножает и делит на 2 PIC быстро.

Комментарии по второй схеме - приветствуются. Например, D1 - там не нужен, он “встроен” в PIC. X4,X5,X6 - контакты для переменного резистора (X4-ползунок). X1,X2 - питание, X3 - сигнал. X7,X8 - электродвигатель.

PS
А ТАУ я тож подзабыл уже, надо будет лекции перечитать, но как не хочется ворошить прошлое 😃

dynaco

я вот тут чего удумал. У пика ножки свободные остались.

Можно на них сигналы тормоза и реверса повесить. Ну белый фонарь при заднем ходе и сигнал на красные фонари при снижении скорости.

Кстати я порылся по тем транзисторам которые доступны и чтобы цена не кусалась вот к примеру IRF1405 170A выдерживает, и сопротивление у него 0.01 ома (реально там еще меньше - чтото около 0.007) открывается полностью напряжением большим чем 4.5 вольта.

короче следующий буду делать с бутстрепной цепочкой и транзисторы одинаковые. Единственное ограничение будет минимальное напряжение питания 7-8 вольт для стопроцентной гарантии открытия транзисторов.

Опобровал прошивку с нелинейным регулированием - не понравилось.Себе вернул линейный вариант, а на сайте выложу оба.

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

При старте контроллер производит конфигурацию всей периферии и счетчик подтверждения у станавливается в 100 - ровно столько ППМ импульсов нейтрального (1.5мс) положения ждет регулятор для подтверждения безопасного включения. это приблизительно 2 секунды нужно продержать регулятор в нейтрали. Если из-за потери сигнала будут пропущены 3 ППМ импульса подряд то вотчдог сбрасывает контроллер - ну и все с начала. Двигатель останавливается и ждет 2 секунды в нейтрали чтобы начать работу.

Времена - предмет обсуждения и изменения по желанию трудящихся