serg170 писал(а):Да,а как отредактировать прошивку,с помощью какой программы?Если у меня шаг винта 2 мм?
Кажется, пришло время для инструкции по редактированию.
Я наконец-то сделал Makefile, так что, теперь достаточно всего лишь скачать и распаковать два архива.
Итак, инструкция (в основном, для пользователей Windows, те, кто используют Linux и подобные системы, с этим всем знакомы, скорее всего):
1. Скачать
здесь архив с исходниками winding_machine_all.zip, а также архив с компилятором (из папки avr-gcc).
Архив winding_machine_all.zip будет мной обновляться при доработках программы.2. Распаковать оба архива куда-нибудь (не обязательно в одно и то же место), при этом в путях не должно быть пробелов и русских букв (для тех, у кого Windows с русским именем пользователя: не используйте папку пользователя в C:\Users, распакуйте куда-нибудь поближе к корню диска (C:\winding_machine, D:\AVR ли что-то подобное).
3. Открыть файл winding_machine/Makefile (он без расширения, открыть можно любым текстовым редактором), который получен в п. 1 при распаковке архива winding_machine_all.zip.
4. Найти в файле строку
- Код:
CC_BASE = C:/AVR/avr-gcc-8.3.0-x64-mingw
и заменить в ней всё, что написано после знака "=", на тот путь, куда Вы распаковали компилятор (например, если это D:\Electronics\avr-gcc, то надо написать
- Код:
CC_BASE = D:/Electronics/avr-gcc/avr-gcc-8.3.0-x64-mingw
Важно: обратные слеши "\" надо заменить на прямые "/".
Сохранить изменения.
5. Внести нужные изменения в файлы pins.h, lcdlibrary/lcd_definitions.h, winding.h и main.c, сохранить. Использовать можно любой текстовый редактор.
6. Открыть командную строку (нажать Win + R, написать "cmd" (без кавычек), нажать Enter).
7. Перейти в папку winding_machine из распакованного архива. Например, если архив распакован в D:\Electronics\winding_machine_all, то нужно выполнить
- Код:
cd D:\Electronics\winding_machine_all\winding_machine
8. Запустить make. Если компилятор был распакован в D:\Electronics\avr-gcc, то нужно ввести
- Код:
D:\Electronics\avr-gcc\avr-gcc-8.3.0-x64-mingw\bin\make
и нажать Enter.
9. В случае успешной компиляции в конце будет выведено сообщение о занятой памяти:
- Код:
AVR Memory Usage
----------
Device: atmega8
Program: 7712 bytes (94.1% Full)
(.text + .data + .bootloader)
Data: 230 bytes (22.5% Full)
(.data + .bss + .noinit)
Никаких сообщений об ошибках быть не должно. Скомпилированная прошивка находится там, где исходники, по пути winding_machine/bin/Release/winding_machine.hex. Прочие имеющиеся там файлы не используются.
Добавлено after 4 minutes 13 seconds:serg170 писал(а):Я так понимаю,что #define GUIDE_SCREW_PITCH 100 нужно поменять на 50?
Нет, нужно на 200. Это величина шага винта в сотых долях миллиметра.
Добавлено after 13 minutes 31 second:Ivanoff-iv писал(а):применение общего счётчика, ход которого кратен множителям х и у (тот алгоритм, что я и предлагал) полностью избавляет от потерь точности при вычислениях и за постепенный увод опасаться не стоит.
Как это должно работать, если первый двигатель - коллекторный, и вместо его "шагов" есть импульсы с энкодера? Что-то до меня не доходит...
ПИД есть смысл использовать для управления скоростью ШД, который перемещает укладчик. На входе - ошибка позиционирования, на выходе - скорость.
Я думаю, нужно делать что-то похожее на это:
- Код:
interrupt(enc1){
if (enc1 == forward) T += x;
if (enc1 == reverse) T -= x;
delta_t = current_time() - last_time;
last_time = current_time();
set_timer_period(delta_t * y / x);
}
interrupt(timer){
if (T >= y) {StepM2(F); T -= y;}
if (T <= -y ) {StepM2(R); T += y;}
}
Только нужно разобраться с расчётом периода, чтобы не возникало ошибки из-за целочисленного деления.
Последний раз редактировалось
*Trigger* Вс янв 31, 2021 01:03:46, всего редактировалось 1 раз.