ШИМ контроллер электродвигателя.
Доброго времени суток!
Прошу помощи в написании прошивки для моей конструкции ШИМ контроллера электродвигателя.
Схема собрана и работает. Состоит из МЕГА 8, драйвера IR4426 (инверсные входы) и мощных полевиков. Если есть необходимость могу выложить фото.
Подключение по портам
PB1(OC1A)- Выход шима
PC1(ADC1)- Измерение тока потребления
PC0(ADC0)- Измерение напряжения питания.
PC2- кнопка запуска электродвигателя
INT0, INT1- кнопки выбора режимов.
Прошивка обширная , пока добиваюсь-
Получить плавный запуск (в течении 0,1-0,2с) двигателя при нажатии на кнопку на порту PC2. За основу взял прошивку PWM RGBnj
Вопросы:
1 PC2 вроде назначил, не знаю как его подтянуть к плюсу?
2
TCCR1A=(1<<COM1A1)|(1<<COM1B1)|(1<<WGM10);
- насколько я понял инициализация ШИМа по OC1A как 8-битного
при 1мГц тактовой частоты у меня получается по осциллографу 50 гц +/- частота шима повышение тактовой до 16мгц не спасет тк частота ШИМа будет меньше килогерца
Как прописать ШИМ более скоростной с меньшей разрядностью?
Мне большая точность не нужна хватило бы 3-4 бита
Частота ШИМа нужна 1-10 кГц.
Еще один вопрос прошивка не
Еще один вопрос прошивка не работает как должна
фрагмент кода, весь код слишком большой
по описанию идет 6 вибросигналов (Vibrate1(5);Vibrate();), если зажать кнопку на пару секунд (counter5 > 1500)) инициирует запись еепрома - сброс в дефолт, затем длинный вибросигнал после этого по инструкции если нажать 10 раз кнопку запустится установка скрытого меню (SecretMode) В реале скрытое меню не запускается.
прога написана слохновато для понимания, несколько условий нагромождено, не могу разобраться. Была мысль что не успеваю нажать нужное количество раз за установленное время, может присутствует дребезг контактов. пробовал ставить число нажатий 2, как -то не помогло...
В чем может быть проблема?
Как скомпилировать?
Добрый день, подскажите пожалуйста- собрал схему ШИМа с забугорного сайта хекс работает, но некоторые особенности не устраивают, исходник дан в .txt
создал проект (как в статье на этом сайте), вставил исходник, при попытке компиляции выдает ошибки
c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/bin/ld.exe: 502.elf section .text will not fit in region text
c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/bin/ld.exe: region text overflowed by 1588 bytes
типа много букв (=
Attiny85 исходник реально огромный extreme-fire.com/Cheetah-2N/Cheetah-2N!-301.zip
как победить это победить?
1) Если в ADMUX PC2 прописан
1) Если в ADMUX PC2 прописан как вход АЦП - он сам должен подтягиваться к +5В.
2) В Fast PWM режиме можно достичь частоты ШИМа = F_такт/256, что при 1МГц даст тебе примерно 4кГц.
Закоментил когда переделывал
Закоментил когда переделывал код с проги Управления RGB светодиодами на PWM двигателем. Увидел косяк только когда в него ткнули носом =(. Моя невнимательность меня погубит...
Готовя прошлый пост наткнулся на полностью выложенный проект аналогичной системы со всей необходимой для повторения документацией и даже исходником!!!
extreme-fire.com/SW-Cheetah-2N-500-sch.gif
extreme-fire.com/Cheetah-2N/
вопрос решился в другой плоскости!
Можно повторить ту конструкцию, а мою схему использовать как лабораторный макет для испытания и изучения языка, либо же попотеть и приспособить чужой исходник под мою схему.
В любом случае вы посодействовали в решении вопроса, за что вам большое спасибо!
:-) Насчет внимательности я
:-)
Насчет внимательности я сам бывает грешу)))
В решении проблемы очень полезно чтобы еще кто-то посмотрел со своей стороны)))
Контроллер разрабатывается
Контроллер разрабатывается для работы с AEG- приводом для Airsoft (он же страйкбол)
видео работы механики гирбокса - airsoft-russia.ru/blog/aeg/385.php
компьютерная модуляция для того чтобы понять как это работает здесь strike.by/review/gearbox.htm
аналог контроллера выполненный на PIC18 здесь (там же расписан необходимый функционал) black-wolf.ru/phpBB/viewtopic.php?f=4&t=235&start=0&st=0&sk=t&sd=a&sid=45a723a4aa55170cde70db4edb5b6b5c
промышленная забугорная версия extreme-fire.com/
Цель моих изысканий (кроме учебной ) -усовершенствовать работу, повысить надежность работы, добавить несколько нужных настроек стрельбы.
В интернете данная тема не раскрыта.
В базовой версии привода электродвигатель постоянного тока запускается путем коммутации кнопкой к аккумулятору. При стартовых токах в 30-50А и выше, рабочих 12-20А эти контакты небольших размеров выгорают, сильно ограничивают мощность, надежность. Сейчас у меня стоит электронный ключ на мосфетах, но это тоже не предел мечтаний. Скорострельность с электронным ключем повысилась процентов на 25 за счет уменьшения сопротивления системы.
ЕСли изложить все желаемые функции которые я хотел бы реализовать:
- защита при севшем аккуме (чтоб не гробить липо аккумы)
- одной кнопкой прерывания устанавливать 1 из 3-х вариантов скорострельности
- второй кнопкой устанавливать режим стрельбы одиночный- короткая очередь (3 выстрела)- очередь
- Вуключать двигатель не сразу после отпускания курка, а после завершения условий - курок отпущен, выполнено нужное количество выстрелов, пружина в расслабленном положении
- установленный режим индицировать попискиванием двигателя
- использование мягкого старта для того чтобы уменьшить нагрузку на шестеренки
- выключать или притормаживать двигатель после каждого выстрела для уменьшения удара первого зуба поршня о зуб шестерни
"Выстрел- напряжение с двигателя снято, по инерции шестерня прокручивается секторная шестерня сцепилась с поршнем и после этого снова подается питание и взводится поршень"
- момент выстрела контролировать без применения дополнительных датчиков путем измерения потребляемого тока - ток упал - произошел выстрел редуктор движется вхолостую.
- Если ток высокий и держится длительное время - или механизм заклинил или КЗ - снять напряжение с нагрузки
- Возможно ШИМом стабилизировать скорострельность - под разную заряженность аккума, разный тип аккумов и тд.
- подборкой уровня ШИМа можно "согласовать" мощный аккум со слабеньким приводом
Процесс написания такой проги займет не мало времени поэтому для начала
- сделать плавный старт двигателя с установленным уровнем ШИМа при нажатии на курок.
При такой прошивке схема уже работает и ей можно пользоваться
Дальше по плану- при нажатии кнопки режима - изменять скорострельность.
Порылся в даташите на МЕГУ 8 - там говорится что есть режим быстрого ШИМа с битностью от 2 бит до 16 " минимальное разрешение 2 бита (OCR1 или OCR1A устанавливаются в 0x0003)" стр 88 из 303 Как записать в прошивке такой режим?
Сейчас прога имеет такой вид
ШИМ установлен в примерно среднее положение цикл должен уменьшать значение шима при нажатии на кнопку
реально шим работает но его уровень не изменяется
что не так в коде?
Так а чего ты закамментил в
Так а чего ты закамментил в обработчике прерываний сам процесс изменения переменной S???
Я брал прошивку
Я брал прошивку http://avrlab.com/node/93
Дело в том что просто запуск это только первый этап
По итогу после запуска мне нужно будет постоянно измерять ток потребления и сравнивать его с прошлым измерением если он резко упадет- это значит выполнился один цикл механизма, после этого нужно будет снизить или отключить ШИМ и вновь плавный запуск. При этом если ток превысит норму или механический цикл затянется выше нормы - значит что-то заклинило и нужно выключить движок. Кроме того нужно выключать движок не по отжатию кнопки а по завершению механического цикла или заданного количества циклов в зависимости от настроек.
Писать это все в обработчике прерываний наверное "негуманно?" или я ошибаюсь?? Читал на этом ресурсе, что подпрограмма прерывания должна быть минимальной? Если я сделаю сработку по прерыванию у меня там получится основная программа процентов 80 кода.
Специализированный ШИМ это хорошо но не экономно и громоздко и все равно им нужно будет управлять через МК. Высокая частота нужна для равномерной и устойчивой работы движка. Пробовал на небольшом движке ДПР-13 при частоте 50 гц и скважности 20-40 процентах движек дергаетя под нагрузкой. В инете народ пишет что на низкой частоте движки выделываются. По многим высказываниям частоту лучше взять не менее килогерца, в "крутых регуляторах" ее ставят выше 20кГц уводя шумы и помехи в ультразвук,
Меня в данной схеме "поющий двигатель" не смущает
По двум вопросам из первого поста могли бы что-нибудь подсказать??
Я бы посоветовал на будущее
Я бы посоветовал на будущее полностью указывать чего надо от устройства.
Ну и ТЗ конечно же составить для такого устройства обязательная процедура.
От него уже можно отталкиваться и делать расчет какой микроконтроллер использовать, куда кнопки вешать, сколько штук их будет и тд тп.
По ШИМ у меги8-й по моему только на 8 бит можно сделать.
Программным ШИМ думаю даже 1 кГц не вытянешь.
Не понятно какую именно
Не понятно какую именно прошивку ты брал за основу. Очень советую пользоваться аппаратными возможностями микроконтроллера, аппаратная ШИМ тут.
Советую запуск сделать по нажатию к примеру на прерывание INT0, а изменение режима работы по нажатию на прерывание INT1(чтоб менялось по кругу). Просто если вешать старт движка на конку к порту D то будут некоторые сложности с алгоритмом и обработкой нажатия кнопки.
Зачем такая большая частота ШИМ нужна? Может лучше специализированный контроллер взять? Я думаю такие есть, правда по деньгам будет дороже чем atmega8.