Блок схема не проблема, только где ее рисовать? В ворде это нереально, а спецсофта не видел. Слышал коммутаторы бывают разными, особенно DC-CDI, Альтиум для управления такими использовал ногу "Flyback". В печатке к этой схеме перемычками можно менять очередность импульса, а по неисправности это врятли, у вас же мотор заводится нормально. На всякий имеется печатка товарища Iszak. Ниже схема, одна и та же, но выполнена в разных прогах.
Вложения:
Комментарий к файлу: Печатка которую делал Iszak CDI_2.1.asm [25.52 KiB]
Скачиваний: 418
На счет програм, кроме ворда ничего в голову не приходит, но там чертить, то еще удовольствие)) А не проще вместо двух оптопар использовать pc814? Вот нашел в поиске https://proglib.io/p/6-diagram-services/
На счет программ:Спойлер (Нестандартное использование всё того-же АБ...)но после оценки alexhrа (хоть бы написал, за что...) желания расписывать алгоритм поубавилось... т.ч. дальше сами...
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
но после оценки alexhrа (хоть бы написал, за что...) желания расписывать алгоритм поубавилось... т.ч. дальше сами...
О, как же это знакомо и предсказуемо. Подобными гурями, интернет как помойка завален. Рассказывают как быстро и легко "обучат программированию". Особые долгожители даже сподабливаются на первый-второй урок. Но всё заканчивается на "помигать светодиодиками" или написать Привет Мир. Большего их умишко выдумать не в состоянии и они сливаются. С поводом или без. А те, повёлся на их развод, остаются с пониманием что потратили своё время на чью-то детскую психотравму и обучились никому не нужному умению мигать светодиодиками.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Если это про меня, то - не согласен, здесь я ни кому не обещал обучения (да и вообще ничего не обещал)... привел лишь пример, как можно удобней чем в ворде расписать алгоритм (как сам иногда делаю)... а в предыдущем сообщении попытался показать мостик понимания между Сшниками и АССЕБЛЕРщиками... т.к. сам начал понимать ассемблер именно с этой программы (доосвоить систему команд оказалось проще, когда уже было понятно про регистры и прочую внутренность мк, чем пытаться понять сразу всё).
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
а если править/двигать? всё заново рисовать? (ну или часть) в АБ стрелки сами тянутся за блоком, блок при перетаскивании двигается весь целиком... довольно удобно, жаль только рамок вокруг кода нет...
Добавлено after 6 minutes 43 seconds: пойду я пожалуй отсюда, пока опять минусов не навешали...
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Разбираемся с v.2.1 (с переходами) Есть идеи... Но голова уже.... ;===второй сигнал датчика=== datchik2: ...........
Зачем записывать FF в R11R12 и потом умножать на 1023/длина метки? Или еще. R11R12 умножаем на 1023/длина метки. Получаем R13R14. Т.е. число относительно 360град (для выбора из таблицы R25). А потом (R25-R23) и вычисляем задержку относительно R13R14 и прибавляем к R11R12. Почему не так ... (R25-R23) и вычисляем задержку относительно R11R12 и прибавляем к R11R12?? Не силен в математике на ассемблере. Может Флэш хоть "на пальцах" пояснит все эти умножения и почему так. Точность угла? ПС. На стенд еще не загружал с осциллографом. Там все будет видно. Еще. Зачем в "holostie" записывать в R9R10 FFFF, если потом в "datchik2" потом опять пишем тоже. Два раза!!
Буду еще разбираться с "холостие". Уже писал, что если записывая FF, угол при 480об уходит очень далеко. Но при еще уменьшении оборотов, угол начинает сдвигаться назад. (пока не пойму почему) Записал в "холостые" EA60. Так у меня получилось на версии 1. Не знаю. Возможно при пуске обороты у мото меньше 480? И можно используя счет от первой и второй метки умножая на задержку по 500об, сдвигать угол еще.
Из увиденных программ остановился на рисовалке AFCE, относительно удобно хотя и сильно ограничено. При постройке блок-схемы многие узлы упростил, иначе рисование заняло слишком долго, но основной код работает как на картинках. Автоопределение длины метки показывать не стал, оно не влияет на работу. Рисовалка не заточена под ассемблер, приемы разные, например для АСМ считается нормой бесконечный цикл, и переходы по десять раз, а здесь совсем все по Си'шному, никакого GoTo
asel писал(а):
Не силен в математике... Зачем в "holostie" записывать в R9R10 FFFF, если потом в "datchik2" потом опять пишем
Затем что существует замедление вала, условие "holostie" может не выполнится, но между метками замедление поршня вполне достигнет значения при котором оно бы выполнилось, если бы у нас был весь оборот, расчет по R11R12 должен это учитывать, вы же сами сколько раз говорили о торможении поршня? Существует три частных случая для второго "позднего" импульса: - обороты более 460/мин, нормальный счет математики из таблицы; - обороты 60...460/мин, условие "holostie" между метками не происходит, но должно произойти при полном обороте, угол будет из первой ячейки таблицы, R9=0xFF; - обороты менее 60/мин, условие "holostie" выполняется между импульсами датчиков, R9:R10=0xFFFF, R11:R12=0xFFFF, R13:R14=R24:FF
asel писал(а):
вычисляем задержку относительно R13R14 и прибавляем к R11R12. Почему не так ... (R25-R23) и вычисляем задержку относительно R11R12??
Чтобы делать вычисление на базе R11R12 нужно перевести их в 0.7°, а там как раз это и сделано, R13R14 это 1.4° У меня встречный вопрос, если вы не сильны в математике и кодинге АСМ, зачем резать и мучится с кодом? Почему просто не использовать оригинал?
Флэш, не с того начал. Сначала общая структура. В какой последовательности расположены эти блоки? Затем выложенные блоки. И наконец кусок кода по каждому блоку.
Flash.#13 Оригинал "сырой" и неотесаный. Я понимаю, что 2х2=4. Но зачем делать 2х5-6=4? Непонимаю. Потом немного понял что при 600об 50027импульсов, а при 500об 60124импульса, и их нужно как то привести к 360градусам. Потом еще понял, что вы делаете программу универсальную 2.1. И так как длина метки разная, то нужно сделать такие сложные формулы расчетов. Ладно с этим. Поверим вашим расчетам. Еще вопрос. Раз уже пошли ниже 460оборотов в версии 2.1, которые можно легче посчитать , отталкиваясь оборота по длине метки. 600обор = 50027импульсов = С36В ---С3 инвертируем = 60. 500обор = 600124импульса = ЕАDC ---EA инвертируем = 21 460обор = переполнение =FFFF Почему в таблице нет числа 21? Немного также не понимаю. В таблице крайнее число 60, что есть 600оборотов. А в графике крайнее число 500оборотов. Т.е. все что ниже 600оборотов расчитывается как FFFF?. Пс. Возможно это и лишнее. Зима долгая, пока еще "стенд" не включал... Попробую также нарисовать всю блок-схему для себя. Есть пару нюансов, учтены ли они?
Последний раз редактировалось asel Ср ноя 20, 2019 08:58:18, всего редактировалось 2 раз(а).
Здравствуйте. Подскажите на что обратить внимание. Мопед дельта 72сс, прошивка контроллера v2.1, настройки по умолчанию, ничего не правил. Проблема следующая: мопед заводится и работает не средних и больших оборотах, но светодиод не тухнет. На малых оборотах работает секунд 10 и глохнет. Завести можно только после полного снятия питания с контроллера, светодиод при этом потушен.
ats4 то что не тухнет диод говорит что МК не смог провести "автозамер", угол датчика нужно смотреть "вручную", собираюсь тестировать 2.1 на мото, может увижу еще чего, 2.1 еще не испытывалась на реальной технике
asel угол в таблице задается программой правки графика, по умолчанию начинается с 0...600..., и ничего не мешает кликнуть мышкой, и задать там 500/мин.
Arwood понимаю о чем вы, но делать такой детальный разбор будет очень долго, примерно как писать сам код, при том программисту такое разжевывание и ненужно, он сразу поймет что внутри, ассемблер простой язык, а самого кода там всего 8 страниц А4. К тому же для АВР делать подобные проекты не на ассемблере плохо, на Си оно будет работать только с STM32, у меги8 не то ядро. Текущая проблема не в языке, а в том что мне нужно идти, и испытывать плату на мото, а такая возможность сейчас есть.
Flash.#13 меня смущает то, что на малых оборотах секунд через 10 двигатель глохнет и до полного снятия питания его не заведешь. На v2.0 наблюдалось что то похожее, поэтому грешу на железо.
Flash.#13 Испытывать нужно на стенде. Моторчик-диск-метка-датчик-двухлучевой осциллограф. Все видно. Например при пуске. Моторчик вращается. Осциллограф в сингл. Включаете питание на Фуоз. И осцилограф показывает и первый и второй и третий импульсы.
Ладно. В "norm" минимальные обороты 600. =60 Можно ли дописать, вписать, добавить строчку (или как вам еще объяснить) 500об. =21? Т.е. в программе , всечто ниже 600, это переполнение. cpi R21, 60 ;сравнение РОН с контстантой brsh rpm0k6 ;если больше или равно cpi R21, 21 brsh rpm0k5 clr R26 ;если 500 и меньше об/мин
ну и там далее поменять.
В чем проблема? ПС. Попробую на сденде все сфоткать с осциллографа и выложить. Как оно есть в реальности. ПС2. В v.1 дописал вот так. Посмотрим, что это дает в реале.. 32 строки, как и написано. А не 31. Т.е. 500об из таблицы будет как положено 500об. А ниже 500об будет FFFF
cpi R21, 60 ;сравнение РОН с контстантой brsh rpm0k6 ;если больше или равно cpi R21, 21 ;сравнение РОН с контстантой brsh rpm0k5 ;если больше или равно rjmp RpmEnd ;всего 32строки ............... rpm0k6: ldi R26, 0x01 rjmp RpmEnd rpm0k5: ldi R26, 0x00 ;адрес ОЗУ "lowХ" определен ;задействованно ОЗУ 0х0100-0х011F,32строки RpmEnd:
ats4 понял вас, скоро буду тестировать на моторе у себя, думаю вылезет и смогу вылечить. Похоже на автоопределение угла, что МК не может его корректно нащупать, попробуйте подобрать угол в программе правки графика, параметр "длина метки", это длина магнитного наплыва.
asel изменить строчку можно без проблем, хоть на 01, сколько это в оборотах нужно считать, а вот добавить ее сложнее, сейчас в таблице ОЗУ 32 строки. ЧТобы не мучится возьмите оригинал и в прогамме графиков измените обороты на 500/мин, нажмите сохранить и посмотрите как она изменит значение на той предпоследней строчке.
Flash.#13 Поменял. Было 460-600-700 Стало 460-500-600. Просто нужно нормально писать описание и т.п. . Что 460 это не 460. А все что ниже 600, или (по тому как стало) ниже 500. Ты же борешься с пуском тапкой. Какие обороты при пуске лаптем? Но если сделать так, то теряем одну строчку в таблице.
А почему нельзя , как я написал постом выше. Добавив строчку. Ну убрал clr R26. Программа зависнет?
Еще. Нарисовал блок-схему. И много чего "полезло". Ну это конечно "фонтан". datchik2: .. ;если есть разрешение,считаем 0.7° sbrs R20, 7 ;if bitX,n='0' then do rjmp jmp1 ;очень низкие обороты ser R16 ;R16=0xFF mov R11,R16 mov R12,R16 jmp1:
Это ж когда Р20, 7 будет равно 1? Ну да. Есть вариант, когда датчик стоит между первой и второй меткой. И запускаем мотор. И что дальше? Все равно все пойдет от первой метки....
Отрезал больному ногу, вторая осталась Вы же не смотрите зачем нужны строки которые удаляете, затем обвиняете, код "сырой", и тянетесь "улучшать". В таблице 32 точки, вот вы убрали одну из них, программа зависнет? У вас есть замысел зачем это делать и как должно быть? Напишите код с нуля! А то получается кривой магнитофон, отрезали, вроде едет, режем дальше... РОН20,7 будет "1" когда поршень остановится не дойдя до второй метки, что произойдет? Водитель повторно дернет лапку кик-стартера, но счетчик прошел круг и данные уже некорректны, а вы снова тянетесь вырезать условие, которое защищает от отдачи, чтобы экономить пол микросекунды и пару байт пространства.
Flash.#13 Понятно. с 500, 600. Поэтому я и записываю не FFFF, а EA60=500 оборотов. А FFFF -это 458 оборотов. Ну это уж совсем мало. И очень большая разница между 600 и 458. Т.е. при 580об, угол уже будет как по 460. Разобрались.
Чтобы мотор заглох, и остановился между метками. Я даже такое не мог предположить
Да и ошибка ;второй(поздний) импульс датчика ;при первом проходе разрешим обработку датчика2 (правильно. вкл. ожидание датчика2) ori R20, 0b00001000 ;sbiR20/3,контроль andi R20, 0b11011111 ;cbiR20/5,контроль ret А R20, 5 зачем выключили? (датчика1) И зачем "гонять" по всему кругу, ожидая датчик2? "ret" заменить на "rjmp norm". Хотя и так и так есть нюанс. Если датчик2 придет в момент перед : sbrc R20, 2 ;if bitX,n='1' then do rjmp vtoroi ;переход на мат2 а не перед norm? То получим R25 из полного оборота, а не от дат1 до дат2. Как решить? Предлагаю вместо "вкл ожидания дат2", вписать цикл "ожидания дат2" (как в версии 2.0), и выход rjmp norm
Здесь----- iskra: clr R29 ;ослепление sbrs R20, 3 ;if bitX,n='0' then do sbi PortD,7 ;лог"1"на выход "flyback" sbrs R20, 3 ;if bitX,n='0' then do sbi PortC,0 ;лог"1"на выход "искра" andi R20, 0b11010011;cbiR20/532,контроль ret Почему R20, 4 =1? Еще хотим искру? sbrs R20, 3 if bitX,n='0' then do зачем?
Еще одна беда. Как поведет себя программа..? Например хх обороты. Угол-задержка находится в диапазоне R25=R23. И например - замедление или разгон маховика от дат1 до дат2, при нестабильных оборотах. Сложно. Пока посчитаем, что произойдет с углом.
ПС. Просто было интересно что вы там наваяли в программе. Что и для чего. Больше писать вам не буду. "Глухой со слепым."
Последний раз редактировалось asel Чт ноя 21, 2019 13:09:19, всего редактировалось 5 раз(а).
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 25
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения