отзыв duxe.ru отзывы duxe.ru Шаговые двигатели и контроллеры в моем магазине duxe.ru

самодельный станок с ЧПУ, отзывы duxe.ru

Объявление

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



Применение AVR 2313

Сообщений 1 страница 14 из 14

1

Где-то тут видел упоминание контроллера на ATtiny2313 с фотографией, но не нашёл её поиском. :(
Хотел задать автору вопрос об успехах в этом деле. Ну да ладно, может он сам откликнется?

А пока мой вариант применения этого простого МК.
У меня, правда, его старая версия под названием AT90S2313, но это мало что меняет.

Когда мне надоело проверять ШД программой VRI-CNC, которая каждую минуту затыкается и выводит окошко с кнопочкой, я вытащил свой старый тестовый контроллер http://ironfelix.ru/images/foto2/conqeror/Conqeror2006_1.jpg
и написал на GCC (WinAVR) простейший плоушаговый крутитель.
Кнопку приделал, которая может менять скорость вращения, диапазон примерно от 20 до 3 мс между полушагами. Подключил к плате силовых  ключей. Убедился, что ШД перестаёт трещать при вращении на самой высокой для этой программы скорости.
Если будет смысл, добавлю вторую кнопку для смены направления вращения.
При этом память программ, и без того скромная у данного МК (2 килобайта) была занята на 26%.
Вывод: можно дописать ещё много чего в программу. Например, откалибровать задержки и сделать вывод на ЖКИ. Получится тестер с возможностью задавать  произвольную скорость для проверки ШД, например, для отладки ШИМ. И крутиться ШД может не бесконечно, как сейчас, а пять секунд или десять. Или отслеживать концевые датчики.

У кого есть другие варианты применения этого МК по теме форума, было бы интересно узнать.

0

2

По предложению  VVchaif-а сделал некое устройство, а потом расширил его в  тестовую плату на Attiny2313

Полное описание и пара программ лежат здесь:
http://www.cqham.ru/ob83_o4.htm
На данной плате можно поупражняться в управлении шаговыми двигателями,включая контроль тока,  вводом информации с LPT или COM портов, и создать массу самых разнообразных устройст как для станка так и для дома, например для станка - индикатор положения по осям, индикатор скорости вращения шпинделя, счетчик количнества шагов и т.д. Плата испытана, работает с первого тыка, единственный косяк - на схеме отсутствует соединение вывода 5 дисплея с корпусом(на плате оно есть).

0

3

Спасибо!
Интересная разработка.
Габариты платы, выбранные от габаритов ЖК-индикатора  - это удобно!

Стоимость контроллера можно уменьшить почти вдвое, если применить вместо МАХ232 транзисторный узел. Например, такой:
http://ironfelix.ru/images/foto2/max232/232_attobasic.jpg

Для тестовой платы, предлагаемой для начального обучения микроконтроллерству :) важнейшим является не столько схема, сколько исходные тексты программ - именно с изменения прилагаемых тестовых программ чаще всего и начинается самостоятельное написание программ новичками.
Тем более. предлагается интересный пример (демонстратор кодов RС-5). Может быть, включите их в прилагаемый архив с готовыми прошивками?

Не совсем понял, как использовать данный модуль в качестве указателя положения в станке?
Параллельно подключать к LPT и перехватывать импульсы, идущие на ШД?

0

4

Ironfelix написал(а):

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

Это не проблема, вдруг кто нибудь захочет организовать управление станком с пудльта ДУ :-)
Прием информации от датчика осуществляется всего одной строкой на Bascom-e:
Getrc5(address , Command) 
Дальше делайте с переменными (принятым адресом и командой) что хотите:-)
Полный текст проги на BASCOM-е:
$regfile = "Attiny2313.dat"
$lib "mcsbyte.lbx"
$baud = 19200
$crystal = 8000000
$lib "lcd4.lbx"
Config Lcdpin = Pin , Rs = Portb.0 , E = Portb.2 , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Postb.7
Config Lcd = 16 * 2
Cls
Config Rc5 = Pind.2
Enable Interrupts
Dim Address As Byte , Command As Byte
Print "Waiting for RC5..."
Lcd "PRESS TO"
Lowerline
Lcd " KEY RC5!"
Do
Getrc5(address , Command)
If Address <> 255 And Command <> 255 Then
Command = Command And &B01111111
Print Address ; "  " ; Command
Cls
Lcd "ADR-" ; Address
Lowerline
Lcd "COM-" ; Command
End If
Loop

Ironfelix написал(а):

Не совсем понял, как использовать данный модуль в качестве указателя положения в станке?

На входы PD0-PD6 вешаются энкодеры(3 штуки) , на входы PB1 PB3 и RES - концевики, вывод информации о положениях осуществляется на дисплей. Гдето подобную прогу я выкладывал на форуме.
Тоже легко решается на BASCOM-е, хотя есть варианты и на СИ и на АСМе.
Вот строка, читающая инфу с младших разрядов порта D и передающая управление
программам "Links" или  "Rechts", которые описывают последующие действия:
B = Encoder(pind.0 , Pind.1 , Links , Rechts , 1)
Если нужен вывод инфы с энкодеров в комп, то энкодеры подключаются вместо дисплея, а по СОМ порту передается информация в компьютер. Такую прогу пока не писал, не было интереса, хотя сложного ничего нет, в начале проги задаются параметры связи с портом, а вывод инфы осуществляется командой
PRINT(параметр)

0

5

Ironfelix написал(а):

Стоимость контроллера можно уменьшить почти вдвое, если применить вместо МАХ232 транзисторный узел.

НЕ получится, 50 процентов стоимости составляет стоимость индикатора, МАХ232 мне досталась по цене 18 рублей, при общей стоимости контроллера 230-250 руб.

0

6

Трудоголик написал(а):

НЕ получится, 50 процентов стоимости составляет стоимость индикатора, МАХ232 мне досталась по цене 18 рублей,

Ну, если за 18 рублей, то тогда разумеется.
А вообще, если не считать индикатор, то в розницу распределение стоимости получится почти поровну между МК и МАХ. Если не с перевесом МАХ'а.

0

7

Ironfelix написал(а):

А вообще, если не считать индикатор, то в розницу распределение стоимости получится почти поровну между МК и МАХ.

Да, по данным wwwefind.ru  стоимость MAX232CPE И Attiny2313-20PU  практически одинакова у одних и тех же фирм и колеблется в диапазоне от 18 до 80 рублей у разных фирм.

0

8

Вариант 2-х осевого контроллера для программы VRI-CNC.
Обеспечивается 2-х уровневое питание двигателей, в режиме удержания
средний ток в 4 раза меньше, чем в момент пускового импульса.
Прошивка тестовая. Кому чего не понравится - пишите, поправлю.
Драйвер можно использовать любой, например на КТ829.   
Кварц на 4 - 12 Мгц.
ИСпользование памяти программ - 8,8 %, ОЗУ и ФЛЕШ не использованы.

:020000020000FC
:1000000013C027C02CC018951895189518951895E9
:100010001895189518951895189518951895189578
:1000200018951895189500C00FED0DBF0FEF07BB81
:10003000002708BB01BB0FEF02BB44270FE005BF41
:1000400000EC0BBF789448BB24D0002708BB21D01C
:10005000FADF0F930BD0202F14D00F9118950F9328
:1000600005D00295302F0DD00F9118951F9302B334
:1000700012B31170069506950695010F0F701F912A
:1000800008954427420F430F01D0089548BB07D07D
:1000900008950F9300E00A95F1F70F9108950F93DB
:1000A0001F9300E014E00A95F1F71A95E1F71F910C
:0400B0000F9108950F
:00000001FF

0

9

Немного усовершенствованная прошивка Attiny2313  для любителей экспериментов.
------------------------------------------------------------------------------------------------
:020000020000FC
:1000000013C037C03CC018951895189518951895C9
:100010001895189518951895189518951895189578
:1000200018951895189500C00FED0DBF0FEF07BB81
:10003000002708BB01BB0FEF02BB44270FE005BF41
:1000400000EC0BBF00E00ED0612F01E00BD0712F50
:1000500002E008D0812F789448BB2BD0002708BB42
:100060002ED0FADFF894E199FDCF0EBBE09A1DB3D4
:1000700008950F930BD0202F14D00F9118950F9344
:1000800005D00295302F0DD00F9118951F9302B314
:1000900012B31170069506950695010F0F701F910A
:1000A00008954427420F430F01D0089548BB0DD057
:1000B00008950F93072F0A95F1F70F9108950F9365
:1000C000082F0A95F1F70F9108950F931F93062FAC
:1000D0001AE00A95F1F71A95E1F71F910F9108952B
:00000001FF
------------------------------------------------------------------------------------------------
Отличие от предыдущей заключается в возможности программировать интервалы стартового импульса
и следующих за ним импульсов удержания и пауз.
Для начала - графическое представление токовых посылок на выходе МК.
С приходом импульса записи на входы процессор прерывает свою работу и формирует стартовый импульс, длительность которого определяется константой, записываемой во ФЛЕШ при программировании МК.
Длительность стартового импульса примерно равна длительности двадцати тактов работы микропроцессора, умноженным на десятичное значение константы.
После окончания стартового импульса МК формирует паузу, т.е. снимает напряжение с двигателя.
Длительность паузы также определяется константой, записаной во флеш, но для паузы она равна длительности двух тактов, умноженным на десятичное значение константы.
ЗА паузой следует импульс удержания, длительность его тоже записана во ФЛЕШ и также равна двум тактам, умноженным на десятичное значение константы.
Что дает такой вариант форсирования? Благодаря наличию пауз, чередующихся с импульсами удержания, средний ток (ток за длительность шага) через обмотку ниже, чем если бы обмотка была запитана постоянно. А это позволяет
увеличить питающее напряжение без опасения за перегрев обмоток. В то же время, начало каждого шага сопровождается длительным импульсом, что при повышенном напряжении увеличивает скорость нарастания тока в обмотке, а следовательно и скорость вращения двигателя.
Возможность изменять константы позволяет более гибко подобрать режим под конкретный двигатель.
По умолчанию константы максимальные, что соответствует примерно 5100 тактов процессора для стартового импульса и по 510 тактов для импульса удержания и паузы. При тактовой частоте МК 10 мГц длительность стартового импульса составит 2 миллисекунды, что недопустимо много, т.к. будет потеря скорости. Поэтому при программировании установите меньшие значения констант.
Адреса констант в МК Attiny2313:  00800 - стартовая; 00801 - удержания, 00802 - пауза.
Скрин экрана PONYPROG с адресами констант приведен на фото. Не забудьте поставить свои константы во время прошивки проца.
В программе происходит формирование стартового импульса, паузы и имульса удержания синхронно по обмоткам обеих двигателей.

0

10

Очередная прога для тестовой платы.
Принимает байт с СОМ порта и отображает значение байта в двоичном, шестнадцатиричном и символьном видах. Может пригодится для тестирования программ,  работающих через СОМ порт.
Скорость связи 19200, кварц 8000 кГц. К тестовой плате кроме источника питания и СОМ порта ничего подключать не нужно.
----------------------------------------------------------------
:1000000012C0189518951895189518951895189563
:100010001895189518951895189518951895189578
:100020001895189518958FED8DBFC0ECE6EA4E2E09
:10003000DD275D2EEEE7F0E0A0E6B0E088278D93A7
:100040003197E9F789E189B980E082B988E18AB915
:1000500084B7082E877F84BF8FE181BD87E081BD93
:1000600042D0662421D0A0E68C930091600000303D
:1000700010F009F001C017C02FD0EAEDF1E024D054
:10008000AEE8B0E0E0E6F0E07AD016D0ECEDF1E0DA
:100090001BD0A0E68C9142D01DD0AEE8B0E0E0E6E7
:1000A000F0E085D009D0DECF88275F9B089500C09F
:1000B0005F9BFECF8CB10895AEE8B0E08D918823B0
:1000C00011F02CD0FBCF089556D0802D11F026D002
:1000D000FBCF089580EC24C081E022D083E090E043
:1000E0003FD080E81DC08AE090E03AD08FEF87BB18
:1000F00080E388BB03E0C29AC29881E090E030D0F0
:100100000A95C9F7C498C29AC29881E090E028D0B5
:1001100088E206D08EE004D086E002C0689401C078
:10012000E894982F02D0892F829580F98460857F8A
:1001300088BBEF93FF93E4ECF0E00BD0FF91EF91DD
:10014000C298EF93FF93E4ECF0E003D0FF91EF91BE
:1001500008950895689462F80895E89462F80895FF
:10016000EF93FF93EE27E82BE92B11F0E0EDF7E09A
:10017000FF91EF910895C89531960020089541E0D0
:1001800003C042E001C044E0E40F8827F81F8291D9
:10019000982F829505D0892F03D04A95C1F71AC0B0
:1001A0008F708A3008F0895F805D8D93089541E0FB
:1001B00003C042E001C044E0E40F8827F81F8291A9
:1001C00038E098E1880F991F9D933A95D1F74A95A9
:1001D000B1F700C088278D930895200020200000EB
:00000001FF
-------------------------------------------------------------------

0

11

Трудоголик написал(а):

При тактовой частоте МК 10 мГц длительность стартового импульса составит 2 миллисекунды, что недопустимо много, т.к. будет потеря скорости.

А при какой тактовой частоте прошивка будет работать корректно?
4 МГц или 8 МГц?

И ещё...
В схеме использованы биты порта D: 0, 2, 3, 4, 5, 6.
Бит 1 остался пустой и торчит, как три тополя на Плющихе.
Можно попросить прошивку, в которой используются биты  0, 1, 2, 3, 4, 5 ?
И пустым будет бит 6, который на другой стороне корпуса МК, на 11-м выводе.
Пусть лучше он будет три тополя на Плющихе.

0

12

Ironfelix написал(а):

А при какой тактовой частоте прошивка будет работать корректно?
4 МГц или 8 МГц?

В программе не используются таймеры, не нужна жесткая синхронизация по времени, как например для СОМ порта,  она работоспособна при любой тактовой частоте, единственное, что нужно учесть - длительность такта МК и рассчитать исходя из этой  длительности величину констант, которые определяют длительность стартового импульса, импульса удержания и паузы.
Для частоты кварца 4 Мгц длительность такта МК будет равна 0,25 микросекунды, если константа стартового импульса равна например 200 (десятичное значение), то  длительность стартового импульса будет равна 0,25*20*200=1000 микросекунд. Для кварца 8 мегагерц длительность будет в 2 раза меньше.
Длительность импульса удержания при той же константе(200) будет в 10 раз меньше, т.е 100 микросекунд при частоте 4 мГц. (прошу прощения в предыдущем посте я неточно посчитал время задержки, которое указал как 2 миллисекунды.)
Более того, можно вообще отказаться от кварцев и использовать внутренний тактовый генератор на частоте
4 или 8 мГц, для этого надо просто прошить фьюзы соответствующим образом.

Ironfelix написал(а):

Можно попросить прошивку, в которой используются биты  0, 1, 2, 3, 4, 5 ?

Можно,  но есть один нюанс: Биты PD2 и PD3 используются  как входы внешних прерываний INT0 и INT1, поэтому должны подключаться только к 6 и 7 выходам LPT. 
Так что все равно придется порт "раскорячивать" :-)
Вот распиновка к нижеразмещенной прошивке.
PD0, PD1, PD4, PD5 подключаются к ногам  2, 3, 4, 5 LPT
PD2 - к ноге 6 LPT,  PD3 - к ноге 7LPT.

Если использовать 2 Attiny2313,(на трехосевой контроллер) то входы PD0,PD1,PD4,PD5 обоих тинек параллелятся, PD2, PD3 первой  тиньки цепляются как указано, а PD2 второй тиньки подключается к ноге 8 LPT. 
Прошивка:
----------------------------------------------------
:020000020000FC
:1000000013C037C03CC018951895189518951895C9
:100010001895189518951895189518951895189578
:1000200018951895189500C00FED0DBF0FEF07BB81
:10003000002708BB01BB0FEF02BB44270FE005BF41
:1000400000EC0BBF00E00ED0612F01E00BD0712F50
:1000500002E008D0812F789448BB2AD0002708BB43
:100060002DD0FADFF894E199FDCF0EBBE09A1DB3D5
:1000700008950F930BD0202F13D00F9118950F9345
:1000800005D00295302F0CD00F9118951F9302B315
:1000900012B3137006950695010F0F701F91089506
:1000A0004427420F430F01D0089548BB0DD0089557
:1000B0000F93072F0A95F1F70F9108950F93082FCB
:1000C0000A95F1F70F9108950F931F93062F1AE0E9
:0E00D0000A95F1F71A95E1F71F910F91089527
:00000001FF

----------------------------------------------------

0

13

Спасибо за оперативность!

Трудоголик написал(а):

Так что все равно придется порт "раскорячивать"

Бог с ней, с раскорякой, лишь бы все они были на одной стороне МК.

Зато теперь я могу попробовать эту прошивку на своём контроллере и не менять разводку кабеля :)
Выводы для первого ШД у меня выбраны такие же, а вот на PD6 у меня спокон веков сидит системный светодиод, который подмигивает при работе программы. Между прочим, это очень удобно. Сразу видно, если МК вдруг зависнет, да и вообще...

Заодно узнаем, будет ли прошивка работать на AT90S2313.

0

14

Ironfelix написал(а):

Заодно узнаем, будет ли прошивка работать на AT90S2313.

В симуляторе AVR Sтudio работает, вживую проверить нечем, AT90S2313 уже страшный дефицит. :-)

http://cnc.4bb.ru/viewtopic.php?id=292

0